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