/** * @see AdminToolsFunction::execute($data) */ public function execute($data) { parent::execute($data); $parameters = $data['parameters']['cache.clearCache']; if ($parameters['clearWCFCache']) { WCF::getCache()->clear(WCF_DIR . 'cache', '*.php', true); } if ($parameters['clearStandaloneCache']) { $sql = "SELECT packageDir FROM wcf" . WCF_N . "_package WHERE packageID = " . PACKAGE_ID; $row = WCF::getDB()->getFirstRow($sql); WCF::getCache()->clear($row['packageDir'] . 'cache', '*.php', true); } if ($parameters['clearTemplateCache']) { require_once WCF_DIR . 'lib/system/template/ACPTemplate.class.php'; ACPTemplate::deleteCompiledACPTemplates(); Template::deleteCompiledTemplates(); } if ($parameters['clearLanguageCache']) { LanguageEditor::deleteLanguageFiles('*', '*', '*'); } if ($parameters['clearStandaloneOptions']) { Options::resetCache(); Options::resetFile(); } $this->executed(); }
/** * Clears relevant caches after package installation, update or uninstallation. */ protected function makeClear() { require_once WCF_DIR . 'lib/acp/option/Options.class.php'; require_once WCF_DIR . 'lib/system/language/LanguageEditor.class.php'; // get dependent (standalone) packages $sql = "SELECT\t\tpackage.packageID, packageDir\n\t\t\tFROM\t\twcf" . WCF_N . "_package_dependency package_dependency\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_package package\n\t\t\tON\t\t(package.packageID = package_dependency.packageID)\n\t\t\tWHERE\t\tpackage_dependency.dependency = " . $this->packageID . "\n\t\t\t\t\tAND package.standalone = 1"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { // delete relevant language files LanguageEditor::deleteLanguageFiles('*', '*', $row['packageID']); if (!empty($row['packageDir'])) { // get real path $packageDir = FileUtil::addTrailingSlash(FileUtil::getRealPath(WCF_DIR . $row['packageDir'])); // reset options.inc.php $filename = $packageDir . Options::FILENAME; if (file_exists($filename)) { @unlink($filename); } // clear application cache WCF::getCache()->clear($packageDir . 'cache', '*.php', true); } } // clear general options file @unlink(WCF_DIR . 'options.inc.php'); // clear general cache WCF::getCache()->clear(WCF_DIR . 'cache', '*.php', true); // delete compiled templates require_once WCF_DIR . 'lib/system/template/ACPTemplate.class.php'; ACPTemplate::deleteCompiledACPTemplates(); Template::deleteCompiledTemplates(); }