* @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; /** * 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) { 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->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; } }