Source for file User.class.php
Documentation is available at User.class.php
* @copyright Energine 2006
//require_once('core/framework/DBWorker.class.php');
//require_once('core/framework/UserGroup.class.php');
* Класс для работы с пользователем
* Возвращает информацию о пользователе, сохраняет данные
* Имя таблицы пользователей
* Идентификатор пользователя
* Объект по работе с пользователями
* Информация о пользователе
* @param int идентификатор пользователя
//Если пользователь существует - загружаем его информацию
* Загрузка информации из БД
* @param int идентификатор пользователя
$result = $this->dbh->select(self::USER_TABLE_NAME, true, array('u_id' => $UID));
if (is_array($result) && !empty($result)) {
$result[0]['u_password'] = true;
$this->info = $result[0];
* Возвращает перечень групп в которые входит пользователь
* Возвращает идентфикатор пользователя
public function getID() {
* Возвращает значение поля
if (isset ($this->info[$fieldName])) {
$result = $this->info[$fieldName];
* Возвращает перечень полей
$result = $this->dbh->getColumnsInfo(self::USER_TABLE_NAME);
* Создание нового пользователя
public function create($data) {
//проверяем имеются ли все необходимые значения
$tableInfo = $this->dbh->getColumnsInfo(self::USER_TABLE_NAME);
$necessaryFields = $uniqueFields = array();
foreach ($tableInfo as $columnName => $columnInfo) {
//отбираем все поля !nullable, не PRI, и без дефолтного значения
if (!$columnInfo['nullable'] && $columnInfo['index'] != DBA::PRIMARY_INDEX && !$columnInfo['default']) {
//Отбираем все уникальные поля
if ($columnInfo['index'] == DBA::UNIQUE_INDEX) {
//если пересечение списка необходимых полей и списка полей данных не пустое - значит недостаточно данных для сохранения
//проверяем являются ли введенные поля уникальными
if (!empty($uniqueFields)) {
foreach ($uniqueFields as $fieldname) {
$condition[] = $fieldname. ' = "'. $data[$fieldname]. '"';
$condition = implode(' OR ', $condition);
if (simplifyDBResult($this->dbh->select(self::USER_TABLE_NAME, 'COUNT(u_id) as num', $condition), 'num', true)> 0) {
//$this->info['u_password'] = $data['u_password'];
$data['u_password'] = sha1($data['u_password']);
$this->id = $this->dbh->modify(QAL::INSERT, self::USER_TABLE_NAME , $data);
* Обновление данных о пользователе
public function update($data){
$result = $this->dbh->modify(QAL::UPDATE, self::USER_TABLE_NAME , $data, array('u_id'=> $this->getID()));
* Устанавливает перечень групп в которые будет входить пользователь
//Устанавливать группы можно только тогда, когда пользователь создан
//$this->dbh->beginTransaction();
$this->dbh->modify(QAL::DELETE, self::GROUP_TABLE_NAME, null, array('u_id'=> $this->getID()));
foreach ($groups as $groupID) {
$this->dbh->modify(QAL::INSERT, self::GROUP_TABLE_NAME, array('u_id'=> $this->getID(), 'group_id'=> $groupID));
//$this->dbh->rollback();
//передаем исключение дальше
throw new SystemException($e->getMessage(), $e->getCode(), $e->getCustomMessage());
* Генерирует пароль заданной длины из случайных буквенно-цифровых символов.
$chars = '0123456789abcdefghjiklmnopqrstuvwxyzABCDEFGHJIKLMNOPQRSTUVWXYZ';
$max = strlen($chars) - 1; // $max = count($chars) - 1;
for ($i = 0; $i < $length; $i++ ) {
$password .= $chars[mt_rand(0, $max)];
|