Fix course category order.

1.9.x
Julio Montoya 10 years ago
parent f4b812aa0d
commit fbfe203906
  1. 47
      main/inc/lib/course_category.lib.php

@ -223,11 +223,13 @@ function editNode($code, $name, $canHaveCourses, $old_code)
return true; return true;
} }
/** /**
* Move a node up on display * Move a node up on display
* @param string $code * @param string $code
* @param string $tree_pos * @param int $tree_pos
* @param int $parent_id * @param string $parent_id
*
* @return bool * @return bool
*/ */
function moveNodeUp($code, $tree_pos, $parent_id) function moveNodeUp($code, $tree_pos, $parent_id)
@ -235,28 +237,47 @@ function moveNodeUp($code, $tree_pos, $parent_id)
$tbl_category = Database::get_main_table(TABLE_MAIN_CATEGORY); $tbl_category = Database::get_main_table(TABLE_MAIN_CATEGORY);
$code = Database::escape_string($code); $code = Database::escape_string($code);
$tree_pos = intval($tree_pos); $tree_pos = intval($tree_pos);
$parent_id = intval($parent_id); $parent_id = Database::escape_string($parent_id);
$parentIdCondition = " AND (parent_id IS NULL OR parent_id = '' )";
if (!empty($parent_id)) {
$parentIdCondition = " AND parent_id = '$parent_id' ";
}
$sql = "SELECT code,tree_pos $sql = "SELECT code,tree_pos
FROM $tbl_category FROM $tbl_category
WHERE parent_id " . (empty($parent_id) ? "IS NULL" : " = $parent_id") . " AND tree_pos < $tree_pos WHERE
ORDER BY tree_pos DESC LIMIT 0,1"; tree_pos < $tree_pos
$parentIdCondition
ORDER BY tree_pos DESC
LIMIT 0,1";
$result = Database::query($sql); $result = Database::query($sql);
if (!$row = Database::fetch_array($result)) { if (!$row = Database::fetch_array($result)) {
$sql = "SELECT code, tree_pos
$sql = "SELECT code,tree_pos FROM $tbl_category FROM $tbl_category
WHERE parent_id " . (empty($parent_id) ? "IS NULL" : " = $parent_id") . " AND tree_pos > $tree_pos WHERE
ORDER BY tree_pos DESC LIMIT 0,1"; tree_pos > $tree_pos
$parentIdCondition
ORDER BY tree_pos DESC
LIMIT 0,1";
$result2 = Database::query($sql); $result2 = Database::query($sql);
if (!$row2 = Database::fetch_array($result2)) { if (!$row = Database::fetch_array($result2)) {
return false; return false;
} }
} }
Database::query("UPDATE $tbl_category SET tree_pos='" . $row['tree_pos'] . "' WHERE code='$code'"); $sql = "UPDATE $tbl_category
Database::query("UPDATE $tbl_category SET tree_pos='$tree_pos' WHERE code='" . $code . "'"); SET tree_pos ='" . $row['tree_pos'] . "'
WHERE code='$code'";
Database::query($sql);
return true; $sql = "UPDATE $tbl_category
SET tree_pos = '$tree_pos'
WHERE code= '" . $row['code'] . "'";
Database::query($sql);
return true;
} }
/** /**

Loading…
Cancel
Save