41 if (isset($this->postValues[
'set'][
'clearTables'])) {
42 $this->actionMessages[] = $this->clearSelectedTables();
44 if (isset($this->postValues[
'set'][
'resetBackendUserUc'])) {
45 $this->actionMessages[] = $this->resetBackendUserUc();
47 if (isset($this->postValues[
'set'][
'clearProcessedFiles'])) {
48 $this->actionMessages[] = $this->clearProcessedFiles();
54 $this->view->assign(
'typo3TempData', $typo3TempData);
56 $this->view->assign(
'actionMessages', $this->actionMessages);
57 return $this->view->render();
66 $tableCandidates = array(
68 'name' =>
'be_sessions',
69 'description' =>
'Backend user sessions' 72 'name' =>
'cache_imagesizes',
73 'description' =>
'Cached image sizes',
76 'name' =>
'cache_md5params',
77 'description' =>
'Frontend redirects',
80 'name' =>
'cache_typo3temp_log',
81 'description' =>
'Image rendering lock information',
84 'name' =>
'fe_sessions',
85 'description' =>
'Frontend user sessions',
88 'name' =>
'fe_session_data',
89 'description' =>
'Frontend user session data',
92 'name' =>
'sys_history',
93 'description' =>
'Tracking of database record changes through TYPO3 backend forms',
96 'name' =>
'sys_lockedrecords',
97 'description' =>
'Record locking of backend user editing',
101 'description' =>
'General log table',
104 'name' =>
'sys_preview',
105 'description' =>
'Workspace preview links',
108 'name' =>
'tx_extensionmanager_domain_model_extension',
109 'description' =>
'List of TER extensions',
112 'name' =>
'tx_rsaauth_keys',
113 'description' =>
'Login process key storage' 116 $database = $this->getDatabaseConnection();
117 $allTables = array_keys(
$database->admin_get_tables());
119 foreach ($tableCandidates as $candidate) {
120 if (in_array($candidate[
'name'], $allTables)) {
121 $candidate[
'rows'] =
$database->exec_SELECTcountRows(
'*', $candidate[
'name']);
122 $tables[] = $candidate;
133 protected function clearSelectedTables() {
134 $clearedTables = array();
135 $database = $this->getDatabaseConnection();
136 foreach ($this->postValues[
'values'] as $tableName => $selected) {
137 if ($selected == 1) {
138 $database->exec_TRUNCATEquery($tableName);
139 $clearedTables[] = $tableName;
142 if (count($clearedTables)) {
144 $message = $this->objectManager->get(
'TYPO3\\CMS\\Install\\Status\\OkStatus');
145 $message->setTitle(
'Cleared tables');
146 $message->setMessage(
'List of cleared tables: ' . implode(
', ', $clearedTables));
149 $message = $this->objectManager->get(
'TYPO3\\CMS\\Install\\Status\\InfoStatus');
150 $message->setTitle(
'No tables selected to clear');
160 protected function resetBackendUserUc() {
161 $database = $this->getDatabaseConnection();
162 $database->exec_UPDATEquery(
'be_users',
'', array(
'uc' =>
''));
164 $message = $this->objectManager->get(
'TYPO3\\CMS\\Install\\Status\\OkStatus');
165 $message->setTitle(
'Reset all backend users preferences');
176 $pathTypo3Temp= PATH_site .
'typo3temp/';
183 $numberOfFilesToDelete = 0;
185 $numberOfFilesToDelete =
$postValues[
'numberOfFiles'];
196 $timeMap = array(
'day' => 1,
'week' => 7,
'month' => 30);
197 $directory = @dir($pathTypo3Temp . $subDirectory);
198 if (is_object($directory)) {
199 while ($entry = $directory->read()) {
200 $absoluteFile = $pathTypo3Temp . $subDirectory .
'/' . $entry;
201 if (@is_file($absoluteFile)) {
206 if (filesize($absoluteFile) > $condition * 1024) {
210 if (fileatime($absoluteFile) <
$GLOBALS[
'EXEC_TIME'] - (int)$timeMap[$condition] * 60 * 60 * 24) {
218 $hashPart = substr(basename($absoluteFile), -14, 10);
221 !preg_match(
'/[^a-f0-9]/', $hashPart)
222 || substr($absoluteFile, -6) ===
'.cache' 223 || substr($absoluteFile, -4) ===
'.tbl' 224 || substr($absoluteFile, -4) ===
'.css' 225 || substr($absoluteFile, -3) ===
'.js' 226 || substr($absoluteFile, -5) ===
'.gzip' 227 || substr(basename($absoluteFile), 0, 8) ===
'installTool' 229 if ($numberOfFilesToDelete && $deleteCounter < $numberOfFilesToDelete) {
231 unlink($absoluteFile);
241 $data[
'numberOfFilesMatchingCriteria'] = $criteriaMatch;
242 $data[
'numberOfDeletedFiles'] = $deleteCounter;
244 if ($deleteCounter > 0) {
245 $message = $this->objectManager->get(
'TYPO3\\CMS\\Install\\Status\\OkStatus');
246 $message->setTitle(
'Deleted ' . $deleteCounter .
' files from typo3temp/' . $subDirectory .
'/');
247 $this->actionMessages[] = $message;
250 $data[
'selectedCondition'] = $condition;
251 $data[
'numberOfFiles'] = $numberOfFilesToDelete;
252 $data[
'selectedSubDirectory'] = $subDirectory;
255 $data[
'subDirectories'] = array(
261 $directories = dir($pathTypo3Temp);
262 if (is_object($directories)) {
263 while ($entry = $directories->read()) {
264 if (is_dir($pathTypo3Temp . $entry) && $entry !=
'..' && $entry !=
'.') {
265 $data[
'subDirectories'][$entry][
'name'] = $entry;
267 $data[
'subDirectories'][$entry][
'selected'] = FALSE;
268 if ($entry === $data[
'selectedSubDirectory']) {
269 $data[
'subDirectories'][$entry][
'selected'] = TRUE;
274 $data[
'numberOfFilesInSelectedDirectory'] = $data[
'subDirectories'][$data[
'selectedSubDirectory']][
'filesNumber'];
286 protected function clearProcessedFiles() {
288 $GLOBALS[
'TYPO3_DB'] = $this->getDatabaseConnection();
291 $failedDeletions = $repository->removeAll();
292 if ($failedDeletions) {
294 $message = $this->objectManager->get(
'TYPO3\\CMS\\Install\\Status\\ErrorStatus');
295 $message->setTitle(
'Failed to delete ' . $failedDeletions .
' processed files. See TYPO3 log (by default typo3temp/logs/typo3.log)');
298 $message = $this->objectManager->get(
'TYPO3\\CMS\\Install\\Status\\OkStatus');
299 $message->setTitle(
'Cleared processed files');
static canBeInterpretedAsInteger($var)
static makeInstance($className)
static getFilesInDir($path, $extensionList='', $prependPath=FALSE, $order='', $excludePattern='')
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]