Source of file DataObjectExtension.php
Size: 2,564 Bytes - Last Modified: 2021-12-23T10:46:33+00:00
/var/www/docs.ssmods.com/process/src/src/Extensions/DataObjectExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | <?php namespace Sunnysideup\SimpleTemplateCaching\Extensions; use SilverStripe\Core\Config\Config; use SilverStripe\ORM\DataExtension; use SilverStripe\Versioned\Versioned; class DataObjectExtension extends DataExtension { public function onAfterWrite() { parent::onAfterWrite(); $owner = $this->owner; $className = $owner->ClassName; // NB. // if the dataobject has the versioned extension then the cache should be invalidated onAfterPublish // hasStages function is part of the Versioned class so safe to check here if (! $owner->hasExtension(Versioned::class)) { $this->doUpdateCache($className); } elseif (! $owner->hasStages()) { $this->doUpdateCache($className); } } public function onAfterDelete() { parent::onAfterDelete(); $this->doUpdateCache($this->owner->ClassName); } //* this function needs further consideration as it is called many times on the front end */ // public function updateManyManyComponents() // { // $owner = $this->owner; // $className = $owner->ClassName; // if(!$owner->hasExtension(Versioned::class)){ // $this->doUpdateCache($className); // } // //if the dataobject has the versioned extension then the cache should be invalidated onAfterPublish // else if (!$owner->hasStages()){ // $this->doUpdateCache($className); // } // } public function onBeforeRollback() { $this->doUpdateCache($this->owner->ClassName); } public function onAfterPublish() { $this->doUpdateCache($this->owner->ClassName); } public function onAfterArchive() { $this->doUpdateCache($this->owner->ClassName); } public function onAfterUnpublish() { $this->doUpdateCache($this->owner->ClassName); } public function onAfterVersionedPublish() { $this->doUpdateCache($this->owner->ClassName); } public function onAfterWriteToStage($toStage) { $this->doUpdateCache($this->owner->ClassName); } private function doUpdateCache($className) { if ($this->canUpdateCache($className)) { SimpleTemplateCachingSiteConfigExtension::update_cache_key(); } } private function canUpdateCache($className): bool { $excludedClasses = Config::inst()->get(self::class, 'excluded_classes'); return ! in_array($className, $excludedClasses, true); } } |