gordonbanderson /
weboftalent-imageeditpartialcachebust
| 1 | <?php |
||
| 2 | |||
| 3 | class ImageEditPartialCacheBustExtension extends DataExtension { |
||
|
0 ignored issues
–
show
|
|||
| 4 | |||
| 5 | /* |
||
| 6 | This is intended to be added to Image as an extension. When an image is edited checks are made |
||
| 7 | against a configurable list of classes mapped to the image ID field. If the image ID field value matches |
||
| 8 | the ID of the image being refocussed, the DataObject's LastEdited field is updated. |
||
| 9 | */ |
||
| 10 | public function onAfterWrite() { |
||
| 11 | $config = Config::inst(); |
||
| 12 | $sitetreeclasses = $config->get('ImageEditCacheBust', 'SiteTree'); |
||
| 13 | $dataobjectclasses = $config->get('ImageEditCacheBust', 'DataObject'); |
||
| 14 | $stages = $config->get('ImageEditCacheBust', 'Stages'); |
||
| 15 | |||
| 16 | if ($sitetreeclasses) { |
||
| 17 | // deal with SiteTree first |
||
| 18 | foreach ($sitetreeclasses as $clazz => $idfield) { |
||
| 19 | $instanceofclass = Injector::inst()->create($clazz); |
||
| 20 | $objectsWithImage = $instanceofclass::get()->filter($idfield, $this->owner->ID); |
||
| 21 | foreach ($objectsWithImage as $objectWithImage) { |
||
| 22 | foreach ($stages as $stage) { |
||
| 23 | $suffix = '_'.$stage; |
||
| 24 | $suffix = str_replace('_Stage', '', $suffix); |
||
| 25 | $sql = "UPDATE `SiteTree{$suffix}` SET LastEdited=NOW() where ID=".$objectWithImage->ID; |
||
| 26 | DB::query($sql); |
||
| 27 | } |
||
| 28 | } |
||
| 29 | } |
||
| 30 | } |
||
| 31 | |||
| 32 | |||
| 33 | |||
| 34 | if ($dataobjectclasses) { |
||
| 35 | // deal with SiteTree first |
||
| 36 | foreach ($dataobjectclasses as $clazz => $idfield) { |
||
| 37 | $instanceofclass = Injector::inst()->create($clazz); |
||
| 38 | $objectsWithImage = $instanceofclass::get()->filter($idfield, $this->owner->ID); |
||
| 39 | foreach ($objectsWithImage as $objectWithImage) { |
||
| 40 | $sql = "UPDATE `$clazz` SET LastEdited=NOW() where ID=".$objectWithImage->ID; |
||
| 41 | DB::query($sql); |
||
| 42 | |||
| 43 | } |
||
| 44 | } |
||
| 45 | } |
||
| 46 | } |
||
| 47 | } |
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.