' . __('Maintenance') . '
' .
'' . sprintf(__('There is a task to execute.', 'There are %s tasks to execute.', count($lines)), count($lines)) . '
' . '- ' . implode('', $lines) . '
addItem(
__('Maintenance'),
$core->adminurl->get('admin.plugin.maintenance'),
dcPage::getPF('maintenance/icon.png'),
preg_match('/' . preg_quote($core->adminurl->get('admin.plugin.maintenance')) . '(&.*)?$/', $_SERVER['REQUEST_URI']),
$core->auth->check('admin', $core->blog->id)
);
// Admin behaviors
$core->addBehavior('dcMaintenanceInit', ['dcMaintenanceAdmin', 'dcMaintenanceInit']);
$core->addBehavior('adminDashboardFavorites', ['dcMaintenanceAdmin', 'adminDashboardFavorites']);
$core->addBehavior('adminDashboardContents', ['dcMaintenanceAdmin', 'adminDashboardItems']);
$core->addBehavior('adminDashboardOptionsForm', ['dcMaintenanceAdmin', 'adminDashboardOptionsForm']);
$core->addBehavior('adminAfterDashboardOptionsUpdate', ['dcMaintenanceAdmin', 'adminAfterDashboardOptionsUpdate']);
$core->addBehavior('adminPageHelpBlock', ['dcMaintenanceAdmin', 'adminPageHelpBlock']);
$core->addBehavior('pluginsToolsHeaders', ['dcMaintenanceAdmin', 'pluginsToolsHeaders']);
/**
@ingroup PLUGIN_MAINTENANCE
@nosubgrouping
@brief Maintenance plugin admin class.
Group of methods used on behaviors.
*/
class dcMaintenanceAdmin
{
/**
* Register default tasks.
*
* @param $maintenance dcMaintenance dcMaintenance instance
*/
public static function dcMaintenanceInit($maintenance)
{
$maintenance
->addTab('maintenance', __('Servicing'), ['summary' => __('Tools to maintain the performance of your blogs.')])
->addTab('backup', __('Backup'), ['summary' => __('Tools to back up your content.')])
->addTab('dev', __('Development'), ['summary' => __('Tools to assist in development of plugins, themes and core.')])
->addGroup('optimize', __('Optimize'))
->addGroup('index', __('Count and index'))
->addGroup('purge', __('Purge'))
->addGroup('other', __('Other'))
->addGroup('zipblog', __('Current blog'))
->addGroup('zipfull', __('All blogs'))
->addGroup('l10n', __('Translations'), ['summary' => __('Maintain translations')])
->addTask('dcMaintenanceCache')
->addTask('dcMaintenanceCSP')
->addTask('dcMaintenanceIndexposts')
->addTask('dcMaintenanceIndexcomments')
->addTask('dcMaintenanceCountcomments')
->addTask('dcMaintenanceSynchpostsmeta')
->addTask('dcMaintenanceLogs')
->addTask('dcMaintenanceVacuum')
->addTask('dcMaintenanceZipmedia')
->addTask('dcMaintenanceZiptheme')
;
}
/**
* Favorites.
*
* @param $core dcCore dcCore instance
* @param $favs arrayObject Array of favs
*/
public static function adminDashboardFavorites($core, $favs)
{
$favs->register('maintenance', [
'title' => __('Maintenance'),
'url' => $core->adminurl->get('admin.plugin.maintenance'),
'small-icon' => dcPage::getPF('maintenance/icon.png'),
'large-icon' => dcPage::getPF('maintenance/icon-big.png'),
'permissions' => 'admin',
'active_cb' => ['dcMaintenanceAdmin', 'adminDashboardFavoritesActive'],
'dashboard_cb' => ['dcMaintenanceAdmin', 'adminDashboardFavoritesCallback']
]);
}
/**
* Favorites selection.
*
* @param $request string Requested page
* @param $params array Requested parameters
*/
public static function adminDashboardFavoritesActive($request, $params)
{
return $request == 'plugin.php' && isset($params['p']) && $params['p'] == 'maintenance';
}
/**
* Favorites hack.
*
* This updates maintenance fav icon text
* if there are tasks required maintenance.
*
* @param $core dcCore dcCore instance
* @param $fav arrayObject fav attributes
*/
public static function adminDashboardFavoritesCallback($core, $fav)
{
// Check user option
$core->auth->user_prefs->addWorkspace('maintenance');
if (!$core->auth->user_prefs->maintenance->dashboard_icon) {
return;
}
// Check expired tasks
$maintenance = new dcMaintenance($core);
$count = 0;
foreach ($maintenance->getTasks() as $t) {
if ($t->expired() !== false) {
$count++;
}
}
if (!$count) {
return;
}
$fav['title'] .= '
' . sprintf(__('One task to execute', '%s tasks to execute', $count), $count);
$fav['large-icon'] = dcPage::getPF('maintenance/icon-big-update.png');
}
/**
* Dashboard items stack.
*
* @param $core dcCore dcCore instance
* @param $items arrayObject Dashboard items
*/
public static function adminDashboardItems($core, $items)
{
$core->auth->user_prefs->addWorkspace('maintenance');
if (!$core->auth->user_prefs->maintenance->dashboard_item) {
return;
}
$maintenance = new dcMaintenance($core);
$lines = [];
foreach ($maintenance->getTasks() as $t) {
$ts = $t->expired();
if ($ts === false) {
continue;
}
$lines[] =
'
' . sprintf(__('There is a task to execute.', 'There are %s tasks to execute.', count($lines)), count($lines)) . '
' . '' . $desc . '
' : '') . '' . $desc . '
' : '') . $res_group; } } if (!empty($res_tab)) { $res = new ArrayObject(); $res->content = $res_tab; $blocks[] = $res; } } /** * Add javascript for plugin configuration. * * @param $core dcCore dcCore instance * @param $module mixed Module ID or false if none * @return string Header code for js inclusion */ public static function pluginsToolsHeaders($core, $module) { if ($module == 'maintenance') { return dcPage::jsLoad(dcPage::getPF('maintenance/js/settings.js')); } } }