public function TableCityPortalEngine()
{
//Если БД существует, создаем таблицы
if(!$sql = $this->connect) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query('set names utf8')) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query(" SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 ")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query(" SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; ")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query(" SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL' ")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query(" CREATE SCHEMA IF NOT EXISTS" . DB_DATABASE .
"DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$users = $sql->query("
CREATE TABLE IF NOT EXISTS " . DB_DATABASE . ".`users` (
`idusers` INT NOT NULL AUTO_INCREMENT COMMENT 'id - Зарегистрированного' ,
`login` VARCHAR(85) NOT NULL COMMENT 'Логин юзера, должен быть уникальный и состоять только из латинских букв и цифр , так же должен быть не более 20 символов' ,
`email` VARCHAR(85) NOT NULL COMMENT 'На него приходит уведомление о регистрации, так же нужен для авторизации, должен быть уникальным и реально существующим. не более 25 символов' ,
`password` VARCHAR(45) NOT NULL COMMENT 'Пароль пользователя, должен содержать не менее 7 символов и не более 20. Должен быть закодирован в мд5+соль. При потере, генерация нового пароля и перезаписывание старого' ,
`role` TINYINT NOT NULL DEFAULT 0 COMMENT '(роль пользователя 0 - Просто гость, 1 - Авторированный юзер, 2 - Автор, 3 Админ)\nПо умалчанию после авторизации, записуется 1, дефолт = 0, первому юзеру, авторизированному при инсталяции по умолчанию записывается 3 ' ,
PRIMARY KEY (`idusers`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$articles = $sql->query("
CREATE TABLE IF NOT EXISTS " . DB_DATABASE . ".`articles` (
`idarticles` INT NOT NULL AUTO_INCREMENT COMMENT 'id - Уникальный (для статей)' ,
`title` VARCHAR(45) NOT NULL COMMENT 'Заголовок статьи' ,
`description` VARCHAR(85) NOT NULL COMMENT 'Описание статьи' ,
`keywords` VARCHAR(85) NOT NULL COMMENT 'Ключевые слова статьи' ,
`text` TEXT NOT NULL COMMENT 'Текст статьи' ,
`state` TINYINT NOT NULL COMMENT '0-черновик,1-опубликованна' ,
`date_create` VARCHAR(45) NOT NULL COMMENT 'Дата создания' ,
`date_edit` VARCHAR(45) NULL COMMENT 'Дата последнего изминения' ,
`users_idusers` INT NOT NULL ,
PRIMARY KEY (`idarticles`) ,
INDEX `fk_articles_users1` (`users_idusers` ASC) ,
CONSTRAINT `fk_articles_users1`
FOREIGN KEY (`users_idusers` )
REFERENCES " . DB_DATABASE . ".`users` (`idusers` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$rols = $sql->query("
CREATE TABLE IF NOT EXISTS " . DB_DATABASE . ".`rols` (
`idrols` INT NOT NULL AUTO_INCREMENT ,
`roleid` INT NOT NULL COMMENT '(роль юзера 0,1,2,3) ' ,
`textrole` VARCHAR(45) NOT NULL DEFAULT 'Гость' COMMENT 'В зависимости от роли пользователя: (0- Гость,1-Участник,2-Автор,3-Админ)' ,
`users_idusers` INT NOT NULL ,
PRIMARY KEY (`idrols`, `users_idusers`) ,
INDEX `fk_rols_users` (`users_idusers` ASC) ,
CONSTRAINT `fk_rols_users`
FOREIGN KEY (`users_idusers` )
REFERENCES " . DB_DATABASE . ".`users` (`idusers` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$settings = $sql->query("
CREATE TABLE IF NOT EXISTS " . DB_DATABASE . ".`settings` (
`idsettings` INT NOT NULL ,
`access` TINYINT NOT NULL COMMENT '( 0 Запрещать, 1 разрешать, 2 запрещать гостям => просмотр раздела)' ,
`offline` TINYINT NOT NULL DEFAULT 1 COMMENT 'Сайт (0 - закрыт, 1 -открыт)' ,
`editor` TINYINT NOT NULL DEFAULT 1 COMMENT 'Добавление статей (0- без редактора, 1 - с редактором) ' ,
`modules` TINYINT NOT NULL DEFAULT 1 COMMENT 'Модули (0 - не использовать, 1 использовать)' ,
PRIMARY KEY (`idsettings`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$files = $sql->query("
CREATE TABLE IF NOT EXISTS " . DB_DATABASE . ".`files` (
`idfiles` INT NOT NULL AUTO_INCREMENT ,
`path` VARCHAR(45) NOT NULL COMMENT 'Путь к файлу' ,
`extension` VARCHAR(45) NULL COMMENT 'Расширение файла, например .gif или .jpg' ,
`type` VARCHAR(45) NOT NULL COMMENT 'mime тип файла, например image/gif или text/html' ,
`users_idusers` INT NOT NULL ,
PRIMARY KEY (`idfiles`) ,
INDEX `fk_files_users1` (`users_idusers` ASC) ,
CONSTRAINT `fk_files_users1`
FOREIGN KEY (`users_idusers` )
REFERENCES " . DB_DATABASE . ".`users` (`idusers` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$widgets = $sql->query("
CREATE TABLE IF NOT EXISTS " . DB_DATABASE . ".`widgets` (
`idwidgets` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(55) NOT NULL COMMENT 'Имя модуля' ,
`head` VARCHAR(255) NOT NULL COMMENT 'Заголовок модуля' ,
`template` VARCHAR(105) NOT NULL COMMENT '(имя шаблона или путь к нему) пример admin_autorization.php' ,
PRIMARY KEY (`idwidgets`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$errors = $sql->query("
CREATE TABLE IF NOT EXISTS " . DB_DATABASE . ".`errors` (
`iderrors` INT NOT NULL AUTO_INCREMENT ,
`module` VARCHAR(45) NOT NULL COMMENT 'Модуль(виджет) в котором произошла ошибка' ,
`message` TEXT NOT NULL COMMENT 'Текст ошибки сообщения' ,
PRIMARY KEY (`iderrors`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query(" SET SQL_MODE=@OLD_SQL_MODE ")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query(" SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS ")) throw new Exception('Error: ' . $sql->mysqli_error());
if(!$sql->query(" SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS ")) throw new Exception('Error: ' . $sql->mysqli_error());
if (!$users)
return false;
if (!$articles)
return false;
if (!$rols)
return false;
if (!$settings)
return false;
if (!$files)
return false;
if (!$widgets)
return false;
if (!$errors)
return false;
return true;
}
__________________