/** * Sends the mail to given user. * * @param User $user */ protected function sendMail(User $user) { // generate new password $password = substr(StringUtil::getRandomID(), 0, 10); // save $editor = $user->getEditor(); $editor->update('', '', $password); // send mail if (!isset($this->languages[$user->languageID])) { $this->languages[$user->languageID] = new Language($user->languageID); } $mail = new Mail(array($user->username => $user->email), $this->languages[$user->languageID]->get('wcf.acp.user.newPassword.mail.subject', array('PAGE_TITLE' => $this->languages[$user->languageID]->get(PAGE_TITLE))), $this->languages[$user->languageID]->get('wcf.acp.user.newPassword.mail', array('PAGE_TITLE' => $this->languages[$user->languageID]->get(PAGE_TITLE), '$username' => $user->username, '$password' => $password, 'PAGE_URL' => PAGE_URL, 'MAIL_ADMIN_ADDRESS' => MAIL_ADMIN_ADDRESS))); $mail->send(); }
/** * @see Action::execute() */ public function execute() { parent::execute(); //validates the given token to avoid misusing $sql = 'SELECT COUNT(token) AS count FROM wcf' . WCF_N . '_' . $this->unsubscriptionTable . ' WHERE subscriberID = ' . $this->subscriberID . "\n \t\t\tAND token = '" . escapeString($this->token) . "'"; $row = WCF::getDB()->getFirstRow($sql); if ($row['count'] != 1) { $message = WCF::getLanguage()->get('wcf.acp.newsletter.optin.invalidToken'); throw new NamedUserException($message); } $subscriber = new NewsletterSubscriber($this->subscriberID); if ($subscriber->userID != 0) { $user = new User($subscriber->userID); $editor = $user->getEditor(); $options = array('acceptNewsletter' => 0); $editor->updateOptions($options); } //delete subscriber related entries $sql = 'DELETE FROM wcf' . WCF_N . '_' . $this->unsubscriptionTable . ' WHERE subscriberID = ' . $this->subscriberID . "\n \t\t\tAND token = '" . escapeString($this->token) . "'"; WCF::getDB()->sendQuery($sql); $sql = 'DELETE FROM wcf' . WCF_N . '_' . $this->activationTable . ' WHERE userID = ' . intval($subscriber->userID); WCF::getDB()->sendQuery($sql); $sql = 'DELETE FROM wcf' . WCF_N . '_' . $this->guestActivationTable . ' WHERE subscriberID = ' . $this->subscriberID; WCF::getDB()->sendQuery($sql); unset($subscriber); $sql = 'DELETE FROM wcf' . WCF_N . '_' . $this->subscriberTable . ' WHERE subscriberID = ' . $this->subscriberID; WCF::getDB()->sendQuery($sql); $this->executed(); WCF::getTPL()->assign(array('message' => WCF::getLanguage()->get('wcf.acp.newsletter.unsubscription.success'), 'url' => PAGE_URL . '/index.php?page=Index' . SID_ARG_2ND)); WCF::getTPL()->display('redirect'); exit; }