Admin
[ class tree: Admin ] [ index: Admin ] [ all elements ]

Source for file User.php

Documentation is available at User.php

  1. <?php
  2. /**
  3. * DotBoost Technologies Inc.
  4. * DotKernel Application Framework
  5. *
  6. @category   DotKernel
  7. @package    Admin
  8. @copyright  Copyright (c) 2009 DotBoost  Technologies (http://www.dotboost.com)
  9. @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  10. @version    $Id: User.php 158 2010-06-25 08:59:20Z teo $
  11. */
  12.  
  13. /**
  14. * User Model
  15. * Here are all the actions related to the user
  16. @category   DotKernel
  17. @package    Admin
  18. @author     DotKernel Team <team@dotkernel.com>
  19. */
  20. class User
  21. {
  22.     /**
  23.      * Constructor
  24.      * @access public
  25.      */
  26.     public function __construct()
  27.     {
  28.         $this->db Zend_Registry::get('database');                
  29.         $this->option Zend_Registry::get('option');    
  30.         $this->settings Zend_Registry::get('settings');            
  31.         $seo new Dot_Seo();
  32.         $this->seoOption $seo->getOption();    
  33.     }    
  34.     /**
  35.      * Get user by field
  36.      * @access public
  37.      * @param string $field 
  38.      * @param string $value 
  39.      * @return array 
  40.      */
  41.     public function getUserBy($field ''$value '')
  42.     {    
  43.         $select $this->db->select()
  44.                        ->from('user')
  45.                        ->where($field.' = ?'$value)
  46.                        ->limit(1);    
  47.         $result $this->db->fetchRow($select);
  48.         return $result;
  49.     }        
  50.     /**
  51.      * Get user list
  52.      * @access public
  53.      * @param int $page [optional]
  54.      * @return array(array(), Zend_Paginator_Adapter())
  55.      */
  56.     public function getUserList($page 1)
  57.     {
  58.         $select $this->db->select()
  59.                            ->from('user');                
  60.          $paginatorAdapter new Zend_Paginator_Adapter_DbSelect($select);
  61.         ($page == 1
  62.             $select->limit($this->settings->resultsPerPage
  63.             $select->limit($this->settings->resultsPerPage($page-1)*$this->settings->resultsPerPage);
  64.                             
  65.         $data $this->db->fetchAll($select);
  66.         return array('data'=> $data,'paginatorAdapter'=> $paginatorAdapter);
  67.     }    
  68.     /**
  69.      * Add new user
  70.      * @access public
  71.      * @param array $data 
  72.      * @return void 
  73.      */
  74.     public function addUser($data)
  75.     {        
  76.         // if you want to add an inactive user, un-comment the below line, default: isActive = 1
  77.         // $data['isActive'] = 0;
  78.         $this->db->insert('user'$data);        
  79.     }
  80.     /**
  81.      * Update user
  82.      * @access public
  83.      * @param array $data 
  84.      * @return void 
  85.      */
  86.     public function updateUser($data)
  87.     {
  88.         $id $data['id'];
  89.         unset ($data['id']);
  90.         $this->db->update('user'$data'id = '.$id);
  91.     }    
  92.     /**
  93.      * Delete user
  94.      * @param int $id 
  95.      * @return void 
  96.      */
  97.     public function deleteUser($id)
  98.     {
  99.         $this->db->delete('user''id = ' $id);
  100.     }    
  101.     /**
  102.      * Send forgot password to user
  103.      * @access public
  104.      * @param int id
  105.      * @return void 
  106.      */
  107.     public function sendPassword($id)
  108.     {
  109.         $session Zend_Registry::get('session');
  110.         $value $this->getUserBy('id'$id);
  111.         if(!empty($value))
  112.         {
  113.             $dotEmail new Dot_Email();
  114.             $dotEmail->addTo($value['email']);
  115.             $dotEmail->setSubject($this->seoOption->siteName ' - ' $this->option->forgotPassword->subject);
  116.             $msg str_replace(array('%FIRSTNAME%''%PASSWORD%')
  117.                                array($value['firstName']$value['password'])
  118.                               $this->option->forgotPassword->message);
  119.             $dotEmail->setBodyText($msg);        
  120.             $succeed $dotEmail->send();
  121.             if($succeed)
  122.             {
  123.                 $session->message['txt'$this->option->infoMessage->emailSent.$value['email'];
  124.                 $session->message['type''info';
  125.             }
  126.             else
  127.             {
  128.                 $session->message['txt'$this->option->errorMessage->emailNotSent.$value['email'];
  129.                 $session->message['type''error';
  130.             }        
  131.         }
  132.         else
  133.         {
  134.             $session->message['txt'$value['email'].$this->option->infoMessage->emailNotFound;
  135.             $session->message['type''info';
  136.         }        
  137.     }
  138.     /**
  139.      * Validate user input, add or update form
  140.      * $values is an array on multiple levels. On first level, the key suggest what validation will be done.
  141.      * - details     - only filter the input
  142.      * - username    - validate with Zend_Validate_Alnum, Zend_Validate_StringLength and filter the input
  143.      * - email        - validate with Zend_Validate_EmailAddress and filter the input
  144.      * - enum         - validate with Zend_Validate_InArray(explode(',', $values['enum'][0])) and filter the input
  145.      * - password    - validate with Zend_Validate_StringLength and filter the input
  146.      * @access public
  147.      * @param array $values 
  148.      * @return array 
  149.      */
  150.     public function validateUser($values)
  151.     {
  152.         $data array();
  153.         $error array();
  154.         //validate the input data - username, password and email will be also filtered
  155.         $validatorChain new Zend_Validate();
  156.         //validate details parameters    
  157.         if(array_key_exists('details'$values))
  158.         {
  159.             $validDetails Dot_Kernel::validateFilter($validatorChain$values['details']);
  160.             $data array_merge($data$validDetails['data']);
  161.             $error array_merge($error$validDetails['error']);
  162.         }        
  163.         //validate username
  164.         if(array_key_exists('username'$values))
  165.         {
  166.             $validatorChain new Zend_Validate();
  167.             $validatorChain->addValidator(new Zend_Validate_Alnum())
  168.                            ->addValidator(new Zend_Validate_StringLength(
  169.                                                     $this->option->validate->details->lengthMin
  170.                                                     $this->option->validate->details->lengthMax
  171.                                                 ));
  172.             $validUsername Dot_Kernel::validateFilter($validatorChain$values['username']);
  173.             $data array_merge($data$validUsername['data']);
  174.             $error array_merge($error$validUsername['error']);
  175.         }
  176.         //validate email
  177.         if(array_key_exists('email'$values))
  178.         {
  179.             $validatorEmail new Zend_Validate_EmailAddress();        
  180.             $validEmail Dot_Kernel::validateFilter($validatorEmail$values['email']);
  181.             $data array_merge($data$validEmail['data']);
  182.             $error array_merge($error$validEmail['error']);
  183.         }            
  184.         //validate enum
  185.         if(array_key_exists('enum'$values))
  186.         {
  187.             $validatorEnum new Zend_Validate_InArray(explode(','$values['enum'][0]));
  188.             unset($values['enum'][0]);
  189.             $validEnum Dot_Kernel::validateFilter($validatorEnum$values['enum']);
  190.             $data array_merge($data$validEnum['data']);
  191.             $error array_merge($error$validEnum['error']);
  192.         }        
  193.         //validate password                
  194.         if(array_key_exists('password'$values&& ($values['password']['password'!= '' || $values['password']['password2'!= ''))
  195.         {            
  196.             if($values['password']['password'== $values['password']['password2'])
  197.             {
  198.                 unset($values['password']['password2']);
  199.                 $validatorChain new Zend_Validate();
  200.                 $validatorChain->addValidator(new Zend_Validate_StringLength(
  201.                                                 $this->option->validate->password->lengthMin
  202.                                                 $this->option->validate->password->lengthMax
  203.                                             ));            
  204.                 $validPass Dot_Kernel::validateFilter($validatorChain$values['password']);
  205.                 $data array_merge($data$validPass['data']);
  206.                 $error array_merge($error$validPass['error']);    
  207.             }
  208.             else
  209.             {
  210.                 $error['password'$this->option->errorMessage->passwordTwice;
  211.             }
  212.         }
  213.         return array('data' => $data'error' => $error);
  214.     }
  215.     /**
  216.      * Activate/Inactivate user account
  217.      * @param int $id - user ID
  218.      * @param int $isActive 
  219.      * @return void 
  220.      */
  221.     public function activateUser($id$isActive)
  222.     {        
  223.         $this->db->update('user'array('isActive' => $isActive)'id = '.$id);
  224.     }
  225.     /**
  226.      * Get admin users logins archive list
  227.      * @access public
  228.      * @param int $id 
  229.      * @param int $page [optional]
  230.      * @return array(array(), Zend_Paginator_Adapter())
  231.      */
  232.     public function getLogins($id$page 1)
  233.     {
  234.         $select $this->db->select()
  235.                              ->from('userLogin');
  236.         if ($id 0
  237.         {
  238.             $select->where('userId = ?'$id);
  239.         }
  240.         $select->order('dateLogin DESC');
  241.          $paginatorAdapter new Zend_Paginator_Adapter_DbSelect($select);
  242.         ($page == 1
  243.             $select->limit($this->settings->resultsPerPage
  244.             $select->limit($this->settings->resultsPerPage($page-1)*$this->settings->resultsPerPage);
  245.                             
  246.         $data $this->db->fetchAll($select);
  247.         return array('data'=> $data,'paginatorAdapter'=> $paginatorAdapter);
  248.     }    
  249. }

Documentation generated on Wed, 21 Jul 2010 07:34:46 +0000 by phpDocumentor 1.4.3