Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** App\Lib\Database */
- public function createEntityTables() {
- $metadatas = $this->allMetadata();
- $tables = array();
- foreach($metadatas as $metadata) {
- try {
- $tables[$metadata->table['name']]['name'] = $metadata->table['name'];
- if($this->tableExist($metadata->table['name'])) {
- $tables[$metadata->table['name']]['exist'] = true;
- } else {
- $this->tool()->createSchema(array($metadata));
- $tables[$metadata->table['name']]['create'] = true;
- }
- } catch (\Doctrine\ORM\Tools\ToolsException $exc) {
- $tables[$metadata->table['name']]['error'] = $exc;
- $tables[$metadata->table['name']]['create'] = false;
- }
- }
- return $tables;
- }
- /** SetupController */
- /**
- * @Route("/setup.{_format}", requirements={"_format": "html|xml|json"}, name="index")
- */
- public function index()
- {
- /** Проверка, можно ли получить доступ к странице. */
- if($this->config->get('setup.complete') == true) {
- if($this->auth->getAdmin() == false) {
- return $this->response->PermissionDenied();
- }
- }
- /** Соединение. */
- $database = array();
- $database['name'] = $this->database->name();
- $database['connect'] = $this->database->connect();
- $database['isConnected'] = $this->database->isConnected();
- if($database['isConnected'] == true) {
- $database['name'] = $this->database->name();
- $databases = $this->database->listDatabases();
- if(in_array($database['name'], $databases)) {
- $database['exist'] = true;
- } else {
- $database['exist'] = false;
- }
- }
- /** В том случае, если попытка соединения не удалась. */
- if($database['isConnected'] == false or $database['exist'] == false) {
- $this->database->create();
- $database['connect'] = $this->database->connect();
- $database['isConnected'] = $this->database->isConnected();
- if($database['isConnected'] == true) {
- $database['create'] = true;
- $databases = $this->database->listDatabases();
- if(in_array($database['name'], $databases)) {
- $database['exist'] = true;
- $this->config->set('database.create.date', gmdate("Y/m/d H:i:s"));
- $this->config->save();
- } else {
- $database['exist'] = false;
- }
- } else {
- $database['error'] = $database['connect'];
- }
- }
- /** Создание таблиц базы данных, если не существуют. */
- if($database['isConnected'] == true) {
- $tables = $this->database->createEntityTables();
- } else {
- $tables = false;
- }
- /** Проверка пароля администратора. */
- if(isset($_ENV['ADMIN_PASSWORD']) and $_ENV['ADMIN_PASSWORD'] != '') {
- $admin = true;
- } else {
- $admin = false;
- }
- /** Проверка токена, если нужно. */
- if($this->request->isMethod('post') == true and $this->config->get('csrf') == true) {
- if(!isset($_POST['token'])) {
- return $this->response->error($this->translator->trans('Нету токена.'));
- }
- if (!$this->isCsrfTokenValid('token', $_POST['token'])) {
- return $this->response->error($this->translator->trans('Неправильный токен.'));
- }
- }
- /** Определение хэша пароля, если нужно. */
- if(isset($_POST['password'])) {
- $password = $this->password->hash($_POST['password']);
- } else {
- $password = false;
- }
- /** Отображение страницы. */
- return $this->response->ok('setup', 'index', array('database' => $database, 'adminOn' => $admin, 'password' => $password, 'tables' => $tables));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement