Source for file UserGroup.class.php

Documentation is available at UserGroup.class.php

  1. /**
  2.  * Класс Group.
  3.  *
  4.  * @package energine
  5.  * @subpackage core
  6.  * @author 1m.dm
  7.  * @copyright ColoCall 2006
  8.  * @version $Id: fsource_energine_core_frameworkUserGroup.class.php.html,v 1.1 2007/09/17 14:32:35 pavka Exp $
  9.  */
  10.  
  11. require_once 'core/framework/DBWorker.class.php';
  12.  
  13. /**
  14.  * Группы пользователей.
  15.  *
  16.  * @package energine
  17.  * @subpackage core
  18.  * @final
  19.  */
  20. final class UserGroup extends DBWorker {
  21.  
  22.     /**
  23.      * @access private
  24.      * @var int идентификатор группы для гостей
  25.      */
  26.     private $defaultGuestGroup = false;
  27.  
  28.     /**
  29.      * @access private
  30.      * @var int идентификатор группы для аутентифицированных пользователей
  31.      */
  32.     private $defaultUserGroup = false;
  33.  
  34.     /**
  35.      * @access private
  36.      * @var array информация о всех существующих группах пользователей
  37.      * @see UserGroup::__construct()
  38.      */
  39.     private $groups;
  40.  
  41.     /**
  42.      * @access private
  43.      * @static
  44.      * @var UserGroup единый для всей системы экземпляр класса UserGroup
  45.      */
  46.     private static $instance;
  47.  
  48.     /**
  49.      * Конструктор класса.
  50.      *
  51.      * @access public
  52.      * @return void 
  53.      */
  54.     public function __construct({
  55.         parent::__construct();
  56.         /*
  57.          * Загружаем инфомацию о группах пользователей в структуру вида:
  58.          *     array(
  59.          *         $group_id => array(group info)
  60.          *     );
  61.          */
  62.         $result $this->dbh->select('user_Groups');
  63.         foreach ($result as $groupInfo{
  64.             $this->groups[$groupInfo['group_id']] $groupInfo;
  65.             unset($this->groups[$groupInfo['group_id']]['group_id']);
  66.         }
  67.     }
  68.  
  69.     /**
  70.      * Возвращает единый для всей системы экземпляр класса UserGroup.
  71.      * См. паттерн проектирования Singleton.
  72.      *
  73.      * @access public
  74.      * @static
  75.      * @return UserGroup 
  76.      */
  77.     public static function getInstance({
  78.         if (!isset(self::$instance)) {
  79.             self::$instance new UserGroup;
  80.         }
  81.         return self::$instance;
  82.     }
  83.  
  84.     /**
  85.      * Возвращает идентификатор группы для гостей.
  86.      *
  87.      * @access public
  88.      * @return int 
  89.      */
  90.     public function getDefaultGuestGroup({
  91.         if (!$this->defaultGuestGroup{
  92.             $result false;
  93.             foreach ($this->groups as $groupId => $groupInfo{
  94.                 if ($groupInfo['group_default'== 1{
  95.                     $result $groupId;
  96.                     break;
  97.                 }
  98.             }
  99.             if ($result == false{
  100.                 throw new SystemException('ERR_DEV_NO_DEFAULT_GROUP'SystemException::ERR_CRITICAL);
  101.             }
  102.             $this->defaultGuestGroup = $result;
  103.         }
  104.         return $this->defaultGuestGroup;
  105.     }
  106.  
  107.     /**
  108.      * Возвращает идентификатор группы для аутентифицированных пользователей.
  109.      *
  110.      * @access public
  111.      * @return int 
  112.      */
  113.     public function getDefaultUserGroup({
  114.         if (!$this->defaultUserGroup{
  115.             $result false;
  116.             foreach ($this->groups as $groupId => $groupInfo{
  117.                 if ($groupInfo['group_user_default'== 1{
  118.                     $result $groupId;
  119.                     break;
  120.                 }
  121.             }
  122.             if ($result == false{
  123.                 throw new SystemException('ERR_DEV_NO_DEFAULT_USER_GROUP'SystemException::ERR_CRITICAL);
  124.             }
  125.             $this->defaultUserGroup = $result;
  126.         }
  127.         return $this->defaultUserGroup;
  128.     }
  129.  
  130.     /**
  131.      * Возвращает набор групп, к которым принадлежит пользователь.
  132.      *
  133.      * @access public
  134.      * @return array 
  135.      */
  136.     public function getUserGroups($userId{
  137.         $result array($this->getDefaultGuestGroup());
  138.         if (!is_null($userId)) {
  139.             $res $this->dbh->select('user_UserGroups'array('group_id')array('u_id' => $userId));
  140.             if (is_array($res)) {
  141.                 $result simplifyDBResult($res'group_id');
  142.             }
  143.         }
  144.         return $result;
  145.     }
  146.  
  147.     /**
  148.      * Возвращает информацию о группе.
  149.      *
  150.      * @access public
  151.      * @return array 
  152.      */
  153.     public function getInfo($groupId{
  154.         $result array();
  155.         if (isset($this->groups[$groupId])) {
  156.             $result $this->groups[$groupId];
  157.         }
  158.         return $result;
  159.     }
  160. }

Documentation generated on Mon, 17 Sep 2007 13:33:26 +0300 by phpDocumentor 1.4.0a2