Skip to content

Commit

Permalink
Merge pull request #44 from s-nakajima/master
Browse files Browse the repository at this point in the history
アップグレードした際にプライベートが英語が出る
  • Loading branch information
s-nakajima committed Jan 20, 2017
2 parents 6e9ee18 + 41969b0 commit 91afde2
Showing 1 changed file with 74 additions and 3 deletions.
77 changes: 74 additions & 3 deletions Model/Behavior/SaveM17nBehavior.php
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ protected function _copyOrignalDataByPlugin(Model $model, $plugin, $languageId)
if (! $this->_executeOriginalCopy($TargetModel, $languageId, $plugin['Plugin']['type'])) {
return false;
}
if (! $this->_updateOriginalCopy($TargetModel)) {
return false;
}
}

return true;
Expand Down Expand Up @@ -171,28 +174,68 @@ protected function _executeOriginalCopy(Model $TargetModel, $langId, $pluguinTyp
$sql .= $this->_getSqlWhere($TargetModel, $pluguinType);

CakeLog::info(
'[original copy] SystemPlugin ' .
'[original copy ' . $TargetModel->plugin . '] ' .
$TargetModel->name . ' execute'
);

//CakeLog::debug(var_export($sql, true));
$TargetModel->query($sql);

CakeLog::info(
'[original copy plguin_type:' . $pluguinType . ']' .
'[original copy ' . $TargetModel->plugin . '] ' .
$TargetModel->name . ' success rows=' . $TargetModel->getAffectedRows()
);

return true;
}

/**
* 他言語データ更新処理
*
* @param Model $TargetModel 実行するModel
* @return bool
* @throws InternalErrorException
*/
protected function _updateOriginalCopy(Model $TargetModel) {
if ($TargetModel->name === 'PagesLanguage') {
CakeLog::info(
'[original copy ' . $TargetModel->plugin . '] ' .
$TargetModel->name . ' update'
);
$update = array(
'is_translation' => true
);
$conditions = array(
'OR' => array(
'page_id' => $this->_getPageIdTop($TargetModel),
'name !=' => ''
),
'is_translation' => false
);
if (! $TargetModel->updateAll($update, $conditions)) {
return false;
}

CakeLog::info(
'[original copy ' . $TargetModel->plugin . '] ' .
$TargetModel->name . ' success'
);
}

return true;
}

/**
* フィールドキーを取得する
*
* @param Model $TargetModel 実行するModel
* @return string|bool
*/
protected function _getFieldKey(Model $TargetModel) {
if ($TargetModel->name === 'PagesLanguage') {
return $TargetModel->getM17nSettings('keyField');
}

if (! $TargetModel->hasField('language_id') ||
! $TargetModel->hasField('is_origin') ||
! $TargetModel->hasField('is_translation') ||
Expand Down Expand Up @@ -245,7 +288,12 @@ protected function _getSqlWhere(Model $TargetModel, $pluguinType) {
' AND Origin.language_id IN (' . implode(', ', $this->_enableLangs) . ')' .
' AND Target.id IS NULL';

if ($TargetModel->hasField('is_lastest')) {
if ($TargetModel->name === 'PagesLanguage') {
$pageIds = $this->_getPageIdTop($TargetModel);
$sql .=
' AND (Origin.page_id IN (' . implode(', ', $pageIds) . ')' .
' OR Origin.name = \'\')';
} elseif ($TargetModel->hasField('is_lastest')) {
$sql .=
' AND Origin.is_translation = 1' .
' AND Origin.is_lastest = 1';
Expand All @@ -254,9 +302,28 @@ protected function _getSqlWhere(Model $TargetModel, $pluguinType) {
$sql .=
' AND Origin.is_translation = 1';
}

return $sql;
}

/**
* page_id_topを取得する
*
* @param Model $TargetModel 実行するModel
* @return array
*/
protected function _getPageIdTop(Model $TargetModel) {
$TargetModel->loadModels(['Room' => 'Rooms.Room']);
$pageIds = $TargetModel->Room->find('list', array(
'recursive' => -1,
'fields' => array('Room.page_id_top', 'Room.page_id_top'),
'conditions' => array(
'Room.page_id_top NOT' => null,
),
));
return $pageIds;
}

/**
* オリジナルのコピーをするかどうか
*
Expand All @@ -267,6 +334,10 @@ protected function _isOriginalCopy(Model $TargetModel) {
if (! in_array($TargetModel->tablePrefix . $TargetModel->useTable, $this->_tables)) {
return false;
}

if ($TargetModel->name === 'PagesLanguage') {
return true;
}
if (! $TargetModel->hasField('language_id') ||
! $TargetModel->hasField('is_origin') ||
! $TargetModel->hasField('is_translation') ||
Expand Down

0 comments on commit 91afde2

Please sign in to comment.