Fix course cateogory order.

1.10.x
Julio Montoya 11 years ago
parent c6f1c7ff14
commit 0672f0386c
  1. 89
      main/inc/lib/course_category.lib.php

@ -60,13 +60,19 @@ function getCategories($category)
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$category = Database::escape_string($category);
$conditions = null;
$whereCondition = null;
$whereCondition = '';
if (isMultipleUrlSupport()) {
$table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE_CATEGORY);
$conditions = " INNER JOIN $table a ON (t1.id = a.course_category_id)";
$whereCondition = " AND a.access_url_id = ".api_get_current_access_url_id();
}
$parentIdCondition = " AND (t1.parent_id IS NULL OR t1.parent_id = '' )";
if (!empty($category)) {
$parentIdCondition = " AND t1.parent_id = '$category' ";
}
$sql = "SELECT
t1.name,
t1.code,
@ -76,10 +82,13 @@ function getCategories($category)
COUNT(DISTINCT t3.code) AS nbr_courses
FROM $tbl_category t1
$conditions
LEFT JOIN $tbl_category t2 ON t1.code=t2.parent_id
LEFT JOIN $tbl_course t3 ON t3.category_code=t1.code
LEFT JOIN $tbl_category t2
ON t1.code = t2.parent_id
LEFT JOIN $tbl_course t3
ON t3.category_code=t1.code
WHERE
t1.parent_id " . (empty($category) ? "IS NULL" : "='$category'") . "
1 = 1
$parentIdCondition
$whereCondition
GROUP BY t1.name,
t1.code,
@ -87,9 +96,15 @@ function getCategories($category)
t1.tree_pos,
t1.children_count
ORDER BY t1.tree_pos";
$result = Database::query($sql);
return Database::store_result($result);
$categories = Database::store_result($result);
foreach ($categories as $category) {
$category['nbr_courses'] = 1;
}
return $categories;
}
@ -107,7 +122,6 @@ function addNode($code, $name, $canHaveCourses, $parent_id)
$code = trim($code);
$name = trim($name);
$parent_id = trim($parent_id);
$canHaveCourses = $canHaveCourses;
$code = CourseManager::generate_course_code($code);
$sql = "SELECT 1 FROM $tbl_category
@ -123,7 +137,7 @@ function addNode($code, $name, $canHaveCourses, $parent_id)
$params = [
'name' => $name,
'code' => $code,
'parent_id' => empty($parent_id) ? "NULL" : $parent_id,
'parent_id' => empty($parent_id) ? '' : $parent_id,
'tree_pos' => $tree_pos,
'children_count' => 0,
'auth_course_child' => $canHaveCourses
@ -160,11 +174,13 @@ function updateParentCategoryChildrenCount($categoryId, $delta = 1)
// Now we're at the top, get back down to update each child
//$children_count = courseCategoryChildrenCount($categoryId);
if ($delta >= 0) {
$sql = "UPDATE $tbl_category SET children_count = (children_count + $delta) WHERE code = '$categoryId'";
$sql = "UPDATE $tbl_category SET children_count = (children_count + $delta)
WHERE code = '$categoryId'";
} else {
$sql = "UPDATE $tbl_category SET children_count = (children_count - ".abs($delta).") WHERE code = '$categoryId'";
$sql = "UPDATE $tbl_category SET children_count = (children_count - ".abs($delta).")
WHERE code = '$categoryId'";
}
$result = Database::query($sql);
Database::query($sql);
}
/**
@ -234,8 +250,9 @@ function editNode($code, $name, $canHaveCourses, $old_code)
/**
* Move a node up on display
* @param string $code
* @param string $tree_pos
* @param int $parent_id
* @param int $tree_pos
* @param string $parent_id
*
* @return bool
*/
function moveNodeUp($code, $tree_pos, $parent_id)
@ -243,28 +260,47 @@ function moveNodeUp($code, $tree_pos, $parent_id)
$tbl_category = Database::get_main_table(TABLE_MAIN_CATEGORY);
$code = Database::escape_string($code);
$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
FROM $tbl_category
WHERE parent_id " . (empty($parent_id) ? "IS NULL" : " = $parent_id") . " AND tree_pos < $tree_pos
ORDER BY tree_pos DESC LIMIT 0,1";
FROM $tbl_category
WHERE
tree_pos < $tree_pos
$parentIdCondition
ORDER BY tree_pos DESC
LIMIT 0,1";
$result = Database::query($sql);
if (!$row = Database::fetch_array($result)) {
$sql = "SELECT code,tree_pos FROM $tbl_category
WHERE parent_id " . (empty($parent_id) ? "IS NULL" : " = $parent_id") . " AND tree_pos > $tree_pos
ORDER BY tree_pos DESC LIMIT 0,1";
$sql = "SELECT code, tree_pos
FROM $tbl_category
WHERE
tree_pos > $tree_pos
$parentIdCondition
ORDER BY tree_pos DESC
LIMIT 0,1";
$result2 = Database::query($sql);
if (!$row2 = Database::fetch_array($result2)) {
if (!$row = Database::fetch_array($result2)) {
return false;
}
}
Database::query("UPDATE $tbl_category SET tree_pos='" . $row['tree_pos'] . "' WHERE code='$code'");
Database::query("UPDATE $tbl_category SET tree_pos='$tree_pos' WHERE code='" . $code . "'");
$sql = "UPDATE $tbl_category
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;
}
/**
@ -313,6 +349,7 @@ function getChildren($categoryCode)
/**
* @param string $categoryCode
*
* @return array
*/
function getParents($categoryCode)
@ -323,7 +360,8 @@ function getParents($categoryCode)
$tbl_category = Database::get_main_table(TABLE_MAIN_CATEGORY);
$categoryCode = Database::escape_string($categoryCode);
$sql = "SELECT code, parent_id FROM $tbl_category WHERE code = '$categoryCode'";
$sql = "SELECT code, parent_id FROM $tbl_category
WHERE code = '$categoryCode'";
$result = Database::query($sql);
$children = array();
@ -351,6 +389,7 @@ function getParentsToString($categoryCode)
$categories[] = $category['code'];
}
$categoriesInString = implode(' > ', $categories).' > ';
return $categoriesInString;
}
return null;

Loading…
Cancel
Save