function get_courses_filter() { $back_url = $this->back_url; $jump_url = $this->jump_url; $next_url = $this->next_url; require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once $GLOBALS['where_lms'] . '/lib/lib.course_managment.php'; $lang =& DoceboLanguage::createInstance('report', 'framework'); //$sel = new Course_Manager(); //$sel->setLink('index.php?modname=report&op=report_rows_filter'); if (isset($_POST['undo_filter'])) { Util::jump_to($back_url); } //set $_POST data in $_SESSION['report_tempdata'] $selector = new Selector_Course(); if (!isset($_SESSION['report_tempdata']['columns_filter'])) { $_SESSION['report_tempdata']['columns_filter'] = array('all_courses' => true, 'selected_courses' => array(), 'showed_columns' => array('completed' => true, 'initinere' => true, 'notstarted' => true, 'show_percentages' => true)); } $ref =& $_SESSION['report_tempdata']['columns_filter']; if (isset($_POST['update_tempdata'])) { $selector->parseForState($_POST); $temp = $selector->getSelection($_POST); $ref['selected_courses'] = $temp; $ref['all_courses'] = Get::req('all_courses', DOTY_INT, 1) == 1 ? true : false; $ref['showed_columns'] = array('completed' => Get::req('cols_completed', DOTY_INT, 0) > 0 ? true : false, 'initinere' => Get::req('cols_initinere', DOTY_INT, 0) > 0 ? true : false, 'notstarted' => Get::req('cols_notstarted', DOTY_INT, 0) > 0 ? true : false, 'show_percentages' => Get::req('cols_show_percentages', DOTY_INT, 0) > 0 ? true : false); } else { $selector->resetSelection($ref['selected_courses']); } //back to columns category selection if (isset($_POST['undo_filter'])) { Util::jump_to($back_url); } //filter setting done, go to next step if (isset($_POST['import_filter']) || isset($_POST['show_filter']) || isset($_POST['pre_filter'])) { $temp_url = $next_url; if (isset($_POST['pre_filter'])) { $temp_url .= '&show=1&nosave=1'; } if (isset($_POST['show_filter'])) { $temp_url .= '&show=1'; } Util::jump_to($temp_url); } $temp = count($ref['selected_courses']); $box = new ReportBox('courses_selector'); $box->title = $this->lang->def('_COURSES_SELECTION_TITLE'); $box->description = false; $boxlang =& DoceboLanguage::createInstance('report', 'framework'); $box->body .= '<div class="fc_filter_line filter_corr">'; $box->body .= '<input id="all_courses" name="all_courses" type="radio" value="1" ' . ($ref['all_courses'] ? 'checked="checked"' : '') . ' />'; $box->body .= ' <label for="all_courses">' . $boxlang->def('_ALL_COURSES') . '</label>'; $box->body .= ' <input id="sel_courses" name="all_courses" type="radio" value="0" ' . ($ref['all_courses'] ? '' : 'checked="checked"') . ' />'; $box->body .= ' <label for="sel_courses">' . $boxlang->def('_SEL_COURSES') . '</label>'; $box->body .= '</div>'; $box->body .= '<div id="selector_container"' . ($ref['all_courses'] ? ' style="display:none"' : '') . '>'; $box->body .= $selector->loadCourseSelector(true) . '</div>'; $box->footer = $boxlang->def('_CURRENT_SELECTION') . ': <span id="csel_foot">' . ($ref['all_courses'] ? $boxlang->def('_ALL') : ($temp != '' ? $temp : '0')) . '</span>'; YuiLib::load(array('yahoo' => 'yahoo-min.js', 'yahoo-dom-event' => 'yahoo-dom-event.js', 'element' => 'element-beta-min.js', 'datasource' => 'datasource-beta-min.js', 'connection' => 'connection-min.js', 'event' => 'event-min.js', 'json' => 'json-beta-min.js'), array('/assets/skins/sam' => 'skin.css')); addJs($GLOBALS['where_lms_relative'] . '/admin/modules/report/', 'courses_filter.js'); cout('<script type="text/javascript"> ' . "\n" . 'var courses_count="' . ($temp != '' ? $temp : '0') . '";' . "\n" . 'var courses_all="' . $boxlang->def('_ALL') . '";' . "\n" . 'YAHOO.util.Event.addListener(window, "load", function(e){ courses_selector_init(); });' . "\n" . '</script>', 'page_head'); //columns selection $col_box = new ReportBox('columns_selection'); $col_box->title = $this->lang->def('_REPORT_SEL_COLUMNS'); $col_box->description = $this->lang->def('_SELECT_THE_DATA_COL_NEEDED'); $col_box->body .= Form::getOpenFieldSet($this->lang->def('_STATUS')); $col_box->body .= Form::getCheckBox(Lang::t('_USER_STATUS_SUBS', 'course'), 'cols_notstarted', 'cols_notstarted', 1, $ref['showed_columns']['notstarted']); $col_box->body .= Form::getCheckBox(Lang::t('_USER_STATUS_BEGIN', 'course'), 'cols_initinere', 'cols_initinere', 1, $ref['showed_columns']['initinere']); $col_box->body .= Form::getCheckBox(Lang::t('_USER_STATUS_END', 'course'), 'cols_completed', 'cols_completed', 1, $ref['showed_columns']['completed']); $col_box->body .= Form::getCheckBox(Lang::t('_PERCENTAGE', 'course'), 'cols_show_percentages', 'cols_show_percentages', 1, $ref['showed_columns']['show_percentages']); $col_box->body .= Form::getCloseFieldSet(); cout(Form::openForm('first_step_user_filter', $jump_url, false, 'post') . $box->get() . $col_box->get() . Form::getHidden('update_tempdata', 'update_tempdata', 1)); }
function modactivityscore() { checkPerm('mod'); require_once $GLOBALS['where_lms'] . '/lib/lib.coursereport.php'; require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.table.php'; // XXX: Initializaing $id_report = importVar('id_report', true, 0); $lang =& DoceboLanguage::createInstance('coursereport', 'lms'); $out =& $GLOBALS['page']; $out->setWorkingZone('content'); // XXX: Instance management $acl_man = Docebo::user()->getAclManager(); $report_man = new CourseReportManager(); // XXX: Find users $type_filter = false; if (isset($_GET['type_filter']) && $_GET['type_filter'] != null) { $type_filter = $_GET['type_filter']; } $lev = $type_filter; $students = getSubscribed((int) $_SESSION['idCourse'], FALSE, $lev, TRUE, false, false, true); $id_students = array_keys($students); $students_info =& $acl_man->getUsers($id_students); if (isset($_POST['save'])) { // retirive activity info $info_report = array('id_report' => importVar('id_report', true, 0), 'title' => importVar('title'), 'max_score' => importVar('max_score', true), 'required_score' => importVar('required_score', true), 'source_of' => importVar('source_of'), 'weight' => importVar('weight', true), 'show_to_user' => importVar('show_to_user', false, 'true'), 'use_for_final' => importVar('use_for_final', false, 'true')); // XXX: retrive scores } else { // retirive activity info $query_report = "\r\n\t\tSELECT id_report, title, max_score, required_score, weight, show_to_user, use_for_final, id_source, source_of\r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_coursereport\r\n\t\tWHERE id_course = '" . $_SESSION['idCourse'] . "' AND id_report = '" . $id_report . "'\r\n\t\t\t\tAND (source_of = 'scoitem' OR source_of = 'activity')"; // TBD AND id_source = '0'"; $info_report = sql_fetch_assoc(sql_query($query_report)); // XXX: retrive scores $report_score =& $report_man->getReportsScores(array($id_report)); } // XXX: Write in output $page_title = array('index.php?modname=coursereport&op=coursereport' => $lang->def('_COURSEREPORT', 'menu_course'), strip_tags($info_report['title'])); $out->add(getTitleArea($page_title, 'coursereport') . '<div class="std_block">' . Form::openForm('activity', 'index.php?modname=coursereport&op=modactivityscore')); // XXX: Save input if needed if (isset($_POST['save'])) { if ($_POST['title'] == '') { $_POST['title'] = $lang->def('_NOTITLE'); } $re_check = $report_man->checkActivityData($_POST); if (!$re_check['error']) { if (!$report_man->updateActivity($id_report, $_SESSION['idCourse'], $info_report)) { $out->add(getErrorUi($lang->def('_OPERATION_FAILURE'))); } else { // save user score modification $query_upd_report = "\r\n\t\t\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_coursereport\r\n\t\t\t\tSET weight = '" . $info_report['weight'] . "',\r\n\t\t\t\t\tuse_for_final = '" . $info_report['use_for_final'] . "',\r\n\t\t\t\t\tshow_to_user = '******'show_to_user'] . "'\r\n\t\t\t\tWHERE id_course = '" . $_SESSION['idCourse'] . "' AND id_report = '" . $id_report . "'"; $re = sql_query($query_upd_report); $re = $report_man->saveReportScore($id_report, $_POST['user_score'], $_POST['date_attempt'], $_POST['comment']); Util::jump_to('index.php?modname=coursereport&op=coursereport&result=' . ($re ? 'ok' : 'err')); } } else { $out->add(getErrorUi($re_check['message'])); } } // main form $out->add(Form::openElementSpace() . Form::getOpenFieldSet($lang->def('_ACTIVITY_INFO')) . Form::getHidden('id_report', 'id_report', $id_report) . Form::getHidden('id_source', 'id_source', $info_report['id_source']) . Form::getHidden('source_of', 'source_of', $info_report['source_of'])); // for scorm object changing title, maxScore and requiredScore is not allowed switch ($info_report['source_of']) { case 'scoitem': $out->add(Form::getLinebox($lang->def('_TITLE_ACT'), strip_tags($info_report['title'])) . Form::getLinebox($lang->def('_MAX_SCORE'), strip_tags($info_report['max_score'])) . Form::getLinebox($lang->def('_REQUIRED_SCORE'), strip_tags($info_report['required_score']))); break; case 'activity': $out->add(Form::getTextfield($lang->def('_TITLE_ACT'), 'title', 'title', '255', $info_report['title']) . Form::getTextfield($lang->def('_MAX_SCORE'), 'max_score', 'max_score', '11', $info_report['max_score']) . Form::getTextfield($lang->def('_REQUIRED_SCORE'), 'required_score', 'required_score', '11', $info_report['required_score'])); break; } $out->add(Form::getTextfield($lang->def('_WEIGHT'), 'weight', 'weight', '11', $info_report['weight']) . Form::getDropdown($lang->def('_SHOW_TO_USER'), 'show_to_user', 'show_to_user', array('true' => $lang->def('_YES'), 'false' => $lang->def('_NO')), $info_report['show_to_user']) . Form::getDropdown($lang->def('_USE_FOR_FINAL'), 'use_for_final', 'use_for_final', array('true' => $lang->def('_YES'), 'false' => $lang->def('_NO')), $info_report['use_for_final']) . Form::getCloseFieldSet() . Form::closeElementSpace()); if ($info_report['source_of'] != 'scoitem') { /* XXX: scores */ $tb = new Table(0, $lang->def('_STUDENTS_VOTE'), $lang->def('_STUDENTS_VOTE')); $type_h = array('', 'align-center', 'align-center', ''); $tb->setColsStyle($type_h); $cont_h = array($lang->def('_STUDENTS'), $lang->def('_SCORE'), $lang->def('_DATE'), $lang->def('_COMMENTS')); $tb->addHead($cont_h); // XXX: Display user scores $i = 0; 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(Form::getLabel('user_score_' . $idst_user, $user_name)); $cont[] = Form::getInputTextfield('textfield_nowh', 'user_score_' . $idst_user, 'user_score[' . $idst_user . ']', isset($report_score[$id_report][$idst_user]['score']) ? $report_score[$id_report][$idst_user]['score'] : (isset($_POST['user_score'][$idst_user]) ? $_POST['user_score'][$idst_user] : ''), strip_tags($lang->def('_SCORE')), '8', ' tabindex="' . $i++ . '" '); $cont[] = Form::getInputDatefield('textfield_nowh', 'date_attempt_' . $idst_user, 'date_attempt[' . $idst_user . ']', Format::date(isset($report_score[$id_report][$idst_user]['date_attempt']) ? $report_score[$id_report][$idst_user]['date_attempt'] : (isset($_POST['date_attempt'][$idst_user]) ? $_POST['date_attempt'][$idst_user] : ''), 'date')); $cont[] = Form::getInputTextarea('comment_' . $idst_user, 'comment[' . $idst_user . ']', isset($report_score[$id_report][$idst_user]['comment']) ? $report_score[$id_report][$idst_user]['comment'] : (isset($_POST['comment'][$idst_user]) ? stripslashes($_POST['comment'][$idst_user]) : ''), 'textarea_wh_full', 2); $tb->addBody($cont); } } $out->add(Form::openButtonSpace() . Form::getButton('save', 'save', $lang->def('_SAVE')) . Form::getButton('undo', 'undo', $lang->def('_UNDO')) . Form::closeButtonSpace()); if ($info_report['source_of'] != 'scoitem') { $out->add($tb->getTable() . Form::openButtonSpace() . Form::getButton('save', 'save', $lang->def('_SAVE')) . Form::getButton('undo', 'undo', $lang->def('_UNDO')) . Form::closeButtonSpace()); } $out->add(Form::closeForm() . '</div>'); }