function getArgument($arg, $clevel = 0) { switch (strtolower(gettype($arg))) { case 'string': return '"' . str_replace(array("\n"), array(''), $arg) . '"'; case 'boolean': return (bool) $arg; case 'object': return 'object(' . get_class($arg) . ')'; case 'array': $ret = 'array('; $separtor = ''; if ($clevel > 2) { $ret .= "max recursive depth reached"; } else { foreach ($arg as $k => $v) { $ret .= $separtor . getArgument($k, $clevel + 1) . ' => ' . getArgument($v, $clevel + 1); $separtor = ', '; } } $ret .= ')'; return $ret; case 'resource': return 'resource(' . get_resource_type($arg) . ')'; default: return var_export($arg, true); } }
function errorHandler($errno, $errstr = '', $errfile = '', $errline = '') { // if error has been supressed with an @ if (error_reporting() == 0) { return; } $err = false; // check if function has been called by an exception if (func_num_args() == 5) { // called by trigger_error() $exception = null; list($errno, $errstr, $errfile, $errline) = func_get_args(); $backtrace = array_reverse(debug_backtrace()); } else { // caught exception $exc = func_get_arg(0); if ($exc instanceof Exception) { $errno = $exc->getCode(); $errstr = $exc->getMessage(); $errfile = $exc->getFile(); $errline = $exc->getLine(); $backtrace = $exc->getTrace(); } if ($exc instanceof DB_Error) { $errno = $exc->getCode(); $errstr = $exc->getMessage() . " " . $exc->getDebugInfo(); $backtrace = $exc->getBacktrace(); } } $errorType = array(E_ERROR => 'ERROR', E_WARNING => 'WARNING', E_PARSE => 'PARSING ERROR', E_NOTICE => 'NOTICE', E_CORE_ERROR => 'CORE ERROR', E_CORE_WARNING => 'CORE WARNING', E_COMPILE_ERROR => 'COMPILE ERROR', E_COMPILE_WARNING => 'COMPILE WARNING', E_USER_ERROR => 'USER ERROR', E_USER_WARNING => 'USER WARNING', E_USER_NOTICE => 'USER NOTICE', E_STRICT => 'STRICT NOTICE', E_RECOVERABLE_ERROR => 'RECOVERABLE ERROR', E_DATABASE_ERROR => 'DATABASE ERROR'); if (!$err) { // create error message if (array_key_exists($errno, $errorType)) { $err = $errorType[$errno]; } else { $err = 'CAUGHT EXCEPTION'; } } if ($errno == E_DATABASE_ERROR) { $errMsg = "<h6>{$err}:</h6> \"<B>{$errstr}</B>\"<BR />"; } else { $errMsg = "<h6>{$err}:</h6> \"<B>{$errstr}</B>\" in <FONT color=\"blue\"><B>{$errfile}</B> on line <B>{$errline}</B></FONT><BR />"; } $trace = ""; // start backtrace foreach ($backtrace as $k => $v) { $trace .= "<B>#" . ($k + 1) . "</B>: "; if (isset($v['class'])) { $trace .= 'in class ' . $v['class'] . '::' . $v['function'] . '('; if (isset($v['args'])) { $separator = ''; foreach ($v['args'] as $arg) { $trace .= "{$separator}" . getArgument($arg); $separator = ', '; } } $trace .= ')'; } elseif (isset($v['function'])) { $trace .= 'in function ' . $v['function'] . '('; if (!empty($v['args'])) { $separator = ''; foreach ($v['args'] as $arg) { $trace .= "{$separator}" . getArgument($arg); $separator = ', '; } } $trace .= ')'; } $trace .= "\n"; } // what to do switch ($errno) { case E_NOTICE: case E_USER_NOTICE: case E_STRICT: return; break; default: //echo "Sorry. We have some error. Go to <a href='http://".fvSite::$fvConfig->get("server_name")."'>start page</a><br/>"; echo '<h2>Debug Msg</h2>' . nl2br($errMsg) . '<br /> <B>Trace</B>: <br />' . nl2br($trace) . '<br />'; $userinfo = ""; $LoggedUser = fvSite::$fvSession->get("login/loggedUser"); if ($LoggedUser) { $userinfo = "user id:" . $LoggedUser->getPk() . "<br>user login:"******"<hr/><hr/>" . date("d-m-Y") . "<br>" . $url . "<br>" . $userinfo . '<br><h2>Debug Msg</h2>' . nl2br($errMsg) . '<br/><B>Trace</B>: <br />' . nl2br($trace) . '<br /><hr/><hr/>'; $file = fopen(fvSite::$fvConfig->get("path.error"), "a+"); if ($file) { fwrite($file, $data); } fclose($file); /*$url = $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; $data = array(); $data["CONTENT"] = date("d-m-Y")."<br>".$url."<br>".$userinfo.'<br><h2>Debug Msg</h2>'.nl2br($errMsg).'<br/><B>Trace</B>: <br />'.nl2br($trace).'<br />'; $mail = new Mail("debugmsg",$data); $mail->setTheme($url); //$mail->SendErrorMail(); */ /*if ($errno == E_DATABASE_ERROR) { exit(-1); }*/ break; } }
/** * * @param unknown_type $arg * @return unknown_type */ function getArgument($arg) { switch (strtolower(gettype($arg))) { case 'string': return '"' . str_replace(array("\n"), array(''), $arg) . '"'; case 'boolean': return (bool) $arg; case 'object': return 'object(' . get_class($arg) . ')'; case 'array': $ret = 'array('; $separtor = ''; foreach ($arg as $k => $v) { $ret .= $separtor . getArgument($k) . ' => ' . getArgument($v); $separtor = ', '; } $ret .= ')'; return $ret; case 'resource': return 'resource(' . get_resource_type($arg) . ')'; default: return var_export($arg, true); } }
} break; } } return $default; } function printUsage() { $E = \svnadmin\core\Engine::getInstance(); $s = "Command line interface of iF.SVNAdmin\n" . "Version: " . $E->getAppVersionString() . "\n" . "Usage:\n" . "\tphp cli.php --mode [mode]\n" . "\n" . "Available modes:\n" . "\tupdate Updates all updateable data providers (e.g.: ldap).\n" . "\tlicense Prints out the license of this application.\n" . "\n" . "! Important usage notice !\n" . "Make sure that the current working directory (PWD/CWD) where the script " . "is being executed is the root of the iF.SVNAdmin application " . "(e.g.: /var/www/svnadmin/)." . "\n"; print $s; } /* * CLI */ $mode = getArgument($argv, "--mode"); if ($mode == "update") { $E = \svnadmin\core\Engine::getInstance(); if (!$E->isViewUpdateable()) { print "No updateable data provider configured."; exit(0); } // List of update providers. $providers = array("User-View" => $E->getProvider(PROVIDER_USER_VIEW), "Group-View" => $E->getProvider(PROVIDER_GROUP_VIEW), "AccessPath-View" => $E->getProvider(PROVIDER_ACCESSPATH_VIEW)); foreach ($providers as $type => &$prov) { if ($prov != null && $prov->isUpdateable()) { if ($prov->update()) { print "Update successful: " . $type . "\n"; } else { print "Error during update of " . $type . "\n"; }