public function getChoices() { $page_filters_ids = array(); $page = sfPlopPagePeer::retrieveByPK($this->getOption('page_id)')); $q = sfPlopPageQuery::create()->filterByTreeLevel($page->getLevel() + 1); $page_filters = $page->getBranch($q); foreach ($page_filters as $page_filter) { $page_filters_ids[] = $page_filter->getId(); } $filters = sfPlopSlotConfigQuery::create()->innerJoinsfPlopSlot()->filterByPageId($page_filters_ids)->find(); foreach ($filters as $i => $filter) { if (!$filter->getTemplate() != 'GoogleMapsFilter' && !$filter->getSlot()->ispublished()) { unset($filters[$i]); } } $options_for_filter = array('' => ''); foreach ($filters as $filter_object) { $options_for_filter[$filter_object->getValue($this->getOption('page_culture)'))] = $filter_object->getValue($this->getOption('page_culture)')); } $this->setOption('choices', array_keys($options_for_filter)); return parent::getChoices(); }
/** * Override the doSave function to do some custom tweaks. * @param PropelPDO $con */ protected function doSave(PropelPDO $con) { if ($this->isColumnModified(sfPlopPagePeer::TEMPLATE_ID)) { $tpl = sfPlopPagePeer::retrieveByPK($this->getTemplateId()); if ($tpl && $tpl->getTemplateId()) { $tplTpl = sfPlopPagePeer::retrieveByPK($tpl->getTemplateId()); if ($tplTpl && $tplTpl->hasSlotArea()) { $this->setTemplateId($tpl->getId()); } } elseif (!$tpl) { $this->setTemplateId(null); } if (!$this->isSlotable()) { $this->deleteOwnSlots(); } $this->getPeer()->removeInstanceFromPool($this); $oldTemplate = $this->getPeer()->retrieveByPK($this->getId()); if ($oldTemplate) { $oldTemplateId = $oldTemplate->getTemplateId(); } if ($oldTemplateId != $this->getTemplateId()) { $this->deleteUnusedInheritedSlotConfigs($oldTemplateId); } } return parent::doSave($con); }