public function onBeforeWrite()
 {
     parent::onBeforeWrite();
     $bt = defined('DB::USE_ANSI_SQL') ? "\"" : "`";
     if ($this->classHasAdvertisements($this->owner->ClassName)) {
         $objects = array(0 => 0);
         $images = array(0 => 0);
         $dos1 = $this->advertisementsToShow();
         if ($dos1) {
             foreach ($dos1 as $obj) {
                 $images[$obj->ID] = $obj->AdvertisementImageID;
                 $objects[$obj->ID] = $obj->ID;
             }
         }
         //check for non-existing images and delete advertisements associated with it
         foreach ($images as $objectID => $imageID) {
             if (!Image::get()->byID($imageID)) {
                 $obj = Advertisement::get()->byID($objectID);
                 if ($obj) {
                     $obj->delete();
                     $obj->destroy();
                     unset($objects[$objectID]);
                 }
             }
         }
         //check if a folder has been set and create objects
         if ($this->owner->AdvertisementsFolderID) {
             $dos2 = Image::get()->where("\"File\".\"ParentID\" = " . $this->owner->AdvertisementsFolderID . " AND \"Advertisement\".\"AdvertisementImageID\" IS NULL ")->leftJoin("Advertisement", "\"Advertisement\".\"AdvertisementImageID\" = \"File\".\"ID\" ");
             if ($dos2->count()) {
                 $advertisementsToAdd = array();
                 foreach ($dos2 as $image) {
                     $newAdvertisement = new Advertisement();
                     $newAdvertisement->AdvertisementImageID = $image->ID;
                     $newAdvertisement->Title = $image->Title;
                     $newAdvertisement->AutoAdded = true;
                     $newAdvertisement->write();
                     $objects[$newAdvertisement->ID] = $newAdvertisement->ID;
                 }
                 $this->owner->Advertisements()->addMany($objects);
             }
         }
         if ($this->owner->AdvertisementStyleID) {
             if (!AdvertisementStyle::get()->byID($this->owner->AdvertisementStyleID)) {
                 $this->owner->AdvertisementStyleID = 0;
             }
         }
         //remove advdertisements if parent is being used...
         if ($this->owner->UseParentAdvertisements) {
             if ($this->advertisementParent()) {
                 $combos = $this->owner->Advertisements();
                 if ($combos) {
                     $combos->removeAll();
                 }
             } else {
                 $this->owner->UseParentAdvertisements = false;
             }
         }
     }
 }