Browse Source

Fix course cateogory order.

Julio Montoya 9 years ago
parent
commit
0672f0386c
1 changed files with 64 additions and 25 deletions
  1. 64 25
      main/inc/lib/course_category.lib.php

+ 64 - 25
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;