/**
  * @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();
 }