MailMessage::reconstructionAll PHP Method

reconstructionAll() public method

メール受信テーブルを全て再構築
public reconstructionAll ( ) : boolean
return boolean
    public function reconstructionAll()
    {
        // メール受信テーブルの作成
        $MailContent = ClassRegistry::init('Mail.MailContent');
        $contents = $MailContent->find('all', ['recursive' => -1]);
        $result = true;
        foreach ($contents as $content) {
            if ($this->createTable($content['MailContent']['id'])) {
                if (!$this->construction($content['MailContent']['id'])) {
                    $result = false;
                }
            } else {
                $result = false;
            }
        }
        return $result;
    }

Usage Example

 /**
  * 初期データを読み込む
  * 
  * @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;
 }
All Usage Examples Of MailMessage::reconstructionAll