Example #1
0
 /**
  * Reset the user's password
  * 
  * @param string $link The encoded link
  * @return bool
  */
 public static function resetPassword($link)
 {
     $json = new Services_JSON();
     $criteria = (array) $json->decode(urldecode(base64_decode($link)));
     if (!isset($criteria['username']) || null == $criteria['username'] || !isset($criteria['email']) || null == $criteria['email'] || !isset($criteria['code']) || null == $criteria['code']) {
         return false;
     }
     $users = Modules_Core_Services_User::find($criteria, null, null);
     if ($users == null || count($users) == 0) {
         return false;
     }
     /**
      * Send the confirmation link to reset password via email 
      */
     $user = $users[0];
     /**
      * Reset the password
      */
     $password = self::generatePassword();
     $passwordEncrypt = self::encryptPassword($password, $user['salt']);
     self::updatePasswordFor($user['username'], $passwordEncrypt);
     $template = Modules_Mail_Services_Template::getByName(Modules_Mail_Models_Template::TEMPLATE_NEW_PASSWORD);
     if ($template == null) {
         return;
     }
     $view = Gio_Core_View::getInstance();
     $search = array(Modules_Mail_Models_Mail::MAIL_VARIABLE_EMAIL, Modules_Mail_Models_Mail::MAIL_VARIABLE_USERNAME);
     $replace = array($user['email'], $user['username']);
     $subject = str_replace($search, $replace, $template['subject']);
     $content = str_replace($search, $replace, $template['body']);
     $content = str_replace('%new_password%', $password, $content);
     $content = str_replace('%link%', $view->url('core_auth_login'), $content);
     /**
      * Get mail transport instance
      */
     $mailer = Modules_Mail_Services_Mailer::getMailTransport();
     $mailer->From = $template['from_mail'];
     $mailer->FromName = $template['from_name'];
     $mailer->AddAddress($user['email'], $user['username']);
     $mailer->AddReplyTo($template['reply_to_mail'], $template['reply_to_name']);
     $mailer->WordWrap = 50;
     // set word wrap
     $mailer->IsHTML(true);
     // send as HTML
     $mailer->Subject = $subject;
     $mailer->Body = $content;
     //HTML Body
     $mailer->AltBody = "";
     //Text Body
     if (!$mailer->Send()) {
         return false;
     } else {
         return true;
     }
 }
Example #2
0
 public function listAction()
 {
     $request = $this->getRequest();
     $perPage = 20;
     $pageIndex = (int) $request->getParam('page_index');
     if (null == $pageIndex || '' == $pageIndex || $pageIndex < 0) {
         $pageIndex = 1;
     }
     $start = ($pageIndex - 1) * $perPage;
     $this->view->pageIndex = $pageIndex;
     $condition = array('status' => 'active', 'search_form' => false);
     $json = new Services_JSON();
     if ($request->isPost()) {
         $condition = $request->getPost('condition');
         $condition['search_form'] = true;
         $params = rawurlencode(base64_encode($json->encodeUnsafe($condition)));
     } else {
         $params = $request->getParam('q');
         $params != null ? $condition = (array) $json->decode(rawurldecode(base64_decode($params))) : ($params = rawurlencode(base64_encode($json->encodeUnsafe($condition))));
     }
     $params = empty($condition) ? null : $params;
     $this->view->condition = $condition;
     $users = Modules_Core_Services_User::find($condition, $start, $perPage);
     $numUsers = Modules_Core_Services_User::count($condition);
     $this->view->users = $users;
     $roles = Modules_Core_Services_Role::getAllRoles();
     $this->view->roles = $roles;
     // Pager
     require_once LIB_DIR . DS . 'PEAR' . DS . 'Pager' . DS . 'Sliding.php';
     $pagerPath = $this->view->url('core_user_list');
     $pagerOptions = array('mode' => 'Sliding', 'append' => false, 'perPage' => $perPage, 'delta' => 5, 'urlVar' => 'page', 'path' => $pagerPath, 'fileName' => null == $params ? 'page-%d' : 'page-%d/?q=' . $params, 'separator' => '', 'nextImg' => '<small class="icon arrow_right"></small>', 'prevImg' => '<small class="icon arrow_left"></small>', 'altNext' => '', 'altPrev' => '', 'altPage' => '', 'totalItems' => $numUsers, 'currentPage' => $pageIndex, 'urlSeparator' => '/', 'spacesBeforeSeparator' => 0, 'spacesAfterSeparator' => 0, 'curPageSpanPre' => '<a href="javascript: void();" class="current">', 'curPageSpanPost' => '</a>');
     $pager = new Pager_Sliding($pagerOptions);
     $this->view->pager = $pager;
 }