getPlatform(); $cacheBaseDir = $gallery->getConfig('data.gallery.cache'); /* Keep the obsolete layout dir in the list for a while */ $cacheDirs = array('entity', 'layout', 'module', 'theme'); $error = false; /* * Try multiple times to clean the cache because for busy gallery installs that are * getting upgraded when not in maintenance mode, it's possible for new entries to get * cached while we're cleaning out old ones. The first round of cleaning takes a long * time so the window is big. Subsequent runs are very fast, though so after 3 attempts * we should be good unless there's a real problem. */ $attempts = 3; do { $templateData['unclean'] = array(); foreach ($cacheDirs as $dir) { $dir = sprintf('%s%s', $cacheBaseDir, $dir); if ($platform->file_exists($dir)) { if (!$platform->recursiveRmDir($dir)) { $templateData['unclean'][] = $dir; } } } $attempts--; } while ($attempts > 0 && !empty($templateData['unclean'])); $ret = GalleryCoreApi::removeAllMapEntries('GalleryCacheMap', true); if ($ret) { $templateData['errors'][] = _('Unable to clear the page cache'); $templateData['stackTrace'] .= $ret->getAsHtml(); } $storage =& $gallery->getStorage(); $ret = $storage->checkPoint(); if ($ret) { $templateData['errors'][] = _('Unable to commit database transaction'); $templateData['stackTrace'] .= $ret->getAsHtml(); } /* * Delete the install.log file that's left over from 2.0 and 2.0.1 installs * since it's in a known location and contains potential information leaks. */ $dataBase = $gallery->getConfig('data.gallery.base'); $legacyInstallLogPath = sprintf('%s/install.log', $dataBase); if ($platform->file_exists($legacyInstallLogPath)) { $platform->unlink($legacyInstallLogPath); } $templateData['bodyFile'] = 'CleanCache.html'; $this->setComplete(true); } } ?>