protected function doSave($con = null) { $values = $this->values; if (isset($values['position']) && $values['position'] != '') { $relative_page = sfPlopPagePeer::retrieveByPk($values['position_relative']); if (in_array($values['position'], array('first_child', 'last_child'))) { if ($this->getObject()->isNew() && $values['position'] == 'first_child') { $this->getObject()->insertAsFirstChildOf($relative_page); } elseif ($values['position'] == 'first_child') { $this->getObject()->moveToFirstChildOf($relative_page); } elseif ($this->getObject()->isNew()) { $this->getObject()->insertAsLastChildOf($relative_page); } else { $this->getObject()->moveToLastChildOf($relative_page); } } elseif (in_array($values['position'], array('previous_sibling', 'next_sibling')) && ($relative_page && !$relative_page->isRoot())) { if ($this->getObject()->isNew() && $values['position'] == 'previous_sibling') { $this->getObject()->insertAsPrevSiblingOf($relative_page); } elseif ($values['position'] == 'previous_sibling') { $this->getObject()->moveToPrevSiblingOf($relative_page); } elseif ($this->getObject()->isNew()) { $this->getObject()->insertAsNextSiblingOf($relative_page); } else { $this->getObject()->moveToNextSiblingOf($relative_page); } } } elseif ($this->getObject()->isNew()) { if ($this->getOption('page_ref') && $this->getOption('page_ref') instanceof sfPlopPage) { $this->getObject()->insertAsNextSiblingOf($this->getOption('page_ref')); } else { $this->getObject()->insertAsLastChildOf(sfPlopPagePeer::retrieveRoot()); } } parent::doSave($con); if ($this->getOption('page_ref') instanceof sfPlopPage) { $this->getObject()->copySlotsFrom($this->getOption('page_ref')); } if (isset($values[$this->getObject()->getCulture()]) && $values[$this->getObject()->getCulture()]['title'] == '') { $this->getObject()->setCulture($values[$this->getObject()->getCulture()]['locale']); $this->getObject()->setTitle('Page'); $this->getObject()->save(); } }