function _printTable_courses($type, $query_course_user, &$category_list, &$category_path_list, &$session_list, &$lastaccess_list, &$time_list, &$score_start, &$score_final, &$score_course, &$filter_rows, &$filter_columns, $show_classrooms_editions, $classrooms_editions_info) { require_once _lms_ . '/admin/modules/report/report_tableprinter.php'; if (!$type) { $type = 'html'; } $buffer = new ReportTablePrinter($type); $lang =& DoceboLanguage::createInstance('report', 'framework'); $cols = $filter_columns['showed_columns']; $output = ''; $course_types_trans = array('elearning' => Lang::t('_ELEARNING', 'standard'), 'classroom' => Lang::t('_CLASSROOM', 'standard')); require_once _lms_ . '/lib/lib.levels.php'; $clevels = new CourseLevel(); $user_levels_trans = $clevels->getLevels(); unset($clevels); $buffer->openTable($lang->def('_RU_CAPTION'), $lang->def('_RU_CAPTION')); $th1 = array(); $th2 = array(); $colspanuser = 0; $th2[] = $lang->def('_USERNAME'); $colspanuser++; if (in_array('_TH_LASTNAME', $cols)) { $th2[] = Lang::t('_LASTNAME', 'standard'); $colspanuser++; } if (in_array('_TH_FIRSTNAME', $cols)) { $th2[] = Lang::t('_FIRSTNAME', 'standard'); $colspanuser++; } if (in_array('_TH_EMAIL', $cols)) { $th2[] = Lang::t('_EMAIL', 'standard'); $colspanuser++; } if (in_array('_TH_REGISTER_DATE', $cols)) { $th2[] = Lang::t('_REGISTER_DATE', 'standard'); $colspanuser++; } if (in_array('_TH_SUSPENDED', $cols)) { $th2[] = Lang::t('_SUSPENDED', 'standard'); $colspanuser++; } require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; $aclManager = new DoceboACLManager(); $aclManager->include_suspended = TRUE; $_users = $aclManager->getAllUsersFromSelection($filter_rows); $fman = new FieldList(); $field_values = array(); $customcols =& $filter_columns['custom_fields']; $num_row = 0; foreach ($customcols as $the_idField) { list($exists) = sql_fetch_row(sql_query('Select idField from core_field where idField=' . $the_idField['id'])); if ($exists == NULL) { $customcols[$num_row]['selected'] = FALSE; } $num_row++; } $custom_list = array(); foreach ($customcols as $val) { if ($val['selected']) { $colspanuser++; $th2[] = $val['label']; $custom_list[] = $val['id']; } } $field_values = !empty($custom_list) ? $fman->getUsersFieldEntryData($_users, $custom_list) : array(); $colspan1 = 0; $colspan2 = 0; $colspan3 = 1; if (in_array('_TH_CAT', $cols)) { $th2[] = $lang->def('_CATEGORY'); $colspan1++; } if (in_array('_TH_CODE', $cols)) { $th2[] = $lang->def('_CODE'); $colspan1++; } $th2[] = $lang->def('_COURSE_NAME'); $colspan1++; $th2[] = Lang::t('_COURSE_TYPE', 'course'); $colspan1++; if (in_array('_TH_COURSEPATH', $cols)) { $th2[] = $lang->def('_TH_COURSEPATH'); $colspan1++; } if (in_array('_TH_COURSESTATUS', $cols)) { $th2[] = $lang->def('_STATUS'); $colspan1++; } if (in_array('_TH_COURSECREDITS', $cols)) { $th2[] = Lang::t('_CREDITS', 'standard'); $colspan1++; } $colspan_classrooms_editions = 0; if ($show_classrooms_editions) { if (in_array('_TH_CLASSROOM_CODE', $cols)) { $th2[] = Lang::t('_NAME', 'standard'); $colspan_classrooms_editions++; } if (in_array('_TH_CLASSROOM_NAME', $cols)) { $th2[] = Lang::t('_CODE', 'standard'); $colspan_classrooms_editions++; } if (in_array('_TH_CLASSROOM_MIN_DATE', $cols)) { $th2[] = Lang::t('_DATE_BEGIN', 'standard'); $colspan_classrooms_editions++; } if (in_array('_TH_CLASSROOM_MAX_DATE', $cols)) { $th2[] = Lang::t('_DATE_END', 'standard'); $colspan_classrooms_editions++; } } if (in_array('_TH_USER_INSCRIPTION_DATE', $cols)) { $th2[] = $lang->def('_TH_USER_INSCRIPTION_DATE'); $colspan2++; } if (in_array('_TH_USER_START_DATE', $cols)) { $th2[] = $lang->def('_DATE_FIRST_ACCESS'); $colspan2++; } if (in_array('_TH_USER_END_DATE', $cols)) { $th2[] = $lang->def('_COMPLETED'); $colspan2++; } if (in_array('_TH_LAST_ACCESS_DATE', $cols)) { $th2[] = $lang->def('_DATE_LAST_ACCESS'); $colspan2++; } if (in_array('_TH_USER_LEVEL', $cols)) { $th2[] = $lang->def('_LEVEL'); $colspan2++; } if (in_array('_TH_USER_STATUS', $cols)) { $th2[] = $lang->def('_STATUS'); $colspan2++; } if (in_array('_TH_USER_START_SCORE', $cols)) { $th2[] = $lang->def('_TH_USER_START_SCORE'); $colspan2++; } if (in_array('_TH_USER_FINAL_SCORE', $cols)) { $th2[] = $lang->def('_FINAL_SCORE'); $colspan2++; } if (in_array('_TH_USER_COURSE_SCORE', $cols)) { $th2[] = $lang->def('_TH_USER_COURSE_SCORE'); $colspan2++; } if (in_array('_TH_USER_NUMBER_SESSION', $cols)) { $th2[] = $lang->def('_TH_USER_NUMBER_SESSION'); $colspan2++; } if (in_array('_TH_USER_ELAPSED_TIME', $cols)) { $th2[] = $lang->def('_TOTAL_TIME'); $colspan2++; } if (in_array('_TH_ESTIMATED_TIME', $cols)) { $th2[] = $lang->def('_TH_ESTIMATED_TIME'); $colspan2++; } //checkbox for mail if ($this->use_mail) { $th2[] = array('style' => 'img-cell', 'value' => $this->_loadEmailIcon()); } $th1 = array(); $th1[] = array('colspan' => $colspanuser, 'value' => $lang->def('_USERS')); $th1[] = array('colspan' => $colspan1, 'value' => $lang->def('_COURSES')); if ($show_classrooms_editions) { $th1[] = array('colspan' => $colspan_classrooms_editions, 'value' => Lang::t('_CLASSROOM', 'standard')); } $th1[] = array('colspan' => $colspan2, 'value' => $lang->def('_STATUS')); $th1[] = ''; $buffer->openHeader(); $buffer->addHeader($th1); $buffer->addHeader($th2); $buffer->closeHeader(); $re_course_user = sql_query($query_course_user); $i = 0; $count_rows = 0; $buffer->openBody(); $exclusive = $filter_columns['filter_exclusive'] == 1 ? true : false; //1 if exclusive, 0 if inclusive while ($sql_row = sql_fetch_array($re_course_user)) { if ($show_classrooms_editions) { list($id_user, $code, $id_course, $id_category, $name, $status, $level_user, $status_user, $date_inscr, $date_first_access, $date_complete, $medium_time, $course_type, $credits, $userid, $firstname, $lastname, $email, $register_date, $valid, $id_date, $classroom_date_subscription, $classroom_date_complete) = $sql_row; } else { list($id_user, $code, $id_course, $id_category, $name, $status, $level_user, $status_user, $date_inscr, $date_first_access, $date_complete, $medium_time, $course_type, $credits, $userid, $firstname, $lastname, $email, $register_date, $valid) = $sql_row; } //$draw_row = $exclusive; if (!isset($filter_columns['sub_filters'])) { $filter_columns['sub_filters'] = array(); } if (count($filter_columns['sub_filters']) <= 0) { $condition = true; //no conditions to check } else { $condition = $exclusive; foreach ($filter_columns['sub_filters'] as $key => $value) { $temp = false; switch ($value['option']) { case _COURSES_FILTER_SESSION_NUMBER: if (isset($session_list[$id_user . '_' . $id_course])) { $temp = $this->_check($session_list[$id_user . '_' . $id_course], $value['value'], $value['sign'], _FILTER_INTEGER); } break; case _COURSES_FILTER_SCORE_INIT: if (isset($score_start[$id_course][$id_user])) { $temp = $this->_check($score_start[$id_course][$id_user]['score'], $value['value'], $value['sign'], _FILTER_INTEGER); } break; case _COURSES_FILTER_SCORE_END: if (isset($score_final[$id_course][$id_user])) { $temp = $this->_check($score_final[$id_course][$id_user]['score'], $value['value'], $value['sign'], _FILTER_INTEGER); } break; case _COURSES_FILTER_INSCRIPTION_DATE: $temp = $this->_check($date_inscr, $value['value'], $value['sign'], _FILTER_DATE); break; case _COURSES_FILTER_END_DATE: $temp = $this->_check($date_complete, $value['value'], $value['sign'], _FILTER_DATE); break; case _COURSES_FILTER_FIRSTACCESS_DATE: $temp = $this->_check($date_first_access, $value['value'], $value['sign'], _FILTER_DATE); break; case _COURSES_FILTER_LASTACCESS_DATE: if (isset($lastaccess_list[$id_user . '_' . $id_course])) { $temp = $this->_check($lastaccess_list[$id_user . '_' . $id_course], $value['value'], $value['sign'], _FILTER_DATE); } break; case _COURSES_FILTER_SCORE_COURSE: if (isset($score_course[$id_user][$id_course])) { $temp = $this->_check($score_course[$id_user][$id_course]['score'], $value['value'], $value['sign'], _FILTER_INTEGER); } break; } if ($exclusive) { $condition = $condition && $temp; if (!$condition) { break; } //if false, no more conditions needed } else { $condition = $condition || $temp; if ($condition) { break; } //if true, no more conditions needed } } } //cout('<div>'.($condition ? 'true' : 'false').'</div>'); if ($condition) { $row = array(); $row[] = Docebo::aclm()->relativeId($userid); if (in_array('_TH_LASTNAME', $cols)) { $row[] = $lastname; } if (in_array('_TH_FIRSTNAME', $cols)) { $row[] = $firstname; } if (in_array('_TH_EMAIL', $cols)) { $row[] = $email; } if (in_array('_TH_REGISTER_DATE', $cols)) { $row[] = Format::date($register_date, 'datetime'); } if (in_array('_TH_SUSPENDED', $cols)) { $row[] = $valid ? Lang::t('_NO', 'standard') : Lang::t('_YES', 'standard'); } foreach ($customcols as $val) { if ($val['selected']) { if (isset($field_values[$id_user][$val['id']])) { $row[] = $field_values[$id_user][$val['id']]; } else { $row[] = ''; } } } if (in_array('_TH_CAT', $cols)) { $row[] = $category_list[$id_category]; } if (in_array('_TH_CODE', $cols)) { $row[] = $code; } $row[] = $name; $row[] = isset($course_types_trans[$course_type]) ? $course_types_trans[$course_type] : ""; if (in_array('_TH_COURSEPATH', $cols)) { $row[] = $category_path_list[$id_category]; } if (in_array('_TH_COURSESTATUS', $cols)) { $row[] = $this->_convertStatusCourse($status); } if (in_array('_TH_COURSECREDITS', $cols)) { $row[] = $credits; } if ($show_classrooms_editions) { $e_code = $e_name = $date_1 = $date_2 = ''; if (isset($classrooms_editions_info['classrooms'][$id_date])) { $e_code = $classrooms_editions_info['classrooms'][$id_date]->code; $e_name = $classrooms_editions_info['classrooms'][$id_date]->name; $date_1 = Format::date($classrooms_editions_info['classrooms'][$id_date]->date_1, 'datetime'); $date_2 = Format::date($classrooms_editions_info['classrooms'][$id_date]->date_2, 'datetime'); } if (in_array('_TH_CLASSROOM_CODE', $cols)) { $row[] = $e_code; } if (in_array('_TH_CLASSROOM_NAME', $cols)) { $row[] = $e_name; } if (in_array('_TH_CLASSROOM_MIN_DATE', $cols)) { $row[] = $date_1; } if (in_array('_TH_CLASSROOM_MAX_DATE', $cols)) { $row[] = $date_2; } } if (in_array('_TH_USER_INSCRIPTION_DATE', $cols)) { $row[] = Format::date($date_inscr); } if (in_array('_TH_USER_START_DATE', $cols)) { $row[] = $date_first_access !== NULL ? Format::date($date_first_access) : ' '; } if (in_array('_TH_USER_END_DATE', $cols)) { $row[] = $date_complete !== NULL ? Format::date($date_complete) : ' '; } if (in_array('_TH_LAST_ACCESS_DATE', $cols)) { $row[] = isset($lastaccess_list[$id_user . '_' . $id_course]) ? Format::date($lastaccess_list[$id_user . '_' . $id_course]) : ''; } if (in_array('_TH_USER_LEVEL', $cols)) { $row[] = $user_levels_trans[$level_user]; } if (in_array('_TH_USER_STATUS', $cols)) { $row[] = $this->_convertStatusUser($status_user); } if (in_array('_TH_USER_START_SCORE', $cols)) { $row[] = isset($score_start[$id_course][$id_user]) ? $score_start[$id_course][$id_user]['score'] . ' / ' . $score_start[$id_course][$id_user]['max_score'] : ''; } if (in_array('_TH_USER_FINAL_SCORE', $cols)) { $row[] = isset($score_final[$id_course][$id_user]) ? $score_final[$id_course][$id_user]['score'] . ' / ' . $score_final[$id_course][$id_user]['max_score'] : ''; } if (in_array('_TH_USER_COURSE_SCORE', $cols)) { $row[] = isset($score_course[$id_user][$id_course]) ? $score_course[$id_user][$id_course]['score'] . ' / ' . $score_course[$id_user][$id_course]['max_score'] : ''; } if (in_array('_TH_USER_NUMBER_SESSION', $cols)) { $row[] = isset($session_list[$id_user . '_' . $id_course]) ? $session_list[$id_user . '_' . $id_course] : ''; } if (in_array('_TH_USER_ELAPSED_TIME', $cols)) { $row[] = isset($time_list[$id_user . '_' . $id_course]) ? substr('0' . (int) ($time_list[$id_user . '_' . $id_course] / 3600), -2) . 'h ' . substr('0' . (int) ($time_list[$id_user . '_' . $id_course] % 3600 / 60), -2) . 'm ' . substr('0' . (int) ($time_list[$id_user . '_' . $id_course] % 60), -2) . 's ' : ' '; } if (in_array('_TH_ESTIMATED_TIME', $cols)) { $row[] = $medium_time . 'h'; } //checkbox for mail if ($this->use_mail) { $row[] = '<div class="align_center">' . Form::getInputCheckbox('mail_' . $id_user, 'mail_recipients[]', $id_user, isset($_POST['select_all']), '') . '</div>'; } $buffer->addLine($row); $count_rows++; } } $buffer->closeBody(); $buffer->closeTable(); $output .= $buffer->get(); YuiLib::load(array('selector' => 'selector-beta-min.js')); if ($this->use_mail) { cout('<script type="text/javascript"> function _getAllCheckBoxes() { return YAHOO.util.Selector.query("input[id^=mail_]"); } function selectAll() { var sel = _getAllCheckBoxes(); for (var i=0; i<sel.length; i++) { sel[i].checked=true; } } function unselectAll() { var sel = _getAllCheckBoxes(); for (var i=0; i<sel.length; i++) { sel[i].checked=false; } } YAHOO.util.Event.addListener("select_all-button", "click", selectAll); YAHOO.util.Event.addListener("unselect_all-button", "click", unselectAll); </script>', 'scripts'); } //if ($this->use_mail) { $this->_loadEmailActions(); } if ($this->use_mail) { $mlang =& DoceboLanguage::createInstance('report', 'framework'); //$output .= Form::getHidden('no_show_repdownload', 'no_show_repdownload', 1); $output .= Form::openButtonSpace() . Form::getHidden('no_show_repdownload', 'no_show_repdownload', 1) . Form::openButtonSpace() . Form::getButton('send_mail', 'send_mail', $mlang->def('_SEND_MAIL')) . Form::getButton('select_all', false, Lang::t('_SELECT_ALL', 'standard'), FALSE, 'onclick="selectAll();"', true, false) . Form::getButton('unselect_all', false, Lang::t('_UNSELECT_ALL', 'standard'), FALSE, 'onclick="unselectAll();"', true, false) . Form::closeButtonSpace(); //cout(Form::closeForm()); } if ($count_rows > 0) { return $output; } else { return $lang->def('_NULL_REPORT_RESULT'); } //null result string }
function coursereport() { checkPerm('view'); require_once $GLOBALS['where_lms'] . '/lib/lib.coursereport.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.test.php'; require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.table.php'; // XXX: Initializaing $lang =& DoceboLanguage::createInstance('coursereport', 'lms'); $out =& $GLOBALS['page']; $out->setWorkingZone('content'); $included_test = array(); $view_perm = checkPerm('view', true); $mod_perm = checkPerm('mod', true); // XXX: Instance management $acl_man = Docebo::user()->getAclManager(); $test_man = new GroupTestManagement(); $report_man = new CourseReportManager(); // XXX: Find test from organization $org_tests =& $report_man->getTest(); $tests_info = $test_man->getTestInfo($org_tests); // XXX: Find students /* * $id_students =& $report_man->getStudentId(); * $students_info =& $acl_man->getUsers($id_students); */ $lang2 =& DoceboLanguage::createInstance('levels', 'lms'); if (isset($_POST['type_filter'])) { $type_filter = $_POST['type_filter']; } else { $type_filter = false; } if ($type_filter == "false") { $type_filter = false; } $lev = $type_filter; $students = getSubscribedInfo((int) $_SESSION['idCourse'], FALSE, $lev, TRUE, false, false, true); $id_students = array_keys($students); $students_info =& $acl_man->getUsers($id_students); $i = 0; /*$students_info=array(); foreach( $students as $idst => $user_course_info ) $students_info[$idst] =& $acl_man->getUser( $idst, FALSE ); */ // XXX: Info for updates $query_tot_report = "\r\n\tSELECT COUNT(*)\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_coursereport\r\n\tWHERE id_course = '" . $_SESSION['idCourse'] . "'"; list($tot_report) = sql_fetch_row(sql_query($query_tot_report)); $query_tests = "\r\n\tSELECT id_report, id_source\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_coursereport\r\n\tWHERE id_course = '" . $_SESSION['idCourse'] . "' AND source_of = 'test'"; $re_tests = sql_query($query_tests); while (list($id_r, $id_t) = sql_fetch_row($re_tests)) { $included_test[$id_t] = $id_t; $included_test_report_id[$id_r] = $id_r; } // XXX: Update if needed if ($tot_report == 0) { $report_man->initializeCourseReport($org_tests); } else { if (is_array($included_test)) { $test_to_add = array_diff($org_tests, $included_test); } else { $test_to_add = $org_tests; } if (is_array($included_test)) { $test_to_del = array_diff($included_test, $org_tests); } else { $test_to_del = $org_tests; } if (!empty($test_to_add) || !empty($test_to_del)) { $report_man->addTestToReport($test_to_add, 1); $report_man->delTestToReport($test_to_del); $included_test = $org_tests; } } $report_man->updateTestReport($org_tests); // XXX: Retrive all colums (test and so), and set it $img_mod = '<img src="' . getPathImage() . 'standard/edit.png" alt="' . $lang->def('_MOD') . '" />'; $type_h = array('line_users'); $cont_h = array($lang->def('_DETAILS')); $a_line_1 = array(''); $a_line_2 = array(''); $colums['max_score'] = array($lang->def('_MAX_SCORE')); $colums['required_score'] = array($lang->def('_REQUIRED_SCORE')); $colums['weight'] = array($lang->def('_WEIGHT')); $colums['show_to_user'] = array($lang->def('_SHOW_TO_USER')); $colums['use_for_final'] = array($lang->def('_USE_FOR_FINAL')); $query_report = "\r\n\tSELECT id_report, title, max_score, required_score, weight, show_to_user, use_for_final, source_of, id_source\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_coursereport\r\n\tWHERE id_course = '" . $_SESSION['idCourse'] . "'\r\n\tORDER BY sequence "; $re_report = sql_query($query_report); $total_weight = 0; $i = 1; while ($info_report = sql_fetch_assoc($re_report)) { $id = $info_report['id_source']; $reports[$info_report['id_report']] = $info_report; $reports_id[] = $info_report['id_report']; // XXX: set action colums $type_h[] = 'min-cell'; switch ($info_report['source_of']) { case "test": $title = strip_tags($tests_info[$info_report['id_source']]['title']); if (!$mod_perm) { if (!$view_perm) { $my_action = ''; $a_line_2[] = ''; } else { $my_action = '<a class="ico-sprite subs_chart" href="index.php?modname=coursereport&op=testQuestion&id_test=' . $id . '"><span><span>' . $lang->def('_TQ_LINK') . '</span></a>'; $a_line_2[] = ''; } } else { $my_action = '<a class="ico-sprite subs_mod" href="index.php?modname=coursereport&op=testvote&type_filter=' . $type_filter . '&id_test=' . $id . '"><span><span>' . $lang->def('_EDIT_SCORE') . '</span></a>' . ' <a class="ico-sprite subs_chart" href="index.php?modname=coursereport&op=testQuestion&type_filter=' . $type_filter . '&id_test=' . $id . '"><span><span>' . $lang->def('_TQ_LINK') . '</span></a>'; $a_line_2[] = '<a href="index.php?modname=coursereport&op=roundtest&id_test=' . $id . '" ' . 'title="' . $lang->def('_ROUND_TEST_VOTE') . '">' . $lang->def('_ROUND_VOTE') . '</a>'; } break; case "scoitem": $title = strip_tags($info_report['title']); if (!$mod_perm) { $my_action = ''; $a_line_2[] = ''; } else { $my_action = $my_action = '<a class="ico-sprite subs_mod" href="index.php?modname=coursereport&op=modactivityscore&type_filter=' . $type_filter . '&id_report=' . $info_report['id_report'] . '&source_of=' . $info_report['source_of'] . '&id_source=' . $info_report['id_source'] . '"><span><span>' . $lang->def('_CHANGE_ACTIVITY_VOTE') . '</span></a>' . ' <a class="ico-sprite subs_del" href="index.php?modname=coursereport&op=delactivity&id_report=' . $info_report['id_report'] . '"><span><span>' . $lang->def('_DELETE_ACTIVITY_VOTE') . '</span></a>'; $a_line_2[] = '<a href="index.php?modname=coursereport&op=roundreport&id_report=' . $info_report['id_report'] . '" ' . 'title="' . $lang->def('_ROUND_ACTIVITY_VOTE_TITLE') . '">' . $lang->def('_ROUND_VOTE') . '</a>'; } break; case "activity": $title = strip_tags($info_report['title']); if (!$mod_perm) { $my_action = ''; $a_line_2[] = ''; } else { $my_action = '<a class="ico-sprite subs_mod" href="index.php?modname=coursereport&op=modactivityscore&type_filter=' . $type_filter . '&id_report=' . $info_report['id_report'] . '&source_of=' . $info_report['source_of'] . '&id_source=' . $info_report['id_source'] . '"><span><span>' . $lang->def('_CHANGE_ACTIVITY_VOTE') . '</span></a>' . ' <a class="ico-sprite subs_del" href="index.php?modname=coursereport&op=delactivity&id_report=' . $info_report['id_report'] . '"><span><span>' . $lang->def('_DELETE_ACTIVITY_VOTE') . '</span></a>'; $a_line_2[] = '<a href="index.php?modname=coursereport&op=roundreport&id_report=' . $info_report['id_report'] . '" ' . 'title="' . $lang->def('_ROUND_VOTE') . '">' . $lang->def('_ROUND_VOTE') . '</a>'; } break; case "final_vote": $title = strip_tags($lang->def('_FINAL_SCORE')); $info_report['weight'] = $total_weight; if (!$mod_perm) { $my_action = ''; $a_line_2[] = ''; } else { $my_action = '<a class="ico-sprite subs_mod" href="index.php?modname=coursereport&op=finalvote&type_filter=' . $type_filter . '&id_report=' . $info_report['id_report'] . '"><span><span>' . $lang->def('_EDIT_SCORE') . '</span></a>'; $a_line_2[] = '' . '<a href="index.php?modname=coursereport&op=redofinal&id_report=' . $info_report['id_report'] . '" ' . 'title="' . $lang->def('_REDO_FINAL_VOTE_TITLE') . '">' . $lang->def('_REDO_FINAL_VOTE') . '</a></li>' . '<br/><a href="index.php?modname=coursereport&op=roundreport&id_report=' . $info_report['id_report'] . '" ' . 'title="' . $lang->def('_ROUND_FINAL_VOTE_TITLE') . '">' . $lang->def('_ROUND_VOTE') . '</a></li>' . ''; } break; } $top = $title . '<br/>'; if ($mod_perm) { if ($i > 1 && $info_report['source_of'] != 'final_vote') { $top .= '<a class="ico-sprite subs_left" href="index.php?modname=coursereport&op=moveleft&id_report=' . $info_report['id_report'] . '"><span><span>' . $lang->def('_MOVE_LEFT') . '</span></a>'; } } $top .= $my_action; if ($mod_perm) { if ($i < $tot_report - 1 && $tot_report > 2) { $top .= '<a class="ico-sprite subs_right" href="index.php?modname=coursereport&op=moveright&id_report=' . $info_report['id_report'] . '"><span><span>' . $lang->def('_MOVE_RIGHT') . '</span></a>'; } } $cont_h[] = $top; $i++; //set info colums $colums['max_score'][] = $info_report['max_score']; $colums['required_score'][] = $info_report['required_score']; $colums['weight'][] = $info_report['weight']; $colums['show_to_user'][] = $info_report['show_to_user'] == 'true' ? $lang->def('_YES') : $lang->def('_NO'); $colums['use_for_final'][] = $info_report['use_for_final'] == 'true' ? $lang->def('_YES') : $lang->def('_NO'); if ($info_report['use_for_final'] == 'true') { $total_weight += $info_report['weight']; } } // XXX: Set table intestation $tb_report = new Table(0, $lang->def('_COURSE_REPORT_CAPTION'), $lang->def('_COURSE_REPORT_SUMMARY')); $tb_report->setColsStyle($type_h); $tb_report->addHead($cont_h); $tb_report->addBody($a_line_2); $tb_report->addBody($colums['max_score']); $tb_report->addBody($colums['required_score']); $tb_report->addBody($colums['weight']); $tb_report->addBody($colums['show_to_user']); $tb_report->addBody($colums['use_for_final']); //$tb->addBodyExpanded('<span class="text_bold title_big">'.$lang->def('_STUDENTS_VOTE').'</span>', 'align-center'); $tb_score = new Table(0, $lang->def('_STUDENTS_VOTE'), $lang->def('_COURSE_REPORT_SUMMARY')); $tb_score->setColsStyle($type_h); $cont_h[0] = $lang->def('_STUDENTS'); $cont_old = $cont_h; // ALE aggiungo menu a tendina con valori utente: require_once _adm_ . '/lib/lib.field.php'; $fman = new FieldList(); $fields = $fman->getFlatAllFields(array('framework', 'lms')); $f_list = array('userid' => Lang::t('_USERNAME', 'standard'), 'firstname' => Lang::t('_FIRSTNAME', 'standard'), 'lastname' => Lang::t('_LASTNAME', 'standard'), 'email' => Lang::t('_EMAIL', 'standard'), 'lastenter' => Lang::t('_DATE_LAST_ACCESS', 'profile'), 'register_date' => Lang::t('_DIRECTORY_FILTER_register_date', 'admin_directory'), 'language' => Lang::t('_LANGUAGE', 'standard'), 'level' => Lang::t('_LEVEL', 'standard')); $f_list = $f_list + $fields; $js_arr = array(); foreach ($f_list as $key => $value) { $js_arr[] = $key . ': ' . json_encode($value); } $f_list_js = '{' . implode(',', $js_arr) . '}'; $fieldlist = $f_list; $dyn_labels = array(); $dyn_filter = array(); $num_var_fields = 1; $label = '<form name="formx" method="get">'; for ($i = 0; $i < $num_var_fields; $i++) { $label .= '<select onchange="document.formx.submit()" id="_dyn_field_selector_0" name="_dyn_field_selector_0">'; foreach ($fieldlist as $key => $value) { if ($i == 0) { $first = $key; } $label .= '<option value="' . $key . '"' . ($_GET['_dyn_field_selector_0'] == $key ? ' selected="selected"' : '') . '>' . $value . '</option>'; } $label .= '</select>'; } $label .= '</form>'; $field_selected = $_GET['_dyn_field_selector_0'] ? $_GET['_dyn_field_selector_0'] : 'userid'; $_SESSION['field_selected'] = $field_selected; // aggiungo un elemento in posizione 1 $index = 1; $start = array_slice($cont_h, 0, $index); $end = array_slice($cont_h, $index); $start[] = $label; $cont_h = array_merge($start, $end); // fine inserimento // END ALE $tb_score->addHead($cont_h); $cont_h = $cont_old; // ripristino il vecchio array di intestazioni // $tb_score->addHead($cont_h); // XXX: Retrive Test info and scores $tests_score =& $test_man->getTestsScores($included_test, $id_students); // XXX: Calculate statistic $test_details = array(); if (is_array($included_test)) { while (list($id_test, $users_result) = each($tests_score)) { while (list($id_user, $single_test) = each($users_result)) { if ($single_test['score_status'] == 'valid') { // max if (!isset($test_details[$id_test]['max_score'])) { $test_details[$id_test]['max_score'] = $single_test['score']; } elseif ($single_test['score'] > $test_details[$id_test]['max_score']) { $test_details[$id_test]['max_score'] = $single_test['score']; } // min if (!isset($test_details[$id_test]['min_score'])) { $test_details[$id_test]['min_score'] = $single_test['score']; } elseif ($single_test['score'] < $test_details[$id_test]['min_score']) { $test_details[$id_test]['min_score'] = $single_test['score']; } //number of valid score if (!isset($test_details[$id_test]['num_result'])) { $test_details[$id_test]['num_result'] = 1; } else { $test_details[$id_test]['num_result']++; } // averange if (!isset($test_details[$id_test]['averange'])) { $test_details[$id_test]['averange'] = $single_test['score']; } else { $test_details[$id_test]['averange'] += $single_test['score']; } } } } while (list($id_test, $single_detail) = each($test_details)) { if (isset($single_detail['num_result'])) { $test_details[$id_test]['averange'] /= $test_details[$id_test]['num_result']; } } reset($test_details); } // XXX: Retrive other source scores $reports_score =& $report_man->getReportsScores(isset($included_test_report_id) && is_array($included_test_report_id) ? array_diff($reports_id, $included_test_report_id) : $reports_id, $id_students); // XXX: Calculate statistic $report_details = array(); while (list($id_report, $users_result) = each($reports_score)) { while (list($id_user, $single_report) = each($users_result)) { if ($single_report['score_status'] == 'valid') { // max if (!isset($report_details[$id_report]['max_score'])) { $report_details[$id_report]['max_score'] = $single_report['score']; } elseif ($single_report['score'] > $report_details[$id_report]['max_score']) { $report_details[$id_report]['max_score'] = $single_report['score']; } // min if (!isset($report_details[$id_report]['min_score'])) { $report_details[$id_report]['min_score'] = $single_report['score']; } elseif ($single_report['score'] < $report_details[$id_report]['min_score']) { $report_details[$id_report]['min_score'] = $single_report['score']; } //number of valid score if (!isset($report_details[$id_report]['num_result'])) { $report_details[$id_report]['num_result'] = 1; } else { $report_details[$id_report]['num_result']++; } // averange if (!isset($report_details[$id_report]['averange'])) { $report_details[$id_report]['averange'] = $single_report['score']; } else { $report_details[$id_report]['averange'] += $single_report['score']; } } } } while (list($id_report, $single_detail) = each($report_details)) { if (isset($single_detail['num_result'])) { $report_details[$id_report]['averange'] /= $report_details[$id_report]['num_result']; } } reset($report_details); // XXX: Display user scores if (!empty($students_info)) { while (list($idst_user, $user_info) = each($students_info)) { $user_name = $user_info[ACL_INFO_LASTNAME] . $user_info[ACL_INFO_FIRSTNAME] ? $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME] : $acl_man->relativeId($user_info[ACL_INFO_USERID]); $cont = array($user_name); $fman = new FieldList(); $field_entries = $fman->getUsersFieldEntryData($user_info[0], $field_selected, true); $user = array('id' => $user_info[ACL_INFO_IDST], 'userid' => $user_info[ACL_INFO_USERID], 'firstname' => $user_info[ACL_INFO_FIRSTNAME], 'lastname' => $user_info[ACL_INFO_LASTNAME], 'email' => $user_info[ACL_INFO_EMAIL], 'register_date' => $user_info[ACL_INFO_REGISTER_DATE], 'lastenter' => $user_info[ACL_INFO_LASTENTER]); if (is_numeric($field_selected)) { $cont[] = $field_entries[$user_info[0]][$field_selected]; } else { if ($field_selected == "userid") { $pos = strrpos($user[$field_selected], "/"); if ($pos == 0) { $cont[] = substr($user[$field_selected], 1); } } else { $cont[] = $user[$field_selected]; } } // for every colum $results_test = array(); $results_activity = array(); $results_scorm_test = array(); foreach ($reports as $id_report => $info_report) { switch ($info_report['source_of']) { case "test": $id_test = $info_report['id_source']; if (isset($tests_score[$id_test][$idst_user])) { switch ($tests_score[$id_test][$idst_user]['score_status']) { case "not_complete": $cont[] = '-'; break; case "not_checked": $cont[] = '<span class="cr_not_check">' . $lang->def('_NOT_CHECKED') . '</span>'; // Count not checked if (!isset($test_details[$id_test]['not_checked'])) { $test_details[$id_test]['not_checked'] = 1; } else { $test_details[$id_test]['not_checked']++; } break; case "passed": //$cont[] = '<span class="cr_passed">'.$lang->def('_PASSED').'</span>'; $cont[] = '<img src="' . getPathImage('fw') . 'emoticons/thumbs_up.gif" alt="' . $lang->def('_PASSED') . '" />'; // Count passed if (!isset($test_details[$id_test]['passed'])) { $test_details[$id_test]['passed'] = 1; } else { $test_details[$id_test]['passed']++; } break; case "not_passed": //$cont[] = '<span class="cr_not_passed">'.$lang->def('_NOT_PASSED').'</span>'; $cont[] = '<img src="' . getPathImage('fw') . 'emoticons/thumbs_down.gif" alt="' . $lang->def('_NOT_PASSED') . '" />'; // Count not passed if (!isset($test_details[$id_test]['not_passed'])) { $test_details[$id_test]['not_passed'] = 1; } else { $test_details[$id_test]['not_passed']++; } break; case "valid": $score = $tests_score[$id_test][$idst_user]['score']; if ($tests_score[$id_test][$idst_user]['times'] > 0) { $tests_score[$id_test][$idst_user]['times'] = "<a href=\"index.php?modname=coursereport&op=testreport&idTest=" . $tests_score[$id_test][$idst_user]['idTest'] . "&idTrack=" . $tests_score[$id_test][$idst_user]['idTrack'] . "&testName=" . $tests_info[$info_report['id_source']]['title'] . "&studentName=" . $acl_man->relativeId($user_info[ACL_INFO_USERID]) . "\">" . $tests_score[$id_test][$idst_user]['times'] . "</a>"; } $tt = "(" . $tests_score[$id_test][$idst_user]['times'] . ")"; if ($score >= $info_report['required_score']) { if ($score == $test_details[$id_test]['max_score']) { $cont[] = '<span class="cr_max_score">' . $score . " " . $tt . '</span>'; } else { $cont[] = $score . " " . $tt; } // Count passed if (!isset($test_details[$id_test]['passed'])) { $test_details[$id_test]['passed'] = 1; } else { $test_details[$id_test]['passed']++; } } else { if ($score == $test_details[$id_test]['max_score']) { $cont[] = '<span class="cr_max_score cr_not_passed">' . $score . " " . $tt . '</span>'; } else { $cont[] = '<span class="cr_not_passed">' . $score . " " . $tt . '</span>'; } // Count not passed if (!isset($test_details[$id_test]['not_passed'])) { $test_details[$id_test]['not_passed'] = 1; } else { $test_details[$id_test]['not_passed']++; } } if (isset($test_details[$id_test]['varianza']) && isset($test_details[$id_test]['averange'])) { $test_details[$id_test]['varianza'] += pow($tests_score[$id_test][$idst_user]['score'] - $test_details[$id_test]['averange'], 2); } else { $test_details[$id_test]['varianza'] = pow($tests_score[$id_test][$idst_user]['score'] - $test_details[$id_test]['averange'], 2); } break; default: $cont[] = '-'; } } else { $cont[] = '-'; } if ($info_report['use_for_final'] == 'true') { array_push($results_test, $score * $info_report['weight']); } break; case "scoitem": $query_report = "\r\n\t\t\t\t\t\tSELECT *\r\n\t\t\t\t\t\tFROM " . $GLOBALS['prefix_lms'] . "_scorm_tracking\r\n\t\t\t\t\t\tWHERE idscorm_item = '" . $info_report['id_source'] . "' AND idUser = '******'\r\n\t\t\t\t\t\t"; //echo $query_report; $report = sql_fetch_assoc(sql_query($query_report)); if ($report['score_raw'] == NULL) { $report['score_raw'] = "-"; } //$cont[] = '<span class="cr_passed">'.$report['score_max'].'</span>'; if ($info_report['use_for_final'] == 'true') { array_push($results_scorm_test, $report['score_raw'] * $info_report['weight']); } $id_track = isset($report['idscorm_tracking']) ? $report['idscorm_tracking'] : 0; $query_report = "\r\n\t\t\t\t\t\tSELECT *\r\n\t\t\t\t\t\tFROM " . $GLOBALS['prefix_lms'] . "_scorm_tracking_history\r\n\t\t\t\t\t\tWHERE idscorm_tracking = '" . $id_track . "'\r\n\t\t\t\t\t\t"; //echo $query_report; $query = sql_query($query_report); $num = sql_num_rows($query); if ($num > 0) { $storico = " (<a href=\"index.php?modname=coursereport&op=scormreport&idTest=" . $id_track . "\">" . $num . "</a>)"; } else { $storico = ""; } $cont[] = '<span class="cr_not_check">' . $report['score_raw'] . '</span>' . $storico; break; case "activity": $id_report = $info_report['id_report']; $score = 0; if (isset($reports_score[$id_report][$idst_user])) { switch ($reports_score[$id_report][$idst_user]['score_status']) { case "not_complete": $cont[] = '-'; break; case "valid": $score = $reports_score[$id_report][$idst_user]['score']; if ($score >= $info_report['required_score']) { if ($score == $info_report['max_score']) { $cont[] = '<span class="cr_max_score">' . $score . '</span>'; } else { $cont[] = $score; } // Count passed if (!isset($report_details[$id_report]['passed'])) { $report_details[$id_report]['passed'] = 1; } else { $report_details[$id_report]['passed']++; } } else { $cont[] = '<span class="cr_not_passed">' . $score . '</span>'; // Count not passed if (!isset($report_details[$id_report]['not_passed'])) { $report_details[$id_report]['not_passed'] = 1; } else { $report_details[$id_report]['not_passed']++; } } if (isset($report_details[$id_report]['varianza']) && isset($report_details[$id_report]['averange'])) { $report_details[$id_report]['varianza'] += round(pow($reports_score[$id_report][$idst_user]['score'] - $report_details[$id_report]['averange'], 2), 2); } else { $report_details[$id_report]['varianza'] = round(pow($reports_score[$id_report][$idst_user]['score'] - $report_details[$id_report]['averange'], 2), 2); } break; } } else { $cont[] = '<span class="cr_not_passed">-</span>'; } if ($info_report['use_for_final'] == 'true') { array_push($results_activity, $score * $info_report['weight']); } break; case "final_vote": // $divid = (count($results_test)) + (count($results_scorm_test)) + (count($results_activity)); $first_value = 0; foreach ($results_test as $value) { if (!is_numeric($value)) { $value = 0; } $first_value += $value; } $second_value = 0; foreach ($results_scorm_test as $value) { if (!is_numeric($value)) { $value = 0; } $second_value += $value; } $third_value = 0; foreach ($results_activity as $value) { if (!is_numeric($value)) { $value = 0; } $third_value += $value; } // Reset array results $results_scorm_test = array(); $results_test = array(); $results_activity = array(); $media = ($first_value + $second_value + $third_value) / $total_weight; $media = sprintf("%01.2f", round($media, 2)); $cont[] = $media > 0 ? $media : '<span class="cr_not_passed">-</span>'; break; } } $tb_score->addBody($cont); } } // XXX: Display statistics $stats['passed'] = array($lang->def('_PASSED')); //, '' $stats['not_passed'] = array($lang->def('_NOT_PASSED')); //, '' $stats['not_checked'] = array($lang->def('_NOT_CHECKED')); //, '' $stats['averange'] = array($lang->def('_AVERANGE')); //, '' $stats['varianza'] = array($lang->def('_STANDARD_DEVIATION')); //, '' $stats['max_score'] = array($lang->def('_MAX_SCORE')); //, '' $stats['min_score'] = array($lang->def('_MIN_SCORE')); //, '' foreach ($reports as $id_report => $info_report) { switch ($info_report['source_of']) { case "test": $id_test = $info_report['id_source']; if (isset($test_details[$id_test]['passed']) || isset($test_details[$id_test]['not_passed'])) { if (!isset($test_details[$id_test]['passed'])) { $test_details[$id_test]['passed'] = 0; } if (!isset($test_details[$id_test]['not_passed'])) { $test_details[$id_test]['not_passed'] = 0; } $test_details[$id_test]['varianza'] /= $test_details[$id_test]['passed'] + $test_details[$id_test]['not_passed']; $test_details[$id_test]['varianza'] = sqrt($test_details[$id_test]['varianza']); } $stats['passed'][] = isset($test_details[$id_test]['passed']) ? round($test_details[$id_test]['passed'], 2) : '-'; $stats['not_passed'][] = isset($test_details[$id_test]['not_passed']) ? round($test_details[$id_test]['not_passed'], 2) : '-'; $stats['not_checked'][] = isset($test_details[$id_test]['not_checked']) ? round($test_details[$id_test]['not_checked'], 2) : '-'; $stats['averange'][] = isset($test_details[$id_test]['averange']) ? round($test_details[$id_test]['averange'], 2) : '-'; $stats['varianza'][] = isset($test_details[$id_test]['varianza']) ? round($test_details[$id_test]['varianza'], 2) : '-'; $stats['max_score'][] = isset($test_details[$id_test]['max_score']) ? round($test_details[$id_test]['max_score'], 2) : '-'; $stats['min_score'][] = isset($test_details[$id_test]['min_score']) ? round($test_details[$id_test]['min_score'], 2) : '-'; break; case "scoitem": $query_report = "\r\n\t\t\t\t\t\tSELECT *\r\n\t\t\t\t\t\tFROM " . $GLOBALS['prefix_lms'] . "_scorm_tracking\r\n\t\t\t\t\t\tWHERE idscorm_item = '" . $info_report['id_source'] . "'"; $passed = 0; $total = 0; $media = 0; $varianza = 0; $votomassimo = 0; $votominimo = 9999; $result = sql_query($query_report); while ($report = sql_fetch_assoc($result)) { if ($report['score_raw'] != NULL) { if ($report['score_raw'] > $votomassimo) { $votomassimo = $report['score_raw']; } if ($report['score_raw'] < $votominimo) { $votominimo = $report['score_raw']; } $media = $media + $report['score_raw']; $total = $total + 1; if ($report['lesson_status'] == 'passed') { $passed++; } } } $media = $total == 0 ? '0' : $media / $total; $result = sql_query($query_report); $var = 0; while ($report = sql_fetch_assoc($result)) { if ($report['score_raw'] != NULL) { $var = $var + pow($media - $report['score_raw'], 2); } } $varianza = $total == 0 ? '0' : floor($var / $total); if ($votominimo == 9999) { $votominimo = ""; } $stats['passed'][] = $passed; $stats['not_passed'][] = $total - $passed; $stats['not_checked'][] = "-"; $stats['averange'][] = $media; $stats['varianza'][] = $varianza; $stats['max_score'][] = $votomassimo; $stats['min_score'][] = $votominimo; break; case "activity": case "final_vote": if (isset($report_details[$id_report]['passed']) || isset($report_details[$id_report]['not_passed'])) { if (!isset($report_details[$id_report]['passed'])) { $report_details[$id_report]['passed'] = 0; } if (!isset($report_details[$id_report]['not_passed'])) { $report_details[$id_report]['not_passed'] = 0; } $report_details[$id_report]['varianza'] /= $report_details[$id_report]['passed'] + $report_details[$id_report]['not_passed']; $report_details[$id_report]['varianza'] = sqrt($report_details[$id_report]['varianza']); } $stats['passed'][] = isset($report_details[$id_report]['passed']) ? round($report_details[$id_report]['passed'], 2) : '-'; $stats['not_passed'][] = isset($report_details[$id_report]['not_passed']) ? round($report_details[$id_report]['not_passed'], 2) : '-'; $stats['not_checked'][] = isset($report_details[$id_report]['not_checked']) ? round($report_details[$id_report]['not_checked'], 2) : '-'; $stats['averange'][] = isset($report_details[$id_report]['averange']) ? round($report_details[$id_report]['averange'], 2) : '-'; $stats['varianza'][] = isset($report_details[$id_report]['varianza']) ? round(sqrt($report_details[$id_report]['varianza']), 2) : '-'; $stats['max_score'][] = isset($report_details[$id_report]['max_score']) ? round($report_details[$id_report]['max_score'], 2) : '-'; $stats['min_score'][] = isset($report_details[$id_report]['min_score']) ? round($report_details[$id_report]['min_score'], 2) : '-'; break; } } $tb_stat = new Table(0, $lang->def('_SUMMARY_VOTE'), $lang->def('_COURSE_REPORT_SUMMARY')); $tb_stat->setColsStyle($type_h); $cont_h[0] = $lang->def('_STATISTICS'); $tb_stat->addHead($cont_h); //$tb->addBodyExpanded('<span class="text_bold title_big">'.$lang->def('_SUMMARY_VOTE').'</span>', 'align-center'); $tb_stat->addBody($stats['passed']); $tb_stat->addBody($stats['not_passed']); $tb_stat->addBody($stats['not_checked']); $tb_stat->addBody($stats['averange']); $tb_stat->addBody($stats['varianza']); $tb_stat->addBody($stats['max_score']); $tb_stat->addBody($stats['min_score']); // Write in output $out->add(getTitleArea($lang->def('_COURSEREPORT', 'menu_course'), 'coursereport') . '<div class="std_block">'); $out->add(' <div id="dhtmltooltip"></div> <style type="text/css"> #dhtmltooltip{ position: absolute; width: 150px; border: 2px solid black; padding: 2px; background-color: white; visibility: hidden; z-index: 100; filter: progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=135); } </style> <script> var posx = 0; var posy = 0; document.onmousemove=function doSomething(e) { if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event) if (e) { if (e.pageX || e.pageY) { posx = e.pageX; posy = e.pageY; } else if (e.clientX || e.clientY) { // works on IE6,FF,Moz,Opera7 posx = e.clientX + document.body.scrollLeft; posy = e.clientY + document.body.scrollTop; } } } var offsetxpoint=-60 var offsetypoint=20 var ie=document.all var ns6=document.getElementById && !document.all var enabletip=false if (ie||ns6) var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : "" function ietruebody(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body } function ddrivetip(thetext, thecolor, thewidth,pos,html){ if (ns6||ie){ tipobj.innerHTML="' . $lang->def('_EXPORT') . ':"+html+"<a id=\\"cambia_link\\" class=\\""+thetext+"\\" href=\\"./index.php?modname=coursereport&op=export&type_filter=' . $lev . '\\">' . $lang->def('_EXPORT_STATS') . '</a>"; enabletip=true tipobj.style.width="200px" tipobj.style.height="auto" tipobj.style.left=posx+"px" tipobj.style.top=posy+"px" tipobj.style.visibility="visible" return false } } function positiontip(e){ if (enabletip){ var curX=(ns6)?e.pageX : event.x+ietruebody().scrollLeft; var curY=(ns6)?e.pageY : event.y+ietruebody().scrollTop; var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20 var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20 var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000 if (rightedge<tipobj.offsetWidth) tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px" else if (curX<leftedge) tipobj.style.left="5px" else tipobj.style.left=curX+offsetxpoint+"px" if (bottomedge<tipobj.offsetHeight) tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px" else tipobj.style.top=curY+offsetypoint+"px" tipobj.style.visibility="visible" } } function hideddrivetip(){ if (ns6||ie){ enabletip=false tipobj.style.visibility="hidden" tipobj.style.left="-1000px" tipobj.style.backgroundColor="" tipobj.style.width="" } } //document.onmousemove=positiontip var lista=new Array(); function tool(arm,pos,htm){ var tipobj=document.getElementById("dhtmltooltip").style.visibility; if(tipobj=="visible"){ hideddrivetip() lista=new Array(); } else ddrivetip(arm,"","",pos,htm); //else //tooltip.hide(); } var url="./index.php?modname=coursereport&op=export&type_filter=' . $lev . '"; function cambialink(num,fare){ if(fare) lista[lista.length+1]=num; else { i=0; while(i<lista.length) {if (lista[i]==num) lista[i]=null; i++; } } document.getElementById("cambia_link").href=url;//+document.getElementById("cambia_link").className; i=0; stringaurl="&aggiuntivi="; while(i<lista.length) {if (lista[i]!=null) stringaurl=stringaurl+lista[i]+","; i++; } document.getElementById("cambia_link").href=document.getElementById("cambia_link").href+stringaurl; //alert(document.getElementById("cambia_link").href); } </script>'); $sql = "SELECT * FROM core_field"; $filler = ""; $filler = "<br>"; $result_quest = sql_query($sql) or die(mysql_error()); while ($quests = sql_fetch_array($result_quest)) { $filler .= "<input type=\\'checkbox\\' onclick=\\'cambialink(" . $quests['idField'] . ",this.checked)\\' value=\\'" . $quests['idField'] . "\\'>" . $quests['translation'] . "<br>"; } $filler .= "<input type=\\'checkbox\\' onclick=\\'cambialink(9999,this.checked)\\' value=\\'999\\'>" . $lang->def('_QUESTION_ANSWERED') . "<br>"; $filler .= "<input type=\\'checkbox\\' onclick=\\'cambialink(1999,this.checked)\\' value=\\'1999\\'>" . $lang->def('_TOT_QUESTION') . "<br>"; $filler .= "<input type=\\'checkbox\\' onclick=\\'cambialink(1199,this.checked)\\' value=\\'1199\\'>" . $lang->def('_DATE') . "<br>"; $filler .= "<input type=\\'checkbox\\' onclick=\\'cambialink(1299,this.checked)\\' value=\\'1299\\'>" . $lang->def('_TOTAL') . "<br>"; if (checkPerm('mod', true)) { $out->add('<div class="table-container-below">' . '<ul class="link_list_inline">' . '<li><a class="ico-wt-sprite subs_add" href="index.php?modname=coursereport&op=addactivity" title="' . $lang->def('_ADD_ACTIVITY_TITLE') . '">' . '<span>' . $lang->def('_ADD_ACTIVITY') . '</span></a></li>' . '<li><a class="ico-wt-sprite subs_plus" href="index.php?modname=coursereport&op=addscorm" title="' . $lang->def('_ADD_SCORM_RESULTS') . '">' . '<span>' . $lang->def('_ADD_SCORM_RESULTS') . '</span></a></li>' . '<li><a class="ico-wt-sprite subs_csv" href="index.php?modname=coursereport&op=export&type_filter=' . $lev . '" title="' . $lang->def('_EXPORT_CSV') . '" onclick="window.open(this.href); return false;">' . '<span>' . $lang->def('_EXPORT_CSV') . '</span></a></li> </ul>' . '</div>'); } $out->add(Form::openForm("statuserfilter", "index.php?modname=coursereport&op=coursereport")); $type_groups = array('false' => $lang->def('_ALL'), '1' => $lang2->def('_LEVEL_1'), '2' => $lang2->def('_LEVEL_2'), '3' => $lang2->def('_LEVEL_3'), '4' => $lang2->def('_LEVEL_4'), '5' => $lang2->def('_LEVEL_5'), '6' => $lang2->def('_LEVEL_6'), '7' => $lang2->def('_LEVEL_7')); $out->add(Form::getDropdown($lang->def('_LEVEL'), 'type_filter', 'type_filter', $type_groups, $type_filter)); $out->add(Form::getButton('gofilter', 'gofilter', $lang->def('_SEARCH'))); $out->add(Form::closeForm()); $out->add($tb_report->getTable() . '<br /><br />' . $tb_score->getTable() . '<br /><br />' . $tb_stat->getTable() . '<br /><br />'); if (checkPerm('mod', true)) { $out->add('<div class="table-container-below">' . '<ul class="link_list_inline"> <li><a class="ico-wt-sprite subs_add" href="index.php?modname=coursereport&op=addactivity" title="' . $lang->def('_ADD_ACTIVITY_TITLE') . '">' . '<span>' . $lang->def('_ADD_ACTIVITY') . '</span></a></li>' . '<li><a class="ico-wt-sprite subs_plus" href="index.php?modname=coursereport&op=addscorm" title="' . $lang->def('_ADD_SCORM_RESULTS') . '">' . '<span>' . $lang->def('_ADD_SCORM_RESULTS') . '</span></a></li>' . '<li><a class="ico-wt-sprite subs_csv" href="index.php?modname=coursereport&op=export&type_filter=' . $lev . '" title="' . $lang->def('_EXPORT_CSV') . '" onclick="window.open(this.href); return false;">' . '<span>' . $lang->def('_EXPORT_CSV') . '</span></a></li> </ul>' . '</div>'); } $out->add('</div>'); }