/** * 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); } } }
/** * 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; }