Beispiel #1
0
 /**
  * メッセージ保存用テーブルのフィールドを最適化する
  * 初回の場合、id/created/modifiedを追加する
  * 2回目以降の場合は、最後のカラムに追加する
  * 
  * @param array $dbConfig
  * @param int $mailContentId
  * @return boolean
  * @access public
  */
 function construction($mailContentId)
 {
     App::import('Model', 'Mail.MailField');
     App::import('Model', 'Mail.MailContent');
     $mailFieldClass = new MailField();
     $mailContentClass = new MailContent();
     // フィールドリストを取得
     $mailFields = $mailFieldClass->findAll(array('MailField.mail_content_id' => $mailContentId));
     // コンテンツ名を取得
     $contentName = $mailContentClass->field('name', array('MailContent.id' => $mailContentId));
     if (!$this->tableExists($this->getTablePrefixByContentName($contentName) . 'messages')) {
         /* 初回の場合 */
         $this->createTable($contentName);
     } else {
         /* 2回目以降の場合 */
         $this->tablePrefix = $this->getTablePrefixByContentName($contentName);
         $this->_schema = null;
         $this->cacheSources = false;
         $schema = $this->schema();
         $messageFields = array_keys($schema);
         foreach ($mailFields as $mailField) {
             if (!in_array($mailField['MailField']['field_name'], $messageFields)) {
                 $this->addField($contentName, $mailField['MailField']['field_name']);
             }
         }
     }
     return true;
 }