Follow up on bug #7588: respect TSConfig settings for cache clearing (patch by Helmut...
[Packages/TYPO3.CMS.git] / typo3 / classes / class.clearcachemenu.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 2007 Ingo Renner <ingo@typo3.org>
6 * All rights reserved
7 *
8 * This script is part of the TYPO3 project. The TYPO3 project is
9 * free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * The GNU General Public License can be found at
15 * http://www.gnu.org/copyleft/gpl.html.
16 * A copy is found in the textfile GPL.txt and important notices to the license
17 * from the author is found in LICENSE.txt distributed with these scripts.
18 *
19 *
20 * This script is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
27
28
29 /**
30 * class to render the menu for the cache clearing actions
31 *
32 * $Id$
33 *
34 * @author Ingo Renner <ingo@typo3.org>
35 * @package TYPO3
36 * @subpackage core
37 */
38 class ClearCacheMenu implements backend_toolbarItem {
39
40 private $cacheActions;
41
42 /**
43 * reference back to the backend object
44 *
45 * @var TYPO3backend
46 */
47 private $backendReference;
48
49 /**
50 * constructor
51 *
52 * @param TYPO3backend TYPO3 backend object reference
53 */
54 public function __construct(TYPO3backend &$backendReference = null) {
55 $this->backendReference = $backendReference;
56 $this->cacheActions = array();
57
58 // Clear cache for ALL tables!
59 if($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.clearCache.all')) {
60 $title = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:rm.clearCacheMenu_all');
61 $this->cacheActions[] = array(
62 'id' => 'all',
63 'title' => $title,
64 'href' => $this->backPath.'tce_db.php?vC='.$GLOBALS['BE_USER']->veriCode().'&cacheCmd=all',
65 'icon' => '<img'.t3lib_iconWorks::skinImg($this->backPath, 'gfx/lightning_red.png', 'width="16" height="16"').' title="'.htmlspecialchars($title).'" alt="" />'
66 );
67 }
68 // Clear cache for either ALL pages
69 if($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.clearCache.pages')) {
70 $title = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:rm.clearCacheMenu_pages');
71 $this->cacheActions[] = array(
72 'id' => 'pages',
73 'title' => $title,
74 'href' => $this->backPath.'tce_db.php?vC='.$GLOBALS['BE_USER']->veriCode().'&cacheCmd=pages',
75 'icon' => '<img'.t3lib_iconWorks::skinImg($this->backPath, 'gfx/lightning.png', 'width="16" height="16"').' title="'.htmlspecialchars($title).'" alt="" />'
76 );
77 }
78
79 // Clearing of cache-files in typo3conf/ + menu
80 if ($GLOBALS['BE_USER']->isAdmin() && $GLOBALS['TYPO3_CONF_VARS']['EXT']['extCache']) {
81 $title = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:rm.clearCacheMenu_allTypo3Conf');
82 $this->cacheActions[] = array(
83 'id' => 'temp_CACHED',
84 'title' => $title,
85 'href' => $this->backPath.'tce_db.php?vC='.$GLOBALS['BE_USER']->veriCode().'&cacheCmd=temp_CACHED',
86 'icon' => '<img'.t3lib_iconWorks::skinImg($this->backPath, 'gfx/lightning_green.png', 'width="16" height="16"').' title="'.htmlspecialchars($title).'" alt="" />'
87 );
88 }
89
90 }
91
92 /**
93 * checks whether the user has access to this toolbar item
94 *
95 * @return boolean true if user has access, false if not
96 */
97 public function checkAccess() {
98 return ($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->getTSConfigVal('options.clearCache.pages') || $GLOBALS['BE_USER']->getTSConfigVal('options.clearCache.pages'));
99 }
100
101 /**
102 * Creates the selector for workspaces
103 *
104 * @return string workspace selector as HTML select
105 */
106 public function render() {
107 $this->addJavascriptToBackend();
108 $cacheMenu = array();
109
110 $cacheMenu[] = '<a href="#" class="toolbar-item"><img'.t3lib_iconWorks::skinImg($this->backPath, 'gfx/lightning.png', 'width="16" height="16"').' title="Clear Cache" alt="" /></a>';
111
112 $cacheMenu[] = '<ul class="toolbar-item-menu" style="display: none;">';
113
114 foreach($this->cacheActions as $actionKey => $cacheAction) {
115 $cacheMenu[] = '<li><a href="'.htmlspecialchars($cacheAction['href']).'">'.$cacheAction['icon'].' '.$cacheAction['title'].'</a></li>';
116 }
117
118 $cacheMenu[] = '</ul>';
119
120 return implode("\n", $cacheMenu);
121 }
122
123 /**
124 * adds the neccessary javascript ot the backend
125 *
126 * @return void
127 */
128 private function addJavascriptToBackend() {
129 $this->backendReference->addJavascriptFile('js/clearcachemenu.js');
130 }
131
132 /**
133 * returns additional attributes for the list item in the toolbar
134 *
135 * @return string list item HTML attibutes
136 */
137 public function getAdditionalAttributes() {
138 return ' id="clear-cache-actions-menu"';
139 }
140
141 }
142
143 if(defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/classes/class.clearcachemenu.php']) {
144 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/classes/class.clearcachemenu.php']);
145 }
146
147 ?>