Update version.php to 3.3.0
[isso.git] / Api.php
diff --git a/Api.php b/Api.php
index 0e5ecd30a29b3b85d23b80f064b0396bbd11d170..aa6d6ca79b91b5482c13fc60485e44e66b611da6 100644 (file)
--- a/Api.php
+++ b/Api.php
@@ -2,7 +2,7 @@
 /*=====================================================================*\
 || ###################################################################
 || # 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
@@ -72,7 +72,7 @@ if (!defined('REQ_AUTO'))
  * 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
  * 
  */
@@ -193,6 +193,32 @@ abstract class BSApi
                }
        }
        
+       /**
+        * 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
         *
@@ -460,6 +486,27 @@ abstract class BSApi
                }
        }
        
+       /**
+        * 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
         */
@@ -511,7 +558,7 @@ abstract class BSApi
  * 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
  *
  */
@@ -559,7 +606,7 @@ class ApiException extends Exception
  * 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
  *
  */