mirror of
https://code.castopod.org/adaures/castopod
synced 2025-04-19 13:01:19 +00:00
fix(plugins): delete relevant cache when submitting settings
This commit is contained in:
parent
85704bfbe0
commit
00bd4c02ee
@ -27,7 +27,7 @@ $routes->group(
|
||||
'as' => 'plugins-view',
|
||||
'filter' => 'permission:plugins.manage',
|
||||
]);
|
||||
$routes->get('settings', 'PluginController::settings/$1/$2', [
|
||||
$routes->get('settings', 'PluginController::settingsView/$1/$2', [
|
||||
'as' => 'plugins-settings-general',
|
||||
'filter' => 'permission:plugins.manage',
|
||||
]);
|
||||
@ -35,7 +35,7 @@ $routes->group(
|
||||
'as' => 'plugins-settings-general-action',
|
||||
'filter' => 'permission:plugins.manage',
|
||||
]);
|
||||
$routes->get('(:num)', 'PluginController::settings/$1/$2/$3', [
|
||||
$routes->get('(:num)', 'PluginController::settingsView/$1/$2/$3', [
|
||||
'as' => 'plugins-settings-podcast',
|
||||
'filter' => 'permission:podcast$3.edit',
|
||||
]);
|
||||
@ -43,7 +43,7 @@ $routes->group(
|
||||
'as' => 'plugins-settings-podcast-action',
|
||||
'filter' => 'permission:podcast$3.edit',
|
||||
]);
|
||||
$routes->get('(:num)/(:num)', 'PluginController::settings/$1/$2/$3/$4', [
|
||||
$routes->get('(:num)/(:num)', 'PluginController::settingsView/$1/$2/$3/$4', [
|
||||
'as' => 'plugins-settings-episode',
|
||||
'filter' => 'permission:podcast$3.episodes.edit',
|
||||
]);
|
||||
@ -59,7 +59,6 @@ $routes->group(
|
||||
'as' => 'plugins-deactivate',
|
||||
'filter' => 'permission:plugins.manage',
|
||||
]);
|
||||
// TODO: change to delete
|
||||
$routes->get('uninstall', 'PluginController::uninstall/$1/$2', [
|
||||
'as' => 'plugins-uninstall',
|
||||
'filter' => 'permission:plugins.manage',
|
||||
|
@ -80,7 +80,7 @@ class PluginController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
public function settings(
|
||||
public function settingsView(
|
||||
string $vendor,
|
||||
string $package,
|
||||
string $podcastId = null,
|
||||
@ -223,6 +223,9 @@ class PluginController extends BaseController
|
||||
$this->plugins->setOption($plugin, $field->key, $this->castFieldValue($field, $fieldValue), $context);
|
||||
}
|
||||
|
||||
// clear cache after setting options
|
||||
$plugin->clearCache();
|
||||
|
||||
return redirect()->back()
|
||||
->with('message', lang('Plugins.messages.saveSettingsSuccess', [
|
||||
'pluginTitle' => $plugin->getTitle(),
|
||||
|
@ -121,6 +121,15 @@ abstract class BasePlugin implements PluginInterface
|
||||
return get_plugin_setting($this->key, $key, ['episode', $episodeId]);
|
||||
}
|
||||
|
||||
final public function clearCache(): void
|
||||
{
|
||||
foreach ($this->getHooks() as $hook) {
|
||||
foreach (Plugins::CACHE_MAP[$hook] ?? [] as $cacheGlob) {
|
||||
cache()->deleteMatching($cacheGlob);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool true on success, false on failure
|
||||
*/
|
||||
|
@ -25,6 +25,14 @@ class Plugins
|
||||
*/
|
||||
public const HOOKS = ['rssBeforeChannel', 'rssAfterChannel', 'rssBeforeItem', 'rssAfterItem', 'siteHead'];
|
||||
|
||||
public const CACHE_MAP = [
|
||||
'rssBeforeChannel' => ['podcast*feed*'],
|
||||
'rssAfterChannel' => ['podcast*feed*'],
|
||||
'rssBeforeItem' => ['podcast*feed*'],
|
||||
'rssAfterItem' => ['podcast*feed*'],
|
||||
'siteHead' => ['page*'],
|
||||
];
|
||||
|
||||
public const FIELDS_VALIDATIONS = [
|
||||
'checkbox' => ['permit_empty'],
|
||||
'datetime' => ['valid_date[Y-m-d H:i]'],
|
||||
|
Loading…
x
Reference in New Issue
Block a user