public function run() { require_once TL_ROOT . '/system/config/langconfig.php'; if ($this->Database->tableExists('tl_metafields')) { return false; } if (!is_array($GLOBALS['TL_LANG']['additional_metafields'])) { return false; } if (!array_key_exists('additional_metafields_exts', $GLOBALS['TL_CONFIG'])) { return false; } if (strlen($GLOBALS['TL_CONFIG']['additional_metafields_exts']) === 0) { return false; } $exts = $GLOBALS['TL_CONFIG']['additional_metafields_exts']; $dcaExt = new DcaExtractor('tl_metafields'); $arrSql = $dcaExt->getDbInstallerArray(); $strSql = "CREATE TABLE `tl_metafields` (" . implode(',', $arrSql["TABLE_FIELDS"]) . ',' . implode(',', $arrSql["TABLE_CREATE_DEFINITIONS"]) . ')' . $arrSql["TABLE_OPTIONS"] . ';'; $this->Database->execute($strSql); foreach ($GLOBALS['TL_LANG']['additional_metafields'] as $alias => $label) { $objModel = new MetafieldsModel(); $objModel->tstamp = time(); $objModel->alias = $alias; $objModel->label = $label; $objModel->extensions = $exts; $objModel->save(); } }
private function loadFields() { if ($this->arrMetafields !== null) { return $this->arrMetafields; } $this->arrMetafields = array(); // Todo label translation $collection = MetafieldsModel::findAll(); if ($collection === null) { return $this->arrMetafields; } foreach ($collection as $objField) { $extensions = array_map('trim', explode(',', $objField->extensions)); $alias = $objField->alias; $label = $objField->label; $folderAttr = $objField->folder === '1'; foreach ($extensions as $ext) { if (!is_array($this->arrMetafields[$ext])) { $this->arrMetafields[$ext] = array(); } $this->arrMetafields[$ext][$alias] = $label; if ($folderAttr) { if (!is_array($this->arrMetafields[static::TYPE_FOLDER])) { $this->arrMetafields[static::TYPE_FOLDER] = array(); } $this->arrMetafields[static::TYPE_FOLDER][$alias] = $label; } } } return $this->arrMetafields; }