Beispiel #1
0
 public static function getInstance()
 {
     if (self::$instance === null) {
         self::$instance = new MSDB();
     }
     return self::$instance;
 }
Beispiel #2
0
 public function getDB()
 {
     return MSDB::getInstance();
 }
Beispiel #3
0
 /**
  * インストール画面
  */
 public function install()
 {
     $this->layout = 'default_nomenu.html';
     $request = Request::getInstance();
     $state = $request->get('state', 0);
     switch ($state) {
         default:
         case 0:
             // 環境チェック確認
             return;
         case 1:
             // フォルダの作成
             !file_exists(Config::get('TEMP_DIR') . 'blog_template') && mkdir(Config::get('TEMP_DIR') . 'blog_template', 0777, true);
             !file_exists(Config::get('TEMP_DIR') . 'debug_html') && mkdir(Config::get('TEMP_DIR') . 'debug_html', 0777, true);
             !file_exists(Config::get('TEMP_DIR') . 'log') && mkdir(Config::get('TEMP_DIR') . 'log', 0777, true);
             $msdb = MSDB::getInstance();
             try {
                 // DB接続確認(DATABASEの存在判定含む)
                 $msdb->connect();
             } catch (Exception $e) {
                 // データベースの作成
                 $msdb->close();
                 $msdb->connect(false, false);
                 $sql = 'CREATE DATABASE IF NOT EXISTS ' . DB_DATABASE . ' CHARACTER SET ' . DB_CHARSET;
                 $table = $msdb->execute($sql);
                 $msdb->close();
             }
             // テーブルの存在チェック
             $sql = "SHOW TABLES LIKE 'users'";
             $table = MSDB::getInstance()->find($sql);
             if (count($table)) {
                 // 既にDB登録完了
                 $this->redirect(Config::get('BASE_DIRECTORY') . 'install.php?state=2');
             }
             $sql_path = Config::get('CONFIG_DIR') . 'blog.sql';
             $sql = file_get_contents($sql_path);
             if (DB_CHARSET != 'UTF8MB4') {
                 $sql = str_replace('utf8mb4', strtolower(DB_CHARSET), $sql);
             }
             MSDB::getInstance()->multiExecute($sql);
             // 初期公式プラグインを追加
             Model::load('Plugins')->addInitialOfficialPlugin();
             $this->redirect(Config::get('BASE_DIRECTORY') . 'install.php?state=2');
         case 2:
             // 管理者登録
             if (Model::load('Users')->isExistAdmin()) {
                 // 既にユーザー登録完了
                 $this->redirect(Config::get('BASE_DIRECTORY') . 'install.php?state=3');
             }
             break;
         case 3:
             // 完了画面
             return 'common/installed.html';
     }
     // 初期表示時
     if (!$request->get('user')) {
         return 'common/install_user.html';
     }
     $users_model = Model::load('Users');
     $blogs_model = Model::load('Blogs');
     // ユーザーとブログの新規登録処理
     $errors = array();
     $errors['user'] = $users_model->registerValidate($request->get('user'), $user_data, array('login_id', 'password'));
     $errors['blog'] = $blogs_model->validate($request->get('blog'), $blog_data, array('id', 'name', 'nickname'));
     if (empty($errors['user']) && empty($errors['blog'])) {
         $user_data['type'] = Config::get('USER.TYPE.ADMIN');
         $blog_data['user_id'] = $users_model->insert($user_data);
         if ($blog_data['user_id'] && ($blog_id = $blogs_model->insert($blog_data))) {
             $this->setInfoMessage(__('User registration is completed'));
             $this->redirect(Config::get('BASE_DIRECTORY') . 'install.php?state=3');
         } else {
             // ブログ作成失敗時には登録したユーザーを削除
             $users_model->deleteById($blog_data['user_id']);
         }
         $this->setErrorMessage(__('I failed to register'));
         return 'common/install_user.html';
     }
     // エラー情報の設定
     $this->setErrorMessage(__('Input error exists'));
     $this->set('errors', $errors);
     return 'common/install_user.html';
 }