Пример #1
0
	/**
	 * Returns a result list of a search for installable packages.
	 * 
	 * @return	array
	 */
	public function search() {
		$conditions = new PreparedStatementConditionBuilder();
		if (!empty($this->parameters['package'])) {
			$conditions->add("package_update.package LIKE ?", array('%'.$this->parameters['package'].'%'));
		}
		if (!empty($this->parameters['packageDescription'])) {
			$conditions->add("package_update.packageDescription LIKE ?", array('%'.$this->parameters['packageDescription'].'%'));
		}
		if (!empty($this->parameters['packageName'])) {
			$conditions->add("package_update.packageName LIKE ?", array('%'.$this->parameters['packageName'].'%'));
		}
		
		// find matching packages
		$sql = "SELECT		package_update.packageUpdateID
			FROM		wcf".WCF_N."_package_update package_update
			".$conditions."
			ORDER BY	package_update.packageName ASC";
		$statement = WCF::getDB()->prepareStatement($sql, 1000);
		$statement->execute($conditions->getParameters());
		$packageUpdateIDs = array();
		while ($row = $statement->fetchArray()) {
			$packageUpdateIDs[] = $row['packageUpdateID'];
		}
		
		// no matches found
		if (empty($packageUpdateIDs)) {
			WCF::getTPL()->assign(array(
				'packageUpdates' => array()
			));
			
			return array(
				'count' => 0,
				'pageCount' => 0,
				'searchID' => 0,
				'template' => WCF::getTPL()->fetch('packageSearchResultList')
			);
		}
		
		// filter by version
		$conditions = new PreparedStatementConditionBuilder();
		$conditions->add("puv.packageUpdateID IN (?)", array($packageUpdateIDs));
		$sql = "SELECT		pu.package, puv.packageUpdateVersionID, puv.packageUpdateID, puv.packageVersion, puv.isAccessible
			FROM		wcf".WCF_N."_package_update_version puv
			LEFT JOIN	wcf".WCF_N."_package_update pu
			ON		(pu.packageUpdateID = puv.packageUpdateID)
			".$conditions;
		$statement = WCF::getDB()->prepareStatement($sql);
		$statement->execute($conditions->getParameters());
		$packageVersions = array();
		while ($row = $statement->fetchArray()) {
			$package = $row['package'];
			if (!isset($packageVersions[$package])) {
				$packageVersions[$package] = array();
			}
			
			$packageUpdateID = $row['packageUpdateID'];
			if (!isset($packageVersions[$package][$packageUpdateID])) {
				$packageVersions[$package][$packageUpdateID] = array(
					'accessible' => array(),
					'existing' => array()
				);
			}
			
			if ($row['isAccessible']) {
				$packageVersions[$package][$packageUpdateID]['accessible'][$row['packageUpdateVersionID']] = $row['packageVersion'];
			}
			$packageVersions[$package][$packageUpdateID]['existing'][$row['packageUpdateVersionID']] = $row['packageVersion'];
		}
		
		// determine highest versions
		$packageUpdates = array();
		foreach ($packageVersions as $package => $versionData) {
			$accessible = $existing = $versions = array();
			
			foreach ($versionData as $packageUpdateID => $versionTypes) {
				// ignore unaccessible packages
				if (empty($versionTypes['accessible'])) {
					continue;
				}
				
				uasort($versionTypes['accessible'], array('wcf\data\package\Package', 'compareVersion'));
				uasort($versionTypes['existing'], array('wcf\data\package\Package', 'compareVersion'));
				
				$accessibleVersion = array_slice($versionTypes['accessible'], -1, 1, true);
				$existingVersion = array_slice($versionTypes['existing'], -1, 1, true);
				
				$ak = key($accessibleVersion);
				$av = current($accessibleVersion);
				$ek = key($existingVersion);
				$ev = current($existingVersion);
				
				$accessible[$av] = $ak;
				$existing[$ev] = $ek;
				$versions[$ak] = $packageUpdateID;
				$versions[$ek] = $packageUpdateID;
			}
			
			uksort($accessible, array('wcf\data\package\Package', 'compareVersion'));
			uksort($existing, array('wcf\data\package\Package', 'compareVersion'));
			
			$accessible = array_pop($accessible);
			$existing = array_pop($existing);
			$packageUpdates[$versions[$accessible]] = array(
				'accessible' => $accessible,
				'existing' => $existing
			);
		}
		
		$search = SearchEditor::create(array(
			'userID' => WCF::getUser()->userID,
			'searchData' => serialize($packageUpdates),
			'searchTime' => TIME_NOW,
			'searchType' => 'acpPackageSearch'
		));
		
		// forward call to build the actual result list
		$updateAction = new PackageUpdateAction(array(), 'getResultList', array(
			'pageNo' => 1,
			'search' => $search
		));
		
		$returnValues = $updateAction->executeAction();
		return $returnValues['returnValues'];
	}
 /**
  * @see	wcf\action\IAction::execute()
  */
 public function execute()
 {
     //parent::execute();  //!!!
     $this->readParameters();
     //!!!
     // set active menu item (for error messages)
     //PageMenu::getInstance()->setActiveMenuItem('wbb.header.menu.board');
     // build conditions
     $sql = '';
     $conditionBuilder = new PreparedStatementConditionBuilder();
     switch ($this->mode) {
         case 'unreadPosts':
             $conditionBuilder->add('thread.boardID IN (?)', array($this->boardIDs));
             $conditionBuilder->add('thread.lastPostTime > ?', array(VisitTracker::getInstance()->getVisitTime('com.woltlab.wbb.thread')));
             $conditionBuilder->add('thread.isDeleted = 0');
             $conditionBuilder->add('thread.isDisabled = 0');
             $conditionBuilder->add('thread.movedThreadID IS NULL');
             $conditionBuilder->add('(thread.lastPostTime > tracked_thread_visit.visitTime OR tracked_thread_visit.visitTime IS NULL)');
             $conditionBuilder->add('(thread.lastPostTime > tracked_board_visit.visitTime OR tracked_board_visit.visitTime IS NULL)');
             if (LanguageFactory::getInstance()->multilingualismEnabled() && count(WCF::getUser()->getLanguageIDs())) {
                 $conditionBuilder->add('(thread.languageID IN (?) OR thread.languageID IS NULL)', array(WCF::getUser()->getLanguageIDs()));
             }
             $conditionBuilder->add('thread.isAnnouncement = 0');
             //!!!
             $sql = "SELECT\t\tthread.threadID\n\t\t\t\t\tFROM\t\twbb" . WCF_N . "_thread thread\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_tracked_visit tracked_thread_visit\n\t\t\t\t\tON\t\t(tracked_thread_visit.objectTypeID = " . VisitTracker::getInstance()->getObjectTypeID('com.woltlab.wbb.thread') . " AND tracked_thread_visit.objectID = thread.threadID AND tracked_thread_visit.userID = " . WCF::getUser()->userID . ")\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_tracked_visit tracked_board_visit\n\t\t\t\t\tON\t\t(tracked_board_visit.objectTypeID = " . VisitTracker::getInstance()->getObjectTypeID('com.woltlab.wbb.board') . " AND tracked_board_visit.objectID = thread.boardID AND tracked_board_visit.userID = " . WCF::getUser()->userID . ")\n\t\t\t\t\t" . $conditionBuilder . "\n\t\t\t\t\tORDER BY\tthread.lastPostTime DESC";
             $exttMbqSqlCount = "SELECT\t\tcount(thread.threadID) as totalNum\n\t\t\t\t\tFROM\t\twbb" . WCF_N . "_thread thread\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_tracked_visit tracked_thread_visit\n\t\t\t\t\tON\t\t(tracked_thread_visit.objectTypeID = " . VisitTracker::getInstance()->getObjectTypeID('com.woltlab.wbb.thread') . " AND tracked_thread_visit.objectID = thread.threadID AND tracked_thread_visit.userID = " . WCF::getUser()->userID . ")\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_tracked_visit tracked_board_visit\n\t\t\t\t\tON\t\t(tracked_board_visit.objectTypeID = " . VisitTracker::getInstance()->getObjectTypeID('com.woltlab.wbb.board') . " AND tracked_board_visit.objectID = thread.boardID AND tracked_board_visit.userID = " . WCF::getUser()->userID . ")\n\t\t\t\t\t" . $conditionBuilder;
             break;
             /*
             case 'undoneThreads':
             	$boardIDs = array();
             	foreach ($this->boardIDs as $boardID) {
             		if (BoardCache::getInstance()->getBoard($boardID)->enableMarkingAsDone) $boardIDs[] = $boardID;
             	}
             	if (empty($boardIDs)) {
             		throw new NamedUserException(WCF::getLanguage()->getDynamicVariable('wcf.search.error.noMatches', array('query' => '')));
             	}
             	
             	$conditionBuilder->add('thread.boardID IN (?)', array($boardIDs));
             	$conditionBuilder->add('thread.isDone = 0');
             	$conditionBuilder->add('thread.isDeleted = 0');
             	$conditionBuilder->add('thread.isDisabled = 0');
             	$conditionBuilder->add('thread.movedThreadID IS NULL');
             	if (LanguageFactory::getInstance()->multilingualismEnabled() && count(WCF::getUser()->getLanguageIDs())) {
             		$conditionBuilder->add('(thread.languageID IN (?) OR thread.languageID IS NULL)', array(WCF::getUser()->getLanguageIDs()));
             	}
             	
             	$sql = "SELECT		thread.threadID
             		FROM		wbb".WCF_N."_thread thread
             		".$conditionBuilder."		
             		ORDER BY	thread.lastPostTime DESC";
             break;
             */
     }
     // build search hash
     $searchHash = StringUtil::getHash($sql);
     // execute query
     $matches = array();
     $statement = WCF::getDB()->prepareStatement($sql, $this->exttMbqNumPerPage, $this->exttMbqStartNum);
     $statement->execute($conditionBuilder->getParameters());
     while ($row = $statement->fetchArray()) {
         $matches[] = array('objectID' => $row['threadID'], 'objectType' => 'com.woltlab.wbb.post');
     }
     //get total count
     $exttMbqStatementCount = WCF::getDB()->prepareStatement($exttMbqSqlCount);
     $exttMbqStatementCount->execute($conditionBuilder->getParameters());
     while ($exttMbqRecord = $exttMbqStatementCount->fetchArray()) {
         $exttMbqTotal = $exttMbqRecord['totalNum'];
     }
     // check result
     /*
     if (!count($matches)) {
     	throw new NamedUserException(WCF::getLanguage()->getDynamicVariable('wcf.search.error.noMatches', array('query' => '')));
     }
     */
     // save result in database
     $searchData = array('packageID' => PACKAGE_ID, 'query' => '', 'results' => $matches, 'additionalData' => array('com.woltlab.wbb.post' => array('findThreads' => 1)), 'sortOrder' => 'DESC', 'sortField' => 'time', 'objectTypes' => array('com.woltlab.wbb.post'));
     $searchData = serialize($searchData);
     $search = SearchEditor::create(array('userID' => WCF::getUser()->userID ?: null, 'searchData' => $searchData, 'searchTime' => TIME_NOW, 'searchType' => 'messages', 'searchHash' => $searchHash));
     // forward to result page
     //HeaderUtil::redirect(LinkHandler::getInstance()->getLink('SearchResult', array('id' => $search->searchID)));
     //exit;
     $exttMbqRetIds = array();
     foreach ($matches as $exttMbqTopicId) {
         $exttMbqRetIds[] = $exttMbqTopicId['objectID'];
     }
     return array('total' => $exttMbqTotal, 'topicIds' => $exttMbqRetIds);
 }
Пример #3
0
 /**
  * Returns a result list of a search for installable packages.
  * 
  * @return	array
  */
 public function search()
 {
     PackageUpdateDispatcher::getInstance()->refreshPackageDatabase();
     $availableUpdateServers = PackageUpdateServer::getActiveUpdateServers();
     // there are no available package update servers
     if (empty($availableUpdateServers)) {
         WCF::getTPL()->assign(array('packageUpdates' => array()));
         return array('count' => 0, 'pageCount' => 0, 'searchID' => 0, 'template' => WCF::getTPL()->fetch('packageSearchResultList'));
     }
     $conditions = new PreparedStatementConditionBuilder();
     $conditions->add("package_update.packageUpdateServerID IN (?)", array(array_keys($availableUpdateServers)));
     if (!empty($this->parameters['package'])) {
         $conditions->add("package_update.package LIKE ?", array('%' . $this->parameters['package'] . '%'));
     }
     if (!empty($this->parameters['packageDescription'])) {
         $conditions->add("package_update.packageDescription LIKE ?", array('%' . $this->parameters['packageDescription'] . '%'));
     }
     if (!empty($this->parameters['packageName'])) {
         $conditions->add("package_update.packageName LIKE ?", array('%' . $this->parameters['packageName'] . '%'));
     }
     $conditions->add("package.packageID IS NULL");
     // find matching packages
     $sql = "SELECT\t\tpackage_update.packageUpdateID\n\t\t\tFROM\t\twcf" . WCF_N . "_package_update package_update\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_package package\n\t\t\tON\t\t(package.package = package_update.package)\n\t\t\t" . $conditions . "\n\t\t\tORDER BY\tpackage_update.packageName ASC";
     $statement = WCF::getDB()->prepareStatement($sql, 1000);
     $statement->execute($conditions->getParameters());
     $packageUpdateIDs = array();
     while ($row = $statement->fetchArray()) {
         $packageUpdateIDs[] = $row['packageUpdateID'];
     }
     // no matches found
     if (empty($packageUpdateIDs)) {
         WCF::getTPL()->assign(array('packageUpdates' => array()));
         return array('count' => 0, 'pageCount' => 0, 'searchID' => 0, 'template' => WCF::getTPL()->fetch('packageSearchResultList'));
     }
     // get excluded packages
     $sql = "SELECT\t*\n\t\t\tFROM\twcf" . WCF_N . "_package_update_exclusion";
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute();
     $excludedPackages = array();
     while ($row = $statement->fetchArray()) {
         $package = $row['excludedPackage'];
         $packageVersion = $row['excludedPackageVersion'];
         $packageUpdateVersionID = $row['packageUpdateVersionID'];
         if (!isset($excludedPackages[$packageUpdateVersionID][$package])) {
             $excludedPackages[$packageUpdateVersionID][$package] = $packageVersion;
         } else {
             if (Package::compareVersion($excludedPackages[$packageUpdateVersionID][$package], $packageVersion) == 1) {
                 $excludedPackages[$packageUpdateVersionID][$package] = $packageVersion;
             }
         }
     }
     // get installed packages
     $sql = "SELECT\tpackage, packageVersion\n\t\t\tFROM\twcf" . WCF_N . "_package";
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute();
     $installedPackages = array();
     while ($row = $statement->fetchArray()) {
         $installedPackages[$row['package']] = $row['packageVersion'];
     }
     // filter by version
     $conditions = new PreparedStatementConditionBuilder();
     $conditions->add("puv.packageUpdateID IN (?)", array($packageUpdateIDs));
     $sql = "SELECT\t\tpu.package, puv.packageUpdateVersionID, puv.packageUpdateID, puv.packageVersion, puv.isAccessible\n\t\t\tFROM\t\twcf" . WCF_N . "_package_update_version puv\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_package_update pu\n\t\t\tON\t\t(pu.packageUpdateID = puv.packageUpdateID)\n\t\t\t" . $conditions;
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute($conditions->getParameters());
     $packageVersions = array();
     while ($row = $statement->fetchArray()) {
         $package = $row['package'];
         $packageVersion = $row['packageVersion'];
         $packageUpdateVersionID = $row['packageUpdateVersionID'];
         // check excluded packages
         if (isset($excludedPackages[$packageUpdateVersionID])) {
             $isExcluded = false;
             foreach ($excludedPackages[$packageUpdateVersionID] as $excludedPackage => $excludedPackageVersion) {
                 if (isset($installedPackages[$excludedPackage]) && Package::compareVersion($excludedPackageVersion, $installedPackages[$excludedPackage]) <= 0) {
                     // excluded, ignore
                     $isExcluded = true;
                     break;
                 }
             }
             if ($isExcluded) {
                 continue;
             }
         }
         if (!isset($packageVersions[$package])) {
             $packageVersions[$package] = array();
         }
         $packageUpdateID = $row['packageUpdateID'];
         if (!isset($packageVersions[$package][$packageUpdateID])) {
             $packageVersions[$package][$packageUpdateID] = array('accessible' => array(), 'existing' => array());
         }
         if ($row['isAccessible']) {
             $packageVersions[$package][$packageUpdateID]['accessible'][$row['packageUpdateVersionID']] = $packageVersion;
         }
         $packageVersions[$package][$packageUpdateID]['existing'][$row['packageUpdateVersionID']] = $packageVersion;
     }
     // all found versions are excluded
     if (empty($packageVersions)) {
         WCF::getTPL()->assign(array('packageUpdates' => array()));
         return array('count' => 0, 'pageCount' => 0, 'searchID' => 0, 'template' => WCF::getTPL()->fetch('packageSearchResultList'));
     }
     // determine highest versions
     $packageUpdates = array();
     foreach ($packageVersions as $package => $versionData) {
         $accessible = $existing = $versions = array();
         foreach ($versionData as $packageUpdateID => $versionTypes) {
             // ignore unaccessible packages
             if (empty($versionTypes['accessible'])) {
                 continue;
             }
             uasort($versionTypes['accessible'], array('wcf\\data\\package\\Package', 'compareVersion'));
             uasort($versionTypes['existing'], array('wcf\\data\\package\\Package', 'compareVersion'));
             $accessibleVersion = array_slice($versionTypes['accessible'], -1, 1, true);
             $existingVersion = array_slice($versionTypes['existing'], -1, 1, true);
             $ak = key($accessibleVersion);
             $av = current($accessibleVersion);
             $ek = key($existingVersion);
             $ev = current($existingVersion);
             $accessible[$av] = $ak;
             $existing[$ev] = $ek;
             $versions[$ak] = $packageUpdateID;
             $versions[$ek] = $packageUpdateID;
         }
         // ignore packages without accessible versions
         if (empty($accessible)) {
             continue;
         }
         uksort($accessible, array('wcf\\data\\package\\Package', 'compareVersion'));
         uksort($existing, array('wcf\\data\\package\\Package', 'compareVersion'));
         $accessible = array_pop($accessible);
         $existing = array_pop($existing);
         $packageUpdates[$versions[$accessible]] = array('accessible' => $accessible, 'existing' => $existing);
     }
     // no found packages is accessible
     if (empty($packageUpdates)) {
         WCF::getTPL()->assign(array('packageUpdates' => array()));
         return array('count' => 0, 'pageCount' => 0, 'searchID' => 0, 'template' => WCF::getTPL()->fetch('packageSearchResultList'));
     }
     $search = SearchEditor::create(array('userID' => WCF::getUser()->userID, 'searchData' => serialize($packageUpdates), 'searchTime' => TIME_NOW, 'searchType' => 'acpPackageSearch'));
     // forward call to build the actual result list
     $updateAction = new PackageUpdateAction(array(), 'getResultList', array('pageNo' => 1, 'search' => $search));
     $returnValues = $updateAction->executeAction();
     return $returnValues['returnValues'];
 }
Пример #4
0
 /**
  * @see wcf\form\IForm::save()
  */
 public function save()
 {
     parent::save();
     // store search result in database
     $data = serialize(array('matches' => $this->matches, 'itemsPerPage' => $this->itemsPerPage, 'columns' => $this->columns));
     $search = SearchEditor::create(array('userID' => WCF::getUser()->userID, 'searchData' => $data, 'searchTime' => TIME_NOW, 'searchType' => 'users'));
     // get new search id
     $this->searchID = $search->searchID;
     $this->saved();
     // forward to result page
     $url = LinkHandler::getInstance()->getLink('UserList', array('id' => $this->searchID), 'sortField=' . rawurlencode($this->sortField) . '&sortOrder=' . rawurlencode($this->sortOrder));
     HeaderUtil::redirect($url);
     exit;
 }
 /**
  * @see wcf\form\IForm::save()
  */
 public function save()
 {
     parent::save();
     // save search
     $search = SearchEditor::create(array('userID' => WCF::getUser()->userID, 'searchData' => $this->packageUpdateServerIDs, 'searchTime' => TIME_NOW, 'searchType' => 'packages'));
     $this->saved();
     // forward
     $url = LinkHandler::getInstance()->getLink('PackageUpdateSearchResult', array('id' => $search->searchID));
     HeaderUtil::redirect($url);
     exit;
 }
Пример #6
0
 /**
  * @see	\wcf\form\IForm::save()
  */
 public function save()
 {
     parent::save();
     // store search result in database
     $search = SearchEditor::create(array('userID' => WCF::getUser()->userID ?: null, 'searchData' => serialize(array('matches' => $this->matches)), 'searchTime' => TIME_NOW, 'searchType' => 'users'));
     // get new search id
     $this->searchID = $search->searchID;
     $this->saved();
     // forward to result page
     $url = LinkHandler::getInstance()->getLink('MembersList', array('id' => $this->searchID));
     HeaderUtil::redirect($url);
     exit;
 }
 /**
  * @see	\wcf\action\IAction::execute();
  */
 public function execute()
 {
     ACPMenu::getInstance()->setActiveMenuItem('wcf.acp.menu.link.user.search');
     parent::execute();
     // add email column for authorized users
     if (WCF::getSession()->getPermission('admin.user.canEditMailAddress')) {
         array_unshift($this->columns, 'email');
     }
     switch ($this->mode) {
         case 'banned':
             $sql = "SELECT\t\tuser_table.userID\n\t\t\t\t\tFROM\t\twcf" . WCF_N . "_user user_table\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_option_value option_value\n\t\t\t\t\tON\t\t(option_value.userID = user_table.userID)\n\t\t\t\t\tWHERE\t\tbanned = ?";
             $statement = WCF::getDB()->prepareStatement($sql, $this->maxResults);
             $statement->execute(array(1));
             while ($row = $statement->fetchArray()) {
                 $this->matches[] = $row['userID'];
             }
             break;
         case 'newest':
             $this->maxResults = 100;
             $this->sortField = 'registrationDate';
             $this->sortOrder = 'DESC';
             $sql = "SELECT\t\tuser_table.userID\n\t\t\t\t\tFROM\t\twcf" . WCF_N . "_user user_table\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_option_value option_value\n\t\t\t\t\tON\t\t(option_value.userID = user_table.userID)\n\t\t\t\t\tORDER BY\tuser_table.registrationDate DESC";
             $statement = WCF::getDB()->prepareStatement($sql, $this->maxResults);
             $statement->execute();
             while ($row = $statement->fetchArray()) {
                 $this->matches[] = $row['userID'];
             }
             break;
         case 'disabled':
             $this->sortField = 'registrationDate';
             $this->sortOrder = 'DESC';
             $sql = "SELECT\t\tuser_table.userID\n\t\t\t\t\tFROM\t\twcf" . WCF_N . "_user user_table\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_option_value option_value\n\t\t\t\t\tON\t\t(option_value.userID = user_table.userID)\n\t\t\t\t\tWHERE\t\tactivationCode <> ?\n\t\t\t\t\tORDER BY\tuser_table.registrationDate DESC";
             $statement = WCF::getDB()->prepareStatement($sql, $this->maxResults);
             $statement->execute(array(0));
             while ($row = $statement->fetchArray()) {
                 $this->matches[] = $row['userID'];
             }
             break;
         case 'disabledAvatars':
             $sql = "SELECT\t\tuser_table.userID\n\t\t\t\t\tFROM\t\twcf" . WCF_N . "_user user_table\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_option_value option_value\n\t\t\t\t\tON\t\t(option_value.userID = user_table.userID)\n\t\t\t\t\tWHERE\t\tdisableAvatar = ?";
             $statement = WCF::getDB()->prepareStatement($sql, $this->maxResults);
             $statement->execute(array(1));
             while ($row = $statement->fetchArray()) {
                 $this->matches[] = $row['userID'];
             }
             break;
         case 'disabledSignatures':
             $sql = "SELECT\t\tuser_table.userID\n\t\t\t\t\tFROM\t\twcf" . WCF_N . "_user user_table\n\t\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_option_value option_value\n\t\t\t\t\tON\t\t(option_value.userID = user_table.userID)\n\t\t\t\t\tWHERE\t\tdisableSignature = ?";
             $statement = WCF::getDB()->prepareStatement($sql, $this->maxResults);
             $statement->execute(array(1));
             while ($row = $statement->fetchArray()) {
                 $this->matches[] = $row['userID'];
             }
             break;
     }
     if (empty($this->matches)) {
         throw new NamedUserException(WCF::getLanguage()->get('wcf.acp.user.search.error.noMatches'));
     }
     // store search result in database
     $data = serialize(array('matches' => $this->matches, 'itemsPerPage' => $this->itemsPerPage, 'columns' => $this->columns));
     $search = SearchEditor::create(array('userID' => WCF::getUser()->userID, 'searchData' => $data, 'searchTime' => TIME_NOW, 'searchType' => 'users'));
     $this->executed();
     // forward to result page
     $url = LinkHandler::getInstance()->getLink('UserList', array('id' => $search->searchID), 'sortField=' . rawurlencode($this->sortField) . '&sortOrder=' . rawurlencode($this->sortOrder));
     HeaderUtil::redirect($url);
     exit;
 }