Exemple #1
0
	/**
	 * @see	wcf\data\IEditableCachedObject::resetCache()
	 */
	public static function resetCache() {
		// reset cache
		OptionCacheBuilder::getInstance()->reset();
		
		// reset options.inc.php files
		self::rebuild();
	}
 /**
  * @see	\wcf\system\search\acp\IACPSearchResultProvider::search()
  */
 public function search($query)
 {
     $results = array();
     // search by language item
     $conditions = new PreparedStatementConditionBuilder();
     $conditions->add("languageID = ?", array(WCF::getLanguage()->languageID));
     $conditions->add("languageItem LIKE ?", array('wcf.acp.option.%'));
     $conditions->add("languageItemValue LIKE ?", array('%' . $query . '%'));
     $sql = "SELECT\t\tlanguageItem, languageItemValue\n\t\t\tFROM\t\twcf" . WCF_N . "_language_item\n\t\t\t" . $conditions . "\n\t\t\tORDER BY\tlanguageItemValue ASC";
     $statement = WCF::getDB()->prepareStatement($sql);
     // don't use a limit here
     $statement->execute($conditions->getParameters());
     $languageItems = array();
     $optionNames = array();
     while ($row = $statement->fetchArray()) {
         $optionName = preg_replace('~^([a-z]+)\\.acp\\.option\\.~', '', $row['languageItem']);
         $languageItems[$optionName] = $row['languageItemValue'];
         $optionNames[] = $optionName;
     }
     if (empty($optionNames)) {
         return array();
     }
     $conditions = new PreparedStatementConditionBuilder();
     $conditions->add("optionName IN (?)", array($optionNames));
     $sql = "SELECT\toptionName, categoryName, options, permissions, hidden\n\t\t\tFROM\twcf" . WCF_N . "_option\n\t\t\t" . $conditions;
     $statement = WCF::getDB()->prepareStatement($sql);
     // don't use a limit here
     $statement->execute($conditions->getParameters());
     $optionCategories = OptionCacheBuilder::getInstance()->getData(array(), 'categories');
     while ($option = $statement->fetchObject('wcf\\data\\option\\Option')) {
         // category is not accessible
         if (!$this->isValid($option->categoryName)) {
             continue;
         }
         // option is not accessible
         if (!$this->validate($option) || $option->hidden) {
             continue;
         }
         $link = LinkHandler::getInstance()->getLink('Option', array('id' => $this->getCategoryID($this->getTopCategory($option->categoryName)->parentCategoryName)), 'optionName=' . $option->optionName . '#' . $this->getCategoryName($option->categoryName));
         $categoryName = $option->categoryName;
         $parentCategories = array();
         while (isset($optionCategories[$categoryName])) {
             array_unshift($parentCategories, 'wcf.acp.option.category.' . $optionCategories[$categoryName]->categoryName);
             $categoryName = $optionCategories[$categoryName]->parentCategoryName;
         }
         $results[] = new ACPSearchResult($languageItems[$option->optionName], $link, WCF::getLanguage()->getDynamicVariable('wcf.acp.search.result.subtitle', array('pieces' => $parentCategories)));
     }
     return $results;
 }