regenerateAllCompletenameTranslationsFor() static public method

Regenerate all completename translations for an item
static public regenerateAllCompletenameTranslationsFor ( $itemtype, $items_id ) : the
$itemtype itemtype
$items_id item ID
return the value translated if a translation is available, or the same value if not
Esempio n. 1
0
 /**
  * @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);
         }
     }
 }