public function prepareHierarchy($id, $remoteServerId = null)
 {
     global $SynchContentHierarchy;
     global $Out;
     global $SynchContentHierarchy;
     $hierarchy = $SynchContentHierarchy->getHierarchyData();
     //      $Out->print_r($hierarchy, '$hierarchy = ');
     $data = $SynchContentHierarchy->getData();
     //        $Out->print_r($data, '$data = ');
     //check if the root node is there. If not load it.
     if (!$SynchContentHierarchy->hasHierarchyItem(0)) {
         $this->loadChildrenByIdAndType(null, synch_view_controller::$TYPE_ID_HUB, $remoteServerId);
     }
     if (!isset($id) || $id == 0) {
         return true;
     }
     //Then if an id was passed check that it is loaded. If not load it.
     $type = SynchContentHierarchy::getTypeFromDataItemId($id) + 1;
     if ($SynchContentHierarchy->hasHierarchyItem($id)) {
         return true;
     }
     $this->loadChildrenByIdAndType($id, $type, $remoteServerId);
     $hierarchy = $SynchContentHierarchy->getHierarchyData();
     //  $Out->print_r($hierarchy, '$hierarchy (2) = ');
     $data = $SynchContentHierarchy->getData();
     //    $Out->print_r($data, '$data (2) = ');
     return true;
 }
 public function getDetailsByDataItemId($dataItemId)
 {
     $type = SynchContentHierarchy::getTypeFromDataItemId($dataItemId);
     $id = SynchContentHierarchy::getIdFromDataItemId($dataItemId);
     $details = null;
     switch ($type) {
         case synch_view_controller::$TYPE_ID_COURSE:
             $details = get_record('course', 'id', $id);
             break;
     }
     return $details;
 }