Source for file UserEditor.class.php
Documentation is available at UserEditor.class.php
* Содержит класс UserEditor
* @copyright Energine 2006
//require_once('core/modules/share/components/Grid.class.php');
* Класс - редактор пользователей
public function __construct($name, $module, Document $document, array $params = null) {
parent::__construct($name, $module, $document, $params);
* Переопределенный родительский метод
* проверяет а не пытаемся ли мы удалить текущего пользователя
//если мы пытаемся удалить текущего пользователя
if ($this->document->user->getID() == $id) {
* Сохранение данных о ролях пользователя
//При сохранении данных из формы редактирования
//Если не пришел пароль - не трогаем его
//и ее размеры отличаются от необходимых
list ($neededWidth, $neededHeight) = array((string) $thumbnailInfo->width, (string) $thumbnailInfo->height);
($realWidth != $neededWidth)
($realHeight != $neededHeight)
$fileName = $_POST[$this->getTableName()]['u_avatar_prfile'];
$image->loadFromFile($fileName);
$image->resize($neededWidth,$neededHeight);
$image->saveToFile($fileName);
$this->dbh->modify(QAL::DELETE, 'user_user_groups', null, array('u_id'=> $UID));
if(isset ($_POST['group_id']) && is_array($_POST['group_id']))
foreach ($_POST['group_id'] as $groupID) {
$this->dbh->modify(QAL::INSERT, 'user_user_groups',array('u_id'=> $UID, 'group_id'=> $groupID));
* toggles user activity status
$transactionStarted = $this->dbh->beginTransaction();
if ($this->document->user->getID() == $id) {
$this->dbh->modifyRequest('UPDATE '. $this->getTableName(). ' SET u_is_active = NOT u_is_active WHERE u_id = %s', $id);
if ($transactionStarted) {
$JSONResponse = $this->generateError($e->getCode(), $e->getMessage());
$this->response->setHeader('Content-Type', 'text/javascript; charset=utf-8');
* Для метода редактирования убирается пароль
/*if ($this->getAction() == 'save') {
$result[0]['u_password'] = sha1($result[0]['u_password']);
else*/if ($this->getAction() == 'getRawData' && $result) {
$result = array_map(array($this, 'printUserGroups'), $result);
$result[0]['u_password'] = '';
$result[0]['u_password'] = '';
* Callback метод вызывающийся при загрузке данных
* Добавляет к массиву строку с перечнем групп в которіе входит пользователь
$userGroupIDs = $userGroup->getUserGroups($row['u_id']);
$userGroupName = array();
foreach ($userGroupIDs as $UGID) {
$groupInfo = $userGroup->getInfo($UGID);
$userGroupName[] = $groupInfo['group_name'];
$row['u_group'] = implode(', ', $userGroupName);
* Для методов add и edit добавляется поле роли
* @return DataDescription
foreach ($result as $fieldDescription) {
if ($fd = $result->getFieldDescriptionByName('u_is_active')) {
$result->removeFieldDescription($fd);
$data = $this->dbh->select('user_groups', array('group_id', 'group_name'), 'group_id IN(select group_id from user_groups where group_default=0)');
$fd->loadAvailableValues($data, 'group_id', 'group_name');
$result->addFieldDescription($fd);
($this->getType() == self::COMPONENT_TYPE_FORM_ALTER)
($f = $result->getFieldDescriptionByName('u_password'))
$result = parent::loadDataDescription();
if ($this->getAction() == 'save' && isset ($result['u_password'])) {
$result['u_password']['nullable'] = true;
* Для методов add и edit добавляется инфо о роли
$result = parent::createData();
if ($this->getType() != self::COMPONENT_TYPE_LIST && $id) {
//создаем переменную содержащую идентификторы групп в которые входит пользователь
$f = new Field('group_id');
$data = $this->dbh->select('user_user_groups', array('group_id'), array('u_id'=> $id));
|