Skip to content

Commit

Permalink
joinType moved from $settings to $runtime
Browse files Browse the repository at this point in the history
  • Loading branch information
bancer committed Jun 26, 2017
1 parent 0bfb19f commit 5b37d42
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 28 deletions.
48 changes: 24 additions & 24 deletions lib/Cake/Model/Behavior/TranslateBehavior.php
Expand Up @@ -61,11 +61,11 @@ class TranslateBehavior extends ModelBehavior {
* bindTranslation() method
*
* By default INNER joins are used to fetch translations. In order to use
* other join types $config should contain 'join_type' key:
* other join types $config should contain 'joinType' key:
* ```
* array(
* 'fields' => array('field_one', 'field_two' => 'FieldAssoc', 'field_three'),
* 'join_type' => 'LEFT',
* 'joinType' => 'LEFT',
* )
* ```
* In a model it may be configured this way:
Expand All @@ -74,7 +74,7 @@ class TranslateBehavior extends ModelBehavior {
* 'Translate' => array(
* 'content',
* 'title',
* 'join_type' => 'LEFT',
* 'joinType' => 'LEFT',
* ),
* );
* ```
Expand All @@ -93,16 +93,16 @@ public function setup(Model $Model, $config = array()) {
return false;
}

$this->settings[$Model->alias] = array(
$this->settings[$Model->alias] = array();
$this->runtime[$Model->alias] = array(
'fields' => array(),
'join_type' => 'INNER',
'joinType' => 'INNER',
);
$this->runtime[$Model->alias] = array('fields' => array());
$this->translateModel($Model);
if (isset($config['join_type'])) {
$this->settings[$Model->alias]['join_type'] = $config['join_type'];
unset($config['join_type']);
if (isset($config['joinType'])) {
$this->runtime[$Model->alias]['joinType'] = $config['joinType'];
unset($config['joinType']);
}
$this->translateModel($Model);
return $this->bindTranslation($Model, $config, false);
}

Expand Down Expand Up @@ -150,7 +150,7 @@ public function beforeFind(Model $Model, $query) {
if (is_string($query['fields']) && $query['fields'] === "COUNT(*) AS {$db->name('count')}") {
$query['fields'] = "COUNT(DISTINCT({$db->name($Model->escapeField())})) {$db->alias}count";
$query['joins'][] = array(
'type' => $this->settings[$Model->alias]['join_type'],
'type' => $this->runtime[$Model->alias]['joinType'],
'alias' => $RuntimeModel->alias,
'table' => $joinTable,
'conditions' => array(
Expand All @@ -170,7 +170,7 @@ public function beforeFind(Model $Model, $query) {
}

$fields = array_merge(
$this->settings[$Model->alias]['fields'],
$this->settings[$Model->alias],
$this->runtime[$Model->alias]['fields']
);
$addFields = array();
Expand Down Expand Up @@ -226,7 +226,7 @@ protected function _checkConditions(Model $Model, $query) {
return $conditionFields;
}
foreach ($query['conditions'] as $col => $val) {
foreach ($this->settings[$Model->alias]['fields'] as $field => $assoc) {
foreach ($this->settings[$Model->alias] as $field => $assoc) {
if (is_numeric($field)) {
$field = $assoc;
}
Expand Down Expand Up @@ -280,7 +280,7 @@ protected function _addJoin(Model $Model, $query, $field, $aliasField, $locale)
$query['fields'][] = $aliasVirtual;
}
$query['joins'][] = array(
'type' => $this->settings[$Model->alias]['join_type'],
'type' => $this->runtime[$Model->alias]['joinType'],
'alias' => $alias,
'table' => $joinTable,
'conditions' => array(
Expand Down Expand Up @@ -400,7 +400,7 @@ protected function _setRuntimeData(Model $Model) {
if (empty($locale)) {
return true;
}
$fields = array_merge($this->settings[$Model->alias]['fields'], $this->runtime[$Model->alias]['fields']);
$fields = array_merge($this->settings[$Model->alias], $this->runtime[$Model->alias]['fields']);
$tempData = array();

foreach ($fields as $key => $value) {
Expand Down Expand Up @@ -514,7 +514,7 @@ public function afterSave(Model $Model, $created, $options = array()) {
* @return array The fully populated data to save.
*/
protected function _prepareTranslations(Model $Model, $data) {
$fields = array_merge($this->settings[$Model->alias]['fields'], $this->runtime[$Model->alias]['fields']);
$fields = array_merge($this->settings[$Model->alias], $this->runtime[$Model->alias]['fields']);
$locales = array();
foreach ($data as $key => $value) {
if (is_array($value)) {
Expand Down Expand Up @@ -638,14 +638,14 @@ public function bindTranslation(Model $Model, $fields, $reset = true) {
if ($reset) {
$this->runtime[$Model->alias]['fields'][] = $field;
} else {
$this->settings[$Model->alias]['fields'][] = $field;
$this->settings[$Model->alias][] = $field;
}
} else {
if ($reset) {
$this->runtime[$Model->alias]['fields'][$field] = $association;
$this->runtime[$Model->alias]['restoreFields'][] = $field;
} else {
$this->settings[$Model->alias]['fields'][$field] = $association;
$this->settings[$Model->alias][$field] = $association;
}

foreach (array('hasOne', 'hasMany', 'belongsTo', 'hasAndBelongsToMany') as $type) {
Expand Down Expand Up @@ -678,10 +678,10 @@ public function bindTranslation(Model $Model, $fields, $reset = true) {
* @return void
*/
protected function _removeField(Model $Model, $field) {
if (array_key_exists($field, $this->settings[$Model->alias]['fields'])) {
unset($this->settings[$Model->alias]['fields'][$field]);
} elseif (in_array($field, $this->settings[$Model->alias]['fields'])) {
$this->settings[$Model->alias]['fields'] = array_merge(array_diff($this->settings[$Model->alias]['fields'], array($field)));
if (array_key_exists($field, $this->settings[$Model->alias])) {
unset($this->settings[$Model->alias][$field]);
} elseif (in_array($field, $this->settings[$Model->alias])) {
$this->settings[$Model->alias] = array_merge(array_diff($this->settings[$Model->alias], array($field)));
}

if (array_key_exists($field, $this->runtime[$Model->alias]['fields'])) {
Expand All @@ -701,11 +701,11 @@ protected function _removeField(Model $Model, $field) {
* @return bool
*/
public function unbindTranslation(Model $Model, $fields = null) {
if (empty($fields) && empty($this->settings[$Model->alias]['fields'])) {
if (empty($fields) && empty($this->settings[$Model->alias])) {
return false;
}
if (empty($fields)) {
return $this->unbindTranslation($Model, $this->settings[$Model->alias]['fields']);
return $this->unbindTranslation($Model, $this->settings[$Model->alias]);
}

if (is_string($fields)) {
Expand Down
6 changes: 3 additions & 3 deletions lib/Cake/Test/Case/Model/Behavior/TranslateBehaviorTest.php
Expand Up @@ -1399,15 +1399,15 @@ public function testUnbindTranslation() {
$Model->unbindTranslation();
$Model->bindTranslation(array('body', 'slug'), false);

$result = $Model->Behaviors->Translate->settings['TranslatedItem']['fields'];
$result = $Model->Behaviors->Translate->settings['TranslatedItem'];
$this->assertEquals(array('body', 'slug'), $result);

$Model->unbindTranslation(array('body'));
$result = $Model->Behaviors->Translate->settings['TranslatedItem']['fields'];
$result = $Model->Behaviors->Translate->settings['TranslatedItem'];
$this->assertNotContains('body', $result);

$Model->unbindTranslation('slug');
$result = $Model->Behaviors->Translate->settings['TranslatedItem']['fields'];
$result = $Model->Behaviors->Translate->settings['TranslatedItem'];
$this->assertNotContains('slug', $result);
}

Expand Down
2 changes: 1 addition & 1 deletion lib/Cake/Test/Case/Model/models.php
Expand Up @@ -3253,7 +3253,7 @@ class TranslatedItemLeftJoin extends TranslatedItem {
'Translate' => array(
'content',
'title',
'join_type' => 'LEFT',
'joinType' => 'LEFT',
)
);
}
Expand Down

0 comments on commit 5b37d42

Please sign in to comment.