168 lines
No EOL
7.8 KiB
PHP
168 lines
No EOL
7.8 KiB
PHP
<?php
|
|
|
|
// -------------------------------------------------------------------------------
|
|
// | net2ftp: a web based FTP client |
|
|
// | Copyright (c) 2003-2013 by David Gartner |
|
|
// | |
|
|
// | This program is free software; you can redistribute it and/or |
|
|
// | modify it under the terms of the GNU General Public License |
|
|
// | as published by the Free Software Foundation; either version 2 |
|
|
// | of the License, or (at your option) any later version. |
|
|
// | |
|
|
// -------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/* -------------------------------------------------------------------------
|
|
This is how error-handing works within net2ftp
|
|
-------------------------------------------------------------------------
|
|
|
|
There are 3 global variables:
|
|
- $net2ftp_result["success"], which is true or false
|
|
- $net2ftp_result["errormessage"], which contains an error message
|
|
- $net2ftp_result["debug_backtrace"], which contains the debugging backtrace (to indicate *where* the error happened)
|
|
|
|
---------------------------------
|
|
Low-level function executes a standard PHP function
|
|
- If everything goes OK, the low-level function simply returns its $finalresult
|
|
- If there is an error, the global variable $net2ftp_result["success"] is set to false, and
|
|
$net2ftp_result["errormessage"] will be filled with the error message
|
|
---------------------------------
|
|
function low_level {
|
|
$result = php_function();
|
|
if ($result == false) { setErrorVars(false, "errormessage", debug_backtrace(), __FILE, __LINE__); return false; }
|
|
...
|
|
return $finalresult;
|
|
}
|
|
|
|
---------------------------------
|
|
Middle-level function executes a low-level function (it may also execute standard PHP functions)
|
|
- If everything goes OK, the middle-level function simply returns its $finalresult
|
|
- If there is an error, the function can either return to its parent, or continue
|
|
---------------------------------
|
|
function middle_level {
|
|
global $net2ftp_result;
|
|
$result = low_level();
|
|
// Return to its parent, leave the error message as is:
|
|
if ($net2ftp_result["success"] == false) { return false; }
|
|
// Return to its parent, change the error message (leave the debug backtrace as is):
|
|
if ($net2ftp_result["success"] == false) { setErrorVars(false, "errormessage2", $net2ftp_result["debug_backtrace"], __FILE, __LINE__); return false; }
|
|
// Reset the error variables and continue:
|
|
if ($net2ftp_result["success"] == false) { setErrorVars(true, "", "", "", ""); }
|
|
...
|
|
return $finalresult;
|
|
// Print error message and exit -- THIS IS NOT DONE ANY MORE, as exit() calls must be avoided at all cost to
|
|
// keep net2ftp integrateable within other web applications.
|
|
// This case is replaced by case 1: return to the parent function, and leave the error message as is.
|
|
//// if ($net2ftp_result["success"] == false) { printErrorMessage(); }
|
|
}
|
|
|
|
---------------------------------
|
|
High-level function executes a middle-level function (it may also execute standard PHP functions)
|
|
- If everything goes OK, the high-level function simply returns its $finalresult
|
|
- If there is an error, the function returs to its parent (the script which called the net2ftp() function). It is
|
|
up to the parent to see if and how an error message should be printed -- see index.php for an example.
|
|
---------------------------------
|
|
function high_level {
|
|
global $net2ftp_result;
|
|
$result = middle_level();
|
|
if ($net2ftp_result["success"] == false) { return false; }
|
|
...
|
|
return $finalresult;
|
|
}
|
|
|
|
------------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// **************************************************************************************
|
|
// **************************************************************************************
|
|
// ** **
|
|
// ** **
|
|
|
|
function setErrorVars($success, $errormessage, $debug_backtrace, $file, $line) {
|
|
|
|
// --------------
|
|
// This function modifies the 3 global error-handling variables
|
|
// --------------
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Global variables
|
|
// -------------------------------------------------------------------------
|
|
global $net2ftp_result, $net2ftp_settings;
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Set the error-handling variables
|
|
// -------------------------------------------------------------------------
|
|
$net2ftp_result["success"] = $success;
|
|
$net2ftp_result["errormessage"] = $errormessage;
|
|
$net2ftp_result["debug_backtrace"] = $debug_backtrace;
|
|
$net2ftp_result["file"] = $file;
|
|
$net2ftp_result["line"] = $line;
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Log the error if an error occured ($success == false)
|
|
// If the error vars are set to true again ($success == true), don't log the error once more
|
|
// -------------------------------------------------------------------------
|
|
// DON'T LOG THE ERROR HERE, AS THE FUNCTION logError() MAY CALL setErrorVars() AGAIN,
|
|
// CAUSING AN INFINITE LOOP!
|
|
// if ($success == false) {
|
|
// logError();
|
|
// }
|
|
|
|
} // end setErrorVars
|
|
|
|
// ** **
|
|
// ** **
|
|
// **************************************************************************************
|
|
// **************************************************************************************
|
|
|
|
|
|
|
|
|
|
|
|
// **************************************************************************************
|
|
// **************************************************************************************
|
|
// ** **
|
|
// ** **
|
|
|
|
function net2ftpErrorHandler($errno, $errmsg, $file, $line, $vars) {
|
|
|
|
// --------------
|
|
// This function processes PHP notices, warnings and errors
|
|
// --------------
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Global variables
|
|
// -------------------------------------------------------------------------
|
|
global $net2ftp_output;
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Put error details in variable
|
|
// -------------------------------------------------------------------------
|
|
if ($errno == E_USER_ERROR || $errno == E_ERROR || $errno == E_PARSE) {
|
|
$net2ftp_output["php_error"][] = "Error [$errno] $errstr in file $file on line $line";
|
|
echo "Error [$errno] $errstr in file $file on line $line";
|
|
exit();
|
|
}
|
|
elseif ($errorno == E_USER_WARNING || $errno == E_WARNING) {
|
|
$net2ftp_output["php_warning"][] = "Warning [$errno] $errstr in file $file on line $line";
|
|
}
|
|
elseif ($errorno == E_USER_NOTICE) {
|
|
$net2ftp_output["php_notice"][] = "Notice [$errno] $errstr in file $file on line $line";
|
|
}
|
|
else {
|
|
$net2ftp_output["php_error"][] = "Unknown error type [$errno] $errstr in file $file on line $line";
|
|
}
|
|
|
|
} // end setErrorVars
|
|
|
|
// ** **
|
|
// ** **
|
|
// **************************************************************************************
|
|
// **************************************************************************************
|
|
|
|
?>
|