Dotclear


Ignore:
Timestamp:
09/22/13 02:49:48 (12 years ago)
Author:
Denis Jean-Chirstian <contact@…>
Branch:
default
Message:

Revamp plugin maintenance, step 5, now open to admin user and various fixes, addresses #999

Location:
plugins/maintenance
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • plugins/maintenance/_admin.php

    r1984 r1989  
    1818     'index.php?pf=maintenance/icon.png', 
    1919     preg_match('/plugin.php\?p=maintenance(&.*)?$/', $_SERVER['REQUEST_URI']), 
    20      $core->auth->isSuperAdmin() 
     20     $core->auth->check('admin', $core->blog->id) 
    2121); 
    2222 
     
    192192          '<p><label for="maintenance_dashboard_icon" class="classic">'. 
    193193          form::checkbox('maintenance_dashboard_icon', 1, $core->auth->user_prefs->maintenance->dashboard_icon). 
    194           __('Display count of expired tasks on maintenance dashboard icon').'</label></p>'. 
     194          __('Display count of late tasks on maintenance dashboard icon').'</label></p>'. 
    195195 
    196196          '<p><label for="maintenance_dashboard_item" class="classic">'. 
    197197          form::checkbox('maintenance_dashboard_item', 1, $core->auth->user_prefs->maintenance->dashboard_item). 
    198           __('Display list of expired tasks on dashboard items').'</label></p>'. 
     198          __('Display list of late tasks on dashboard items').'</label></p>'. 
    199199 
    200200          '</div>'; 
  • plugins/maintenance/_define.php

    r1925 r1989  
    1616     /* Description*/         "Maintain your installation", 
    1717     /* Author */             "Olivier Meunier & Association Dotclear", 
    18      /* Version */            '1.3' 
     18     /* Version */            '1.3.1', 
     19     /* Permission */         'admin' 
    1920); 
  • plugins/maintenance/inc/class.dc.maintenance.php

    r1984 r1989  
    7777               } 
    7878 
    79                $this->tasks[$task] = new $task($this, 'plugin.php?p=maintenance'); 
     79               if (($t = new $task($this, 'plugin.php?p=maintenance')) === null 
     80               || $t->perm() === null && !$this->core->auth->isSuperAdmin() 
     81               || !$this->core->auth->check($t->perm(), $this->core->blog->id)) { 
     82                    continue; 
     83               } 
     84 
     85               $this->tasks[$task] = $t; 
    8086          } 
    8187 
  • plugins/maintenance/inc/class.dc.maintenance.task.php

    r1984 r1989  
    2929     protected $ajax = false; 
    3030     protected $blog = false; 
     31     protected $perm = null; 
    3132 
    3233     protected $id; 
     
    5556          $this->init(); 
    5657 
     58          if ($this->perm() === null && !$this->core->auth->isSuperAdmin() 
     59          || !$this->core->auth->check($this->perm(), $this->core->blog->id)) { 
     60               return null; 
     61          } 
     62 
    5763          $this->p_url = $p_url; 
    5864          $this->id = get_class($this); 
     
    7278 
    7379          $this->ts = abs((integer) $ts); 
     80 
     81          return true; 
    7482     } 
    7583 
     
    8391     { 
    8492          return null; 
     93     } 
     94 
     95     /** 
     96      * Get task permission. 
     97      * 
     98      * Return user permission required to run this task  
     99      * or null for super admin. 
     100      * 
     101      * @return <b>mixed</b> Permission. 
     102      */ 
     103     public function perm() 
     104     { 
     105          return $this->perm; 
     106     } 
     107 
     108     /** 
     109      * Get task scope. 
     110      *. 
     111      * Is task limited to current blog. 
     112      * 
     113      * @return <b>boolean</b> Limit to blog 
     114      */ 
     115     public function blog() 
     116     { 
     117          return $this->blog; 
    85118     } 
    86119 
  • plugins/maintenance/inc/tasks/class.dc.maintenance.indexcomments.php

    r1984 r1989  
    2222     { 
    2323          $this->name         = __('Search engine index'); 
    24           $this->task         = __('Index all comments'); 
     24          $this->task         = __('Index all comments for search engine'); 
    2525          $this->step_task    = __('Next'); 
    2626          $this->step         = __('Indexing comment %d to %d.'); 
  • plugins/maintenance/inc/tasks/class.dc.maintenance.indexposts.php

    r1984 r1989  
    2222     { 
    2323          $this->name         = __('Search engine index'); 
    24           $this->task         = __('Index all posts'); 
     24          $this->task         = __('Index all entries for search engine'); 
    2525          $this->step_task    = __('Next'); 
    2626          $this->step         = __('Indexing entry %d to %d.'); 
  • plugins/maintenance/inc/tasks/class.dc.maintenance.zipmedia.php

    r1984 r1989  
    1414class dcMaintenanceZipmedia extends dcMaintenanceTask 
    1515{ 
     16     protected $perm = 'admin'; 
    1617     protected $blog = true; 
    1718     protected $tab = 'backup'; 
  • plugins/maintenance/inc/tasks/class.dc.maintenance.ziptheme.php

    r1984 r1989  
    1414class dcMaintenanceZiptheme extends dcMaintenanceTask 
    1515{ 
     16     protected $perm = 'admin'; 
    1617     protected $blog = true; 
    1718     protected $tab = 'backup'; 
  • plugins/maintenance/index.php

    r1985 r1989  
    1212if (!defined('DC_CONTEXT_ADMIN')) { return; } 
    1313 
    14 dcPage::checkSuper(); 
    15  
    16 // main class 
     14// Set env 
     15 
     16$core->blog->settings->addNamespace('maintenance'); 
    1717 
    1818$maintenance = new dcMaintenance($core); 
    19 $core->blog->settings->addNamespace('maintenance'); 
    20  
    21 // Set var 
     19$tasks = $maintenance->getTasks(); 
    2220 
    2321$msg = ''; 
     
    2826 
    2927$code = empty($_POST['code']) ? null : (integer) $_POST['code']; 
    30 $tab = empty($_REQUEST['tab']) ? 'maintenance' : $_REQUEST['tab']; 
     28$tab = empty($_REQUEST['tab']) ? '' : $_REQUEST['tab']; 
    3129 
    3230// Save settings 
     
    3937               !empty($_POST['settings_plugin_message']),  
    4038               'boolean',  
    41                'Display alert message of expired tasks on plugin page',  
     39               'Display alert message of late tasks on plugin page',  
    4240               true,  
    4341               true 
    4442          ); 
    4543 
    46           foreach($maintenance->getTasks() as $t) { 
     44          foreach($tasks as $t) { 
    4745               if (!empty($_POST['settings_recall_time']) && $_POST['settings_recall_time'] == 'seperate') { 
    4846                    $ts = empty($_POST['settings_ts_'.$t->id()]) ? 0 : $_POST['settings_ts_'.$t->id()]; 
     
    5755                    sprintf('Recall time for task %s', $t->id()),  
    5856                    true,  
    59                     true 
     57                    $t->blog() 
    6058               ); 
    6159          } 
     
    138136</head> 
    139137<body>'; 
     138 
     139// Check if there is somthing to display according to user permissions 
     140if (empty($tasks)) { 
     141     echo dcPage::breadcrumb( 
     142          array( 
     143               __('Plugins') => '', 
     144               '<a href="'.$p_url.'">'.__('Maintenance').'</a>' => '', 
     145               '<span class="page-title">'.html::escapeHTML($task->name()).'</span>' => '' 
     146          ) 
     147     ). 
     148     '<p class="warn">'.__('You have not sufficient permissions to view this page.').'</p>'. 
     149     '</body></html>'; 
     150 
     151     return null; 
     152} 
    140153 
    141154// Success message 
     
    201214     { 
    202215          $res_group = ''; 
    203           foreach($maintenance->getGroups($core) as $group_id => $group_name) 
     216          foreach($maintenance->getGroups() as $group_id => $group_name) 
    204217          { 
    205218               $res_task = ''; 
    206                foreach($maintenance->getTasks($core) as $t) 
     219               foreach($tasks as $t) 
    207220               { 
    208221                    if ($t->group() != $group_id || $t->tab() != $tab_id) { 
     
    256269               form::hidden(array('tab'), $tab_id). 
    257270               $core->formNonce().'</p>'. 
    258                '<p class="form-note info">'.__('This may take a very long time.').'.</p>'. 
     271               '<p class="form-note info">'.__('This may take a very long time.').'</p>'. 
    259272               '</form>'. 
    260273               '</div>'; 
     
    264277     // Advanced tasks (that required a tab) 
    265278 
    266      foreach($maintenance->getTasks($core) as $t) 
     279     foreach($tasks as $t) 
    267280     { 
    268281          if ($t->group() !== null) { 
     
    292305     '<p><label for="settings_plugin_message" class="classic">'. 
    293306     form::checkbox('settings_plugin_message', 1, $core->blog->settings->maintenance->plugin_message). 
    294      __('Display alert messages on expired tasks').'</label></p>'. 
     307     __('Display alert messages on late tasks').'</label></p>'. 
    295308 
    296309     '<p><label for="settings_recall_time">'.__('Recall time for all tasks:').'</label>'. 
     
    300313     '<p>'.__('Recall time per task:').'</p>'; 
    301314 
    302      foreach($maintenance->getTasks($core) as $t) 
     315     foreach($tasks as $t) 
    303316     { 
    304317          echo 
     
    319332     '</form>'. 
    320333     '<p class="info">'.sprintf( 
    321           __('You can place list of expired tasks on your %s.'), 
     334          __('You can place list of late tasks on your %s.'), 
    322335          '<a href="preferences.php#user-favorites">'.__('Dashboard').'</a>' 
    323336     ).'</a></p>'. 
Note: See TracChangeset for help on using the changeset viewer.

Sites map