Example #1
0
 /**
  * 
  * Loads this params object with an array or struct.
  * 
  * @param array|Solar_Struct $spec The data to load.
  * 
  * @return Solar_Sql_Model_Params
  * 
  * @see _load()
  * 
  */
 public function load($spec)
 {
     parent::load($spec);
     return $this;
 }
Example #2
0
 /**
  * 
  * Initialize the record object.  This is effectively a "first load"
  * method.
  * 
  * @param Solar_Sql_Model $model The originating model object instance (a
  * dependency injection).
  * 
  * @param array $spec The data with which to initialize this record.
  * 
  * @return void
  * 
  */
 public function init(Solar_Sql_Model $model, $spec)
 {
     if ($this->_model) {
         throw $this->_exception('ERR_CANNOT_RE_INIT');
     }
     // inject the model
     $this->_model = $model;
     // sets access methods
     $this->_setAccessMethods();
     // force spec to array
     if ($spec instanceof Solar_Struct) {
         // we can do this because $spec is of the same class
         $load = $spec->_data;
     } elseif (is_array($spec)) {
         $load = $spec;
     } else {
         $load = array();
     }
     // unserialize any serialize_cols in the load
     $this->_model->unserializeCols($load);
     // Make sure changes to xml struct records cause us to be dirty
     foreach ($this->_model->xmlstruct_cols as $col) {
         if (!empty($load[$col])) {
             $load[$col]->setParent($this);
         }
     }
     // use parent load to push values directly into $_data array
     parent::load($load);
     // Record the inital values but only for columns that have physical backing
     $this->_initial = array_intersect_key($load, $model->table_cols);
     // placeholders for nonexistent calculate_cols, bypassing __set
     foreach ($this->_model->calculate_cols as $name => $info) {
         if (!array_key_exists($name, $this->_data)) {
             $this->_data[$name] = null;
         }
     }
     // fix up related data elements
     $this->_fixRelatedData();
     // new?
     $this->_is_new = false;
     // can't be invalid
     $this->_invalid = array();
     // can't be dirty
     $this->_is_dirty = false;
     // no last sql status
     $this->_sql_status = null;
 }