Dotclear

source: plugins/dcAdvancedCleaner/index.php @ 1980

Revision 1980, 8.3 KB checked in by JcDenis, 13 years ago (diff)

dcAdvancedCleaner 0.3:

  • Fixed localized strings
  • Prepared DC 2.2 break
  • Added versioning
  • Added support for plugin activityReport
Line 
1<?php
2# -- BEGIN LICENSE BLOCK ----------------------------------
3# This file is part of dcAdvancedCleaner, a plugin for Dotclear 2.
4#
5# Copyright (c) 2009 JC Denis and contributors
6# jcdenis@gdwd.com
7#
8# Licensed under the GPL version 2.0 license.
9# A copy of this license is available in LICENSE file or at
10# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11# -- END LICENSE BLOCK ------------------------------------
12
13if (!defined('DC_CONTEXT_ADMIN')){return;}
14
15if (!$core->auth->isSuperAdmin()){return;}
16
17# Localized l10n
18__('Settings'); __('settings'); __('setting');
19__('Tables'); __('tables'); __('table');
20__('Plugins'); __('plugins'); __('plugin');
21__('Themes'); __('themes'); __('theme');
22__('Caches'); __('caches'); __('cache');
23__('Versions'); __('versions'); __('version');
24__('delete table');
25__('delete cache files');
26__('delete plugin files');
27__('delete theme files');
28__('delete the version number');
29__('Uninstall extensions');
30__('delete %s blog settings');
31__('delete %s global settings');
32__('delete all %s settings');
33__('delete %s table');
34__('delete %s version number');
35__('delete %s plugin files');
36__('delete %s theme file');
37__('delete %s cache files');
38
39# vars
40$p_url = 'plugin.php?p=dcAdvancedCleaner';
41$msg = isset($_GET['msg']) ? true : false;
42$for = isset($_GET['for']) ? $_GET['for'] : '';
43$tab = isset($_REQUEST['t']) ? $_REQUEST['t'] : 'records';
44$entries = isset($_POST['entries']) ? $_POST['entries'] : '';
45$action = isset($_POST['action']) ? $_POST['action'] : '';
46$type = isset($_POST['type']) ? $_POST['type'] : '';
47
48# Combos
49$combo_settings = array(
50     __('delete global settings') => 'delete_global',
51     __('delete blog settings') => 'delete_local',
52     __('delete all settings') =>'delete_all'
53);
54$combo_bi = array(
55     __('delete') => 'delete',
56     __('empty') => 'empty'
57);
58$combo_delete = array(
59     __('delete') => 'delete'
60);
61$combo_type = array(
62     'settings' => array('delete_global','delete_local','delete_all'),
63     'tables' => array('empty','delete'),
64     'plugins' => array('empty','delete'),
65     'themes' => array('empty','delete'),
66     'caches' => array('empty','delete'),
67     'versions' => array('delete')
68);
69$combo_help = array(
70     'settings' => __('Namespaces registered in dcSettings'),
71     'tables' => __('All database tables of Dotclear'),
72     'plugins' => __('Folders from plugins directories'),
73     'themes' => __('Folders from blog themes directory'),
74     'caches' => __('Folders from cache directory'),
75     'versions' => __('Versions registered in table "version" of Dotclear')
76);
77
78# This plugin settings
79if ($action == 'dcadvancedcleaner_settings') {
80
81     $core->blog->settings->setNameSpace('dcAdvancedCleaner');
82     $core->blog->settings->put('dcadvancedcleaner_behavior_active',
83          isset($_POST['dcadvancedcleaner_behavior_active']),'boolean');
84     $core->blog->settings->put('dcadvancedcleaner_dcproperty_hide',
85          isset($_POST['dcadvancedcleaner_dcproperty_hide']),'boolean');
86     $core->blog->settings->setNameSpace('system');
87
88     http::redirect($p_url.'&t=dcb&msg=1');
89}
90
91# Actions
92if (!empty($entries) 
93 && isset($combo_type[$type]) 
94 && in_array($action,$combo_type[$type])) {
95
96     try {
97          foreach($entries as $v) {
98               dcAdvancedCleaner::execute($core,$type,$action,$v);
99          }
100
101          # Redirection on success
102          http::redirect($p_url.'&t='.$tab.'&msg=done');
103     }
104     catch(Exception $e) {
105          $core->error->add($e->getMessage());
106     }
107}
108
109# Lists
110$settings = dcAdvancedCleaner::getSettings($core);
111$tables = dcAdvancedCleaner::getTables($core);
112$plugins = dcAdvancedCleaner::getPlugins($core);
113$themes = dcAdvancedCleaner::getThemes($core);
114$caches = dcAdvancedCleaner::getCaches($core);
115$versions = dcAdvancedCleaner::getVersions($core);
116
117?>
118<html>
119 <head>
120  <title><?php echo __('Advanced cleaner'); ?></title>
121  <style type="text/css">
122  .listDcAdvancedCleaner {
123     float:left;
124     padding:10px;
125     margin:10px 10px 0 0;
126     border:1px solid #CCCCCC;
127     background-color: #FCFCFC;
128  }
129  .bombDcAdvancedCleaner {
130     padding:14px 0 2px 36px;
131     background:url(index.php?pf=dcAdvancedCleaner/icon-b.png) no-repeat;
132  }
133  </style>
134  <?php echo dcPage::jsToolBar().dcPage::jsPageTabs($tab); ?>
135
136<?php 
137
138# --BEHAVIOR-- dcAdvancedCleanerAdminHeader
139$core->callBehavior('dcAdvancedCleanerAdminHeader',$core,$p_url,$tab);
140
141?>
142 </head>
143 <body>
144  <h2 class="bombDcAdvancedCleaner"><?php echo html::escapeHTML($core->blog->name).' &rsaquo; '.__('Advanced cleaner'); ?></h2>
145  <p class="static-msg"><?php echo __('Beware: All actions done here are irreversible and are directly applied'); ?></p>
146  <?php if (!empty($msg)) { echo '<p class="message">'.__('Action successfully done').'</p>'; } ?>
147
148  <div class="multi-part" id="records" title="<?php echo __('Records'); ?>">
149<?php
150drawDcAdvancedCleanerLists('settings',$settings,$combo_settings,$combo_help['settings'],'records');
151drawDcAdvancedCleanerLists('tables',$tables,$combo_bi,$combo_help['tables'],'records');
152drawDcAdvancedCleanerLists('versions',$versions,$combo_delete,$combo_help['versions'],'records');
153?>
154  </div>
155
156  <div class="multi-part" id="folders" title="<?php echo __('Folders'); ?>">
157<?php
158drawDcAdvancedCleanerLists('plugins',$plugins,$combo_bi,$combo_help['plugins'],'foldlers');
159drawDcAdvancedCleanerLists('themes',$themes,$combo_bi,$combo_help['themes'],'folders');
160drawDcAdvancedCleanerLists('caches',$caches,$combo_bi,$combo_help['caches'],'folders');
161?>
162  </div>
163
164<?php 
165
166# --BEHAVIOR-- dcAdvancedCleanerAdminTabs
167$core->callBehavior('dcAdvancedCleanerAdminTabs',$core,$p_url);
168
169?>
170
171  <div class="multi-part" id="dcb" title="<?php echo __('Settings'); ?>">
172   <form method="post" action="plugin.php">
173    <p>
174      <label class="classic"><?php echo
175       form::checkbox(array('dcadvancedcleaner_behavior_active'),'1',
176        $core->blog->settings->dcadvancedcleaner_behavior_active).' '.
177      __('Activate behaviors'); ?>
178      </label>
179     </p>
180     <p class="form-note"><?php echo __('Enable actions set in _uninstall.php files.'); ?></p>
181    <p>
182      <label class="classic"><?php echo
183       form::checkbox(array('dcadvancedcleaner_dcproperty_hide'),'1',
184        $core->blog->settings->dcadvancedcleaner_dcproperty_hide).' '.
185      __('Hide Dotclear default properties in actions tabs'); ?>
186      </label>
187     </p>
188     <p class="form-note"><?php echo __('Prevent from deleting Dotclear important properties.'); ?></p>
189     <p>
190     <input type="submit" name="submit" value="<?php echo __('Save'); ?>" />
191      <?php echo 
192       form::hidden(array('p'),'dcAdvancedCleaner').
193       form::hidden(array('t'),'dcb').
194        form::hidden(array('action'),'dcadvancedcleaner_settings').
195       $core->formNonce();
196      ?>
197      </p>
198     </form>
199  </div>
200 
201  <?php echo dcPage::helpBlock('dcAdvancedCleaner'); ?>
202
203  <p class="clear">&nbsp;</p>
204  <hr class="clear"/>
205  <p class="right">
206   dcAdvancedCleaner - <?php echo $core->plugins->moduleInfo('dcAdvancedCleaner','version'); ?>&nbsp;
207   <img alt="dcMiniUrl" src="index.php?pf=dcAdvancedCleaner/icon.png" />
208  </p>
209 </body>
210</html>
211<?php
212
213function drawDcAdvancedCleanerLists($type,$rs,$actions,$help='',$tab='records')
214{
215     echo 
216     '<div class="listDcAdvancedCleaner">'.
217     '<h2>'.__(ucfirst($type)).'</h2>'.
218     '<p class="form-note">'.$help.'</p>';
219     
220     if (empty($rs)) {
221          echo 
222          '<p>'.sprintf(__('There is no %s'),__(substr($type,0,-1))).'</p>';
223     } else {
224
225          echo
226          '<p>'.sprintf(__('There are %s %s'),count($rs),__($type)).'</p>'.
227          '<form method="post" action="plugin.php">'.
228          '<table><thead><tr>'.
229          '<th>'.__('Name').'</th><th>'.__('Objects').'</th>'.
230          '</tr></thead><tbody>';
231
232          foreach($rs as $k => $v) {
233
234               $offline = in_array($v['key'],dcAdvancedCleaner::$dotclear[$type]);
235
236               if ($GLOBALS['core']->blog->settings->dcadvancedcleaner_dcproperty_hide && $offline)
237                    continue;
238
239               echo 
240               '<tr class="line'.
241               ($offline ? ' offline' : '').
242               '">'.
243               '<td class="nowrap"><label class="classic">'.
244               form::checkbox(array('entries['.$k.']'),html::escapeHTML($v['key'])).' '.$v['key'].'</label></td>'.
245               '<td class="nowrap">'.$v['value'].'</td>'.
246               '</tr>';
247          }
248
249          echo
250          '</tbody></table>'.
251          '<p>'.__('Action on selected rows:').'<br />'.
252          form::combo(array('action'),$actions).
253          '<input type="submit" value="'.__('ok').'" />'.
254          form::hidden(array('p'),'dcAdvancedCleaner').
255          form::hidden(array('t'),$tab).
256          form::hidden(array('type'),$type).
257          $GLOBALS['core']->formNonce().'</p>'.
258          '</form>';
259     }
260     echo 
261     '</div>';
262}
263?>
Note: See TracBrowser for help on using the repository browser.

Sites map