protected function objectsFromUrl($objDC) { if ($this->Input->get('do') != 'metamodels' || (is_object($objDC) && $objDC->table != 'tl_metamodel_filtersetting' || !is_object($objDC) && $objDC != 'tl_metamodel_filtersetting')) { return; } // TODO: detect all other ways we might end up here and fetch $objMetaModel accordingly. if ($this->objMetaModel) { return; } if (is_object($objDC) && $objDC->getCurrentModel()) { $this->strSettingType = $objDC->getCurrentModel()->getProperty('type'); $this->objFilter = $this->Database->prepare('SELECT * FROM tl_metamodel_filter WHERE id=?')->execute($objDC->getCurrentModel()->getProperty('fid')); $this->objMetaModel = MetaModelFactory::byId($this->objFilter->pid); } if ($this->Input->get('act')) { // act present, but we have an id switch ($this->Input->get('act')) { case 'edit': if ($this->Input->get('id')) { $this->objFilter = $this->Database->prepare(' SELECT tl_metamodel_filter.*, tl_metamodel_filtersetting.type AS tl_metamodel_filtersetting_type, tl_metamodel_filtersetting.id AS tl_metamodel_filtersetting_id FROM tl_metamodel_filtersetting LEFT JOIN tl_metamodel_filter ON (tl_metamodel_filtersetting.fid = tl_metamodel_filter.id) WHERE (tl_metamodel_filtersetting.id=?)')->execute($this->Input->get('id')); $this->strSettingType = $this->objFilter->tl_metamodel_filtersetting_type; $this->objMetaModel = MetaModelFactory::byId($this->objFilter->pid); } break; case 'paste': if ($this->Input->get('id')) { switch ($this->Input->get('mode')) { case 'create': $this->objFilter = $this->Database->prepare('SELECT * FROM tl_metamodel_filter WHERE id=?')->execute($this->Input->get('id')); $this->objMetaModel = MetaModelFactory::byId($this->objFilter->pid); break; case 'cut': $this->objFilter = $this->Database->prepare(' SELECT tl_metamodel_filter.*, tl_metamodel_filtersetting.type AS tl_metamodel_filtersetting_type, tl_metamodel_filtersetting.id AS tl_metamodel_filtersetting_id FROM tl_metamodel_filtersetting LEFT JOIN tl_metamodel_filter ON (tl_metamodel_filtersetting.fid = tl_metamodel_filter.id) WHERE (tl_metamodel_filtersetting.id=?)')->execute($this->Input->get('source')); $this->strSettingType = $this->objFilter->tl_metamodel_filtersetting_type; $this->objMetaModel = MetaModelFactory::byId($this->objFilter->pid); break; } } break; case 'create': $this->objFilter = $this->Database->prepare('SELECT * FROM tl_metamodel_filter WHERE id=?')->execute($this->Input->get('id')); $this->objMetaModel = MetaModelFactory::byId($this->objFilter->pid); break; default: } } else { // no act but we have an id, should be list mode then, no type name available. if ($this->Input->get('id')) { $this->objFilter = $this->Database->prepare('SELECT * FROM tl_metamodel_filter WHERE id=?')->execute($this->Input->get('id')); $this->objMetaModel = MetaModelFactory::byId($this->objFilter->pid); } } // select all root entries for the current filter. $GLOBALS['TL_DCA']['tl_metamodel_filtersetting']['list']['sorting']['root'] = $this->Database->prepare('SELECT * FROM tl_metamodel_filtersetting WHERE fid=? AND pid=0')->execute($this->objFilter->id)->fetchEach('id'); $GLOBALS['TL_DCA']['tl_metamodel_filtersetting']['list']['sorting']['rootPaste'] = true; if ($this->objMetaModel) { $GLOBALS['TL_LANG']['MSC']['editRecord'] = sprintf($GLOBALS['TL_LANG']['MSC']['metamodel_filtersetting']['editRecord'], $this->objFilter->name, $this->objMetaModel->getName()); $GLOBALS['TL_DCA']['tl_metamodel_filtersetting']['config']['label'] = sprintf($GLOBALS['TL_LANG']['MSC']['metamodel_filtersetting']['label'], $this->objFilter->name, $this->objMetaModel->getName()); } }