?
Path : /home/admin/public_html/old/libraries/rokcommon/RokCommon/Ajax/ |
Current File : /home/admin/public_html/old/libraries/rokcommon/RokCommon/Ajax/AbstractModel.php |
<?php /** * @version $Id: AbstractModel.php 10831 2013-05-29 19:32:17Z btowles $ * @author RocketTheme http://www.rockettheme.com * @copyright Copyright (C) 2007 - 2015 RocketTheme, LLC * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only */ defined('ROKCOMMON') or die; /** * */ class RokCommon_Ajax_AbstractModel implements RokCommon_Ajax_Model { /** * @param $action * @param $params * * @throws Exception * @throws RokCommon_Ajax_Exception * @return RokCommon_Ajax_Result */ public function run($action, $params) { try { set_error_handler(array($this, 'errorHandler')); $action = (empty($action)) ? 'default' : $action; if (!method_exists($this, $action)) { throw new RokCommon_Ajax_Exception('The ' . $action . ' action does not exist for this model'); } $result = $this->$action($params); restore_error_handler(); return $result; } catch (Exception $e) { throw $e; } } /** * @param $errno * @param $errstr * @param $errfile * @param $errline * @return bool * @throws Exception */ public function errorHandler($errno, $errstr, $errfile, $errline) { if (!(error_reporting() & $errno)) { // This error code is not included in error_reporting return false; } switch ($errno) { case E_USER_ERROR: case E_RECOVERABLE_ERROR: throw new Exception(sprintf('%s %s on %s line %s', $this->getErrorType($errno), $errstr, $errfile, $errline)); break; default: error_log(sprintf('%s %s on %s line %s', $this->getErrorType($errno), $errstr, $errfile, $errline)); break; } return true; } /** * @param $type * @return string */ protected function getErrorType($type) { switch ($type) { case E_ERROR: // 1 // return 'E_ERROR'; case E_WARNING: // 2 // return 'E_WARNING'; case E_PARSE: // 4 // return 'E_PARSE'; case E_NOTICE: // 8 // return 'E_NOTICE'; case E_CORE_ERROR: // 16 // return 'E_CORE_ERROR'; case E_CORE_WARNING: // 32 // return 'E_CORE_WARNING'; case E_CORE_ERROR: // 64 // return 'E_COMPILE_ERROR'; case E_CORE_WARNING: // 128 // return 'E_COMPILE_WARNING'; case E_USER_ERROR: // 256 // return 'E_USER_ERROR'; case E_USER_WARNING: // 512 // return 'E_USER_WARNING'; case E_USER_NOTICE: // 1024 // return 'E_USER_NOTICE'; case E_STRICT: // 2048 // return 'E_STRICT'; case E_RECOVERABLE_ERROR: // 4096 // return 'E_RECOVERABLE_ERROR'; case E_DEPRECATED: // 8192 // return 'E_DEPRECATED'; case E_USER_DEPRECATED: // 16384 // return 'E_USER_DEPRECATED'; } return ""; } /** * @param RokCommon_Ajax_Result $result */ protected function sendDisconnectingReturn(RokCommon_Ajax_Result $result) { // clean outside buffers; while (@ob_end_clean()) ; header("Connection: close\r\n"); header('Content-type: text/plain'); session_write_close(); ignore_user_abort(true); ob_start(); echo json_encode($result); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); // Strange behaviour, will not work flush(); // Unless both are called ! while (@ob_end_clean()) ; if (!ini_get('safe_mode') && strpos(ini_get('disable_functions'), 'set_time_limit') === false) { @set_time_limit(0); } else { error_log('RokGallery: PHP safe_mode is on or the set_time_limit function is disabled. This can cause timeouts while processing a job if your max_execution_time is not set high enough'); } } }