<?php
/**
* ÐлаÑÑ Group.
*
* @package energine
* @subpackage core
* @author 1m.dm
* @copyright ColoCall 2006
* @version $Id: UserGroup.class.php,v 1.5 2007/12/17 14:16:03 pavka Exp $
*/
//require_once('core/framework/DBWorker.class.php');
/**
* ÐÑÑÐ¿Ð¿Ñ Ð¿Ð¾Ð»ÑзоваÑелей.
*
* @package energine
* @subpackage core
* @final
*/
final class UserGroup extends DBWorker {
/**
* @access private
* @var int иденÑиÑикаÑÐ¾Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð´Ð»Ñ Ð³Ð¾ÑÑей
*/
private $defaultGuestGroup = false;
/**
* @access private
* @var int иденÑиÑикаÑÐ¾Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð´Ð»Ñ Ð°ÑÑенÑиÑиÑиÑованнÑÑ
полÑзоваÑелей
*/
private $defaultUserGroup = false;
/**
* @access private
* @var array инÑоÑмаÑÐ¸Ñ Ð¾ вÑеÑ
ÑÑÑеÑÑвÑÑÑиÑ
гÑÑппаÑ
полÑзоваÑелей
* @see UserGroup::__construct()
*/
private $groups;
/**
* @access private
* @static
* @var UserGroup единÑй Ð´Ð»Ñ Ð²Ñей ÑиÑÑÐµÐ¼Ñ ÑкземплÑÑ ÐºÐ»Ð°ÑÑа UserGroup
*/
private static $instance;
/**
* ÐонÑÑÑÑкÑÐ¾Ñ ÐºÐ»Ð°ÑÑа.
*
* @access public
* @return void
*/
public function __construct() {
parent::__construct();
/*
* ÐагÑÑжаем инÑомаÑÐ¸Ñ Ð¾ гÑÑппаÑ
полÑзоваÑелей в ÑÑÑÑкÑÑÑÑ Ð²Ð¸Ð´Ð°:
* array(
* $group_id => array(group info)
* );
*/
$result = $this->dbh->select('user_groups');
foreach ($result as $groupInfo) {
$this->groups[$groupInfo['group_id']] = $groupInfo;
unset($this->groups[$groupInfo['group_id']]['group_id']);
}
}
/**
* ÐозвÑаÑÐ°ÐµÑ ÐµÐ´Ð¸Ð½Ñй Ð´Ð»Ñ Ð²Ñей ÑиÑÑÐµÐ¼Ñ ÑкземплÑÑ ÐºÐ»Ð°ÑÑа UserGroup.
* См. паÑÑеÑн пÑоекÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Singleton.
*
* @access public
* @static
* @return UserGroup
*/
public static function getInstance() {
if (!isset(self::$instance)) {
self::$instance = new UserGroup;
}
return self::$instance;
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð´Ð»Ñ Ð³Ð¾ÑÑей.
*
* @access public
* @return int
*/
public function getDefaultGuestGroup() {
if (!$this->defaultGuestGroup) {
$result = false;
foreach ($this->groups as $groupId => $groupInfo) {
if ($groupInfo['group_default'] == 1) {
$result = $groupId;
break;
}
}
if ($result == false) {
throw new SystemException('ERR_DEV_NO_DEFAULT_GROUP', SystemException::ERR_CRITICAL);
}
$this->defaultGuestGroup = $result;
}
return $this->defaultGuestGroup;
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð´Ð»Ñ Ð°ÑÑенÑиÑиÑиÑованнÑÑ
полÑзоваÑелей.
*
* @access public
* @return int
*/
public function getDefaultUserGroup() {
if (!$this->defaultUserGroup) {
$result = false;
foreach ($this->groups as $groupId => $groupInfo) {
if ($groupInfo['group_user_default'] == 1) {
$result = $groupId;
break;
}
}
if ($result == false) {
throw new SystemException('ERR_DEV_NO_DEFAULT_USER_GROUP', SystemException::ERR_CRITICAL);
}
$this->defaultUserGroup = $result;
}
return $this->defaultUserGroup;
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð³ÑÑпп, к коÑоÑÑм пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ.
*
* @access public
* @return array
*/
public function getUserGroups($userId) {
$result = array($this->getDefaultGuestGroup());
if (!is_null($userId)) {
$res = $this->dbh->select('user_user_groups', array('group_id'), array('u_id' => $userId));
if (is_array($res)) {
$result = simplifyDBResult($res, 'group_id');
}
}
return $result;
}
/**
* ÐозвÑаÑÐ°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ гÑÑппе.
*
* @access public
* @return array
*/
public function getInfo($groupId) {
$result = array();
if (isset($this->groups[$groupId])) {
$result = $this->groups[$groupId];
}
return $result;
}
}