Ejemplo n.º 1
0
 function JQ_editQuiz($id, $option, $page, $course_id)
 {
     global $JLMS_DB, $my, $JLMS_CONFIG;
     $AND_ST = "";
     if (false !== ($enroll_period = JLMS_getEnrolPeriod($my->id, $course_id))) {
         $AND_ST = " AND IF(is_time_related, (show_period < '" . $enroll_period . "' ), 1) ";
     }
     $row = new mos_JoomQuiz_Quiz($JLMS_DB);
     $row->addCond($AND_ST);
     $row->load($id);
     if ($id) {
     } elseif (mosGetParam($_REQUEST, 'flag')) {
         $row->bind($_POST);
         $row->flag = mosGetParam($_REQUEST, 'c_pool_type_gqp');
     } else {
         $row->c_user_id = $my->id;
         $JLMS_DB->SetQuery("Select name from #__users WHERE id = '" . $my->id . "'");
         $row->c_author = $JLMS_DB->LoadResult();
         $row->c_slide = 1;
         $row->c_gradebook = 1;
         $row->c_max_numb_attempts = 0;
         $row->c_resume = 1;
     }
     if (!isset($row->flag)) {
         $row->flag = 0;
     }
     /*----------------------------------------------------*/
     $count_array = array();
     $new_val_array = array();
     if ($JLMS_CONFIG->get('global_quest_pool')) {
         if ($id) {
             $query = "SELECT count(*) FROM #__lms_quiz_t_quiz_gqp WHERE quiz_id = {$id} AND qcat_id <> 0";
             $JLMS_DB->setQuery($query);
             $pool_is_cat_mode_gqp = intval($JLMS_DB->loadResult());
             $query = "SELECT count(*) FROM #__lms_quiz_t_quiz_gqp WHERE quiz_id = {$id} AND qcat_id = 0";
             $JLMS_DB->setQuery($query);
             $pool_is_quest_mode_gqp = intval($JLMS_DB->loadResult());
             if ($pool_is_cat_mode_gqp) {
                 $query = "SELECT * FROM #__lms_quiz_t_quiz_gqp WHERE quiz_id = {$id} AND qcat_id <> 0 ORDER BY orderin";
                 $JLMS_DB->setQuery($query);
                 $db_cats = $JLMS_DB->loadObjectList();
                 $row->flag = 2;
                 for ($i = 0; $i < count($db_cats); $i++) {
                     $_REQUEST['cat_id_gqp'][] = $db_cats[$i]->qcat_id;
                     $_REQUEST['pool_cat_number_gqp'][] = $db_cats[$i]->items_number;
                 }
             }
             //			$lists['pool_quest_mode_gqp'] = $pool_is_quest_mode_gqp ? false : true;
             //			if (!$lists['pool_quest_mode_gqp']) {
             //				$lists['pool_quest_num_gqp'] = 0;
             //			}
         }
     }
     $levels = array();
     $javascript = 'onchange="document.adminForm.page.value=\'edit_quiz\';document.adminForm.submit();"';
     if ($row->flag == 2) {
         $cat_id = mosGetParam($_REQUEST, 'cat_id_gqp');
         $count_array = mosGetParam($_REQUEST, 'pool_cat_number_gqp');
         if (isset($cat_id) && count($cat_id)) {
             foreach ($cat_id as $k => $v) {
                 if ($cat_id[$k] == 0) {
                     unset($cat_id[$k]);
                 }
                 unset($_REQUEST['cat_id_gqp'][$k]);
             }
             if (!isset($cat_id[0])) {
                 unset($cat_id);
             }
             $lists = array();
             $level = 0;
             if (isset($cat_id) && count($cat_id)) {
                 foreach ($cat_id as $k => $v) {
                     $query = "SELECT parent" . "\n FROM #__lms_gqp_cats" . "\n WHERE id = '" . $cat_id[$k] . "'";
                     $JLMS_DB->setQuery($query);
                     $parent = intval($JLMS_DB->loadResult());
                     if (!$parent) {
                         $parent = 0;
                     }
                     /*-----------------category-----------------------*/
                     $query = "SELECT id AS value, c_category AS text" . "\n FROM #__lms_gqp_cats" . "\n WHERE parent = '" . $parent . "'" . "\n ORDER BY c_category";
                     $JLMS_DB->setQuery($query);
                     $categories[] = mosHTML::makeOption('0', 'Select Category');
                     $categories = array_merge($categories, $JLMS_DB->loadObjectList());
                     $level = JLMS_quiz_admin_class::check_level($cat_id[$k]);
                     $categories = JLMS_quiz_admin_class::count_questions_in_category($categories, $level);
                     $category = mosHTML::selectList($categories, 'cat_id_gqp[]', 'class="text_area" size="1" style="width:100%;" ' . $javascript, 'value', 'text', $cat_id[$k]);
                     //echo JLMS_quiz_admin_class::check_level($cat_id[$k]); die;
                     $levels[] = $level;
                     $lists['category'][] = $category;
                     unset($category);
                     unset($categories);
                     /*----------------subcategory---------------------*/
                     if (JLMS_quiz_admin_class::select_sub($k, $cat_id)) {
                         $this_level = JLMS_quiz_admin_class::check_level($cat_id[$k]);
                         $level1 = $this_level;
                         for ($j = $this_level; $j > -1; $j--) {
                             for ($n = $k; $n > -1; $n--) {
                                 if (isset($cat_id[$n]) && isset($level1) && JLMS_quiz_admin_class::check_level($cat_id[$n]) == $level1 && JLMS_quiz_admin_class::this_level_on_stek($cat_id, $n)) {
                                     $query = "SELECT id AS value, c_category AS text" . "\n FROM #__lms_gqp_cats" . "\n WHERE parent = '" . $cat_id[$n] . "'" . "\n ORDER BY c_category";
                                     $JLMS_DB->setQuery($query);
                                     if ($JLMS_DB->loadObjectList()) {
                                         $categories[] = mosHTML::makeOption('0', 'Select SubCategory');
                                         $categories = array_merge($categories, $JLMS_DB->loadObjectList());
                                         $categories = JLMS_quiz_admin_class::count_questions_in_category($categories, $this_level);
                                         $category = mosHTML::selectList($categories, 'cat_id_gqp[]', 'class="text_area" size="1" style="width:100%;" ' . $javascript, 'value', 'text', '');
                                         $levels[] = $level1 + 1;
                                         $lists['category'][] = $category;
                                         unset($category);
                                         unset($categories);
                                         $new_val_array[] = $cat_id[$k];
                                     }
                                     $level1--;
                                 }
                             }
                         }
                     }
                     /*------------------------------------------------*/
                 }
             }
         }
         $query = "SELECT id AS value, c_category AS text" . "\n FROM #__lms_gqp_cats" . "\n WHERE parent = 0" . "\n ORDER BY c_category";
         $JLMS_DB->setQuery($query);
         $categories[] = mosHTML::makeOption('0', 'Select Category');
         $categories = array_merge($categories, $JLMS_DB->loadObjectList());
         $categories = JLMS_quiz_admin_class::count_questions_in_category($categories, 0);
         $category = mosHTML::selectList($categories, 'cat_id_gqp[]', 'class="text_area" size="1" style="width:100%;"' . $javascript, 'value', 'text', '');
         $lists['new_category'] = $category;
         unset($category);
         unset($categories);
     }
     /*---------------------------------------------------*/
     if (is_array($row->params)) {
         $row->params = implode("\n", $row->params);
     }
     $params = new JLMSParameters($row->params);
     $params->def('disable_quest_feedback', 0);
     $params->def('sh_user_answer', 0);
     $params->def('sh_correct_answer', 1);
     $params->def('sh_explanation', 0);
     $params->def('sh_final_page', 1);
     $params->def('sh_self_verification', 0);
     $params->def('sh_final_page_text', 1);
     $params->def('sh_final_page_grafic', 0);
     $params->def('sh_final_page_fdbck', 1);
     $params->def('sh_skip_quest', 0);
     if (!$row->c_user_id) {
         $row->c_user_id = $my->id;
     }
     $query = "SELECT a.*, b.items_number FROM #__lms_quiz_t_category as a LEFT JOIN #__lms_quiz_t_quiz_pool as b" . "\n ON a.c_id = b.qcat_id AND b.quiz_id = {$id}" . "\n WHERE a.course_id = '" . $course_id . "' AND a.is_quiz_cat = 0 order by a.c_category";
     $JLMS_DB->setQuery($query);
     $pool_cats = $JLMS_DB->loadObjectList();
     $lists['jq_pool_categories'] = $pool_cats;
     if ($JLMS_CONFIG->get('global_quest_pool')) {
         $query = "SELECT a.*, b.items_number FROM #__lms_gqp_cats as a LEFT JOIN #__lms_quiz_t_quiz_gqp as b" . "\n ON a.id = b.qcat_id AND b.quiz_id = {$id}" . "\n order by a.c_category";
         $JLMS_DB->setQuery($query);
         $pool_cats = $JLMS_DB->loadObjectList();
         $lists['jq_pool_categories_gqp'] = $pool_cats;
     }
     $query = "SELECT items_number FROM #__lms_quiz_t_quiz_pool WHERE quiz_id = {$id} AND qcat_id = 0";
     $JLMS_DB->setQuery($query);
     $pool_quest_num = intval($JLMS_DB->loadResult());
     $lists['pool_quest_num'] = $pool_quest_num;
     if ($JLMS_CONFIG->get('global_quest_pool')) {
         $query = "SELECT items_number FROM #__lms_quiz_t_quiz_gqp WHERE quiz_id = {$id} AND qcat_id = 0";
         $JLMS_DB->setQuery($query);
         $pool_quest_num_gqp = intval($JLMS_DB->loadResult());
         $lists['pool_quest_num_gqp'] = $pool_quest_num_gqp;
     }
     $query = "SELECT count(*) FROM #__lms_quiz_t_quiz_pool WHERE quiz_id = {$id} AND qcat_id <> 0";
     $JLMS_DB->setQuery($query);
     $pool_is_quest_mode = intval($JLMS_DB->loadResult());
     $lists['pool_quest_mode'] = $pool_is_quest_mode ? false : true;
     if (!$lists['pool_quest_mode']) {
         $lists['pool_quest_num'] = 0;
     }
     $query = "SELECT * FROM #__lms_quiz_t_category WHERE course_id = '" . $course_id . "' AND is_quiz_cat = 1 order by c_category";
     $JLMS_DB->setQuery($query);
     $jq_cats = $JLMS_DB->loadObjectList();
     $lists['jq_categories'] = mosHTML::selectList($jq_cats, 'c_category_id', 'class="inputbox" size="1"', 'c_id', 'c_category', $row->c_category_id);
     $jq_temps = array();
     /*$query = "SELECT * FROM #__lms_quiz_templates order by id";
     	$JLMS_DB->setQuery( $query );
     	$jq_temps = $JLMS_DB->loadObjectList();
     	$lists['jq_templates'] = mosHTML::selectList( $jq_temps, 'c_skin', 'class="inputbox" size="1"', 'id', 'template_name', $row->c_skin );
     	$jq_langs = array();*/
     /*	$query = "SELECT * FROM #__lms_quiz_languages order by id";
     	$JLMS_DB->setQuery( $query );
     	$jq_langs = $JLMS_DB->loadObjectList();
     	$lists['jq_languages'] = mosHTML::selectList( $jq_langs, 'c_language', 'class="inputbox" size="1"', 'id', 'lang_file', $row->c_language );*/
     $jq_certs = array();
     $query = "SELECT id as value, crtf_text as text, crtf_name FROM #__lms_certificates WHERE course_id = '" . $course_id . "' AND crtf_type = 2 AND parent_id = 0 ORDER BY id";
     $JLMS_DB->setQuery($query);
     $jq_certs[] = mosHTML::makeOption(0, _JLMS_SB_NO_CERTIFICATE);
     $jq_certs2 = $JLMS_DB->loadObjectList();
     $i = 0;
     while ($i < count($jq_certs2)) {
         $jq_certs2[$i]->text = $jq_certs2[$i]->crtf_name ? $jq_certs2[$i]->crtf_name : (strlen($jq_certs2[$i]->text) > 50 ? substr($jq_certs2[$i]->text, 0, 50) . '...' : $jq_certs2[$i]->text);
         $i++;
     }
     $jq_certs = array_merge($jq_certs, $jq_certs2);
     $lists['jq_certificates'] = mosHTML::selectList($jq_certs, 'c_certificate', 'class="inputbox" size="1" ' . ($params->get('sh_self_verification') ? "disabled='disabled'" : '') . '', 'value', 'text', $params->get('sh_self_verification') == 1 ? 0 : $row->c_certificate);
     $user_emailto = array();
     $user_emailto[] = mosHTML::makeOption(0, _JLMS_DISABLE_OPTION);
     $user_emailto[] = mosHTML::makeOption(1, _JLMS_QUIZ_EMAIL_TO_AUTHOR);
     $user_emailto[] = mosHTML::makeOption(2, _JLMS_QUIZ_EMAIL_TO_LEARNER);
     $lists['user_email_to'] = mosHTML::selectList($user_emailto, 'c_email_to', 'class="inputbox" size="1"', 'value', 'text', $row->c_email_to);
     $quiz_explanation = array();
     $quiz_explanation[] = mosHTML::makeOption(0, _JLMS_DISABLE_OPTION);
     $quiz_explanation[] = mosHTML::makeOption(1, _JLMS_QUIZ_REVIEW_FOR_ALL);
     $quiz_explanation[] = mosHTML::makeOption(2, _JLMS_QUIZ_REVIEW_FOR_PASSED);
     $quiz_explanation[] = mosHTML::makeOption(3, _JLMS_QUIZ_REVIEW_FOR_FAILED);
     $lists['quiz_explanation'] = mosHTML::selectList($quiz_explanation, 'params[sh_explanation]', 'class="inputbox" size="1"', 'value', 'text', $params->get('sh_explanation'));
     $lists['published'] = mosHTML::yesnoradioList('published', '', $row->published);
     $lists['sh_final_page_text'] = mosHTML::yesnoradioList('params[sh_final_page_text]', 'class="inputbox"', $params->get('sh_final_page_text', 1));
     $lists['sh_final_page_grafic'] = mosHTML::yesnoradioList('params[sh_final_page_grafic]', 'class="inputbox"', $params->get('sh_final_page_grafic', 0));
     $lists['sh_final_page_fdbck'] = mosHTML::yesnoradioList('params[sh_final_page_fdbck]', 'class="inputbox"', $params->get('sh_final_page_fdbck', 1));
     $property = $params->get('sh_self_verification') == 1 ? "disabled" : "";
     $property_1 = $property . ' onclick="javascript: this.form[\'c_enable_review\'].value = this.value;"';
     $lists['c_enable_review_chk'] = mosHTML::yesnoradioList('c_enable_review_chk', $property_1, $row->c_enable_review);
     $lists['sh_correct_answer'] = mosHTML::yesnoradioList('params[sh_correct_answer]', $property, $params->get('sh_correct_answer', 1));
     $lists['sh_user_answer'] = mosHTML::yesnoradioList('params[sh_user_answer]', $property, $params->get('sh_user_answer', 0));
     $lists['c_resume'] = mosHTML::yesnoradioList('c_resume', '', $row->c_resume);
     if (!mosGetParam($_REQUEST, 'c_title') && !isset($row->c_title)) {
         if (!isset($cat_id)) {
             $cat_id = array();
         }
         $count_array = JLMS_quiz_admin_class::insert_null($new_val_array, $count_array, $cat_id);
     }
     JLMS_quiz_admin_html_class::JQ_editQuiz($row, $lists, $option, $page, $course_id, $params, $levels, $count_array);
 }