Example #1
0
 /**
  * Ensure that BasePage is valid:
  * For New pages BasePage is set to their URLSegment. If URLSegment of page is changed this is updated.
  * If URLSegment doesn't exist (page deleted e.g.) it is updated to URLSegment of current page.
  */
 function onBeforeWrite()
 {
     if (!$this->owner->ID) {
         $this->owner->BasePage = $this->owner->URLSegment;
     } else {
         if ($this->owner->BasePage != null) {
             $storedData = Page::get_by_id('Page', $this->owner->ID);
             if (isset($storedData->BasePage) && ($storedData->BasePage != $this->owner->BasePage || $storedData->URLSegment != $this->owner->URLSegment) && $storedData->BasePage == $storedData->URLSegment) {
                 $this->owner->BasePage = $this->owner->URLSegment;
             } else {
                 $basePageSQL = Convert::raw2sql($this->owner->BasePage);
                 $pageExists = DataObject::get_one('Page', "URLSegment = '{$basePageSQL}'");
                 if (!$pageExists) {
                     $this->owner->BasePage = $this->owner->URLSegment;
                 }
             }
         }
     }
     parent::onBeforeWrite();
 }