/*=====================================================================*\
|| ###################################################################
|| # Blue Static ISSO Framework
-|| # Copyright (c)2005-2008 Blue Static
+|| # Copyright (c)2005-2009 Blue Static
|| #
|| # This program is free software; you can redistribute it and/or modify
|| # it under the terms of the GNU General Public License as published by
* Abstract API
*
* Abstract class that is used as an API base for most common database interaction
- * schemes. Creates a simple structure that holds data and can update, remove, and
+ * schemes. Creates a simple structure that holds data and can update, delete, and
* insert.
*
* Life-cycle of a new object:
* 4. try { $o->insert(); <other actions that depend on the saved record> } catch (ApiException $e) {}
*
* @author Blue Static
- * @copyright Copyright (c)2005 - 2008, Blue Static
+ * @copyright Copyright (c)2005 - 2009, Blue Static
* @package ISSO
*
*/
* This simply throws the ApiException if it exists, which inside holds
* all of the individual and specific errors
*/
- private function _processErrorQueue()
+ protected function _processErrorQueue()
{
if ($this->exception)
{
}
}
+ /**
+ * Resets the API object to an initial state. This will NOT clear the primary (REQ_AUTO)
+ * field.
+ */
+ public function reset()
+ {
+ foreach ($this->fields as $field => $settings)
+ {
+ if ($settings[F_REQ] == REQ_AUTO)
+ {
+ $savename = $field;
+ $savevalue = $this->fetchValue($field);
+ $savevalue = ($savevalue ? $savevalue : $this->insertid);
+ break;
+ }
+ }
+
+ $this->setfields = array();
+ $this->values = array();
+ $this->condition = '';
+ $this->insertid = 0;
+ $this->exception = null;
+
+ $this->set($savename, $savevalue);
+ }
+
/**
* Sets a value, sanitizes it, and validates it
*
/**
* Deletes a record
*
- * @param bool Run pre_remove()?
- * @param bool Run post_remove()?
+ * @param bool Run pre_delete()?
+ * @param bool Run post_delete()?
*/
- public function remove($doPre = true, $doPost = true)
+ public function delete($doPre = true, $doPost = true)
{
if (!$this->condition)
{
$this->fetch();
- $this->_runActionMethod('pre_remove', $doPre);
+ $this->_runActionMethod('pre_delete', $doPre);
BSApp::$db->query("DELETE FROM {$this->prefix}{$this->table} WHERE {$this->condition}");
- $this->_runActionMethod('post_remove', $doPost);
+ $this->_runActionMethod('post_delete', $doPost);
}
/**
* Verifies that all required fields are set
*/
- private function _verifyRequired()
+ protected function _verifyRequired()
{
foreach ($this->fields as $name => $options)
{
* @param string Action to run
* @param bool Actually run it?
*/
- private function _runActionMethod($method, $doRun)
+ protected function _runActionMethod($method, $doRun)
{
if (!$doRun || !method_exists($this, $method))
{
*
* @return string Prepared value entry
*/
- private function _prepareFieldForSql($name)
+ protected function _prepareFieldForSql($name)
{
$type = $this->fields["$name"][F_TYPE];
}
}
+ /**
+ * Determines the value of a field from Api->record[], Api->values[] (in that order)
+ *
+ * @param string The field ID to determine for
+ *
+ * @return mixed
+ */
+ public function fetchValue($field)
+ {
+ if ($this->record[$field])
+ {
+ return $this->record[$field];
+ }
+ else if ($this->values[$field])
+ {
+ return $this->values[$field];
+ }
+
+ return null;
+ }
+
/**
* Verify field: not a zero value
*/
* of exceptions that can be thrown as one
*
* @author rsesek
- * @copyright Copyright (c)2005 - 2008, Blue Static
+ * @copyright Copyright (c)2005 - 2009, Blue Static
* @package ISSO
*
*/
*/
public function __construct()
{
- parent::__construct(_('An error occurred while processing the API data.'));
+ parent::__construct(_('An error occurred while processing the API data. Errors: '));
}
/**
public function addException(Exception $e)
{
$this->exceptions[] = $e;
+ $this->message .= ' (' . sizeof($this->exceptions) . ') ' . $e->getMessage();
}
/**
* This exception represents a problem with an API field
*
* @author rsesek
- * @copyright Copyright (c)2005 - 2008, Blue Static
+ * @copyright Copyright (c)2005 - 2009, Blue Static
* @package ISSO
*
*/