/**
  * Called when the attribute has been saved.
  *
  * @param InterfaceGeneralModel $objModel The model that has been updated.
  *
  * @param DataContainer $objDC the data container that issued this callback.
  */
 public function onSaveCallback($objModel, $objDC)
 {
     /**
      * The currently edited field.
      *
      * @var IMetaModelAttribute
      */
     $objField = self::$objCurrentField;
     $arrNewField = $objModel->getPropertiesAsArray();
     if ($objField) {
         $oldType = $objField->get('type');
     } else {
         $oldType = null;
     }
     if ($oldType != $arrNewField['type']) {
         // destroy old instance...
         if ($objField) {
             $objField->destroyAUX();
         }
         // ... prepare new instance.
         $objField = MetaModelAttributeFactory::createFromArray($arrNewField);
         // create new instance' aux info.
         if ($objField) {
             self::$objCurrentField = $objField;
             $objField->initializeAUX();
         }
     }
     if ($objField) {
         // now loop over all values and update the meta in the instance.
         foreach ($arrNewField as $strKey => $varValue) {
             $objField->handleMetaChange($strKey, $varValue);
         }
     }
 }
Example #2
0
 /**
  * Return the formatted group header as string
  * @param string
  * @param mixed
  * @param integer
  * @param InterfaceGeneralModel
  * @return string
  */
 public function formatGroupHeader($field, $value, $mode, InterfaceGeneralModel $objModelRow)
 {
     $group = '';
     static $lookup = array();
     if (array_is_assoc($this->arrDCA['fields'][$field]['options'])) {
         $group = $this->arrDCA['fields'][$field]['options'][$value];
     } else {
         if (is_array($this->arrDCA['fields'][$field]['options_callback'])) {
             if (!isset($lookup[$field])) {
                 $lookup[$field] = $this->objCallbackClass->optionsCallback($field);
             }
             $group = $lookup[$field][$value];
         } else {
             $group = is_array($this->arrDCA['fields'][$field]['reference'][$value]) ? $this->arrDCA['fields'][$field]['reference'][$value][0] : $this->arrDCA['fields'][$field]['reference'][$value];
         }
     }
     if (empty($group)) {
         $group = is_array($this->arrDCA[$value]) ? $this->arrDCA[$value][0] : $this->arrDCA[$value];
     }
     if (empty($group)) {
         $group = $value;
         if ($this->arrDCA['fields'][$field]['eval']['isBoolean'] && $value != '-') {
             $group = is_array($this->arrDCA['fields'][$field]['label']) ? $this->arrDCA['fields'][$field]['label'][0] : $this->arrDCA['fields'][$field]['label'];
         }
     }
     $group = $this->objCallbackClass->groupCallback($group, $mode, $field, $objModelRow->getPropertiesAsArray());
     return $group;
 }
 /**
  * Save a new version of a row.
  *
  * @param InterfaceGeneralModel $objModel    The model for which a new version shall be created.
  *
  * @param string                $strUsername The username to attach to the version as creator.
  *
  * @return void
  */
 public function saveVersion(InterfaceGeneralModel $objModel, $strUsername)
 {
     $objCount = $this->objDatabase->prepare("SELECT count(*) as mycount FROM tl_version WHERE pid=? AND fromTable = ?")->execute($objModel->getID(), $this->strSource);
     $mixNewVersion = intval($objCount->mycount) + 1;
     $mixData = $objModel->getPropertiesAsArray();
     $mixData["id"] = $objModel->getID();
     $mixData = serialize($mixData);
     $arrInsert = array();
     $arrInsert['pid'] = $objModel->getID();
     $arrInsert['tstamp'] = time();
     $arrInsert['version'] = $mixNewVersion;
     $arrInsert['fromTable'] = $this->strSource;
     $arrInsert['username'] = $strUsername;
     $arrInsert['data'] = $mixData;
     $this->objDatabase->prepare('INSERT INTO tl_version %s')->set($arrInsert)->execute();
     $this->setVersionActive($objModel->getID(), $mixNewVersion);
 }
 /**
  * Call the group callback.
  *
  * @param type                  $group TODO: document parameter $group
  *
  * @param type                  $mode  TODO: document parameter $mode
  *
  * @param type                  $field TODO: document parameter $field
  *
  * @param InterfaceGeneralModel $objModelRow
  *
  * @return type  TODO: document result
  */
 public function groupCallback($group, $mode, $field, $objModelRow)
 {
     // Load DCA
     $arrDCA = $this->objDC->getDCA();
     $currentGroup = $group;
     // Check Callback
     if (is_array($arrDCA['list']['label']['group_callback'])) {
         $strClass = $arrDCA['list']['label']['group_callback'][0];
         $strMethod = $arrDCA['list']['label']['group_callback'][1];
         $this->import($strClass);
         $currentGroup = $this->{$strClass}->{$strMethod}($currentGroup, $mode, $field, $objModelRow->getPropertiesAsArray(), $this);
         if ($currentGroup == null) {
             $group = $currentGroup;
         }
     }
     return $group;
 }