Browse Source

Merge pull request #214 from baelmyhu/1.9.x

Correct error in learning path padding -ref #6975
Hubert Borderiou 11 years ago
parent
commit
62038af901
1 changed files with 23 additions and 16 deletions
  1. 23 16
      main/newscorm/learnpath.class.php

+ 23 - 16
main/newscorm/learnpath.class.php

@@ -77,6 +77,25 @@ class learnpath
     public $course_int_id;
     public $course_info = array();
 
+
+
+    /**
+     * Get the depth level of LP item
+     * @param $in_tab_items
+     * @param $in_current_item_id
+     * @return int
+     */
+    private static function get_level_for_item($in_tab_items, $in_current_item_id)
+    {
+        $parent_item_id = $in_tab_items[$in_current_item_id]->parent;
+        if ($parent_item_id == 0) {
+            return 0;
+        } else {
+            return learnpath::get_level_for_item($in_tab_items, $parent_item_id) + 1;
+        }
+    }
+
+
     /**
     * Class constructor. Needs a database handler, a course code and a learnpath id from the database.
     * Also builds the list of items into $this->items.
@@ -280,22 +299,10 @@ class learnpath
                     break;
             }
 
-            // Items is a list of pointers to all items, classified by DB ID, not SCO id.
-            if ($row['parent_item_id'] == 0 || empty ($this->items[$row['parent_item_id']])) {
-                if (is_object($this->items[$row['id']])) {
-                  $this->items[$row['id']]->set_level(0);
-                }
-            } else {
-                $level = $this->items[$row['parent_item_id']]->get_level() + 1;
-                $this->items[$row['id']]->set_level($level);
-                if (is_object($this->items[$row['parent_item_id']])) {
-                    // Items is a list of pointers from item DB ids to item objects.
-                    $this->items[$row['parent_item_id']]->add_child($row['id']);
-                } else {
-                    if ($this->debug > 2) {
-                        error_log('New LP - learnpath::__construct() ' . __LINE__ . ' - The parent item (' . $row['parent_item_id'] . ') of item ' . $row['id'] . ' could not be found', 0);
-                    }
-                }
+            // Setting the object level with variable $this->items[$i][parent]
+            foreach ($this->items as $itemLPObject) {
+                $level = learnpath::get_level_for_item($this->items, $itemLPObject->db_id);
+                $itemLPObject->level = $level;
             }
 
             // Setting the view in the item object.