Files
luos/gulliver/system/class.httpProxyController.php
jennylee e456979aa3 CODE STYLE, gulliver/system/...
FILES:
class.dbMaintenance.php
class.dbconnection.php
class.dbrecordset.php
class.dbsession.php
class.dbtable.php
class.httpProxyController.php
class.i18n_po.php
class.mailer.php
class.menu.php
class.objectTemplate.php
class.testTools.php
class.tree.php
class.unitTest.php
class.webResource.php
class.xmlDocument.php
class.xmlformExtension.php
2012-10-18 10:54:46 -04:00

164 lines
3.7 KiB
PHP
Executable File

<?php
/**
* 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;
/**
* 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;
}
}