Source for file UserEditor.class.php

Documentation is available at UserEditor.class.php

  1.  
  2. /**
  3.  * Содержит класс UserEditor
  4.  *
  5.  * @package energine
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2006
  8.  * @version $Id: fsource_energine__modulesusercomponentsUserEditor.class.php.html,v 1.1 2007/09/17 14:32:32 pavka Exp $
  9.  */
  10.  
  11. require_once('core/modules/share/components/Grid.class.php');
  12.  
  13. /**
  14.  * Класс - редактор пользователей
  15.  *
  16.  * @package energine
  17.  * @subpackage user
  18.  */
  19. class UserEditor extends Grid {
  20.  
  21.  
  22.     /**
  23.      * Конструктор класса
  24.      *
  25.      * @return void 
  26.      */
  27.     public function __construct($name$moduleDocument $document,  array $params null{
  28.         parent::__construct($name$module$document,  $params);
  29.         $this->setTableName('user_Users');
  30.         $this->setTitle($this->translate('TXT_USER_EDITOR'));
  31.     }
  32.  
  33.     /**
  34.      * Переопределенный родительский метод
  35.      * проверяет а не пытаемся ли мы удалить текущего пользователя
  36.      *
  37.      * @return boolean 
  38.      * @access public
  39.      */
  40.  
  41.     public function deleteData($id{
  42.         //если мы пытаемся удалить текущего пользователя
  43.         //генерим ошибку
  44.         if ($this->document->user->getID(== $id{
  45.             throw new SystemException('ERR_CANT_DELETE_YOURSELF'SystemException::ERR_CRITICAL);
  46.         }
  47.         parent::deleteData($id);
  48.     }
  49.  
  50.  
  51.     /**
  52.      * Сохранение данных о ролях пользователя
  53.      *
  54.      * @return boolean 
  55.      * @access protected
  56.      */
  57.  
  58.     protected function saveData({
  59.         $result parent::saveData();
  60.  
  61.         $UID (is_int($result))?$result:current($this->getFilter());
  62.  
  63.         $this->dbh->modify(QAL::DELETE'user_UserGroups'nullarray('u_id'=>$UID));
  64.  
  65.         if(isset($_POST['group_id']&& is_array($_POST['group_id']))
  66.         foreach ($_POST['group_id'as $groupID{
  67.             $this->dbh->modify(QAL::INSERT'user_UserGroups',array('u_id'=>$UID'group_id'=>$groupID));
  68.         }
  69.  
  70.         return $result;
  71.     }
  72.  
  73.     /**
  74.      * Для метода редактирования убирается пароль
  75.      *
  76.      * @return array 
  77.      * @access protected
  78.      */
  79.  
  80.     protected function loadData({
  81.         $result parent::loadData();
  82.  
  83.         if ($this->getAction(== 'save'{
  84.             $result[0]['u_password'= sha1($result[0]['u_password']);
  85.         }
  86.         elseif ($this->getAction(== 'getRawData' && $result{
  87.             $result = array_map(array($this'printUserGroups')$result);
  88.         }
  89.         elseif ($this->getAction(== 'edit'{
  90.             $result[0]['u_password''';
  91.         }
  92.  
  93.         return $result;
  94.     }
  95.  
  96.     /**
  97.      * Callback метод вызывающийся при загрузке данных
  98.      * Добавляет к массиву строку с перечнем групп в которіе входит пользователь
  99.      *
  100.      * @return array 
  101.      * @access private
  102.      */
  103.  
  104.     private function printUserGroups($row{
  105.         $userGroup UserGroup::getInstance();
  106.         $userGroupIDs $userGroup->getUserGroups($row['u_id']);
  107.         $userGroupName array();
  108.         foreach ($userGroupIDs as $UGID{
  109.             $groupInfo $userGroup->getInfo($UGID);
  110.             $userGroupName[$groupInfo['group_name'];
  111.         }
  112.         $row['u_group'= implode(', '$userGroupName);
  113.         return $row;
  114.     }
  115.  
  116.     /**
  117.      * Для методов add и edit добавляется поле роли
  118.      *
  119.      * @return DataDescription 
  120.      * @access protected
  121.      */
  122.  
  123.     protected function createDataDescription({
  124.         $result parent::createDataDescription();
  125.  
  126.         if ($this->getType(!= self::COMPONENT_TYPE_LIST{
  127.             foreach ($result as $fieldDescription{
  128.                 $fieldDescription->addProperty('tabName'$this->translate('TXT_USER_EDITOR'));
  129.             }
  130.             $fd new FieldDescription('group_id');
  131.             $fd->setSystemType(FieldDescription::FIELD_TYPE_INT);
  132.             $fd->setType(FieldDescription::FIELD_TYPE_MULTI);
  133.             $fd->addProperty('tabName'$this->translate('TXT_USER_GROUPS'));
  134.             $fd->addProperty('customField'true);
  135.  
  136.             $data $this->dbh->select('user_Groups'array('group_id''group_name'));
  137.  
  138.             $fd->loadAvailableValues($data'group_id''group_name');
  139.             $result->addFieldDescription($fd);
  140.         }
  141.  
  142.         return $result;
  143.     }
  144.  
  145.     /**
  146.       * Для методов add и edit добавляется инфо о роли
  147.       *
  148.       * @return Data 
  149.       * @access protected
  150.       */
  151.  
  152.     protected function createData({
  153.         $result parent::createData();
  154.         $id $this->getFilter();
  155.         $id (!empty($id&& is_array($id))?current($id):false;
  156.         if ($this->getType(!= self::COMPONENT_TYPE_LIST && $id{
  157.             //создаем переменную содержащую идентификторы групп в которые входит пользователь
  158.             $f new Field('group_id');
  159.             $result->addField($f);
  160.  
  161.             $data $this->dbh->select('user_UserGroups'array('group_id')array('u_id'=>$id));
  162.             if(is_array($data)) {
  163.                 $f->addRowData(array_keys(convertDBResult($data'group_id'true)));
  164.             }
  165.             else {
  166.                 $f->setData(array());
  167.             }
  168.         }
  169.         return $result;
  170.     }
  171.  
  172.     /**
  173.      * Добавляем таб
  174.      *
  175.      * @return DOMNode 
  176.      * @access public
  177.      */
  178.  
  179.     public function build({
  180.         if ($this->getType(!= self::COMPONENT_TYPE_LIST{
  181.             $this->addTab($this->buildTab($this->translate('TXT_USER_GROUPS')));
  182.         }
  183.  
  184.         $result parent::build();
  185.         return $result;
  186.     }
  187. }

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