Example #1
0
 /**
  * Builds the static conditions.
  */
 protected function buildStaticConditions()
 {
     if (!empty($this->username)) {
         $this->conditions->add("user_table.username LIKE ?", array('%' . addcslashes($this->username, '_%') . '%'));
     }
 }
 /**
  * Fetches a list of users.
  * 
  * @param	mixed		$loopFunction
  * @return	array<integer>
  */
 public function fetchUsers($loopFunction = null)
 {
     // select users
     $sql = "SELECT\t\tuser_table.*\n\t\t\tFROM\t\twcf" . WCF_N . "_user user_table\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_option_value option_value\n\t\t\tON\t\t(option_value.userID = user_table.userID)\n\t\t\t" . $this->conditions;
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute($this->conditions->getParameters());
     $users = array();
     while ($row = $statement->fetchArray()) {
         $users[$row['userID']] = $row;
     }
     if (empty($users)) {
         return array();
     }
     // select group ids
     $conditions = new PreparedStatementConditionBuilder();
     $conditions->add("userID IN (?)", array(array_keys($users)));
     $sql = "SELECT\tuserID, groupID\n\t\t\tFROM\twcf" . WCF_N . "_user_to_group\n\t\t\t" . $conditions;
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute($conditions->getParameters());
     $groupIDs = array();
     while ($row = $statement->fetchArray()) {
         if (!isset($groupIDs[$row['userID']])) {
             $groupIDs[$row['userID']] = array();
         }
         $groupIDs[$row['userID']][] = $row['groupID'];
     }
     foreach ($users as $userID => $userData) {
         if (!empty($groupIDs[$userID]) && !UserGroup::isAccessibleGroup($groupIDs[$userID])) {
             throw new PermissionDeniedException();
         }
         if ($loopFunction !== null) {
             $loopFunction($userID, $userData);
         }
         $userIDs[] = $userID;
         $this->affectedUsers++;
     }
     return $userIDs;
 }
Example #3
0
 /**
  * Builds the static conditions.
  */
 protected function buildStaticConditions()
 {
     if (!empty($this->username)) {
         $this->conditions->add("user_table.username LIKE ?", array('%' . addcslashes($this->username, '_%') . '%'));
     }
     if (!empty($this->userID)) {
         $this->conditions->add("user_table.userID = ?", array($this->userID));
     }
     if (!empty($this->email)) {
         $this->conditions->add("user_table.email LIKE ?", array('%' . addcslashes($this->email, '_%') . '%'));
     }
     if (!empty($this->groupIDs)) {
         $this->conditions->add("user_table.userID " . ($this->invertGroupIDs == 1 ? 'NOT ' : '') . "IN (SELECT userID FROM wcf" . WCF_N . "_user_to_group WHERE groupID IN (?))", array($this->groupIDs));
     }
     if (!empty($this->languageIDs)) {
         $this->conditions->add("user_table.languageID IN (?)", array($this->languageIDs));
     }
     // registration date
     if ($startDate = @strtotime($this->registrationDateStart)) {
         $this->conditions->add('user_table.registrationDate >= ?', array($startDate));
     }
     if ($endDate = @strtotime($this->registrationDateEnd)) {
         $this->conditions->add('user_table.registrationDate <= ?', array($endDate));
     }
     if ($this->banned) {
         $this->conditions->add('user_table.banned = ?', array(1));
     }
     if ($this->notBanned) {
         $this->conditions->add('user_table.banned = ?', array(0));
     }
     // last activity time
     if ($startDate = @strtotime($this->lastActivityTimeStart)) {
         $this->conditions->add('user_table.lastActivityTime >= ?', array($startDate));
     }
     if ($endDate = @strtotime($this->lastActivityTimeEnd)) {
         $this->conditions->add('user_table.lastActivityTime <= ?', array($endDate));
     }
     if ($this->enabled) {
         $this->conditions->add('user_table.activationCode = ?', array(0));
     }
     if ($this->disabled) {
         $this->conditions->add('user_table.activationCode <> ?', array(0));
     }
 }