phpDocumentor phpIcqBot
[ class tree: phpIcqBot ] [ index: phpIcqBot ] [ all elements ]

Source for file users.class.php

Documentation is available at users.class.php

  1. <?php
  2.  
  3. define('ICQBOT_USERDIR','./store/users/');
  4.  
  5. define('ICQBOT_USER_GLOBALVAR'true);
  6.  
  7. {
  8.     /**
  9.      * Static users array
  10.      *
  11.      * @var array 
  12.      */
  13.     static private $users array();
  14.  
  15.     static public function load($uin)
  16.     {
  17.         if (isset(self::$users[$uin]))
  18.             return self::$users[$uin];
  19.         self::$users[$uinnew IcqBot_Users($uin);
  20.         return self::$users[$uin];
  21.     }
  22.     
  23.     static public function saveAll()
  24.     {
  25.         /** @var $user IcqBot_Users */
  26.         foreach (self::$users as $user)
  27.             $user->save();
  28.     }
  29.     
  30.     static public function flushAll()
  31.     {
  32.         /** @var $user IcqBot_Users */
  33.         foreach (self::$users as $user)
  34.             unset($user);
  35.         self::$users array();
  36.     }
  37.  
  38.     private $user;
  39.  
  40.     private function __construct($uin)
  41.     {
  42.         if (file_exists(ICQBOT_USERDIR.$uin))
  43.         {
  44.             $this->user unserialize(file_get_contents(ICQBOT_USERDIR.$uin));
  45.             return;
  46.         }
  47.         $this->user array('uin'=>$uin,'__roles'=>array());
  48.         $this->save();
  49.     }
  50.     
  51.     public function get(IcqBot_Module $mod$param$global false)
  52.     {
  53.         if ($param == '__roles'return null;
  54.         if ($global)
  55.             return isset($this->user[$param])?$this->user[$param]:null;
  56.         return isset($this->user[get_class($mod).'_'.$param])?$this->user[get_class($mod).'_'.$param]:null;
  57.     }
  58.     
  59.     public function set(IcqBot_Module $mod$param$value$global false)
  60.     {
  61.         if ($param == '__roles'return false;
  62.         if ($global && ($mod instanceof IcqBot_AdminModule))
  63.         {
  64.             $this->user[$param$value;
  65.             return true;
  66.         }
  67.         elseif ($global)
  68.             return false;
  69.  
  70.         $this->user[get_class($mod).'_'.$param$value;        
  71.         return true;
  72.     }
  73.     
  74.     public function __destruct()
  75.     {
  76.         $this->save();
  77.     }
  78.     
  79.     public function save()
  80.     {
  81.         file_put_contents(ICQBOT_USERDIR.$this->user['uin'],serialize($this->user));
  82.     }
  83.     
  84.     public function updateAccess()
  85.     {
  86.         $this->user['__lastaccess']=time();
  87.     }
  88.     
  89.     public function getRole($role)
  90.     {
  91.         return isset($this->user['__roles'][strtoupper($role)]);
  92.     }
  93.     
  94.     public function getRoles()
  95.     {
  96.         return array_keys($this->user['__roles']);
  97.     }
  98.     
  99.     public function addRoles($roles)
  100.     {
  101.         if (!is_array($roles))
  102.             $roles array($roles);
  103.         
  104.         foreach ($roles as $role)
  105.             if (!isset($this->user['__roles'][strtoupper(trim($role))]))
  106.                 $this->user['__roles'][strtoupper(trim($role))true;
  107.         return true;
  108.     }
  109.     
  110.     public function removeRoles($roles)
  111.     {
  112.         if (!is_array($roles))
  113.             $roles array($roles);
  114.  
  115.         foreach ($roles as $role)
  116.             if (isset($this->user['__roles'][strtoupper(trim($role))]))
  117.                 unset($this->user['__roles'][strtoupper(trim($role))]);
  118.         return true;
  119.     }
  120.     
  121.     public function canRoles($roles)
  122.     {
  123.         if (!is_array($roles))
  124.             return  isset($this->user['__roles'][strtoupper(trim($roles))]|| isset($this->user['__roles']['ADMIN']);
  125.         $acc array();
  126.         foreach ($roles as $role)
  127.             $acc[= isset($this->user['__roles'][strtoupper(trim($role))]|| isset($this->user['__roles']['ADMIN']);
  128.         return $acc;
  129.     }
  130. }

Documentation generated on Mon, 24 Dec 2007 09:34:36 +0500 by phpDocumentor 1.4.0