/** * @see Action::execute() */ public function execute() { AbstractAction::execute(); // check permission WCF::getUser()->checkPermission('admin.user.canBanUser'); if (count($this->userIDs) > 0) { // check permission $sql = "SELECT\tDISTINCT groupID\n\t\t\t\tFROM\twcf" . WCF_N . "_user_to_groups\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDs) . ")"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { if (!Group::isAccessibleGroup($row['groupID'])) { throw new PermissionDeniedException(); } } // update user $sql = "UPDATE\twcf" . WCF_N . "_user\n\t\t\t\tSET\tbanned = 0\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDs) . ")"; WCF::getDB()->sendQuery($sql); // unmark users UserEditor::unmarkAll(); // reset sessions Session::resetSessions($this->userIDs); } $this->executed(); if (!empty($this->url)) { HeaderUtil::redirect($this->url); } else { // set active menu item WCFACP::getMenu()->setActiveMenuItem('wcf.acp.menu.link.user.management'); // show succes message WCF::getTPL()->assign('message', 'wcf.acp.user.unban.success'); WCF::getTPL()->display('success'); } exit; }
/** * @see Form::save() */ public function save() { parent::save(); // send content type header('Content-Type: text/' . $this->fileType . '; charset=' . CHARSET); header('Content-Disposition: attachment; filename="export.' . $this->fileType . '"'); if ($this->fileType == 'xml') { echo "<?xml version=\"1.0\" encoding=\"" . CHARSET . "\"?>\n<addresses>\n"; } // get users $sql = "SELECT\t\temail\n\t\t\tFROM\t\twcf" . WCF_N . "_user\n\t\t\tWHERE\t\tuserID IN (" . $this->userIDs . ")\n\t\t\tORDER BY\temail"; $result = WCF::getDB()->sendQuery($sql); $i = 0; $j = WCF::getDB()->countRows($result) - 1; while ($row = WCF::getDB()->fetchArray($result)) { if ($this->fileType == 'xml') { echo "<address><![CDATA[" . StringUtil::escapeCDATA($row['email']) . "]]></address>\n"; } else { echo $this->textSeparator . $row['email'] . $this->textSeparator . ($i < $j ? $this->separator : ''); } $i++; } if ($this->fileType == 'xml') { echo "</addresses>"; } UserEditor::unmarkAll(); $this->saved(); exit; }
/** * @see Action::execute() */ public function execute() { parent::execute(); // check permission WCF::getUser()->checkPermission('admin.user.canEnableUser'); if (count($this->userIDs) > 0) { // check permission $sql = "SELECT\tDISTINCT groupID\n\t\t\t\tFROM\twcf" . WCF_N . "_user_to_groups\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDs) . ")"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { if (!Group::isAccessibleGroup($row['groupID'])) { throw new PermissionDeniedException(); } } // send notification $languages = array(0 => WCF::getLanguage(), WCF::getLanguage()->getLanguageID() => WCF::getLanguage()); $sql = "SELECT\tuserID, username, email, languageID\n\t\t\t\tFROM\twcf" . WCF_N . "_user\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDs) . ")\n\t\t\t\t\tAND activationCode <> 0"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { if (!isset($languages[$row['languageID']])) { $languages[$row['languageID']] = new Language($row['languageID']); } $mail = new Mail(array($row['username'] => $row['email']), $languages[$row['languageID']]->get('wcf.acp.user.activation.mail.subject', array('PAGE_TITLE' => $languages[$row['languageID']]->get(PAGE_TITLE))), $languages[$row['languageID']]->get('wcf.acp.user.activation.mail', array('PAGE_TITLE' => $languages[$row['languageID']]->get(PAGE_TITLE), '$username' => $row['username'], 'PAGE_URL' => PAGE_URL, 'MAIL_ADMIN_ADDRESS' => MAIL_ADMIN_ADDRESS))); $mail->send(); } // update groups $sql = "DELETE FROM\twcf" . WCF_N . "_user_to_groups\n\t\t\t\tWHERE\t\tuserID IN (" . implode(',', $this->userIDs) . ")\n\t\t\t\t\t\tAND groupID = " . Group::getGroupIdByType(Group::GUESTS); WCF::getDB()->sendQuery($sql); $sql = "INSERT IGNORE INTO\twcf" . WCF_N . "_user_to_groups\n\t\t\t\t\t\t\t(userID, groupID)\n\t\t\t\tVALUES\t\t\t(" . implode(', ' . Group::getGroupIdByType(Group::USERS) . '),(', $this->userIDs) . ", '" . Group::getGroupIdByType(Group::USERS) . "')"; WCF::getDB()->sendQuery($sql); // update user $sql = "UPDATE\twcf" . WCF_N . "_user\n\t\t\t\tSET\tactivationCode = 0\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDs) . ")"; WCF::getDB()->sendQuery($sql); // unmark users UserEditor::unmarkAll(); // reset sessions Session::resetSessions($this->userIDs); } $this->executed(); if (!empty($this->url)) { HeaderUtil::redirect($this->url); } else { // set active menu item WCFACP::getMenu()->setActiveMenuItem('wcf.acp.menu.link.user.management'); // show succes message WCF::getTPL()->assign('message', 'wcf.acp.user.enable.success'); WCF::getTPL()->display('success'); } exit; }
/** * @see Form::save() */ public function save() { parent::save(); $sql = "SELECT\t\tuser.*,\n\t\t\t\t\tGROUP_CONCAT(groupID SEPARATOR ',') AS groupIDs\n\t\t\tFROM\t\twcf" . WCF_N . "_user user\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_to_groups groups\n\t\t\tON\t\t(groups.userID = user.userID)\n\t\t\tWHERE\t\tuser.userID IN (" . $this->userIDs . ")\n\t\t\tGROUP BY\tuser.userID"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { if (!Group::isAccessibleGroup(explode(',', $row['groupIDs']))) { throw new PermissionDeniedException(); } $user = new UserEditor(null, $row); $user->addToGroups($this->groupIDs, false, false); } UserEditor::unmarkAll(); Session::resetSessions(explode(',', $this->userIDs)); $this->saved(); WCF::getTPL()->assign('message', 'wcf.acp.user.assignToGroup.success'); WCF::getTPL()->display('success'); exit; }
/** * @see Action::execute() */ public function execute() { parent::execute(); // check permission WCF::getUser()->checkPermission('admin.user.canMailUser'); // sql condition $condition = ''; if ($this->userMailData['action'] == '') { $condition = "WHERE user.userID IN (" . $this->userMailData['userIDs'] . ")"; } if ($this->userMailData['action'] == 'group') { $condition = "WHERE user.userID IN (SELECT userID FROM wcf" . WCF_N . "_user_to_groups WHERE groupID IN (" . $this->userMailData['groupIDs'] . "))"; } // count users $sql = "SELECT\tCOUNT(*) AS count\n\t\t\tFROM\twcf" . WCF_N . "_user user\n\t\t\t" . $condition; $row = WCF::getDB()->getFirstRow($sql); $count = $row['count']; if ($count <= $this->limit * $this->loop) { // unmark users UserEditor::unmarkAll(); // clear session $userMailData = WCF::getSession()->getVar('userMailData'); unset($userMailData[$this->mailID]); WCF::getSession()->register('userMailData', $userMailData); $this->calcProgress(); $this->finish(); } // get users $sql = "SELECT\t\tuser_option.*, user.*\n\t\t\tFROM\t\twcf" . WCF_N . "_user user\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_user_option_value user_option\n\t\t\tON\t\t(user_option.userID = user.userID)\n\t\t\t" . $condition . "\n\t\t\tORDER BY\tuser.userID"; $result = WCF::getDB()->sendQuery($sql, $this->limit, $this->limit * $this->loop); while ($row = WCF::getDB()->fetchArray($result)) { $user = new User(null, $row); $adminCanMail = $user->adminCanMail; if ($adminCanMail === null || $adminCanMail == 1) { $this->sendMail($user); } } $this->executed(); $this->calcProgress($this->limit * $this->loop, $count); $this->nextLoop('wcf.acp.worker.progress.working', 'index.php?action=' . $this->action . '&mailID=' . $this->mailID . '&limit=' . $this->limit . '&loop=' . ($this->loop + 1) . '&packageID=' . PACKAGE_ID . SID_ARG_2ND_NOT_ENCODED); }
/** * @see Action::execute() */ public function execute() { AbstractAction::execute(); // check permission WCF::getUser()->checkPermission('admin.user.canEnableUser'); if (count($this->userIDs) > 0) { // check permission $sql = "SELECT\tDISTINCT groupID\n\t\t\t\tFROM\twcf" . WCF_N . "_user_to_groups\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDs) . ")"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { if (!Group::isAccessibleGroup($row['groupID'])) { throw new PermissionDeniedException(); } } // update groups $sql = "DELETE FROM\twcf" . WCF_N . "_user_to_groups\n\t\t\t\tWHERE\t\tuserID IN (" . implode(',', $this->userIDs) . ")\n\t\t\t\t\t\tAND groupID <> " . Group::getGroupIdByType(Group::EVERYONE); WCF::getDB()->sendQuery($sql); $sql = "INSERT IGNORE INTO\twcf" . WCF_N . "_user_to_groups\n\t\t\t\t\t\t\t(userID, groupID)\n\t\t\t\tVALUES\t\t\t(" . implode(', ' . Group::getGroupIdByType(Group::GUESTS) . '),(', $this->userIDs) . ", '" . Group::getGroupIdByType(Group::GUESTS) . "')"; WCF::getDB()->sendQuery($sql); // update activation code foreach ($this->userIDs as $userID) { $sql = "UPDATE\twcf" . WCF_N . "_user\n\t\t\t\t\tSET\tactivationCode = " . UserRegistrationUtil::getActivationCode() . "\n\t\t\t\t\tWHERE\tuserID = " . $userID; WCF::getDB()->sendQuery($sql); } // unmark users UserEditor::unmarkAll(); // reset sessions Session::resetSessions($this->userIDs); } $this->executed(); if (!empty($this->url)) { HeaderUtil::redirect($this->url); } else { // set active menu item WCFACP::getMenu()->setActiveMenuItem('wcf.acp.menu.link.user.management'); // show succes message WCF::getTPL()->assign('message', 'wcf.acp.user.disable.success'); WCF::getTPL()->display('success'); } exit; }
/** * @see Action::execute() */ public function execute() { parent::execute(); // check permission WCF::getUser()->checkPermission('admin.user.canEnableUser'); // get user ids $userIDs = WCF::getSession()->getVar('markedUsers'); if (!is_array($userIDs)) { $userIDs = array(); } if (count($userIDs) > 0) { // check permission $sql = "SELECT\tDISTINCT groupID\n\t\t\t\tFROM\twcf" . WCF_N . "_user_to_groups\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $userIDs) . ")"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { if (!Group::isAccessibleGroup($row['groupID'])) { throw new PermissionDeniedException(); } } // save config in session $userMailData = WCF::getSession()->getVar('userMailData'); if ($userMailData === null) { $userMailData = array(); } $mailID = count($userMailData); $userMailData[$mailID] = array('action' => '', 'userIDs' => implode(',', $userIDs)); WCF::getSession()->register('userMailData', $userMailData); // unmark users UserEditor::unmarkAll(); $this->executed(); // show worker template WCF::getTPL()->assign(array('pageTitle' => WCF::getLanguage()->get('wcf.acp.user.sendActivationMail'), 'url' => 'index.php?action=UserActivationMail&mailID=' . $mailID . '&packageID=' . PACKAGE_ID . SID_ARG_2ND_NOT_ENCODED)); WCF::getTPL()->display('worker'); exit; } else { $this->executed(); } HeaderUtil::redirect('index.php?form=UserSearch&packageID=' . PACKAGE_ID . SID_ARG_2ND_NOT_ENCODED); exit; }
/** * @see Form::save() */ public function save() { parent::save(); // merge $userIDs = $this->userIDs; $key = array_search($this->userID, $userIDs); unset($userIDs[$key]); $userIDsString = implode(',', $userIDs); // board $sql = "UPDATE IGNORE\twbb" . WBB_N . "_board_closed_category_to_user\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twbb" . WBB_N . "_board_closed_category_to_admin\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE\twbb" . WBB_N . "_board_moderator\n\t\t\tSET\tuserID = " . $this->userID . "\n\t\t\tWHERE\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twbb" . WBB_N . "_board_subscription\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twbb" . WBB_N . "_board_to_user\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twbb" . WBB_N . "_board_visit\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // posts $sql = "UPDATE\twbb" . WBB_N . "_post\n\t\t\tSET\tuserID = " . $this->userID . "\n\t\t\tWHERE\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE\twbb" . WBB_N . "_post_report\n\t\t\tSET\tuserID = " . $this->userID . "\n\t\t\tWHERE\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // thread $sql = "UPDATE\twbb" . WBB_N . "_thread\n\t\t\tSET\tuserID = " . $this->userID . "\n\t\t\tWHERE\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twbb" . WBB_N . "_thread_rating\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twbb" . WBB_N . "_thread_subscription\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twbb" . WBB_N . "_thread_visit\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // attachment $sql = "UPDATE\twcf" . WCF_N . "_attachment\n\t\t\tSET\tuserID = " . $this->userID . "\n\t\t\tWHERE\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // groups $sql = "UPDATE IGNORE\twcf" . WCF_N . "_group_application\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twcf" . WCF_N . "_group_leader\n\t\t\tSET\t\tleaderUserID = " . $this->userID . "\n\t\t\tWHERE\t\tleaderUserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twcf" . WCF_N . "_user_to_groups\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // pm $sql = "UPDATE\twcf" . WCF_N . "_pm\n\t\t\tSET\tuserID = " . $this->userID . "\n\t\t\tWHERE\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE\twcf" . WCF_N . "_pm_folder\n\t\t\tSET\tuserID = " . $this->userID . "\n\t\t\tWHERE\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twcf" . WCF_N . "_pm_to_user\n\t\t\tSET\t\trecipientID = " . $this->userID . "\n\t\t\tWHERE\t\trecipientID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // poll $sql = "UPDATE IGNORE\twcf" . WCF_N . "_poll_option_vote\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twcf" . WCF_N . "_poll_vote\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // blacklist / whitelist $sql = "UPDATE IGNORE\twcf" . WCF_N . "_user_blacklist\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twcf" . WCF_N . "_user_blacklist\n\t\t\tSET\t\tblackUserID = " . $this->userID . "\n\t\t\tWHERE\t\tblackUserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twcf" . WCF_N . "_user_whitelist\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); $sql = "UPDATE IGNORE\twcf" . WCF_N . "_user_whitelist\n\t\t\tSET\t\twhiteUserID = " . $this->userID . "\n\t\t\tWHERE\t\twhiteUserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // languages $sql = "UPDATE IGNORE\twcf" . WCF_N . "_user_to_languages\n\t\t\tSET\t\tuserID = " . $this->userID . "\n\t\t\tWHERE\t\tuserID IN (" . $userIDsString . ")"; WCF::getDB()->sendQuery($sql); // delete users UserEditor::deleteUsers($userIDs); // unmark users UserEditor::unmarkAll(); $this->saved(); // show succes message WCF::getTPL()->assign('message', 'wbb.acp.user.merge.success'); WCF::getTPL()->display('success'); exit; }
/** * @see Form::save() */ public function save() { parent::save(); // active user can't ban himself $this->userIDArray = array_diff($this->userIDArray, array(WCF::getUser()->userID)); if (count($this->userIDArray) > 0) { // check permission $sql = "SELECT\tDISTINCT groupID\n\t\t\t\tFROM\twcf" . WCF_N . "_user_to_groups\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDArray) . ")"; $result = WCF::getDB()->sendQuery($sql); while ($row = WCF::getDB()->fetchArray($result)) { if (!Group::isAccessibleGroup($row['groupID'])) { throw new PermissionDeniedException(); } } // get adminCanMail user option id $adminCanMailID = User::getUserOptionID('adminCanMail'); // update user $sql = "UPDATE\twcf" . WCF_N . "_user\n\t\t\t\tSET\tbanned = 1,\n\t\t\t\t\tbanReason = '" . escapeString($this->reason) . "'\n\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDArray) . ")"; WCF::getDB()->sendQuery($sql); // update user options if ($adminCanMailID !== null) { $sql = "UPDATE\twcf" . WCF_N . "_user_option_value\n\t\t\t\t\tSET\tuserOption" . $adminCanMailID . " = 0\n\t\t\t\t\tWHERE\tuserID IN (" . implode(',', $this->userIDArray) . ")"; WCF::getDB()->sendQuery($sql); } // unmark users UserEditor::unmarkAll(); // reset sessions Session::resetSessions($this->userIDArray); } $this->saved(); // forward if (empty($this->url)) { $this->url = 'index.php?form=UserSearch&packageID=' . PACKAGE_ID . SID_ARG_2ND_NOT_ENCODED; } HeaderUtil::redirect($this->url); exit; }
/** * Unmarks all marked users. */ public static function unmarkAll() { UserEditor::unmarkAll(); }