Regenerate all completename translations for an item
static public regenerateAllCompletenameTranslationsFor ( $itemtype, $items_id ) : the | ||
$itemtype | itemtype | |
$items_id | item ID | |
Результат | the | value translated if a translation is available, or the same value if not |
/** * @param $ID * @param $updateName * @param $changeParent **/ function regenerateTreeUnderID($ID, $updateName, $changeParent) { global $DB; if ($updateName || $changeParent) { $currentNode = clone $this; if ($currentNode->getFromDB($ID)) { $currentNodeCompleteName = $currentNode->getField("completename"); $nextNodeLevel = $currentNode->getField("level") + 1; } else { $nextNodeLevel = 1; } $query = "SELECT `id`, `name`\n FROM `" . $this->getTable() . "`\n WHERE `" . $this->getForeignKeyField() . "` = '{$ID}'"; if (Session::haveTranslations($this->getType(), 'completename')) { DropdownTranslation::regenerateAllCompletenameTranslationsFor($this->getType(), $ID); } foreach ($DB->request($query) as $data) { $query = "UPDATE `" . $this->getTable() . "`\n SET "; $fieldsToUpdate = array(); if ($updateName || $changeParent) { if (isset($currentNodeCompleteName)) { $fieldsToUpdate[] = "`completename`='" . self::getCompleteNameFromParents($currentNodeCompleteName, addslashes($data["name"])) . "'"; } else { $fieldsToUpdate[] = "`completename`='" . addslashes($data["name"]) . "'"; } } if ($changeParent) { // We have to reset the ancestors as only these changes (ie : not the children). $fieldsToUpdate[] = "`ancestors_cache` = NULL"; // And we must update the level of the current node ... $fieldsToUpdate[] = "`level` = '{$nextNodeLevel}'"; } $query .= implode(', ', $fieldsToUpdate) . " WHERE `id`= '" . $data["id"] . "'"; $DB->query($query); // Translations : if (Session::haveTranslations($this->getType(), 'completename')) { DropdownTranslation::regenerateAllCompletenameTranslationsFor($this->getType(), $data['id']); } $this->regenerateTreeUnderID($data["id"], $updateName, $changeParent); } } }