function JQ_ListQuizzes_Stu($option, $course_id)
 {
     global $JLMS_DB, $JLMS_SESSION, $my, $JLMS_CONFIG;
     $JLMS_ACL =& JLMSFactory::getACL();
     $cat_id = intval(mosGetParam($_REQUEST, 'cat_id', $JLMS_SESSION->get('cat_id', 0)));
     $JLMS_SESSION->set('cat_id', $cat_id);
     $limit = intval(mosGetParam($_REQUEST, 'limit', $JLMS_SESSION->get('list_limit', $JLMS_CONFIG->get('list_limit'))));
     $JLMS_SESSION->set('list_limit', $limit);
     $limitstart = intval(mosGetParam($_REQUEST, 'limitstart', 0));
     $AND_ST = "";
     if (false !== ($enroll_period = JLMS_getEnrolPeriod($my->id, $course_id))) {
         $AND_ST = " AND IF(a.is_time_related, (a.show_period < '" . $enroll_period . "' ), 1) ";
     }
     $query = "SELECT COUNT(*)" . "\n FROM #__lms_quiz_t_quiz AS a" . "\n WHERE a. course_id = '" . $course_id . "'" . $AND_ST . ($JLMS_ACL->CheckPermissions('quizzes', 'view_all') ? '' : "\n AND a.published = 1") . ($cat_id ? "\n AND a.c_category_id = {$cat_id}" : '');
     $JLMS_DB->setQuery($query);
     $total = $JLMS_DB->loadResult();
     require_once _JOOMLMS_FRONT_HOME . DS . "includes" . DS . "classes" . DS . "lms.pagination.php";
     $pageNav = new JLMSPageNav($total, $limitstart, $limit);
     $query = "SELECT a.*, b.c_category, u.name as author_name " . "\n FROM #__lms_quiz_t_quiz a LEFT JOIN #__lms_quiz_t_category b ON a.c_category_id = b.c_id AND b.course_id = '" . $course_id . "' AND b.is_quiz_cat = 1 LEFT JOIN #__users as u ON a.c_user_id = u.id" . "\n WHERE a.course_id = '" . $course_id . "'" . $AND_ST . ($JLMS_ACL->CheckPermissions('quizzes', 'view_all') ? '' : "\n AND a.published = 1") . ($cat_id ? "\n AND a.c_category_id = {$cat_id}" : '') . "\n ORDER BY a.c_title, b.c_category" . "\n LIMIT {$pageNav->limitstart}, {$pageNav->limit}";
     $JLMS_DB->setQuery($query);
     $rows = $JLMS_DB->loadObjectList();
     $quizzes_i = array();
     foreach ($rows as $row) {
         $quizzes_i[] = $row->c_id;
     }
     $q_items_num = array();
     if (!empty($quizzes_i)) {
         $quizzes_i_cid = implode(',', $quizzes_i);
         $query = "SELECT sum(items_number) as items_count, quiz_id FROM #__lms_quiz_t_quiz_pool WHERE quiz_id IN ({$quizzes_i_cid}) GROUP BY quiz_id";
         $JLMS_DB->SetQuery($query);
         $q_items_num = $JLMS_DB->loadObjectList();
     }
     for ($i = 0, $n = count($rows); $i < $n; $i++) {
         $rows[$i]->quests_from_pool = 0;
         foreach ($q_items_num as $qin) {
             if ($qin->quiz_id == $rows[$i]->c_id) {
                 if ($qin->items_count) {
                     $rows[$i]->quests_from_pool = $qin->items_count;
                 }
                 break;
             }
         }
     }
     $javascript = 'onchange="document.adminForm.submit();"';
     $query = "SELECT c_id AS value, c_category AS text" . "\n FROM #__lms_quiz_t_category WHERE course_id = '" . $course_id . "' AND is_quiz_cat = 1" . "\n ORDER BY c_category";
     $JLMS_DB->setQuery($query);
     $categories[] = mosHTML::makeOption('0', _JLMS_SB_SELECT_CATEGORY);
     $categories = array_merge($categories, $JLMS_DB->loadObjectList());
     $category = mosHTML::selectList($categories, 'cat_id', 'class="inputbox" size="1" ' . $javascript, 'value', 'text', $cat_id);
     $lists['category'] = $category;
     $lists['used_category_filter'] = $cat_id;
     $arr1 = array();
     if (!empty($rows)) {
         if (empty($rows)) {
             $quiz_ids = array(0);
         } else {
             $quiz_ids = array();
             foreach ($rows as $row1) {
                 $quiz_ids[] = $row1->c_id;
             }
             $query = "SELECT * FROM #__lms_quiz_results WHERE quiz_id IN (" . implode(',', $quiz_ids) . ") AND course_id='" . $course_id . "' AND user_id = '" . $my->id . "'";
             //  GROUP BY quiz_id";
             $JLMS_DB->SetQuery($query);
             $user_results = $JLMS_DB->loadObjectList();
             for ($i = 0; $i < count($rows); $i++) {
                 $rows[$i]->user_passed = -1;
                 $rows[$i]->quiz_max_score = 0;
                 $rows[$i]->user_score = 0;
                 foreach ($user_results as $user_result1) {
                     if ($user_result1->course_id == $rows[$i]->course_id && $user_result1->quiz_id == $rows[$i]->c_id) {
                         $rows[$i]->user_passed = $user_result1->user_passed;
                         $rows[$i]->quiz_max_score = $user_result1->quiz_max_score;
                         $rows[$i]->user_score = $user_result1->user_score;
                     }
                 }
             }
         }
         require_once _JOOMLMS_FRONT_HOME . DS . "includes" . DS . "lms_certificates.php";
         $arr = array();
         JLMS_Certificates::JLMS_GB_getUserCertificates($course_id, $my->id, $arr);
         $arr1 = isset($arr['user_quiz_certificates']) ? $arr['user_quiz_certificates'] : array();
     }
     for ($i = 0; $i < count($rows); $i++) {
         for ($j = 0; $j < count($arr1); $j++) {
             if ($arr1[$j]->c_quiz_id == $rows[$i]->c_id) {
                 $rows[$i]->link_certificate = "<a class=\"jlms_img_link\" target = \"_blank\" href = \"" . $JLMS_CONFIG->get('live_site') . "/index.php?tmpl=component&option=" . $option . "&amp;no_html=1&amp;task=print_quiz_cert&amp;course_id=" . $course_id . "&amp;stu_quiz_id=" . $arr1[$j]->stu_quiz_id . "&amp;user_unique_id=" . $arr1[$j]->user_unique_id . "\"><img src = \"" . $JLMS_CONFIG->get('live_site') . "/components/com_joomla_lms/lms_images/toolbar/btn_certificate.png\" border = \"0\" align=\"top\" alt=\"certificate\"/></a>";
                 $rows[$i]->user_score = $arr1[$j]->user_score;
                 $rows[$i]->quiz_max_score = $arr1[$j]->quiz_max_score;
             }
         }
     }
     $lms_titles_cache =& JLMSFactory::getTitles();
     $lms_titles_cache->setArray('quiz_t_quiz', $rows, 'c_id', 'c_title');
     //	echo '<pre>';
     //	print_r($rows);
     //	echo '</pre>';
     JLMS_quiz_admin_html_class::JQ_showQuizList_Stu($rows, $lists, $pageNav, $option, $course_id);
 }
 function JLMS_Course_HomePage($course_id, $add_elements_page = false)
 {
     global $option, $my, $JLMS_DB, $Itemid, $JLMS_CONFIG, $JLMS_SESSION;
     //TODO: replace global option declaration
     $usertype = $JLMS_CONFIG->get('current_usertype', 0);
     $JLMS_ACL =& JLMSFactory::getACL();
     $is_teacher = $JLMS_ACL->isTeacher();
     $AND_ST = "";
     if (false !== ($enroll_period = JLMS_getEnrolPeriod($my->id, $course_id))) {
         $AND_ST = " AND IF(is_time_related, (show_period < '" . $enroll_period . "' ), 1) ";
     }
     $this->course_id = $course_id;
     $curr_date = date("Y-m-d");
     $is_curtopic = intval(mosgetparam($_REQUEST, 't_id', 0));
     //create list of topics
     if ($usertype == 1) {
         $published = '1';
     } else {
         $published = "published=1 AND (publish_start=0 OR start_date<='{$curr_date}') AND (publish_end=0 OR end_date>='{$curr_date}')";
     }
     $query = "SELECT * FROM #__lms_topics WHERE course_id={$course_id} " . $AND_ST . " AND {$published} " . ($is_curtopic ? " AND id=" . $is_curtopic : "") . " ORDER BY ordering";
     $JLMS_DB->setQuery($query);
     $this->topics = $JLMS_DB->loadObjectList('id');
     //get items of the course
     //2 - documents
     if ($add_elements_page) {
         $rows = array();
         $possibilities = new stdClass();
         JLMSDocs::FillList($course_id, $rows, $possibilities, false, false);
         $this->elements[_DOCUMENT_ID] = JLMSDocs::GetItemsbyPermission($rows, 'manage');
     } else {
         $AND_ST_D = "";
         if (false !== ($enroll_period = JLMS_getEnrolPeriod($my->id, $course_id))) {
             $AND_ST_D = " AND IF(a.is_time_related, (a.show_period < '" . $enroll_period . "' ), 1) ";
         }
         $query = "SELECT a.*, b.file_name FROM #__lms_documents as a LEFT JOIN #__lms_files as b ON a.file_id = b.id AND a.folder_flag = 0 WHERE a.course_id={$course_id}" . $AND_ST_D;
         $JLMS_DB->setQuery($query);
         $this->elements[_DOCUMENT_ID] = $JLMS_DB->loadObjectList('id');
         foreach ($this->elements[_DOCUMENT_ID] as $elem) {
             if ($elem->folder_flag == 3) {
                 $query = "SELECT a.*, b.file_name" . "\n FROM #__lms_outer_documents as a LEFT JOIN #__lms_files as b ON a.file_id = b.id AND a.folder_flag = 0 " . "\n WHERE a.folder_flag = 0 AND a.id = " . $elem->file_id;
                 $JLMS_DB->SetQuery($query);
                 $out_row = $JLMS_DB->LoadObjectList();
                 if (count($out_row) && isset($out_row[0]->allow_link) && $out_row[0]->allow_link == 1) {
                     $this->elements[_DOCUMENT_ID][$elem->id]->doc_name = $out_row[0]->doc_name;
                     $this->elements[_DOCUMENT_ID][$elem->id]->doc_description = $out_row[0]->doc_description;
                     $this->elements[_DOCUMENT_ID][$elem->id]->file_id = $out_row[0]->file_id;
                     $this->elements[_DOCUMENT_ID][$elem->id]->file_name = $out_row[0]->file_name;
                 } else {
                     unset($this->elements[_DOCUMENT_ID][$elem->id]);
                 }
             }
         }
         $this->elements[_DOCUMENT_ID] = AppendFileIcons_toList($this->elements[_DOCUMENT_ID]);
     }
     //get max tree level
     $this->max_lvl = getDirNesting($this->elements[_DOCUMENT_ID], 0);
     global $max_lvl;
     $max_lvl = $this->max_lvl;
     //3 - links
     $query = "SELECT * FROM #__lms_links WHERE course_id={$course_id}" . $AND_ST;
     $JLMS_DB->setQuery($query);
     $this->elements[_LINK_ID] = $JLMS_DB->loadObjectList('id');
     //4 - contents ... er... TODO
     //5 - quizs
     $query = "SELECT *, c_id AS id FROM #__lms_quiz_t_quiz WHERE course_id={$course_id}" . $AND_ST;
     $JLMS_DB->setQuery($query);
     $this->elements[_QUIZ_ID] = $JLMS_DB->loadObjectList('c_id');
     $quizzes_i = array();
     foreach ($this->elements[_QUIZ_ID] as $row) {
         $quizzes_i[] = $row->c_id;
     }
     //add results for student
     if ($usertype == 2 && count($this->elements[_QUIZ_ID])) {
         $quizzes_r = array();
         foreach ($this->elements[_QUIZ_ID] as $row) {
             $quizzes_r[] = $row->c_id;
         }
         $q_items_num = array();
         $extra_info_cells = array();
         if (!empty($quizzes_r)) {
             $quizzes_r_cid = implode(',', $quizzes_r);
             $query = "SELECT * FROM #__lms_quiz_results WHERE quiz_id IN ({$quizzes_r_cid}) AND course_id={$course_id} AND user_id={$my->id} GROUP BY quiz_id";
             $JLMS_DB->SetQuery($query);
             $extra_info_cells = $JLMS_DB->loadObjectList();
         }
         foreach ($this->elements[_QUIZ_ID] as $i => $value) {
             $this->elements[_QUIZ_ID][$i]->start_date = '-';
             $this->elements[_QUIZ_ID][$i]->end_date = '-';
             $this->elements[_QUIZ_ID][$i]->status = -1;
             $this->elements[_QUIZ_ID][$i]->user_passed = -1;
             $this->elements[_QUIZ_ID][$i]->points = -1;
             $this->elements[_QUIZ_ID][$i]->user_score = 0;
             $this->elements[_QUIZ_ID][$i]->quiz_max_score = 0;
             foreach ($extra_info_cells as $cell) {
                 if ($cell->quiz_id == $this->elements[_QUIZ_ID][$i]->c_id) {
                     $this->elements[_QUIZ_ID][$i]->start_date = JLMS_dateToDisplay($cell->quiz_date, false, $JLMS_CONFIG->get('offset') * 60 * 60 - $cell->user_time, '\\<\\b\\r \\/>H:i:s');
                     $this->elements[_QUIZ_ID][$i]->end_date = JLMS_dateToDisplay($cell->quiz_date, false, $JLMS_CONFIG->get('offset') * 60 * 60, '\\<\\b\\r \\/>H:i:s');
                     $this->elements[_QUIZ_ID][$i]->points = $cell->user_score;
                     $this->elements[_QUIZ_ID][$i]->status = $cell->user_passed;
                     $this->elements[_QUIZ_ID][$i]->user_passed = $cell->user_passed;
                     $this->elements[_QUIZ_ID][$i]->user_score = $cell->user_score;
                     $this->elements[_QUIZ_ID][$i]->quiz_max_score = $cell->quiz_max_score;
                 }
             }
         }
         unset($extra_info_cells);
         require_once _JOOMLMS_FRONT_HOME . DS . "includes" . DS . "lms_certificates.php";
         $arr = array();
         JLMS_Certificates::JLMS_GB_getUserCertificates($course_id, $my->id, $arr);
         $arr1 = isset($arr['user_quiz_certificates']) ? $arr['user_quiz_certificates'] : array();
         foreach ($this->elements[_QUIZ_ID] as $i => $value) {
             for ($j = 0; $j < count($arr1); $j++) {
                 if ($arr1[$j]->c_quiz_id == $this->elements[_QUIZ_ID][$i]->c_id) {
                     $this->elements[_QUIZ_ID][$i]->link_certificate = "<a target = \"_blank\" href = \"" . $JLMS_CONFIG->get('live_site') . "/index.php?tmpl=component&option=" . $option . "&amp;no_html=1&amp;task=print_quiz_cert&amp;course_id=" . $course_id . "&amp;stu_quiz_id=" . $arr1[$j]->stu_quiz_id . "&amp;user_unique_id=" . $arr1[$j]->user_unique_id . "\"><img src = \"" . $JLMS_CONFIG->get('live_site') . "/components/com_joomla_lms/lms_images/toolbar/btn_certificate.png\" border = \"0\" align=\"top\" alt=\"certificate\"/></a>";
                 }
             }
         }
     }
     //6 - scorm ... er... TODO
     //7 - learning paths
     $lpaths = array();
     if ($course_id && $usertype) {
         //$JLMS_SESSION->clear('redirect_to_learnpath');
         if ($usertype == 1) {
             $query = "SELECT * FROM #__lms_learn_paths WHERE course_id = '" . $course_id . "'" . $AND_ST . "\n ORDER BY ordering";
         } elseif ($usertype == 2) {
             //$query = "SELECT a.*, b.user_status as r_status, b.start_time as r_start, b.end_time as r_end"
             //. "\n FROM #__lms_learn_paths as a LEFT JOIN #__lms_learn_path_results as b ON a.id = b.lpath_id AND b.course_id = '".$course_id."' AND b.user_id = '".$my->id."'"
             $query = "SELECT a.*, '' as r_status, '' as r_start, '' as r_end" . "\n FROM #__lms_learn_paths as a" . "\n WHERE a.course_id = '" . $course_id . "'" . "\n AND a.published = 1" . "\n ORDER BY a.ordering";
         }
         $JLMS_DB->SetQuery($query);
         $lpaths = $JLMS_DB->LoadObjectList();
         if ($usertype == 2) {
             $user_ids = array();
             $user_ids[] = $my->id;
             require_once _JOOMLMS_FRONT_HOME . "/includes/lms_grades.lib.php";
             JLMS_LP_populate_results($course_id, $lpaths, $user_ids);
             // 13 August 2007 (DEN) Check for prerequisites.
             // 1. get the list of lpath_ids.
             $lpath_ids = array();
             foreach ($lpaths as $lpath) {
                 $lpath_ids[] = $lpath->id;
             }
             if (!empty($lpath_ids)) {
                 $lpath_ids_str = implode(',', $lpath_ids);
                 // 2. get the list of prerequisites
                 // SELECT from two tables (+ #__lms_learn_paths) - because the prereq lpath could be deleted...
                 $query = "SELECT a.* FROM #__lms_learn_path_prerequisites as a, #__lms_learn_paths as b" . "\n WHERE a.lpath_id IN ({$lpath_ids_str}) AND a.req_id = b.id";
                 $JLMS_DB->SetQuery($query);
                 $prereqs = $JLMS_DB->LoadObjectList();
                 if (!empty($prereqs)) {
                     // 3. compare lists of prereqs to the lists of lpaths.
                     $i = 0;
                     while ($i < count($lpaths)) {
                         $is_hidden = false;
                         $o = 0;
                         while ($o < count($prereqs)) {
                             if ($prereqs[$o]->lpath_id == $lpaths[$i]->id) {
                                 $j = 0;
                                 while ($j < count($lpaths)) {
                                     if ($lpaths[$j]->id == $prereqs[$o]->req_id) {
                                         if (!$lpaths[$j]->item_id) {
                                             if (empty($lpaths[$j]->r_status)) {
                                                 $is_hidden = true;
                                                 break;
                                             } else {
                                                 $end_time = strtotime($lpaths[$j]->r_end);
                                                 $current_time = strtotime(date("Y-m-d H:i:s"));
                                                 if ($current_time > $end_time && $current_time - $end_time < $prereqs[$o]->time_minutes * 60) {
                                                     $is_hidden = true;
                                                     break;
                                                 }
                                             }
                                         } else {
                                             if (empty($lpaths[$j]->s_status)) {
                                                 $is_hidden = true;
                                                 break;
                                             } else {
                                                 $end_time = strtotime($lpaths[$j]->r_end);
                                                 $current_time = strtotime(date("Y-m-d H:i:s"));
                                                 if ($current_time > $end_time && $current_time - $end_time < $prereqs[$o]->time_minutes * 60) {
                                                     $is_hidden = true;
                                                     break;
                                                 }
                                             }
                                         }
                                     }
                                     $j++;
                                 }
                             }
                             $o++;
                         }
                         $lpaths[$i]->is_hidden = $is_hidden;
                         $i++;
                     }
                 }
             }
         }
     }
     foreach ($lpaths as $lpath) {
         $this->elements[_LPATH_ID][$lpath->id] = $lpath;
     }
     //populate topics with links to their items
     $query = "SELECT * FROM #__lms_topic_items WHERE course_id={$course_id} ORDER BY ordering";
     $JLMS_DB->setQuery($query);
     $items = $JLMS_DB->loadObjectList();
     for ($i = 0; $i < count($items); $i++) {
         if ($items[$i]->item_type == 7) {
             $query = "SELECT lp_type FROM #__lms_learn_paths WHERE id = '" . $items[$i]->item_id . "'" . $AND_ST;
             $JLMS_DB->SetQuery($query);
             $lp_type = $JLMS_DB->LoadResult();
             if ($lp_type == 2) {
                 $query = "SELECT item_id FROM #__lms_learn_paths WHERE id = '" . $items[$i]->item_id . "'";
                 $JLMS_DB->SetQuery($query);
                 $learn_path_id = $JLMS_DB->LoadResult();
                 $query = "SELECT scorm_package, params as scorm_params, width as scorm_width, height as scorm_height FROM #__lms_n_scorm WHERE id = '" . $learn_path_id . "'";
                 $JLMS_DB->SetQuery($query);
                 $outer_doc = null;
                 $scorm_info = null;
                 $scorm_info = $JLMS_DB->LoadObject();
                 if (is_object($scorm_info)) {
                     $this->elements[_LPATH_ID][$items[$i]->item_id]->scorm_params = $scorm_info->scorm_params;
                     $this->elements[_LPATH_ID][$items[$i]->item_id]->scorm_width = $scorm_info->scorm_width;
                     $this->elements[_LPATH_ID][$items[$i]->item_id]->scorm_height = $scorm_info->scorm_height;
                     $scorm_package = $scorm_info->scorm_package;
                     $query = "SELECT id FROM #__lms_n_scorm WHERE scorm_package = '" . $scorm_package . "' AND course_id = 0";
                     $JLMS_DB->SetQuery($query);
                     $scorm_lib_id = $JLMS_DB->LoadResult();
                     $query = "SELECT outdoc_share, owner_id, allow_link FROM #__lms_outer_documents WHERE file_id = '" . $scorm_lib_id . "' AND folder_flag = 3";
                     $JLMS_DB->SetQuery($query);
                     $outer_doc = $JLMS_DB->LoadObject();
                 }
                 if (is_object($outer_doc) && isset($outer_doc->allow_link) && $outer_doc->allow_link == 1) {
                     // 01May2009: new library policy: if 'allow_link' is enabled - we can view already added resource !
                 } else {
                     unset($items[$i]);
                 }
             } elseif ($lp_type == 1) {
                 $query = "SELECT item_id FROM #__lms_learn_paths WHERE id = '" . $items[$i]->item_id . "'";
                 $JLMS_DB->SetQuery($query);
                 $learn_path_id = $JLMS_DB->LoadResult();
                 if ($learn_path_id) {
                     $query = "SELECT params as scorm_params, width as scorm_width, height as scorm_height FROM #__lms_n_scorm WHERE id = '" . $learn_path_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $scorm_info = null;
                     $scorm_info = $JLMS_DB->LoadObject();
                     if (is_object($scorm_info)) {
                         $this->elements[_LPATH_ID][$items[$i]->item_id]->scorm_params = $scorm_info->scorm_params;
                         $this->elements[_LPATH_ID][$items[$i]->item_id]->scorm_width = $scorm_info->scorm_width;
                         $this->elements[_LPATH_ID][$items[$i]->item_id]->scorm_height = $scorm_info->scorm_height;
                     }
                 }
             }
         }
     }
     if (!$is_teacher) {
         $this->_filterItemsByShowPeriod($items, $course_id);
     }
     $mas = array();
     foreach ($items as $k => $v) {
         $mas[] = $items[$k];
     }
     unset($lpath);
     $items = $mas;
     $links = array();
     foreach ($items as $item) {
         $item_tmp->id = $item->item_id;
         $item_tmp->type = $item->item_type;
         $item_tmp->ordering = $item->ordering;
         $links[$item->topic_id][] = $item;
     }
     $this->links = $links;
 }