Esempio n. 1
0
 public function actionSignup()
 {
     $signup = new signupForm();
     if ($signup->load(Yii::$app->request->post()) && $signup->validate()) {
         echo 'success!';
         echo '<br>' . $signup->username . "<br>";
         // выбираем шаблон БД
         $db = new \yii\db\Connection(['dsn' => 'mysql:host=localhost;dbname=it_service_template', 'username' => 'root', 'password' => '', 'charset' => 'utf8']);
         $have_db = $db->createCommand('SHOW DATABASES LIKE "my_new_db"')->queryOne();
         // проверяем таблицу accounts базы данных it_service_system на наличие аккаунта
         $account = accounts::find()->where(['name' => $signup->username])->andWhere(['email' => $signup->email])->one();
         if (!$have_db && !$account) {
             // добавляем запись в таблицу аккаунта
             $db->createCommand('CREATE DATABASE  my_new_db CHARACTER SET utf8 COLLATE utf8_general_ci')->execute();
             //TODO: копируем таблицы из it_service_template в it_service_account_{account_id}
             // Получаем список таблиц из шаблона
             $template_tables = $db->createCommand('SHOW TABLES')->query();
             // echo 'список таблиц из шаблона: <br>';
             // foreach ( $template_tables as $t_table ){
             // foreach ( $t_table as $ta ) echo $ta . '<br>';
             // }
             // подключаемся к БД аккаунта
             $db = new \yii\db\Connection(['dsn' => 'mysql:host=localhost;dbname=my_new_db', 'username' => 'root', 'password' => '', 'charset' => 'utf8']);
             // создаем таблицы в новой БД по шаблону
             foreach ($template_tables as $t_table) {
                 foreach ($t_table as $ta) {
                     $db->createCommand('CREATE TABLE ' . $ta . ' LIKE it_service_template.' . $ta)->execute();
                 }
             }
             //TODO: скопировать данные справочников из таблиц шаблонной базы
             //$template_db_cartridge_types = CartridgeType::findAll();
             // заносим аккаунт в таблицу it_service_system.accounts
             //-------------------------------------------------------------------------
         } else {
             echo "БД уже есть! : ";
             $ttt = json_encode($have_db);
             print_r($ttt . '<br>');
         }
     } else {
         return $this->render('signup', ['model' => $signup]);
     }
 }