diff options
Diffstat (limited to 'engine/lib/api.php')
| -rw-r--r-- | engine/lib/api.php | 272 | 
1 files changed, 4 insertions, 268 deletions
diff --git a/engine/lib/api.php b/engine/lib/api.php index 823774108..7a6fd54af 100644 --- a/engine/lib/api.php +++ b/engine/lib/api.php @@ -11,274 +11,10 @@  // Result classes ///////////////////////////////////////////////////////////////////////// -/** - * GenericResult Result superclass. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Core - */ -abstract class GenericResult { -	/** -	 * The status of the result. -	 * @var int -	 */ -	private $status_code; - -	/** -	 * Message returned along with the status which is almost always an error message. -	 * This must be human readable, understandable and localised. -	 * @var string -	 */ -	private $message; - -	/** -	 * Result store. -	 * Attach result specific informaton here. -	 * -	 * @var mixed. Should probably be an object of some sort. -	 */ -	private $result; - -	/** -	 * Set a status code and optional message. -	 * -	 * @param int $status The status code. -	 * @param string $message The message. -	 */ -	protected function setStatusCode($status, $message = "") { -		$this->status_code = $status; -		$this->message = $message; -	} - -	/** -	 * Set the result. -	 * -	 * @param mixed $result -	 */ -	protected function setResult($result) { -		$this->result = $result; -	} - -	protected function getStatusCode() { -		return $this->status_code; -	} - -	protected function getStatusMessage() { -		return $this->message; -	} - -	protected function getResult() { -		return $this->result; -	} - -	/** -	 * Serialise to a standard class. -	 * -	 * DEVNOTE: The API is only interested in data, we can not easily serialise -	 * custom classes without the need for 1) the other side being PHP, 2) you need to have the class -	 * definition installed, 3) its the right version! -	 * -	 * Therefore, I'm not bothering. -	 * -	 * Override this to include any more specific information, however api results should be attached to the -	 * class using setResult(). -	 * -	 * if $CONFIG->debug is set then additional information about the runtime environment and authentication will be -	 * returned. -	 * -	 * @return stdClass Object containing the serialised result. -	 */ -	public function export() { -		global $ERRORS, $CONFIG, $_PAM_HANDLERS_MSG; - -		$result = new stdClass; - -		$result->status = $this->getStatusCode(); -		if ($this->getStatusMessage()!="") { -			$result->message = $this->getStatusMessage(); -		} - -		$resultdata = $this->getResult(); -		if (isset($resultdata)) { -			$result->result = $resultdata; -		} - -		if (isset($CONFIG->debug)) { -			if (count($ERRORS)) { -				$result->runtime_errors = $ERRORS; -			} - -			if (count($_PAM_HANDLERS_MSG)) { -				$result->pam = $_PAM_HANDLERS_MSG; -			} -		} - -		return $result; -	} -} - -/** - * SuccessResult - * Generic success result class, extend if you want to do something special. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Core - */ -class SuccessResult extends GenericResult { -	public static $RESULT_SUCCESS = 0;  // Do not change this from 0 - -	public function SuccessResult($result) { -		$this->setResult($result); -		$this->setStatusCode(SuccessResult::$RESULT_SUCCESS); -	} - -	public static function getInstance($result) { -		// Return a new error object. -		return new SuccessResult($result); -	} -} - -/** - * ErrorResult - * The error result class. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage Core - */ -class ErrorResult extends GenericResult { -	// Fail with no specific code -	public static $RESULT_FAIL = -1 ; - -	public static $RESULT_FAIL_APIKEY_DISABLED = -30; -	public static $RESULT_FAIL_APIKEY_INACTIVE = -31; -	public static $RESULT_FAIL_APIKEY_INVALID = -32; - -	// Invalid, expired or missing auth token -	public static $RESULT_FAIL_AUTHTOKEN = -20; - -	public function ErrorResult($message, $code = "", Exception $exception = NULL) { -		if ($code == "") { -			$code = ErrorResult::$RESULT_FAIL; -		} - -		if ($exception!=NULL) { -			$this->setResult($exception->__toString()); -		} - -		$this->setStatusCode($code, $message); -	} - -	/** -	 * Get a new instance of the ErrorResult. -	 * -	 * @param string $message -	 * @param int $code -	 * @param Exception $exception Optional exception for generating a stack trace. -	 */ -	public static function getInstance($message, $code = "", Exception $exception = NULL) { -		// Return a new error object. -		return new ErrorResult($message, $code, $exception); -	} -} - -// Caching of HMACs /////////////////////////////////////////////////////////////////////// - -/** - * ElggHMACCache - * Store cached data in a temporary database, only used by the HMAC stuff. - * - * @author Curverider Ltd <info@elgg.com> - * @package Elgg - * @subpackage API - */ -class ElggHMACCache extends ElggCache { -	/** -	 * Set the Elgg cache. -	 * -	 * @param int $max_age Maximum age in seconds, 0 if no limit. -	 */ -	function __construct($max_age = 0) { -		$this->set_variable("max_age", $max_age); -	} - -	/** -	 * Save a key -	 * -	 * @param string $key -	 * @param string $data -	 * @return boolean -	 */ -	public function save($key, $data) { -		global $CONFIG; - -		$key = sanitise_string($key); -		$time = time(); - -		return insert_data("INSERT into {$CONFIG->dbprefix}hmac_cache (hmac, ts) VALUES ('$key', '$time')"); -	} - -	/** -	 * Load a key -	 * -	 * @param string $key -	 * @param int $offset -	 * @param int $limit -	 * @return string -	 */ -	public function load($key, $offset = 0, $limit = null) { -		global $CONFIG; - -		$key = sanitise_string($key); - -		$row = get_data_row("SELECT * from {$CONFIG->dbprefix}hmac_cache where hmac='$key'"); -		if ($row) { -			return $row->hmac; -		} - -		return false; -	} - -	/** -	 * Invalidate a given key. -	 * -	 * @param string $key -	 * @return bool -	 */ -	public function delete($key) { -		global $CONFIG; - -		$key = sanitise_string($key); - -		return delete_data("DELETE from {$CONFIG->dbprefix}hmac_cache where hmac='$key'"); -	} - -	/** -	 * Clear out all the contents of the cache. -	 * -	 * Not currently implemented in this cache type. -	 */ -	public function clear() { -		return true; -	} - -	/** -	 * Clean out old stuff. -	 * -	 */ -	public function __destruct() { -		global $CONFIG; - -		$time = time(); -		$age = (int)$this->get_variable("max_age"); - -		$expires = $time-$age; - -		delete_data("DELETE from {$CONFIG->dbprefix}hmac_cache where ts<$expires"); -	} -} +require_once dirname(dirname(__FILE__)).'/classes/GenericResult.php'; +require_once dirname(dirname(__FILE__)).'/classes/SuccessResult.php'; +require_once dirname(dirname(__FILE__)).'/classes/ErrorResult.php'; +require_once dirname(dirname(__FILE__)).'/classes/ElggHMACCache.php';  // Primary Services API Server functions /////////////////////////////////////////////////////////////////////  | 
