public static function report(Oops_Error_Handler $errorHandler, $path) { $errors = ''; foreach ($errorHandler->getErrors() as $err) { $errors .= "Oops-Error: {$err}\n"; } foreach ($errorHandler->getWarnings() as $err) { $errors .= "Oops-Warning: {$err}\n"; } foreach ($errorHandler->getNotices() as $err) { $errors .= "Oops-Notice: {$err}\n"; } foreach ($errorHandler->getPhps() as $err) { $errors .= "Php-errors: {$err}\n"; } if (!strlen($errors)) { return; } $logFile = new Oops_File($path . "/error.log"); if ($logFile->size > 50 * 1024) { if (file_exists($logFile->filename . ".1")) { unlink($logFile->filename . ".1"); } $logFile->rename($logFile->filename . ".1"); $logFile = new Oops_File($path . "/error.log"); } $logFile->makeWriteable(); $ft = fopen($logFile->filename, "a"); $request = Oops_Server::getRequest(); fputs($ft, "\n" . date("r") . "\n " . $request->getUrl() . "\n" . $errors); fclose($ft); }
/** * Decompose stored data to PHP object or value * * @param $class * @param $id * @param $serialized * @return mixed */ protected function _decomposeData($class, $id, $serialized) { if (strlen($serialized)) { /** * Object (or data) should be restored from serialized string */ require_once 'Oops/Error/Handler.php'; $eH = new Oops_Error_Handler(); $result = unserialize($serialized); restore_error_handler(); if (!$eH->isClear()) { require_once 'Oops/Process/Exception.php'; throw new Oops_Process_Exception("Process stored data decomposition error", OOPS_PROCESS_EXCEPTION_DECOMPOSITION_ERROR); } } elseif (strlen($class) && Oops_Loader::find($class)) { $reflectionClass = new ReflectionClass($class); if ($reflectionClass->implementsInterface('Oops_Pattern_Identifiable_Factored_Interface')) { /** * Object can be restored using corresponding factory */ $factoryCallback = call_user_func($class, 'getFactoryCallback'); $result = call_user_func($factoryCallback, $id); } if ($reflectionClass->implementsInterface('Oops_Pattern_Identifiable_Singleton_Interface')) { /** * This object can be restored using $class::getInstance($id) */ $result = call_user_func(array($class, 'getInstance'), $id); } elseif ($reflectionClass->implementsInterface('Oops_Pattern_Singleton_Interface')) { /** * This object is the single available instance of this class, so it can be restored using $class::getInstance() */ $result = call_user_func(array($class, 'getInstance')); } else { /** * This type of object should be constructed with given $id */ $result = $reflectionClass->newInstance($id); } } else { require_once 'Oops/Process/Exception.php'; throw new Oops_Process_Exception("Process stored data decomposition error", OOPS_PROCESS_EXCEPTION_DECOMPOSITION_ERROR); } return $result; }