auth->isSuperAdmin()) { return null; } $page_title = __('Advanced cleaner'); # Lists function drawDcAdvancedCleanerLists($core, $type) { $combo_funcs = [ 'settings' => ['dcAdvancedCleaner','getSettings'], 'tables' => ['dcAdvancedCleaner','getTables'], 'plugins' => ['dcAdvancedCleaner','getPlugins'], 'themes' => ['dcAdvancedCleaner','getThemes'], 'caches' => ['dcAdvancedCleaner','getCaches'], 'versions' => ['dcAdvancedCleaner','getVersions'] ]; $combo_actions = [ 'settings' => [ __('delete global settings') => 'delete_global', __('delete blog settings') => 'delete_local', __('delete all settings') =>'delete_all' ], 'tables' => [ __('delete') => 'delete', __('empty') => 'empty' ], 'plugins' => [ __('delete') => 'delete', __('empty') => 'empty' ], 'themes' => [ __('delete') => 'delete', __('empty') => 'empty' ], 'caches' => [ __('delete') => 'delete', __('empty') => 'empty' ], 'versions' => [ __('delete') => 'delete' ] ]; $combo_help = [ 'settings' => __('Namespaces registered in dcSettings'), 'tables' => __('All database tables of Dotclear'), 'plugins' => __('Folders from plugins directories'), 'themes' => __('Folders from blog themes directory'), 'caches' => __('Folders from cache directory'), 'versions' => __('Versions registered in table "version" of Dotclear') ]; if (!isset($combo_funcs[$type])) { return ''; } $rs = call_user_func($combo_funcs[$type], $core); echo '
' . '

' . $combo_help[$type] . '

'; if (empty($rs)) { echo '

' . sprintf(__('There is no %s'), __(substr($type, 0, -1))) . '

'; } else { echo '

' . sprintf(__('There are %s %s'), count($rs), __($type)) . '

' . '
' . '' . '' . ''; $official = dcAdvancedCleaner::getOfficial($type); foreach($rs as $k => $v) { $offline = in_array($v['key'], $official); if ($core->blog->settings->dcAdvancedCleaner->dcAdvancedCleaner_dcproperty_hide && $offline) { continue; } echo '' . '' . '' . ''; } echo '
' . __('Name') . '' . __('Objects') . '
' . $v['value'] . '
' . '

' . __('Action on selected rows:') . '
' . form::combo(['action'], $combo_actions[$type]) . '' . form::hidden(['p'], 'dcAdvancedCleaner') . form::hidden(['tab'], 'lists') . form::hidden(['part'], $type) . form::hidden(['type'], $type) . $core->formNonce() . '

' . '
'; } echo '
'; } # Localized l10n __('Settings'); __('settings'); __('setting'); __('Tables'); __('tables'); __('table'); __('Plugins'); __('plugins'); __('plugin'); __('Themes'); __('themes'); __('theme'); __('Caches'); __('caches'); __('cache'); __('Versions'); __('versions'); __('version'); __('delete table'); __('delete cache files'); __('delete plugin files'); __('delete theme files'); __('delete the version number'); __('Uninstall extensions'); __('delete %s blog settings'); __('delete %s global settings'); __('delete all %s settings'); __('delete %s table'); __('delete %s version number'); __('delete %s plugin files'); __('delete %s theme file'); __('delete %s cache files'); # vars $tab = isset($_REQUEST['tab']) ? $_REQUEST['tab'] : 'dcac'; $part = isset($_REQUEST['part']) ? $_REQUEST['part'] : 'caches'; $entries = isset($_POST['entries']) ? $_POST['entries'] : ''; $action = isset($_POST['action']) ? $_POST['action'] : ''; $type = isset($_POST['type']) ? $_POST['type'] : ''; $s = $core->blog->settings->dcAdvancedCleaner; # Combos $combo_title = [ 'settings' => __('Settings'), 'tables' => __('Tables'), 'plugins' => __('Extensions'), 'themes' => __('Themes'), 'caches' => __('Cache'), 'versions' => __('Versions') ]; $combo_type = [ 'settings' => ['delete_global','delete_local','delete_all'], 'tables' => ['empty','delete'], 'plugins' => ['empty','delete'], 'themes' => ['empty','delete'], 'caches' => ['empty','delete'], 'versions' => ['delete'] ]; # This plugin settings if ($tab == 'dcac' && $action == 'dcadvancedcleaner_settings') { try { $s->put('dcAdvancedCleaner_behavior_active', isset($_POST['dcadvancedcleaner_behavior_active']), 'boolean'); $s->put('dcAdvancedCleaner_dcproperty_hide', isset($_POST['dcadvancedcleaner_dcproperty_hide']), 'boolean'); dcPage::addSuccessNotice(__('Settings successfuly updated')); $core->adminurl->redirect('admin.plugin.dcAdvancedCleaner', ['tab' => 'dcac', 'part' => '']); } catch(Exception $e) { $core->error->add($e->getMessage()); } } # Actions if ($tab == 'lists' && !empty($entries) && isset($combo_type[$type]) && in_array($action,$combo_type[$type])) { try { foreach($entries as $v) { dcAdvancedCleaner::execute($core, $type, $action, $v); } dcPage::addSuccessNotice(__('Action successfuly excecuted')); $core->adminurl->redirect('admin.plugin.dcAdvancedCleaner', ['tab' => 'list', 'part' => $part]); } catch(Exception $e) { $core->error->add($e->getMessage()); } } echo ' ' . $page_title . ' ' . dcPage::jsToolBar() . dcPage::jsPageTabs($tab) . ' '; # --BEHAVIOR-- dcAdvancedCleanerAdminHeader $core->callBehavior('dcAdvancedCleanerAdminHeader', $core, $core->adminurl->get('admin.plugin.dcAdvancedCleaner', ['tab' => $tab, 'part' => $part]), $tab); echo ' ' . dcPage::breadcrumb([ html::escapeHTML($core->blog->name) => '', '' . $page_title . '' => '' ]); echo '

' . __('Beware: All actions done here are irreversible and are directly applied') . '

'; echo '
' . '

'; foreach($combo_title as $k => $v) { echo '' . $v . ' '; } echo '

'; # Load "part" page if (isset($combo_title[$part])) { echo '
' . $combo_title[$part] . ''; drawDcAdvancedCleanerLists($core, $part); echo '
'; } if ($s->dcAdvancedCleaner_dcproperty_hide) { echo '

' . __('Default values of Dotclear are hidden. You can change this in settings tab') . '

'; } echo '
'; # --BEHAVIOR-- dcAdvancedCleanerAdminTabs $core->callBehavior('dcAdvancedCleanerAdminTabs', $core, $core->adminurl->get('admin.plugin.dcAdvancedCleaner', ['tab' => $tab, 'part' => $part])); echo '
' . __('This plugin settings') . '

' . __('Enable actions set in _uninstall.php files.') . '

' . __('Prevent from deleting Dotclear important properties.') . '

' . form::hidden(['p'],'dcAdvancedCleaner') . form::hidden(['tab'],'dcac') . form::hidden(['part'],'') . form::hidden(['action'], 'dcadvancedcleaner_settings') . $core->formNonce() . '

'; dcPage::helpBlock('dcAdvancedCleaner'); echo '';