diff --git a/classes/CMS.php b/classes/CMS.php index 302b56b85..7fcf3a866 100644 --- a/classes/CMS.php +++ b/classes/CMS.php @@ -59,29 +59,13 @@ class CMSCore extends ObjectModel public function getTranslationsFieldsChild() { parent::validateFieldsLang(); - - $fieldsArray = array('meta_title', 'meta_description', 'meta_keywords', 'link_rewrite'); - $fields = array(); - $languages = Language::getLanguages(false); - $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); - foreach ($languages as $language) - { - $fields[$language['id_lang']]['id_lang'] = (int)($language['id_lang']); - $fields[$language['id_lang']][$this->identifier] = (int)($this->id); - $fields[$language['id_lang']]['content'] = (isset($this->content[$language['id_lang']])) ? pSQL($this->content[$language['id_lang']], true) : ''; - foreach ($fieldsArray as $field) - { - if (!Validate::isTableOrIdentifier($field)) - die(Tools::displayError()); - if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]); - elseif (in_array($field, $this->fieldsRequiredLang)) - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); - else - $fields[$language['id_lang']][$field] = ''; - } - } - return $fields; + return parent::getTranslationsFields(array( + 'meta_description', + 'meta_keywords', + 'meta_title', + 'link_rewrite', + 'content' => array('html' => true), + )); } public function add($autodate = true, $nullValues = false) diff --git a/classes/Category.php b/classes/Category.php index be15d7bd4..54bf20d6f 100644 --- a/classes/Category.php +++ b/classes/Category.php @@ -150,36 +150,15 @@ class CategoryCore extends ObjectModel */ public function getTranslationsFieldsChild() { - self::validateFieldsLang(); - - $fieldsArray = array('name', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description'); - $fields = array(); - $languages = Language::getLanguages(false); - $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); - $fields[$language['id_lang']]['id_shop'] = (int)$this->id_shop; // @todo ID shop in product ??? - $fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? addslashes($this->description[$language['id_lang']]) : ''; - foreach ($fieldsArray as $field) - { - if (!Validate::isTableOrIdentifier($field)) - die(Tools::displayError()); - - /* Check fields validity */ - if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]); - elseif (in_array($field, $this->fieldsRequiredLang)) - { - if ($this->{$field} != '') - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); - } - else - $fields[$language['id_lang']][$field] = ''; - } - } - return $fields; + parent::validateFieldsLang(); + return parent::getTranslationsFields(array( + 'name', + 'description' => array('html' => true), + 'link_rewrite', + 'meta_title', + 'meta_keywords', + 'meta_description', + )); } public function add($autodate = true, $nullValues = false) diff --git a/classes/Manufacturer.php b/classes/Manufacturer.php index 9908235ac..e77d66c1a 100644 --- a/classes/Manufacturer.php +++ b/classes/Manufacturer.php @@ -111,33 +111,14 @@ class ManufacturerCore extends ObjectModel public function getTranslationsFieldsChild() { - $fieldsArray = array('description', 'short_description', 'meta_title', 'meta_keywords', 'meta_description'); - $fields = array(); - $languages = Language::getLanguages(false); - $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); - $fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? pSQL($this->description[$language['id_lang']], true) : ''; - $fields[$language['id_lang']]['short_description'] = (isset($this->short_description[$language['id_lang']])) ? pSQL($this->short_description[$language['id_lang']], true) : ''; - - foreach ($fieldsArray as $field) - { - if (!Validate::isTableOrIdentifier($field)) - die(Tools::displayError()); - - /* Check fields validity */ - if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']], true); - elseif (in_array($field, $this->fieldsRequiredLang)) - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); - else - $fields[$language['id_lang']][$field] = ''; - - } - } - return $fields; + parent::validateFieldsLang(); + return parent::getTranslationsFields(array( + 'meta_description', + 'meta_keywords', + 'meta_title', + 'description' => array('html' => true), + 'short_description' => array('html' => true), + )); } public function delete() diff --git a/classes/ObjectModel.php b/classes/ObjectModel.php index fd6b5c4e6..a1869a3ed 100644 --- a/classes/ObjectModel.php +++ b/classes/ObjectModel.php @@ -424,20 +424,28 @@ abstract class ObjectModelCore $fields[$id_language][$this->identifier] = (int)($this->id); if ($this->id_shop AND $this->langMultiShop) $fields[$id_language]['id_shop'] = (int)$this->id_shop; - foreach ($fieldsArray as $field) + foreach ($fieldsArray as $k => $field) { + $html = false; + $fieldName = $field; + if (is_array($field)) + { + $fieldName = $k; + $html = (isset($field['html'])) ? $field['html'] : false; + } + /* Check fields validity */ - if (!Validate::isTableOrIdentifier($field)) + if (!Validate::isTableOrIdentifier($fieldName)) 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')]); + if ((!$this->id_lang AND isset($this->{$fieldName}[$id_language]) AND !empty($this->{$fieldName}[$id_language])) + OR ($this->id_lang AND isset($this->$fieldName) AND !empty($this->$fieldName))) + $fields[$id_language][$fieldName] = $this->id_lang ? pSQL($this->$fieldName, $html) : pSQL($this->{$fieldName}[$id_language], $html); + elseif (in_array($fieldName, $this->fieldsRequiredLang)) + $fields[$id_language][$fieldName] = $this->id_lang ? pSQL($this->$fieldName, $html) : pSQL($this->{$fieldName}[Configuration::get('PS_LANG_DEFAULT')], $html); else - $fields[$id_language][$field] = ''; + $fields[$id_language][$fieldName] = ''; } } diff --git a/classes/Product.php b/classes/Product.php index 3f37e41ed..b877feccf 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -391,37 +391,18 @@ class ProductCore extends ObjectModel */ public function getTranslationsFieldsChild() { - self::validateFieldsLang(); - - $fieldsArray = array('meta_description', 'meta_keywords', 'meta_title', 'link_rewrite', 'name', 'available_now', 'available_later'); - $fields = array(); - $languages = Language::getLanguages(false); - $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); - $fields[$language['id_lang']]['id_shop'] = (int)$this->id_shop; // @todo ID shop in product ??? - $fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? pSQL($this->description[$language['id_lang']], true) : ''; - $fields[$language['id_lang']]['description_short'] = (isset($this->description_short[$language['id_lang']])) ? pSQL($this->description_short[$language['id_lang']], true) : ''; - foreach ($fieldsArray as $field) - { - if (!Validate::isTableOrIdentifier($field)) - die(Tools::displayError()); - - /* Check fields validity */ - if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]); - elseif (in_array($field, $this->fieldsRequiredLang)) - { - if ($this->{$field} != '') - $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); - } - else - $fields[$language['id_lang']][$field] = ''; - } - } - return $fields; + parent::validateFieldsLang(); + return parent::getTranslationsFields(array( + 'meta_description', + 'meta_keywords', + 'meta_title', + 'link_rewrite', + 'name', + 'available_now', + 'available_later', + 'description' => array('html' => true), + 'description_short' => array('html' => true), + )); } public static function initPricesComputation($customer = NULL)