[-] FO : Fixed bug #PSCFI-1373 - Bug with the update function when an id_lang was passed to the construct function.
This commit is contained in:
+34
-20
@@ -30,6 +30,9 @@ abstract class ObjectModelCore
|
|||||||
/** @var integer Object id */
|
/** @var integer Object id */
|
||||||
public $id;
|
public $id;
|
||||||
|
|
||||||
|
/** @var integer lang id */
|
||||||
|
protected $id_lang = NULL;
|
||||||
|
|
||||||
/** @var string SQL Table name */
|
/** @var string SQL Table name */
|
||||||
protected $table = NULL;
|
protected $table = NULL;
|
||||||
|
|
||||||
@@ -99,6 +102,11 @@ abstract class ObjectModelCore
|
|||||||
*/
|
*/
|
||||||
public function __construct($id = NULL, $id_lang = NULL)
|
public function __construct($id = NULL, $id_lang = NULL)
|
||||||
{
|
{
|
||||||
|
if ($id_lang != NULL && Validate::isLoadedObject(new Language($id_lang)))
|
||||||
|
$this->id_lang = $id_lang;
|
||||||
|
elseif ($id_lang != NULL)
|
||||||
|
die(Tools::displayError());
|
||||||
|
|
||||||
/* Connect to database and check SQL table/identifier */
|
/* Connect to database and check SQL table/identifier */
|
||||||
if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table))
|
if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table))
|
||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
@@ -329,31 +337,37 @@ abstract class ObjectModelCore
|
|||||||
die(Tools::displayError());
|
die(Tools::displayError());
|
||||||
|
|
||||||
$fields = array();
|
$fields = array();
|
||||||
$languages = Language::getLanguages();
|
|
||||||
$defaultLanguage = Configuration::get('PS_LANG_DEFAULT');
|
|
||||||
foreach ($languages as $language)
|
|
||||||
{
|
|
||||||
$fields[$language['id_lang']]['id_lang'] = $language['id_lang'];
|
|
||||||
$fields[$language['id_lang']][$this->identifier] = (int)($this->id);
|
|
||||||
foreach ($fieldsArray as $field)
|
|
||||||
{
|
|
||||||
/* Check fields validity */
|
|
||||||
if (!Validate::isTableOrIdentifier($field))
|
|
||||||
die(Tools::displayError());
|
|
||||||
|
|
||||||
/* Copy the field, or the default language field if it's both required and empty */
|
if($this->id_lang == NULL)
|
||||||
if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']]))
|
foreach (Language::getLanguages() as $language)
|
||||||
$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]);
|
$this->makeTranslationFields($fields, $fieldsArray, $language['id_lang']);
|
||||||
elseif (in_array($field, $this->fieldsRequiredLang))
|
else
|
||||||
$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]);
|
$this->makeTranslationFields($fields, $fieldsArray, $this->id_lang);
|
||||||
else
|
|
||||||
$fields[$language['id_lang']][$field] = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function makeTranslationFields(&$fields, &$fieldsArray, $id_language)
|
||||||
|
{
|
||||||
|
$fields[$id_language]['id_lang'] = $id_language;
|
||||||
|
$fields[$id_language][$this->identifier] = (int)($this->id);
|
||||||
|
foreach ($fieldsArray as $field)
|
||||||
|
{
|
||||||
|
/* Check fields validity */
|
||||||
|
if (!Validate::isTableOrIdentifier($field))
|
||||||
|
die(Tools::displayError());
|
||||||
|
|
||||||
|
/* Copy the field, or the default language field if it's both required and empty */
|
||||||
|
if ((!$this->id_lang AND isset($this->{$field}[$id_language]) AND !empty($this->{$field}[$id_language]))
|
||||||
|
OR ($this->id_lang AND isset($this->$field) AND !empty($this->$field)))
|
||||||
|
$fields[$id_language][$field] = $this->id_lang ? pSQL($this->$field) : pSQL($this->{$field}[$id_language]);
|
||||||
|
elseif (in_array($field, $this->fieldsRequiredLang))
|
||||||
|
$fields[$id_language][$field] = $this->id_lang ? pSQL($this->$field) : pSQL($this->{$field}[Configuration::get('PS_LANG_DEFAULT')]);
|
||||||
|
else
|
||||||
|
$fields[$id_language][$field] = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for fields validity before database interaction
|
* Check for fields validity before database interaction
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user