Commit 1f371729816eec7dbe784f2343840b7d9ee81ec9

Authored by rob
1 parent 7e7d81ac

Added functionality to recurse down folder tree and update child paths


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@1097 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 29 additions and 5 deletions
lib/foldermanagement/Folder.inc
... ... @@ -257,21 +257,34 @@ class Folder {
257 257 *
258 258 * @return boolean true on successful update, false otherwise and set $_SESSION["errorMessage"]
259 259 */
260   - function update() {
  260 + function update($bPathChange) {
261 261 global $default, $lang_err_database, $lang_err_object_key;
262 262 //can only update the object if it has already been stored
263 263 if ($this->iId >= 0) {
264 264 $sql = $default->db;
265   - $result = $sql->query("UPDATE " . $default->owl_folders_table . " SET " .
  265 + $sQuery = "UPDATE " . $default->owl_folders_table . " SET " .
266 266 "name = '" . addslashes($this->sName) . "', " .
267 267 "description = '" . addslashes($this->sDescription) . "', " .
268 268 "parent_id = $this->iParentID, " .
269 269 "creator_id = $this->iCreatorID, " .
270 270 "document_type_id = $this->iDocumentTypeID, " .
271   - "unit_id = $this->iUnitID, " .
272   - "is_public = " . ($this->bIsPublic ? 1 : 0) . " " .
273   - "WHERE id = " . $this->iId);
  271 + "unit_id = $this->iUnitID, ";
  272 + if ($bPathChange) {
  273 + $sFullPath = $this->generateFullFolderPath($this->iParentID);
  274 + $this->sFullPath = substr($sFullPath, 1, strlen($sFullPath));
  275 + $sParentFolderIDs = $this->generateParentFolderIDS($this->iParentID);
  276 + $this->sParentFolderIDs = substr($sParentFolderIDs, 1, strlen($sParentFolderIDs));
  277 + $sQuery .= "parent_folder_ids = '" . addslashes($this->sParentFolderIDs) . "'," .
  278 + "full_path = '" . addslashes($this->sFullPath) . "', ";
  279 + }
  280 + $sQuery .= "is_public = " . ($this->bIsPublic ? 1 : 0) . " " .
  281 + "WHERE id = " . $this->iId;
  282 + $result = $sql->query($sQuery);
274 283 if ($result) {
  284 + if ($bPathChange) {
  285 + //must update all the children paths
  286 + $this->updateChildrenPaths($this->iId, $sql);
  287 + }
275 288 return true;
276 289 }
277 290 $_SESSION["errorMessage"] = $lang_err_database;
... ... @@ -280,6 +293,17 @@ class Folder {
280 293 $_SESSION["errorMessage"] = $lang_err_object_key;
281 294 }
282 295  
  296 + function updateChildrenPaths($iID, $sql) {
  297 + global $default;
  298 + $sql->query("SELECT id from $default->owl_folders_table WHERE parent_id = $iID");
  299 + while ($sql->next_record()) {
  300 + $oFolder = Folder::get($sql->f("id"));
  301 + $oFolder->update(true);
  302 + $this->updateChildrenPaths($sql->f("id"), $sql);
  303 + }
  304 + return;
  305 + }
  306 +
283 307  
284 308 /**
285 309 * Delete the current object from the database
... ...