Spaces:
Sleeping
Sleeping
| /** | |
| * HttpProxyController | |
| * | |
| * @author Erik Amaru Ortiz <erik@colosa.com, aortiz.erik@gmail.com> | |
| * @package gulliver.system | |
| * @access private | |
| */ | |
| class HttpProxyController | |
| { | |
| /** | |
| * | |
| * @var array - private array to store proxy data | |
| */ | |
| private $__data__ = array (); | |
| /** | |
| * | |
| * @var object - private object to store the http request data | |
| */ | |
| private $__request__; | |
| public $jsonResponse = true; | |
| private $sendResponse = true; | |
| public function __construct() { | |
| $this->__request__ = new stdclass(); | |
| } | |
| /** | |
| * Magic setter method | |
| * | |
| * @param string $name | |
| * @param string $value | |
| */ | |
| public function __set ($name, $value) | |
| { | |
| //echo "Setting '$name' to '$value'\n"; | |
| $this->__data__[$name] = $value; | |
| } | |
| /** | |
| * Magic getter method | |
| * | |
| * @param string $name | |
| * @return string or NULL if the internal var doesn't exist | |
| */ | |
| public function __get ($name) | |
| { | |
| //echo "Getting '$name'\n"; | |
| if (array_key_exists( $name, $this->__data__ )) { | |
| return $this->__data__[$name]; | |
| } | |
| /*$trace = debug_backtrace(); | |
| trigger_error( | |
| 'Undefined property via __get(): ' . $name . | |
| ' in ' . $trace[0]['file'] . | |
| ' on line ' . $trace[0]['line'], | |
| E_USER_NOTICE); | |
| return null;*/ | |
| } | |
| /** | |
| * Magic isset method | |
| * | |
| * @param string $name | |
| */ | |
| public function __isset ($name) | |
| { | |
| //echo "Is '$name' set?\n"; | |
| return isset( $this->__data__[$name] ); | |
| } | |
| /** | |
| * Magic unset method | |
| * | |
| * @param string $name | |
| */ | |
| public function __unset ($name) | |
| { | |
| //echo "Unsetting '$name'\n"; | |
| unset( $this->__data__[$name] ); | |
| } | |
| /** | |
| * call to execute a internal proxy method and handle its exceptions | |
| * | |
| * @param string $name | |
| */ | |
| public function call ($name) | |
| { | |
| $result = new stdClass(); | |
| try { | |
| $result = $this->$name( $this->__request__ ); | |
| if (! $this->jsonResponse) { | |
| return null; | |
| } | |
| if (! $result) { | |
| $result = $this->__data__; | |
| } | |
| } catch (Exception $e) { | |
| $result->success = false; | |
| $result->message = $result->msg = $e->getMessage(); | |
| switch (get_class( $e )) { | |
| case 'Exception': | |
| $error = "SYSTEM ERROR"; | |
| break; | |
| case 'PMException': | |
| $error = "PROCESSMAKER ERROR"; | |
| break; | |
| case 'PropelException': | |
| $error = "DATABASE ERROR"; | |
| break; | |
| case 'UserException': | |
| $error = "USER ERROR"; | |
| break; | |
| } | |
| $result->error = $e->getMessage(); | |
| $result->exception = new stdClass(); | |
| $result->exception->class = get_class( $e ); | |
| $result->exception->code = $e->getCode(); | |
| $result->exception->trace = $e->getTraceAsString(); | |
| } | |
| if ($this->sendResponse) { | |
| print G::json_encode( $result ); | |
| } | |
| } | |
| /** | |
| * Set the http request data | |
| * | |
| * @param array $data | |
| */ | |
| public function setHttpRequestData ($data) | |
| { | |
| if (is_array( $data )) { | |
| while ($var = each( $data )) { | |
| $this->__request__->$var['key'] = $var['value']; | |
| } | |
| } else { | |
| $this->__request__ = $data; | |
| } | |
| } | |
| public function setJsonResponse ($bool) | |
| { | |
| $this->jsonResponse = $bool; | |
| } | |
| /** | |
| * Send response to client | |
| * | |
| * @param boolean $val | |
| */ | |
| public function setSendResponse ($val) | |
| { | |
| $this->sendResponse = $val; | |
| } | |
| } | |