diff --git a/ajax/projecttask.php b/ajax/projecttask.php index 753432e0331..a490de611e5 100644 --- a/ajax/projecttask.php +++ b/ajax/projecttask.php @@ -49,15 +49,13 @@ $template = new ProjectTaskTemplate(); $template->getFromDB($_POST['projecttasktemplates_id']); - if (DropdownTranslation::isDropdownTranslationActive()) { - $template->fields['description'] = DropdownTranslation::getTranslatedValue( - $template->getID(), - $template->getType(), - 'description', - $_SESSION['glpilanguage'], - $template->fields['description'] - ); - } + $template->fields['description'] = DropdownTranslation::getTranslatedValue( + $template->getID(), + $template->getType(), + 'description', + $_SESSION['glpilanguage'], + $template->fields['description'] + ); echo json_encode($template->fields); } diff --git a/ajax/solution.php b/ajax/solution.php index 87090f644a8..5a07f752e03 100644 --- a/ajax/solution.php +++ b/ajax/solution.php @@ -89,16 +89,13 @@ // Render template content using twig $template->fields['content'] = $template->getRenderedContent($parent); } else { - $content = $template->fields['content']; - if (DropdownTranslation::isDropdownTranslationActive()) { - $content = DropdownTranslation::getTranslatedValue( - $template->getID(), - $template->getType(), - 'content', - $_SESSION['glpilanguage'], - $content - ); - } + $content = DropdownTranslation::getTranslatedValue( + $template->getID(), + $template->getType(), + 'content', + $_SESSION['glpilanguage'], + $template->fields['content'] + ); $template->fields['content'] = RichText::getSafeHtml($content); } diff --git a/install/empty_data.php b/install/empty_data.php index 4964b5a2caa..95651b2e7a0 100644 --- a/install/empty_data.php +++ b/install/empty_data.php @@ -261,9 +261,6 @@ public function getEmptyData(): array 'registration_number_ssofield' => '', 'ssovariables_id' => '0', 'ssologout_url' => '', - 'translate_kb' => '0', - 'translate_dropdowns' => '0', - 'translate_reminders' => '0', 'pdffont' => 'dejavusans', 'keep_devices_when_purging_item' => '0', 'maintenance_mode' => '0', diff --git a/install/migrations/update_10.0.x_to_10.1.0/translations.php b/install/migrations/update_10.0.x_to_10.1.0/translations.php new file mode 100644 index 00000000000..5032d9eb860 --- /dev/null +++ b/install/migrations/update_10.0.x_to_10.1.0/translations.php @@ -0,0 +1,40 @@ +. + * + * --------------------------------------------------------------------- + */ + +Config::deleteConfigurationValues('core', [ + 'translate_dropdowns', + 'translate_kb', + 'translate_reminders', +]); diff --git a/src/AbstractITILChildTemplate.php b/src/AbstractITILChildTemplate.php index 90a66ad3ca4..e5a43d8e1f3 100644 --- a/src/AbstractITILChildTemplate.php +++ b/src/AbstractITILChildTemplate.php @@ -128,15 +128,13 @@ public function getRenderedContent(CommonITILObject $itil_item): string } $content = $this->fields['content']; - if (DropdownTranslation::isDropdownTranslationActive()) { - $content = DropdownTranslation::getTranslatedValue( - $this->getID(), - $this->getType(), - 'content', - $_SESSION['glpilanguage'], - $content - ); - } + $content = DropdownTranslation::getTranslatedValue( + $this->getID(), + $this->getType(), + 'content', + $_SESSION['glpilanguage'], + $content + ); $html = TemplateManager::renderContentForCommonITIL( $itil_item, diff --git a/src/CommonDBTM.php b/src/CommonDBTM.php index 56fe210726d..b6006b71475 100644 --- a/src/CommonDBTM.php +++ b/src/CommonDBTM.php @@ -1003,6 +1003,16 @@ protected function deleteChildrenAndRelationsFromDb(array $relations_classes) } } + /** + * Is translation enabled for this itemtype + * + * @return true if translation is available, false otherwise + **/ + public function maybeTranslated() + { + return false; + } + /** * Clean translations associated to a dropdown @@ -1015,7 +1025,7 @@ public function cleanTranslations() { //Do not try to clean is dropdown translation is globally off - if (DropdownTranslation::isDropdownTranslationActive()) { + if ($this->maybeTranslated()) { $translation = new DropdownTranslation(); $translation->deleteByCriteria(['itemtype' => get_class($this), 'items_id' => $this->getID() diff --git a/src/DropdownTranslation.php b/src/DropdownTranslation.php index 601d3d3f3e2..d6127dea0c2 100644 --- a/src/DropdownTranslation.php +++ b/src/DropdownTranslation.php @@ -701,6 +701,12 @@ public static function getTranslatedValue($ID, $itemtype, $field = 'name', $lang } //ID > 0 : dropdown item might be translated ! if ($ID > 0) { + $item = new $itemtype(); + $item->getFromDB($ID); + if (!$item->maybeTranslated()) { + return $value; + } + //There's at least one translation for this itemtype if (self::hasItemtypeATranslation($itemtype)) { $iterator = $DB->request([ @@ -780,23 +786,22 @@ public static function getTranslationID($ID, $itemtype, $field, $language) public static function canBeTranslated(CommonGLPI $item) { - return (self::isDropdownTranslationActive() - && (($item instanceof CommonDropdown) - && $item->maybeTranslated())); + return ($item instanceof CommonDropdown) && $item->maybeTranslated(); } /** * Is dropdown item translation functionality active * + * @deprecated 10.1.0 + * * @return true if active, false if not **/ public static function isDropdownTranslationActive() { - /** @var array $CFG_GLPI */ - global $CFG_GLPI; + Toolbox::deprecated("Dropdown translations are now always active"); - return $CFG_GLPI['translate_dropdowns']; + return true; } @@ -905,19 +910,17 @@ public static function getAvailableTranslations($language) global $DB; $tab = []; - if (self::isDropdownTranslationActive()) { - $iterator = $DB->request([ - 'SELECT' => [ - 'itemtype', - 'field' - ], - 'DISTINCT' => true, - 'FROM' => self::getTable(), - 'WHERE' => ['language' => $language] - ]); - foreach ($iterator as $data) { - $tab[$data['itemtype']][$data['field']] = $data['field']; - } + $iterator = $DB->request([ + 'SELECT' => [ + 'itemtype', + 'field' + ], + 'DISTINCT' => true, + 'FROM' => self::getTable(), + 'WHERE' => ['language' => $language] + ]); + foreach ($iterator as $data) { + $tab[$data['itemtype']][$data['field']] = $data['field']; } return $tab; } diff --git a/src/KnowbaseItem.php b/src/KnowbaseItem.php index f41ae2bce65..63c1d78425d 100644 --- a/src/KnowbaseItem.php +++ b/src/KnowbaseItem.php @@ -1571,10 +1571,7 @@ public static function getListRequest(array $params, $type = 'search') } } - if ( - KnowbaseItemTranslation::isKbTranslationActive() - && (countElementsInTable('glpi_knowbaseitemtranslations') > 0) - ) { + if (countElementsInTable('glpi_knowbaseitemtranslations') > 0) { $criteria['LEFT JOIN']['glpi_knowbaseitemtranslations'] = [ 'ON' => [ 'glpi_knowbaseitems' => 'id', @@ -1621,10 +1618,7 @@ public static function getListRequest(array $params, $type = 'search') $search_wilcard = self::computeBooleanFullTextSearch($search); $addscore = []; - if ( - KnowbaseItemTranslation::isKbTranslationActive() - && (countElementsInTable('glpi_knowbaseitemtranslations') > 0) - ) { + if (countElementsInTable('glpi_knowbaseitemtranslations') > 0) { $addscore = [ 'glpi_knowbaseitemtranslations.name', 'glpi_knowbaseitemtranslations.answer' @@ -1711,10 +1705,7 @@ public static function getListRequest(array $params, $type = 'search') ["glpi_knowbaseitems.name" => ['LIKE', Search::makeTextSearchValue($contains)]], ["glpi_knowbaseitems.answer" => ['LIKE', Search::makeTextSearchValue($contains)]] ]; - if ( - KnowbaseItemTranslation::isKbTranslationActive() - && (countElementsInTable('glpi_knowbaseitemtranslations') > 0) - ) { + if (countElementsInTable('glpi_knowbaseitemtranslations') > 0) { $ors[] = ["glpi_knowbaseitemtranslations.name" => ['LIKE', Search::makeTextSearchValue($contains)]]; $ors[] = ["glpi_knowbaseitemtranslations.answer" => ['LIKE', Search::makeTextSearchValue($contains)]]; } @@ -2210,10 +2201,7 @@ public static function showRecentPopular(string $type = "", bool $display = true $criteria['WHERE']['glpi_knowbaseitems.is_faq'] = 1; } - if ( - KnowbaseItemTranslation::isKbTranslationActive() - && (countElementsInTable('glpi_knowbaseitemtranslations') > 0) - ) { + if (countElementsInTable('glpi_knowbaseitemtranslations') > 0) { $criteria['LEFT JOIN']['glpi_knowbaseitemtranslations'] = [ 'ON' => [ 'glpi_knowbaseitems' => 'id', diff --git a/src/KnowbaseItemTranslation.php b/src/KnowbaseItemTranslation.php index 6a167eae1e8..f95ed53c4cf 100644 --- a/src/KnowbaseItemTranslation.php +++ b/src/KnowbaseItemTranslation.php @@ -372,14 +372,15 @@ public static function getTranslatedValue(KnowbaseItem $item, $field = "name") /** * Is kb item translation functionality active * + * @deprecated 10.1.0 + * * @return true if active, false if not **/ public static function isKbTranslationActive() { - /** @var array $CFG_GLPI */ - global $CFG_GLPI; + Toolbox::deprecated("KB translations are now always active"); - return $CFG_GLPI['translate_kb']; + return true; } @@ -395,8 +396,7 @@ public static function isKbTranslationActive() public static function canBeTranslated(CommonGLPI $item) { - return (self::isKbTranslationActive() - && $item instanceof KnowbaseItem); + return $item instanceof KnowbaseItem; } diff --git a/src/Reminder.php b/src/Reminder.php index d92da528f4f..bd89cd3733b 100644 --- a/src/Reminder.php +++ b/src/Reminder.php @@ -945,7 +945,7 @@ public static function showListForCentral(bool $personal = true, bool $display = // Do not force the inclusion of reminders created by the current user unset($public_criteria['WHERE']['glpi_reminders.users_id'], $public_criteria['WHERE']['OR']['glpi_reminders.users_id']); - if (ReminderTranslation::isReminderTranslationActive()) { + if (countElementsInTable('glpi_remindertranslations') > 0) { $additional_criteria = [ 'SELECT' => ["glpi_remindertranslations.name AS transname", "glpi_remindertranslations.text AS transtext"], 'LEFT JOIN' => [ diff --git a/src/ReminderTranslation.php b/src/ReminderTranslation.php index 5d830b8d81a..999e297b127 100644 --- a/src/ReminderTranslation.php +++ b/src/ReminderTranslation.php @@ -296,14 +296,15 @@ public static function getTranslatedValue(Reminder $item, $field = "name") /** * Is reminder translation functionality active * + * @deprecated 10.1.0 + * * @return boolean **/ public static function isReminderTranslationActive() { - /** @var array $CFG_GLPI */ - global $CFG_GLPI; + Toolbox::deprecated("Reminders translations are now always active"); - return $CFG_GLPI['translate_reminders']; + return true; } @@ -319,8 +320,7 @@ public static function isReminderTranslationActive() public static function canBeTranslated(CommonGLPI $item) { - return (self::isReminderTranslationActive() - && $item instanceof Reminder); + return ($item instanceof Reminder); } diff --git a/templates/pages/setup/general/general_setup.html.twig b/templates/pages/setup/general/general_setup.html.twig index ae24d0b908f..2a29737356c 100644 --- a/templates/pages/setup/general/general_setup.html.twig +++ b/templates/pages/setup/general/general_setup.html.twig @@ -105,36 +105,6 @@ -