Skip to content

Commit 77f314e

Browse files
committed
changed: invalidating widget cache using entity invalidateCache function
1 parent e0eea24 commit 77f314e

File tree

3 files changed

+21
-29
lines changed

3 files changed

+21
-29
lines changed

classes/ColdTrick/WidgetManager/Widgets.php

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -192,37 +192,14 @@ public static function saveContentInCache(\Elgg\Event $event): void {
192192
elgg_save_system_cache("widget_cache_{$widget->guid}_{$current_language}", $event->getValue());
193193
}
194194

195-
/**
196-
* Unsets the cached data for cacheable widgets
197-
*
198-
* @param \Elgg\Event $event 'update:after', 'object'
199-
*
200-
* @return void
201-
*/
202-
public static function clearWidgetCacheOnUpdate(\Elgg\Event $event): void {
203-
$widget = $event->getObject();
204-
if (!$widget instanceof \ElggWidget) {
205-
return;
206-
}
207-
208-
if (!self::isCacheableWidget($widget)) {
209-
return;
210-
}
211-
212-
$languages = elgg()->translator->getAllowedLanguages();
213-
foreach ($languages as $language) {
214-
elgg_delete_system_cache("widget_cache_{$widget->guid}_{$language}");
215-
}
216-
}
217-
218195
/**
219196
* Checks if the provide widget is registered as a cacheable widget
220197
*
221198
* @param \ElggWidget $widget widget to check
222199
*
223200
* @return bool
224201
*/
225-
protected static function isCacheableWidget(\ElggWidget $widget): bool {
202+
public static function isCacheableWidget(\ElggWidget $widget): bool {
226203
static $cacheable_handlers;
227204
if (!isset($cacheable_handlers)) {
228205
$cacheable_handlers = elgg_trigger_event_results('cacheable_handlers', 'widget_manager', [], []);

classes/WidgetManagerWidget.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,24 @@ class WidgetManagerWidget extends \ElggWidget {
1313
public function getDisplayName(): string {
1414
return $this->widget_manager_custom_title ?: parent::getDisplayName();
1515
}
16+
17+
/**
18+
* {@inheritdoc}
19+
*/
20+
public function invalidateCache(): void {
21+
if (!$this->guid) {
22+
return;
23+
}
24+
25+
parent::invalidateCache();
26+
27+
if (!\ColdTrick\WidgetManager\Widgets::isCacheableWidget($this)) {
28+
return;
29+
}
30+
31+
$languages = elgg()->translator->getAllowedLanguages();
32+
foreach ($languages as $language) {
33+
elgg_delete_system_cache("widget_cache_{$this->guid}_{$language}");
34+
}
35+
}
1636
}

elgg-plugin.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,6 @@
199199
'\ColdTrick\WidgetManager\Groups::updateGroupWidgets' => [],
200200
],
201201
],
202-
'update:after' => [
203-
'object' => [
204-
'\ColdTrick\WidgetManager\Widgets::clearWidgetCacheOnUpdate' => [],
205-
],
206-
],
207202
'view' => [
208203
'object/widget/body' => [
209204
'\ColdTrick\WidgetManager\Widgets::saveContentInCache' => ['priority' => 9999],

0 commit comments

Comments
 (0)