/** * Send user account activation code. * * @access public * @param string $sPassword * @param UserModel $oUser * @return bool * @throws \Plethora\Exception * @throws \Plethora\Exception\Fatal * @since 1.0.0 * @version 2.1.0-dev */ private function sendActivationCode($sPassword, UserModel $oUser) { $sUserAgent = filter_input(INPUT_SERVER, 'HTTP_USER_AGENT'); $sActivationCode1 = mb_strlen($sPassword) * time() . $sUserAgent . $oUser->getLogin(); $sActivationCode2 = sha1($sActivationCode1); $sActivationCode = base64_encode($sActivationCode2); $oActivationCode = new ActivationCodeModel(); $oActivationCode->setUser($oUser); $oActivationCode->setCode($sActivationCode); DB::persist($oActivationCode); DB::flush(); $sSubject = __(':appname - Activation link', ['appname' => Plethora\Core::getAppName()]); $mailContent = View::factory("user/frontend/register/message")->render(['sLogin' => $oUser->getLogin(), 'sActivationCode' => $sActivationCode]); $mailView = View::factory('base/email'); $mailView->bind('sContent', $mailContent); $mailView->set('sTitle', $sSubject); $mail = $mailView->render(); $oMessage = new Mail(); $oMessage->setSubject($sSubject); $oMessage->setFrom(Config::get('base.email')); $oMessage->setTo($oUser->getEmail()); $oMessage->setBody($mail, 'text/html'); return Mailer::factory()->send($oMessage); }
/** * Send user account recovery code. * * @access public * @param User $oUser * @since 1.0.0, 2015-02-17 * @version 2.1.0-dev * @return bool */ private function sendRecoveryCode(User $oUser) { $sUserAgent = filter_input(INPUT_SERVER, 'HTTP_USER_AGENT'); $sCodeToEncode = mb_strlen(uniqid()) * time() . $sUserAgent . $oUser->getLogin(); $sCode2 = sha1($sCodeToEncode); $sRecoveryCode = base64_encode($sCode2); DB::query('DELETE FROM \\Model\\User\\RecoveryCode r WHERE r.user = :user')->param('user', $oUser->getId())->execute(TRUE); $oRecoveryCode = new User\RecoveryCode(); $oRecoveryCode->setUser($oUser); $oRecoveryCode->setCode($sRecoveryCode); DB::persist($oRecoveryCode); DB::flush(); $sSubject = __('Account activation on :app', ['app' => Core::getAppName()]); $mailContent = View::factory("user/frontend/recovery/message")->render(['sLogin' => $oUser->getLogin(), 'sRecoveryCode' => $sRecoveryCode]); $mailView = View::factory('base/email'); $mailView->bind('sContent', $mailContent); $mailView->set('sTitle', $sSubject); return $oUser->sendEmail($sSubject, $mailView->render()); }
/** * Persist all data of this Model to database. * * @access public * @return boolean * @since 1.0.0-alpha * @version 1.0.0-alpha */ public function save() { if (static::hasLocales()) { foreach ($this->getLocales('all') as $locale) { /* @var $locale ModelCore\Locales */ DB::persist($locale); } } DB::persist($this); return TRUE; }