addItem( __('Maintenance'), 'plugin.php?p=maintenance', 'index.php?pf=maintenance/icon.png', preg_match('/plugin.php\?p=maintenance(&.*)?$/', $_SERVER['REQUEST_URI']), $core->auth->isSuperAdmin() ); // Admin behaviors $core->addBehavior('dcMaintenanceRegister', array('dcMaintenanceAdmin', 'register')); $core->addBehavior('adminDashboardFavs', array('dcMaintenanceAdmin', 'favs')); $core->addBehavior('adminDashboardFavsIcon', array('dcMaintenanceAdmin', 'favsicon')); $core->addBehavior('adminPreferencesForm', array('dcMaintenanceAdmin', 'prefform')); $core->addBehavior('adminBeforeUserOptionsUpdate', array('dcMaintenanceAdmin', 'userupd')); /** @ingroup PLUGIN_MAINTENANCE @nosubgrouping @brief Maintenance plugin admin class. Group of methods used on behaviors. */ class dcMaintenanceAdmin { /** * Register default tasks. * * @param $core dcCore dcCore instance * @param $tasks arrayObject Array of tasks to register * @param $groups arrayObject Array of groups to register * @param $tabs arrayObject Array of tabs to register */ public static function register($core, $tasks, $groups, $tabs) { $tabs['maintenance'] = __('Servicing'); $tabs['backup'] = __('Backup'); $groups['optimize'] = __('Optimize'); $groups['index'] = __('Count and index'); $groups['purge'] = __('Purge'); $groups['other'] = __('Other'); $groups['zipblog'] = __('Compressed file for current blog'); $groups['zipfull'] = __('Compressed file for all blogs'); $tasks[] = 'dcMaintenanceCache'; $tasks[] = 'dcMaintenanceCountcomments'; $tasks[] = 'dcMaintenanceIndexcomments'; $tasks[] = 'dcMaintenanceIndexposts'; $tasks[] = 'dcMaintenanceLogs'; $tasks[] = 'dcMaintenanceVacuum'; $tasks[] = 'dcMaintenanceZipmedia'; $tasks[] = 'dcMaintenanceZiptheme'; } /** * Dashboard favs. * * @param $core dcCore dcCore instance * @param $favs arrayObject Array of favs */ public static function favs($core, $favs) { $favs['maintenance'] = new ArrayObject(array( 'maintenance', 'Maintenance', 'plugin.php?p=maintenance', 'index.php?pf=maintenance/icon.png', 'index.php?pf=maintenance/icon-big.png', null,null,null )); } /** * Dashboard favs icon. * * This updates maintenance fav icon text * if there are tasks required maintenance. * * @param $core dcCore dcCore instance * @param $name string Current fav name * @param $icon arrayObject Current fav attributes */ public static function favsicon($core, $name, $icon) { // Check icon if ($name !== 'maintenance') { return null; } // Check user option $user_options = $core->auth->getOptions(); if (empty($user_options['user_maintenance_expired'])) { return null; } // Check expired tasks $maintenance = new dcMaintenance($core); $expired = $maintenance->getExpired(); $expired = count($expired); if (!$expired) { return null; } $icon[0] .= '
'.sprintf(__('One task to update', '%s tasks to update', $expired), $expired); } /** * User preferences form. * * This add options for superadmin user * to show or not expired taks. * * @param $args object dcCore instance or record */ public static function prefform($args) { $opts = array(); if ($args instanceof dcCore) { $opts = $args->auth->getOptions(); $core = $args; } elseif ($args instanceof record) { $opts = $args->options(); $core = $args->core; } echo '

'; } /** * User preferences update. * * @param $cur cursor Cursor of user options * @param $user_id string User ID */ public static function userupd($cur, $user_id=null) { if (!is_null($user_id)) { $cur->user_options['user_maintenance_expired'] = !empty($_POST['user_maintenance_expired']); } } }