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

Source for file Admin.php

Documentation is available at Admin.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: Admin.php 158 2010-06-25 08:59:20Z teo $
  11. */
  12.  
  13. /**
  14. * Admin 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.  
  21. class Admin
  22. {    
  23.     /**
  24.      * Constructor
  25.      * @access public
  26.      */
  27.     public function __construct()
  28.     {        
  29.         $this->db Zend_Registry::get('database');
  30.         $this->config Zend_Registry::get('configuration');
  31.         $this->settings Zend_Registry::get('settings');
  32.         $this->option Zend_Registry::get('option');        
  33.     }
  34.     /**
  35.      * Check to see if user can login
  36.      * @access public
  37.      * @param array $data 
  38.      * @return array 
  39.      */
  40.     public function checkLogin($data)
  41.     {
  42.         $password md5($data['username'].$this->config->settings->admin->salt.$data['password']);
  43.         $select $this->db->select()
  44.                            ->from('admin')
  45.                            ->where('isActive = ?','1')
  46.                            ->where('username = ?'$data['username'])
  47.                            ->where('password = ?'$password);
  48.                            
  49.         $results $this->db->fetchAll($select);    
  50.         if== count($results))
  51.         {
  52.             return $results;
  53.         }
  54.         else
  55.         {
  56.             return array();
  57.         }
  58.     }
  59.         
  60.     /**
  61.      * Get admin by field
  62.      * @access public
  63.      * @param string $field 
  64.      * @param string $value 
  65.      * @return array 
  66.      */
  67.     public function getUserBy($field ''$value '')
  68.     {        
  69.         $select $this->db->select()
  70.                        ->from('admin')
  71.                        ->where($field.' = ?'$value)
  72.                        ->limit(1);                       
  73.         $result $this->db->fetchRow($select);
  74.         return $result;
  75.     }
  76.     /**
  77.      * Get user list
  78.      * @access public
  79.      * @param int $page [optional]
  80.      * @return array(array(), Zend_Paginator_Adapter())
  81.      */
  82.     public function getUserList($page 1)
  83.     {
  84.         $select $this->db->select()
  85.                            ->from('admin');                
  86.          $paginatorAdapter new Zend_Paginator_Adapter_DbSelect($select);
  87.         ($page == 1
  88.             $select->limit($this->settings->resultsPerPage
  89.             $select->limit($this->settings->resultsPerPage($page-1)*$this->settings->resultsPerPage);
  90.                             
  91.         $data $this->db->fetchAll($select);
  92.         return array('data'=> $data,'paginatorAdapter'=> $paginatorAdapter);
  93.     }
  94.     /**
  95.      * Add new user
  96.      * @access public
  97.      * @param array $data 
  98.      * @return void 
  99.      */
  100.     public function addUser($data)
  101.     {        
  102.         // if you want to add an inactive user, un-comment the below line, default: isActive = 1
  103.         // $data['isActive'] = 0;
  104.         $data['password'md5($data['username'].$this->config->settings->admin->salt.$data['password']);
  105.         $this->db->insert('admin'$data);        
  106.     }    
  107.     /**
  108.      * Update user
  109.      * @access public
  110.      * @param array $data 
  111.      * @return void 
  112.      */
  113.     public function updateUser($data)
  114.     {
  115.         $id $data['id'];
  116.         unset ($data['id']);
  117.         if(array_key_exists('password'$data))
  118.         {
  119.             $user $this->getUserBy('id'$id);
  120.             $data['password'md5($user['username'].$this->config->settings->admin->salt.$data['password']);
  121.         }
  122.         $this->db->update('admin'$data'id = ' $id);
  123.     }    
  124.     /**
  125.      * Delete admin user
  126.      * @access public
  127.      * @param int $id 
  128.      * @return void 
  129.      */
  130.     public function deleteUser($id)
  131.     {
  132.         $this->db->delete('admin''id = ' $id);
  133.     }
  134.     /**
  135.      * Validate the data that comes from login form
  136.      * @access public
  137.      * @param string $username 
  138.      * @param string $password 
  139.      * @param string $send [optional] which is a control key
  140.      * @return bool 
  141.      */
  142.     public function validateLogin($username$password$send 'off')
  143.     {
  144.         $login array();
  145.         $error array()
  146.         if ($send =='on')
  147.         {
  148.             $validatorUsername new Zend_Validate();
  149.             $validatorUsername->addValidator(new Zend_Validate_StringLength(
  150.                                                 $this->option->validate->username->lengthMin
  151.                                                 $this->option->validate->username->lengthMax
  152.                                             ))   
  153.                               ->addValidator(new Zend_Validate_Alnum());
  154.             if ($validatorUsername->isValid($username))
  155.             {
  156.                 $login['username'$username;
  157.             }
  158.             else
  159.             {
  160.                 $error['username'$this->option->errorMessage->invalidUsername;
  161.                 $login['username''';
  162.             }
  163.  
  164.             $validatorPassword new Zend_Validate();
  165.             $validatorPassword->addValidator(new Zend_Validate_StringLength(
  166.                                                 $this->option->validate->password->lengthMin
  167.                                                 $this->option->validate->password->lengthMax
  168.                                             ));
  169.             if ($validatorPassword->isValid($password))
  170.             {
  171.                 $login['password'$password;
  172.             }
  173.             else
  174.             {
  175.                 $error['password'$this->option->errorMessage->invalidPassword;
  176.                 $login['password''';
  177.             }            
  178.         }
  179.         return array('login'=>$login'error'=>$error);
  180.     }
  181.     /**
  182.      * Validate user input, add or update form
  183.      * @access public
  184.      * @param public 
  185.      * @return array 
  186.      */
  187.     public function validateUser($values)
  188.     {
  189.         $data array();
  190.         $error array();
  191.         //validate the input data - username, password and email will be also filtered
  192.         $validatorChain new Zend_Validate();
  193.         //validate details parameters    
  194.         if(array_key_exists('details'$values))
  195.         {
  196.             $validDetails Dot_Kernel::validateFilter($validatorChain$values['details']);
  197.             $data array_merge($data$validDetails['data']);
  198.             $error array_merge($error$validDetails['error']);
  199.         }        
  200.         //validate username
  201.         if(array_key_exists('username'$values))
  202.         {
  203.             $validatorChain new Zend_Validate();
  204.             $validatorChain->addValidator(new Zend_Validate_Alpha())
  205.                            ->addValidator(new Zend_Validate_StringLength(
  206.                                             $this->option->validate->details->lengthMin
  207.                                             $this->option->validate->details->lengthMax
  208.                                          ));
  209.             $validUsername Dot_Kernel::validateFilter($validatorChain$values['username']);
  210.             $data array_merge($data$validUsername['data']);
  211.             $error array_merge($error$validUsername['error']);
  212.         }
  213.         //validate email
  214.         if(array_key_exists('email'$values))
  215.         {
  216.             $validatorEmail new Zend_Validate_EmailAddress();        
  217.             $validEmail Dot_Kernel::validateFilter($validatorEmail$values['email']);
  218.             $data array_merge($data$validEmail['data']);
  219.             $error array_merge($error$validEmail['error']);
  220.         }            
  221.         //validate enum
  222.         if(array_key_exists('enum'$values))
  223.         {
  224.             $validatorEnum new Zend_Validate_InArray(explode(','$values['enum'][0]));
  225.             unset($values['enum'][0]);
  226.             $validEnum Dot_Kernel::validateFilter($validatorEnum$values['enum']);
  227.             $data array_merge($data$validEnum['data']);
  228.             $error array_merge($error$validEnum['error']);
  229.         }        
  230.         //validate password                
  231.         if(array_key_exists('email'$values&& ($values['password']['password'!= '' || $values['password']['password2'!= ''))
  232.         {            
  233.             if($values['password']['password'== $values['password']['password2'])
  234.             {
  235.                 unset($values['password']['password2']);
  236.                 $validatorChain new Zend_Validate();
  237.                 $validatorChain->addValidator(new Zend_Validate_StringLength(
  238.                                                 $this->option->validate->password->lengthMin
  239.                                                 $this->option->validate->password->lengthMax
  240.                                             ));            
  241.                 $validPass Dot_Kernel::validateFilter($validatorChain$values['password']);
  242.                 $data array_merge($data$validPass['data']);
  243.                 $error array_merge($error$validPass['error']);    
  244.             }
  245.             else
  246.             {
  247.                 $error['password'$this->option->errorMessage->passwordTwice;
  248.             }
  249.         }
  250.         return array('data' => $data'error' => $error);
  251.     }
  252.     /**
  253.      * Update active field for admin user
  254.      * @access public
  255.      * @param int $id 
  256.      * @param int $isActive 
  257.      * @return void 
  258.      */
  259.     public function activateUser($id$isActive)
  260.     {        
  261.         $this->db->update('admin'array('isActive' => $isActive)'id = '.$id);
  262.     }
  263.     /**
  264.      * Register logins data
  265.      * @access public
  266.      * @param array $data 
  267.      * @return void 
  268.      */
  269.     public function registerLogin($data)
  270.     {
  271.         $this->db->insert('adminLogin'$data);
  272.     }
  273.     /**
  274.      * Get admin users logins archive list
  275.      * @access public
  276.      * @param int $id 
  277.      * @param int $page [optional]
  278.      * @return array(array(), Zend_Paginator_Adapter())
  279.      */
  280.     public function getLogins($id$page 1)
  281.     {
  282.         $select $this->db->select()
  283.                        ->from('adminLogin');
  284.         if ($id 0
  285.         {
  286.             $select->where('adminId = ?'$id);
  287.         }
  288.         $select->order('dateLogin DESC');
  289.          $paginatorAdapter new Zend_Paginator_Adapter_DbSelect($select);
  290.         ($page == 1
  291.             $select->limit($this->settings->resultsPerPage
  292.             $select->limit($this->settings->resultsPerPage($page-1)*$this->settings->resultsPerPage);
  293.                             
  294.         $data $this->db->fetchAll($select);
  295.         return array('data'=> $data,'paginatorAdapter'=> $paginatorAdapter);
  296.     }
  297. }

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