Example #1
0
 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;
 }
Example #2
0
 /**
  * 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());
 }