public function __construct(\Model $objModel, array $arrConfig) { $this->objModel = $objModel; $this->objConfig = (object) $arrConfig; $this->arrData = $objModel->row(); $arrHeadline = deserialize($objModel->headline); $this->headline = is_array($arrHeadline) ? $arrHeadline['value'] : $arrHeadline; $this->hl = is_array($arrHeadline) ? $arrHeadline['unit'] : 'h1'; $this->strTemplate = $this->objConfig->template; }
/** * Auto-format model data based on DCA config * @param \Model * @param callable * @return \ArrayObject */ public static function generate(\Model $objModel = null, $varCallable = null) { if (null === $objModel) { return new \ArrayObject(array(), \ArrayObject::ARRAY_AS_PROPS); } $strTable = $objModel->getTable(); $objDca = new \DcaExtractor($strTable); $arrRelations = $objDca->getRelations(); $arrData = array(); \System::loadLanguageFile($strTable); \Controller::loadDataContainer($strTable); $arrFields =& $GLOBALS['TL_DCA'][$strTable]['fields']; foreach ($objModel->row() as $strField => $varValue) { $arrAdditional = array(); $strLabel = Format::dcaLabel($strTable, $strField); if (isset($arrRelations[$strField])) { $objRelated = $objModel->getRelated($strField); if ($objRelated == null) { $arrData[$strField] = new Plain('', $strLabel, $arrAdditional); } elseif ($objRelated instanceof \Model\Collection) { $arrCollection = array(); foreach ($objRelated as $objRelatedModel) { $arrCollection[] = new Relation($objRelatedModel, '', array(), $varCallable); } $arrData[$strField] = new Collection($arrCollection, $strLabel); } else { $arrData[$strField] = new Relation($objRelated, $strLabel, array(), $varCallable); } continue; } $arrAdditional['formatted'] = Format::dcaValue($strTable, $strField, $varValue); if (in_array($arrFields[$strField]['eval']['rgxp'], array('date', 'datim', 'time'))) { $arrData[$strField] = new Timestamp($varValue, $strLabel, $arrAdditional); } else { $arrData[$strField] = new Plain($varValue, $strLabel, $arrAdditional); } } if (null !== $varCallable) { call_user_func_array($varCallable, array($objModel, &$arrData)); } return new \ArrayObject($arrData, \ArrayObject::ARRAY_AS_PROPS); }
public static function getModelValuesAsStringArray(\Model $objModel, array $arrSkipFields = array()) { $arrValues = array(); \Controller::loadDataContainer($objModel::getTable()); foreach ($objModel->row() as $key => $value) { if (!isset($GLOBALS['TL_DCA'][$objModel::getTable()]['fields'][$key])) { continue; } $arrData = $GLOBALS['TL_DCA'][$objModel::getTable()]['fields'][$key]; if (!isset($arrData['inputType']) || in_array($key, $arrSkipFields)) { continue; } if ($arrData['eval']['rgxp'] == 'digit') { $value = intval($value); } if ($arrData['inputType'] == 'checkbox' && !$arrData['eval']['multiple']) { $value = $value ? 'true' : 'false'; } if ($arrData['eval']['multiple'] || $arrData['inputType'] == 'multiColumnWizard') { $value = deserialize($value, true); } // check type as well, otherwise if ($value === '') { continue; } $arrValues[$key] = $value; } return $arrValues; }
public function setModule(\Model $objModule) { $arrData = \HeimrichHannot\Haste\Util\Arrays::filterByPrefixes($objModule->row(), self::$arrayKeyPrefixes); $this->arrData = is_array($arrData) ? $arrData : $this->arrData; return $this; }
/** * Create a mobel by passing a Contao model * * @param \Model $model * @return \DcGeneral\Data\ModelInterface */ public static function byContaoModel(\Model $model) { return static::create($model->getTable(), $model->{$model->getPk()}, $model->row()); }