diff --git a/application/classes/modules/user/entity/User.entity.class.php b/application/classes/modules/user/entity/User.entity.class.php index d439b6b2..6c257d5a 100644 --- a/application/classes/modules/user/entity/User.entity.class.php +++ b/application/classes/modules/user/entity/User.entity.class.php @@ -149,6 +149,16 @@ class ModuleUser_EntityUser extends Entity return $this->_getDataOne('user_mail'); } + /** + * Возвращает флаг админа + * + * @return int|null + */ + public function getAdmin() + { + return $this->_getDataOne('user_admin'); + } + /** * Возвращает дату регистрации * @@ -515,7 +525,7 @@ class ModuleUser_EntityUser extends Entity */ public function isAdministrator() { - return $this->_getDataOne('user_is_administrator'); + return $this->getAdmin(); } /** @@ -631,6 +641,16 @@ class ModuleUser_EntityUser extends Entity $this->_aData['user_mail'] = $data; } + /** + * Устанавливает флаг админа + * + * @param string $data + */ + public function setAdmin($data) + { + $this->_aData['user_admin'] = $data; + } + /** * Устанавливает дату регистрации * diff --git a/application/classes/modules/user/mapper/User.mapper.class.php b/application/classes/modules/user/mapper/User.mapper.class.php index d4d33367..cfebb1f6 100644 --- a/application/classes/modules/user/mapper/User.mapper.class.php +++ b/application/classes/modules/user/mapper/User.mapper.class.php @@ -66,6 +66,7 @@ class ModuleUser_MapperUser extends Mapper SET user_password = ? , user_mail = ? , + user_admin = ? , user_date_activate = ? , user_date_comment_last = ? , user_rating = ? , @@ -92,6 +93,7 @@ class ModuleUser_MapperUser extends Mapper "; $res = $this->oDb->query($sql, $oUser->getPassword(), $oUser->getMail(), + $oUser->getAdmin(), $oUser->getDateActivate(), $oUser->getDateCommentLast(), $oUser->getRating(), @@ -218,11 +220,9 @@ class ModuleUser_MapperUser extends Mapper } $sql = "SELECT - u.* , - IF(ua.user_id IS NULL,0,1) as user_is_administrator + u.* FROM " . Config::Get('db.table.user') . " as u - LEFT JOIN " . Config::Get('db.table.user_administrator') . " AS ua ON u.user_id=ua.user_id WHERE u.user_id IN(?a) ORDER BY FIELD(u.user_id,?a) "; diff --git a/application/config/config.php b/application/config/config.php index 5a3cf40c..95c73cc0 100644 --- a/application/config/config.php +++ b/application/config/config.php @@ -283,7 +283,6 @@ $config['db']['table']['prefix'] = 'prefix_'; $config['db']['table']['user'] = '___db.table.prefix___user'; $config['db']['table']['blog'] = '___db.table.prefix___blog'; -$config['db']['table']['blog_category'] = '___db.table.prefix___blog_category'; $config['db']['table']['topic'] = '___db.table.prefix___topic'; $config['db']['table']['topic_tag'] = '___db.table.prefix___topic_tag'; $config['db']['table']['topic_type'] = '___db.table.prefix___topic_type'; @@ -298,7 +297,6 @@ $config['db']['table']['talk_user'] = '___db.table.prefix___talk_user'; $config['db']['table']['talk_blacklist'] = '___db.table.prefix___talk_blacklist'; $config['db']['table']['friend'] = '___db.table.prefix___friend'; $config['db']['table']['topic_content'] = '___db.table.prefix___topic_content'; -$config['db']['table']['user_administrator'] = '___db.table.prefix___user_administrator'; $config['db']['table']['comment_online'] = '___db.table.prefix___comment_online'; $config['db']['table']['invite'] = '___db.table.prefix___invite'; $config['db']['table']['page'] = '___db.table.prefix___page'; diff --git a/application/install/backend/step/installAdmin.php b/application/install/backend/step/installAdmin.php index ad14e432..ddb4e19f 100644 --- a/application/install/backend/step/installAdmin.php +++ b/application/install/backend/step/installAdmin.php @@ -25,7 +25,7 @@ class InstallStepInstallAdmin extends InstallStep return $this->addError(InstallCore::getLang('steps.installAdmin.errors.passwd')); } /** - * Полчаем данные коннекта к БД из конфига + * Получаем данные коннекта к БД из конфига */ InstallConfig::$sFileConfig = dirname(INSTALL_DIR) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.local.php'; /** @@ -50,6 +50,7 @@ class InstallStepInstallAdmin extends InstallStep UPDATE `{$sPrefix}user` SET `user_mail` = '{$sMail}', + `user_admin` = '1', `user_password` = '" . md5($sPasswd) . "' WHERE `user_id` = 1"; diff --git a/application/install/backend/step/updateVersion.php b/application/install/backend/step/updateVersion.php index 59d3f52a..d8ef8a79 100644 --- a/application/install/backend/step/updateVersion.php +++ b/application/install/backend/step/updateVersion.php @@ -520,6 +520,17 @@ class InstallStepUpdateVersion extends InstallStep * Конвертируем аватарки и фото пользователей * Дополнительно добавляем роль для прав */ + /** + * Получаем текущий список админов + */ + $aUserAdmin=array(); + if ($this->dbCheckTable("prefix_user_administrator")) { + if ($aAdmins = $this->dbSelect("SELECT * FROM prefix_user_administrator ")) { + foreach ($aAdmins as $aRow) { + $aUserAdmin[]=$aRow['user_id']; + } + } + } $iPage = 1; $iLimitCount = 50; $iLimitStart = 0; @@ -632,12 +643,27 @@ class InstallStepUpdateVersion extends InstallStep $sTzName = $this->convertTzOffsetToName($aUser['user_settings_timezone']); } + /** + * Админы + */ + $isAdmin=0; + if (in_array($aUser['user_id'],$aUserAdmin) or $aUser['user_admin']) { + $isAdmin=1; + } + /** * Сохраняем в БД */ $sAvatar = mysqli_escape_string($this->rDbLink, $sAvatar); $sPhoto = mysqli_escape_string($this->rDbLink, $sPhoto); - $this->dbQuery("UPDATE prefix_user SET user_settings_timezone = " . ($sTzName ? "'{$sTzName}'" : 'null') . " , user_profile_avatar = '{$sAvatar}', user_profile_foto = '{$sPhoto}' WHERE user_id ='{$aUser['user_id']}'"); + $this->dbQuery("UPDATE prefix_user SET user_admin = '{$isAdmin}' , user_settings_timezone = " . ($sTzName ? "'{$sTzName}'" : 'null') . " , user_profile_avatar = '{$sAvatar}', user_profile_foto = '{$sPhoto}' WHERE user_id ='{$aUser['user_id']}'"); + + /** + * Удаляем таблицы + */ + if ($this->dbCheckTable("prefix_user_administrator")) { + $this->dbQuery('DROP TABLE prefix_user_administrator'); + } } } diff --git a/application/install/data/sql/patch_1.0.3_to_2.0.0.sql b/application/install/data/sql/patch_1.0.3_to_2.0.0.sql index 378dc236..ee334fcb 100644 --- a/application/install/data/sql/patch_1.0.3_to_2.0.0.sql +++ b/application/install/data/sql/patch_1.0.3_to_2.0.0.sql @@ -743,4 +743,5 @@ INSERT INTO `prefix_topic_type` (`id`, `name`, `name_many`, `code`, `allow_remov -- 17.12.2014 -ALTER TABLE `prefix_user` CHANGE `user_settings_timezone` `user_settings_timezone` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; \ No newline at end of file +ALTER TABLE `prefix_user` CHANGE `user_settings_timezone` `user_settings_timezone` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; +ALTER TABLE `prefix_user` ADD `user_admin` TINYINT(1) NOT NULL DEFAULT '0' AFTER `user_mail`, ADD INDEX (`user_admin`) ; \ No newline at end of file