flash() public static method

public static flash ( )
Beispiel #1
0
 /**
  * set up
  *
  * @return void
  */
 public function setUp()
 {
     parent::setUp();
     $this->Content = ClassRegistry::init('Content');
     BcSite::flash();
 }
 /**
  * 初期データを読み込む
  * 
  * @param string $dbDataPattern 初期データのパターン	
  * @param string $currentTheme テーマ名
  * @return bool
  */
 protected function _load_default_data_pattern($dbDataPattern, $currentTheme = '')
 {
     list($theme, $pattern) = explode('.', $dbDataPattern);
     if (!$this->BcManager->checkDefaultDataPattern($pattern, $theme)) {
         $this->setMessage('初期データのバージョンが違うか、初期データの構造が壊れています。', true);
         return false;
     }
     $excludes = array('plugins', 'dblogs', 'users');
     $User = ClassRegistry::init('User');
     /* データを削除する */
     $this->BcManager->resetAllTables(null, $excludes);
     $result = true;
     /* コアデータ */
     if (!$this->BcManager->loadDefaultDataPattern('default', null, $pattern, $theme, 'core', $excludes)) {
         $result = false;
         $this->log($dbDataPattern . " の初期データのロードに失敗しました。");
     }
     /* プラグインデータ */
     $corePlugins = Configure::read('BcApp.corePlugins');
     $plugins = array_merge($corePlugins, BcUtil::getCurrentThemesPlugins());
     foreach ($plugins as $plugin) {
         $this->BcManager->loadDefaultDataPattern('default', null, $pattern, $theme, $plugin, $excludes);
     }
     if (!$result) {
         /* 指定したデータセットでの読み込みに失敗した場合、コアのデータ読み込みを試みる */
         if (!$this->BcManager->loadDefaultDataPattern('default', null, 'default', 'core', 'core', $excludes)) {
             $this->log("コアの初期データのロードに失敗しました。");
             $result = false;
         }
         foreach ($corePlugins as $corePlugin) {
             if (!$this->BcManager->loadDefaultDataPattern('default', null, 'default', 'core', $corePlugin, $excludes)) {
                 $this->log("コアのプラグインの初期データのロードに失敗しました。");
                 $result = false;
             }
         }
         if ($result) {
             $this->setMessage('初期データの読み込みに失敗しましたので baserCMSコアの初期データを読み込みました。', true);
         } else {
             $this->setMessage('初期データの読み込みに失敗しました。データが不完全な状態です。正常に動作しない可能性があります。', true);
         }
     }
     clearAllCache();
     // メール受信テーブルの作成
     App::uses('MailMessage', 'Mail.Model');
     $MailMessage = new MailMessage();
     if (!$MailMessage->reconstructionAll()) {
         $this->log('メールプラグインのメール受信用テーブルの生成に失敗しました。');
         $result = false;
     }
     clearAllCache();
     ClassRegistry::flush();
     BcSite::flash();
     if ($currentTheme) {
         $siteConfigs = array('SiteConfig' => array('theme' => $currentTheme));
         $this->SiteConfig->saveKeyValue($siteConfigs);
     }
     if (!$this->Page->createAllPageTemplate()) {
         $result = false;
         $this->log('初期データの読み込み中にページテンプレートの生成に失敗しました。' . '「Pages」フォルダに書き込み権限が付与されていない可能性があります。' . '権限設定後、テーマの適用をやり直すか、表示できないページについて固定ページ管理より更新処理を行ってください。');
     }
     // システムデータの初期化
     // TODO $this->BcManager->initSystemData() は、$this->Page->createAllPageTemplate() の
     // 後に呼出さないと $this->Page の実体が何故か AppModel にすりかわってしまい、
     // createAllPageTemplate メソッドが呼び出せないので注意
     if (!$this->BcManager->initSystemData(null, array('excludeUsers' => true))) {
         $result = false;
         $this->log('システムデータの初期化に失敗しました。');
     }
     // ユーザーデータの初期化
     $UserGroup = ClassRegistry::init('UserGroup');
     $adminGroupId = $UserGroup->field('id', array('UserGroup.name' => 'admins'));
     $users = $User->find('all', array('recursive' => -1));
     foreach ($users as $user) {
         $user['User']['user_group_id'] = $adminGroupId;
         unset($user['User']['password']);
         if (!$User->save($user)) {
             $result = false;
             $this->log('ユーザーデータの初期化に失敗しました。手動で各ユーザーのユーザーグループの設定を行なってください。');
         }
         if (!$User->applyDefaultFavorites($user['User']['id'], $user['User']['user_group_id'])) {
             $result = false;
             $this->log('ユーザーのよく使う項目データの初期化に失敗しました。手動で各ユーザーのよく使う項目の設定を行なってください。');
         }
     }
     $Db = ConnectionManager::getDataSource('default');
     if ($Db->config['datasource'] == 'Database/BcPostgres') {
         $Db->updateSequence();
     }
     // システム基本設定の更新
     $siteConfigs = array('SiteConfig' => array('email' => $this->siteConfigs['email'], 'google_analytics_id' => $this->siteConfigs['google_analytics_id'], 'first_access' => null, 'version' => $this->siteConfigs['version']));
     $this->SiteConfig->saveKeyValue($siteConfigs);
     return $result;
 }
 /**
  * データメンテナンス
  *
  * @param string $mode
  * @return void
  */
 public function admin_maintenance($mode = '')
 {
     switch ($mode) {
         case 'backup':
             set_time_limit(0);
             $this->_backupDb();
             break;
         case 'restore':
             set_time_limit(0);
             if (!$this->request->data) {
                 $this->notFound();
             }
             $messages = array();
             if ($this->_restoreDb($this->request->data)) {
                 $messages[] = 'データの復元が完了しました。';
                 $error = false;
             } else {
                 $messages[] = 'データの復元に失敗しました。ログの確認を行なって下さい。';
                 $error = true;
             }
             // Pageモデルがレストア処理でAppModelで初期化されClassRegistryにセットされている為
             ClassRegistry::flush();
             BcSite::flash();
             if (!$error && !$this->Page->createAllPageTemplate()) {
                 $messages[] = 'ページテンプレートの生成に失敗しました。<br />表示できないページはページ管理より更新処理を行ってください。';
             }
             if ($messages) {
                 $this->setMessage(implode('<br />', $messages), $error);
             }
             clearAllCache();
             $this->redirect(array('action' => 'maintenance'));
             break;
     }
     $this->pageTitle = 'データメンテナンス';
     $this->help = 'tools_maintenance';
 }
 /**
  * set up
  *
  * @return void
  */
 public function setUp()
 {
     parent::setUp();
     $this->BcContentsRoute = new BcContentsRoute('/', [], []);
     BcSite::flash();
 }
 /**
  * アップデートを実行する
  *
  * アップデートスクリプトを読み込む為、
  * よく使われるような変数名はダブらないように
  * アンダースコアを二つつける
  *
  * @param string $targetVersion
  * @param string $sourceVersion
  * @param string $plugin
  * @return boolean
  */
 protected function _update($plugin = '')
 {
     $targetVersion = $this->getBaserVersion($plugin);
     $sourceVersion = $this->getSiteVersion($plugin);
     $path = $this->_getUpdateFolder($plugin);
     $updaters = $this->_getUpdaters($plugin);
     if (!$plugin) {
         $name = 'baserCMSコア';
     } else {
         $name = $this->Plugin->field('title', array('name' => $plugin)) . 'プラグイン';
     }
     $this->setUpdateLog($name . ' ' . $targetVersion . ' へのアップデートを開始します。');
     if ($updaters) {
         asort($updaters);
         foreach ($updaters as $version => $updateVerPoint) {
             $this->setUpdateLog('アップデートプログラム ' . $version . ' を実行します。');
             ClassRegistry::flush();
             BcSite::flash();
             $this->_execScript($plugin, $version);
         }
     }
     ClassRegistry::flush();
     BcSite::flash();
     if (!isset($updaters['test'])) {
         if (!$plugin) {
             /* サイト基本設定にバージョンを保存 */
             $SiteConfigClass = ClassRegistry::init('SiteConfig');
             $SiteConfigClass->cacheQueries = false;
             $data['SiteConfig']['version'] = $targetVersion;
             $result = $SiteConfigClass->saveKeyValue($data);
         } else {
             // 1.6.7 では plugins テーブルの構造が変わったので、find でデータが取得できないのでスキップする
             // DB の再接続を行えば取得できるかも
             if ($targetVersion == '1.6.7') {
                 $result = true;
             } else {
                 $data = $this->Plugin->find('first', array('conditions' => array('name' => $plugin)));
                 $data['Plugin']['version'] = $targetVersion;
                 $result = $this->Plugin->save($data);
             }
         }
     } else {
         $result = true;
     }
     $this->BcManager->deployAdminAssets();
     $this->setUpdateLog($name . ' ' . $targetVersion . ' へのアップデートが完了しました。');
     return $result;
 }
Beispiel #6
0
 /**
  * フィールド名を変更する
  *
  * @param array	$options [ new / old / table ]
  * @param array $column
  * @return boolean
  */
 public function renameField($options)
 {
     extract($options);
     if (!isset($new) || !isset($old)) {
         return false;
     }
     if (!isset($table)) {
         $table = $this->useTable;
     }
     $this->_schema = null;
     $db = ConnectionManager::getDataSource($this->useDbConfig);
     $options = ['new' => $new, 'old' => $old, 'table' => $table];
     $ret = $db->renameColumn($options);
     $this->deleteModelCache();
     ClassRegistry::flush();
     BcSite::flash();
     return $ret;
 }