/**
  * The constructor for the storage mechanism
  * @param string $name
  * @param array $global_options. Default to empty array. The array of options that are 
  * the same across all all forms which share a commone storage mechanisms
  */
 public function __construct($name, $global_options = array())
 {
     parent::__construct($name, $global_options);
     $this->storage_options_cache[] = array();
     $this->componentized_forms = I2CE_FormStorage::getComponentizedForms();
     if (!array_key_exists('components', $this->global_options) || !is_array($this->global_options['components'])) {
         I2CE::raiseError("No components specifed for multi-flat storage");
         return false;
     }
     $this->databases = array();
     foreach ($this->global_options['components'] as $component => $data) {
         if (!is_array($data) || !array_key_exists('database', $data) || !is_string($data['database']) || strlen($data['database']) < 1) {
             continue;
         }
         $this->databases[$component] = $data['database'];
     }
 }
 /**
  * The constructor for the storage mechanism
  * @param string $name
  * @param array $global_options. Default to empty array. The array of options that are 
  * the same across all all forms which share a commone storage mechanisms
  */
 public function __construct($name, $global_options = array())
 {
     parent::__construct($name, $global_options);
     $this->storage_options_cache = array();
 }
 /**
  * Save a form object into magicdata
  * @param I2CE_Form $form
  * @param I2CE_User $user
  * @param boolean $transact
  */
 public function save($form, $user, $transact)
 {
     $form_id = $form->getId();
     if (!$form_id) {
         $form_id = $this->getNextAvailableId($form->getName());
     }
     if (!$form_id) {
         return false;
     }
     $form->setId($form_id);
     $form_config = $this->getFormConfig($form, true);
     if (!$form_config instanceof I2CE_MagicDataNode) {
         return false;
     }
     $form_config->last_modified = I2CE_Date::now(I2CE_Date::DATE_TIME)->dbFormat();
     $form_config->who = $user->getId();
     $parent = $form->getParent();
     if ($parent != "") {
         /*  Does this need to be here?  the parent node may be new and doesn't exist...
             if ($form_config->is_parent('parent')) {
                 return false;
             }
             */
         $form_config->parent = $parent;
     }
     return parent::save($form, $user, $transact);
 }
 /**
  * Populates the history of each field given to the method.
  * @param I2CE_Form $form
  */
 public function populateHistory($form)
 {
     $this->setupForm($form);
     parent::populateHistory($form);
 }