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; } } } }