Advertisement
Guest User

Untitled

a guest
Dec 24th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.34 KB | None | 0 0
  1. /** App\Lib\Database */
  2.  public function createEntityTables() {
  3.         $metadatas = $this->allMetadata();
  4.         $tables = array();
  5.         foreach($metadatas as $metadata) {
  6.             try {
  7.                 $tables[$metadata->table['name']]['name'] = $metadata->table['name'];
  8.                 if($this->tableExist($metadata->table['name'])) {
  9.                     $tables[$metadata->table['name']]['exist'] = true;
  10.                 } else {
  11.                     $this->tool()->createSchema(array($metadata));
  12.                     $tables[$metadata->table['name']]['create'] = true;
  13.                 }
  14.             } catch (\Doctrine\ORM\Tools\ToolsException $exc) {
  15.                 $tables[$metadata->table['name']]['error'] = $exc;
  16.                 $tables[$metadata->table['name']]['create'] = false;
  17.             }
  18.         }
  19.         return $tables;
  20.     }
  21.  
  22. /** SetupController */
  23.     /**
  24.      * @Route("/setup.{_format}", requirements={"_format": "html|xml|json"}, name="index")
  25.      */
  26.     public function index()
  27.     {
  28.         /** Проверка, можно ли получить доступ к странице. */
  29.         if($this->config->get('setup.complete') == true) {
  30.             if($this->auth->getAdmin() == false) {
  31.                 return $this->response->PermissionDenied();
  32.             }
  33.         }
  34.         /** Соединение. */
  35.         $database = array();
  36.         $database['name'] = $this->database->name();
  37.         $database['connect'] = $this->database->connect();
  38.         $database['isConnected'] = $this->database->isConnected();
  39.         if($database['isConnected'] == true) {
  40.             $database['name'] = $this->database->name();
  41.             $databases = $this->database->listDatabases();
  42.             if(in_array($database['name'], $databases)) {
  43.                 $database['exist'] = true;
  44.             } else {
  45.                 $database['exist'] = false;
  46.             }
  47.         }
  48.         /** В том случае, если попытка соединения не удалась. */
  49.         if($database['isConnected'] == false or $database['exist'] == false) {
  50.             $this->database->create();
  51.             $database['connect'] = $this->database->connect();
  52.             $database['isConnected'] = $this->database->isConnected();
  53.             if($database['isConnected'] == true) {
  54.                 $database['create'] = true;
  55.                 $databases = $this->database->listDatabases();
  56.                 if(in_array($database['name'], $databases)) {
  57.                     $database['exist'] = true;
  58.                     $this->config->set('database.create.date', gmdate("Y/m/d H:i:s"));
  59.                     $this->config->save();
  60.                 } else {
  61.                 $database['exist'] = false;
  62.                 }
  63.             } else {
  64.                 $database['error'] = $database['connect'];
  65.             }
  66.         }
  67.         /** Создание таблиц базы данных, если не существуют. */
  68.         if($database['isConnected'] == true) {
  69.             $tables = $this->database->createEntityTables();
  70.         } else {
  71.             $tables = false;
  72.         }
  73.         /** Проверка пароля администратора. */
  74.         if(isset($_ENV['ADMIN_PASSWORD']) and $_ENV['ADMIN_PASSWORD'] != '') {
  75.             $admin = true;
  76.         } else {
  77.             $admin = false;
  78.         }
  79.         /** Проверка токена, если нужно. */
  80.         if($this->request->isMethod('post') == true and $this->config->get('csrf') == true) {
  81.             if(!isset($_POST['token'])) {
  82.                 return $this->response->error($this->translator->trans('Нету токена.'));
  83.             }
  84.             if (!$this->isCsrfTokenValid('token', $_POST['token'])) {
  85.                 return $this->response->error($this->translator->trans('Неправильный токен.'));
  86.             }
  87.         }
  88.         /** Определение хэша пароля, если нужно. */
  89.         if(isset($_POST['password'])) {
  90.             $password = $this->password->hash($_POST['password']);
  91.         } else {
  92.             $password = false;
  93.         }
  94.         /** Отображение страницы. */
  95.         return $this->response->ok('setup', 'index', array('database' => $database, 'adminOn' => $admin, 'password' => $password, 'tables' => $tables));
  96.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement