function getSubstitution() { $subs = array(); $aclman =& Docebo::user()->getAclManager(); $user = $aclman->getUser($this->id_user, false); $subs['[display_name]'] = $user[ACL_INFO_LASTNAME] . $user[ACL_INFO_FIRSTNAME] ? $user[ACL_INFO_LASTNAME] . ' ' . $user[ACL_INFO_FIRSTNAME] : $aclman->relativeId($user[ACL_INFO_USERID]); $subs['[username]'] = $aclman->relativeId($user[ACL_INFO_USERID]); $subs['[firstname]'] = $user[ACL_INFO_FIRSTNAME]; $subs['[lastname]'] = $user[ACL_INFO_LASTNAME]; //variable fields require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; $temp = new FieldList(); $fields = $temp->getFlatAllFields(); foreach ($fields as $key => $value) { $subs['[userfield_' . $key . ']'] = $temp->showFieldForUser($this->id_user, $key); } return $subs; }
function get_LO_filter() { //addCss('style_filterbox'); $back_url = $this->back_url; $jump_url = $this->jump_url; $next_url = $this->next_url; require_once _base_ . '/lib/lib.form.php'; require_once _lms_ . '/lib/lib.course.php'; $ref =& $_SESSION['report_tempdata']['columns_filter']; YuiLib::load(); Util::get_js(Get::rel_path('lms') . '/admin/modules/report/courses_filter.js', true, true); //back to columns category selection if (isset($_POST['undo_filter'])) { //go back at the previous step Util::jump_to($back_url); } //set $_POST data in $_SESSION['report_tempdata'] $selector = new Selector_Course(); if (isset($_POST['update_tempdata'])) { $selector->parseForState($_POST); $temp = array('all_courses' => $_POST['all_courses'] == 1 ? true : false, 'selected_courses' => $selector->getSelection(), 'lo_types' => isset($_POST['lo_types']) ? $_POST['lo_types'] : array(), 'lo_milestones' => isset($_POST['lo_milestones']) ? $_POST['lo_milestones'] : array(), 'showed_columns' => isset($_POST['cols']) ? $_POST['cols'] : array(), 'custom_fields' => array(), 'order_by' => Get::req('order_by', DOTY_STRING, 'userid'), 'order_dir' => Get::req('order_dir', DOTY_STRING, 'asc'), 'show_suspended' => Get::req('show_suspended', DOTY_INT, 0) > 0); foreach ($ref['custom_fields'] as $val) { $temp['custom_fields'][] = array('id' => $val['id'], 'label' => $val['label'], 'selected' => isset($_POST['custom'][$val['id']]) ? true : false); } $_SESSION['report_tempdata']['columns_filter'] = $temp; } else { //first loading of this page -> prepare $_SESSION data structure //if (isset($_SESSION['report_update']) /* && is equal to id_report */) break; //get users' custom fields require_once _adm_ . '/lib/lib.field.php'; $fman = new FieldList(); $fields = $fman->getFlatAllFields(); $custom = array(); foreach ($fields as $key => $val) { $custom[] = array('id' => $key, 'label' => $val, 'selected' => false); } if (!isset($_SESSION['report_tempdata']['columns_filter'])) { $_SESSION['report_tempdata']['columns_filter'] = array('all_courses' => false, 'selected_courses' => $selector->getSelection(), 'lo_types' => array(), 'lo_milestones' => array(), 'showed_columns' => array(), 'custom_fields' => $custom, 'order_by' => 'userid', 'order_dir' => 'asc', 'show_suspended' => 'show_suspended'); } } //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); } cout(Form::getHidden('update_tempdata', 'update_tempdata', 1), 'content'); $lang = $this->lang; //box for direct course selection $selection =& $ref['selected_courses']; $selector->parseForState($_POST); $selector->resetSelection($selection); $temp = count($selection); $box = new ReportBox('course_selector'); $box->title = Lang::t('_REPORT_COURSE_SELECTION', 'report'); $box->description = false; $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">' . $lang->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">' . $lang->def('_SEL_COURSES') . '</label>'; $box->body .= '</div>'; $box->body .= '<div id="selector_container"' . ($ref['all_courses'] ? ' style="display:none"' : '') . '>'; //$box->body .= Form::openElementSpace(); $box->body .= $selector->loadCourseSelector(true); //$box->body .= Form::closeElementSpace(); $box->body .= '<br /></div>'; $box->footer = $lang->def('_CURRENT_SELECTION') . ': <span id="csel_foot">' . ($ref['all_courses'] ? Lang::t('_ALL', 'standard') : ($temp != '' ? $temp : '0')) . '</span>'; //.'</div>'; cout($box->get(), 'content'); cout('<script type="text/javascript">courses_count=' . ($temp == '' ? '0' : $temp) . ';' . 'courses_all="' . Lang::t('_ALL', 'standard') . '";' . "\n" . 'YAHOO.util.Event.addListener(window, "load", courses_selector_init);</script>', 'page_head'); $box = new ReportBox('lo_selection'); $box->title = $lang->def('_SELECT_LO_OPTIONS'); //LO columns selection $lo_trans = $this->getLOTypesTranslations(); $box->body .= Form::getOpenFieldset(Lang::t('_RU_LO_TYPES', 'report'), 'lotypes_fieldset'); $res = sql_query("SELECT * FROM %lms_lo_types"); while ($row = mysql_fetch_assoc($res)) { $trans = isset($lo_trans[$row['objectType']]) ? $lo_trans[$row['objectType']] : ""; $box->body .= Form::getCheckBox($trans, 'lo_type_' . $row['objectType'], 'lo_types[' . $row['objectType'] . ']', $row['objectType'], in_array($row['objectType'], $ref['lo_types']) ? true : false); } $box->body .= Form::getCloseFieldset(); $box->body .= Form::getOpenFieldset($lang->def('_RU_LO_MILESTONES'), 'lomilestones_fieldset'); $box->body .= Form::getCheckBox($lang->def('_NONE'), 'lo_milestone_0', 'lo_milestones[]', _MILESTONE_NONE, in_array(_MILESTONE_NONE, $ref['lo_milestones']) ? true : false); $box->body .= Form::getCheckBox($lang->def('_START'), 'lo_milestone_1', 'lo_milestones[]', _MILESTONE_START, in_array(_MILESTONE_START, $ref['lo_milestones']) ? true : false); $box->body .= Form::getCheckBox($lang->def('_END'), 'lo_milestone_2', 'lo_milestones[]', _MILESTONE_END, in_array(_MILESTONE_END, $ref['lo_milestones']) ? true : false); $box->body .= Form::getCloseFieldset(); cout($box->get(), 'content'); function is_showed($which) { if (isset($_SESSION['report_tempdata']['columns_filter'])) { return in_array($which, $_SESSION['report_tempdata']['columns_filter']['showed_columns']); } else { return false; } } //box for columns selection $arr_fieldset = array('user' => '', 'course' => '', 'lo' => ''); $box = new ReportBox('columns_selection'); $box->title = $lang->def('_SELECT_THE_DATA_COL_NEEDED'); $box->description = false; //prepare fieldsets foreach ($this->LO_columns as $val) { if ($val['select']) { $line = Form::getCheckBox($val['label'], 'col_sel_' . $val['key'], 'cols[]', $val['key'], is_showed($val['key'])); switch ($val['group']) { case 'user': $arr_fieldset['user'] .= $line; break; case 'course': $arr_fieldset['course'] .= $line; break; case 'lo': $arr_fieldset['lo'] .= $line; break; } } else { if ($val['key'] == '_CUSTOM_FIELDS_') { //custom fields if (count($ref['custom_fields']) > 0) { foreach ($ref['custom_fields'] as $key => $val) { $arr_fieldset['user'] .= Form::getCheckBox($val['label'], 'col_custom_' . $val['id'], 'custom[' . $val['id'] . ']', $val['id'], $val['selected']); } } } } } //print fieldsets foreach ($arr_fieldset as $fid => $fieldset) { $ftitle = ''; switch ($fid) { case 'user': $ftitle = Lang::t('_USER_CUSTOM_FIELDS', 'report'); break; case 'course': $ftitle = Lang::t('_COURSE_FIELDS', 'report'); break; case 'lo': $ftitle = Lang::t('_LEARNING_OBJECTS', 'standard'); break; } $box->body .= Form::getOpenFieldset($ftitle, 'fieldset_' . $fid . '_fields'); $box->body .= $fieldset; $box->body .= Form::getCloseFieldset(); } cout($box->get(), 'content'); //other options $box = new ReportBox('other_options'); $box->title = Lang::t('_OTHER_OPTION', 'course'); $box->description = false; $sort_list = array('userid' => Lang::t('_USERID', 'standard'), 'firstname' => Lang::t('_FIRSTNAME', 'standard'), 'lastname' => Lang::t('_LASTNAME', 'standard'), 'email' => Lang::t('_EMAIL', 'standard'), 'course_code' => Lang::t('_COURSE_CODE', 'standard'), 'course_name' => Lang::t('_COURSE_NAME', 'standard'), 'object_title' => Lang::t('_LEARNING_OBJECTS', 'standard'), 'object_type' => Lang::t('_RU_LO_TYPES', 'report'), 'first_attempt' => Lang::t('_LO_COL_FIRSTATT', 'report'), 'last_attempt' => Lang::t('_LO_COL_LASTATT', 'report')); $dir_list = array('asc' => Lang::t('_ORD_ASC_TITLE', 'standard'), 'desc' => Lang::t('_ORD_DESC_TITLE', 'standard')); $sort_selected = array_key_exists($ref['order_by'], $sort_list) ? $ref['order_by'] : 'userid'; $dir_selected = array_key_exists($ref['order_dir'], $dir_list) ? $ref['order_dir'] : 'asc'; $sort_dir_dropdown = Form::getInputDropdown('', 'order_dir', 'order_dir', $dir_list, $dir_selected, ''); $box->body .= Form::getDropdown(Lang::t('_ORDER_BY', 'standard'), 'order_by', 'order_by', $sort_list, $sort_selected, $sort_dir_dropdown); $box->body .= Form::getCheckbox(Lang::t('_SHOW_SUSPENDED', 'organization_chart'), 'show_suspended', 'show_suspended', 1, (bool) $ref['show_suspended']); cout($box->get(), 'content'); }
function _maskTemplateManager() { require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; require_once _base_ . '/lib/lib.table.php'; $lang =& DoceboLanguage::createInstance('configuration', 'framework'); $field_man = new FieldList(); $html = ''; if (isset($_POST['save_and_refresh'])) { if (!sql_query("\r\n\t\t\tUPDATE " . $this->table . "\r\n\t\t\tSET param_value = '" . $_POST['templ_use_field'] . "'\r\n\t\t\tWHERE pack = 'main' AND param_name = 'templ_use_field'")) { $html .= getErrorUi('_ERROR_WHILE_SAVING_NEW_FIELD'); } else { setTemplate($_POST['templ_use_field']); } } $drop_field = array(); $drop_field = $field_man->getFlatAllFields(false, 'dropdown'); $drop_field[0] = $lang->def('_NO'); $html .= Form::getDropdown($lang->def('_TEMPL_USE_FIELD'), 'templ_use_field', 'templ_use_field', $drop_field, Get::sett('templ_use_field')); $html .= Form::getButton('save_and_refresh', 'save_and_refresh', $lang->def('_SAVE_AND_REFRESH')); if (Get::sett('templ_use_field') != 0) { $field_obj =& $field_man->getFieldInstance(Get::sett('templ_use_field')); if ($field_obj === NULL) { return $html . getErrorUi('_ERROR_WITH_THIS_FIELD'); } $assignement = array(); $query_template_assigned = "\r\n\t\t\tSELECT ref_id, template_code\r\n\t\t\tFROM " . $GLOBALS['prefix_fw'] . "_field_template\r\n\t\t\tWHERE id_common = '" . Get::sett('templ_use_field') . "'"; $re_templ_assigned = sql_query($query_template_assigned); while (list($ref_id, $template_code) = sql_fetch_row($re_templ_assigned)) { $assignement[$ref_id] = $template_code; } $son_value = $field_obj->getAllSon(); $template_list = getTemplateList(true); $default_template = getDefaultTemplate(); $tb_son = new Table(0, $lang->def('_ASSIGN_DROPDOWN_VALUE_TEMPLATE'), $lang->def('_ASSIGN_DROPDOWN_VALUE_TEMPLATE_SUMMARY')); $cont_h = array($lang->def('_VALUE'), $lang->def('_TEMPLATE_VALUE')); $type_h = array('', ''); $tb_son->setColsStyle($type_h); $tb_son->addHead($cont_h); while (list($id_son, $drop_son_name) = each($son_value)) { $cont = array('<label for="template_selected_' . $id_son . '">' . $drop_son_name . '</label>', Form::getInputDropdown('dropdown', 'template_selected_' . $id_son, 'template_selected[' . $id_son . ']', $template_list, isset($assignement[$id_son]) && isset($template_list[$assignement[$id_son]]) ? $assignement[$id_son] : $default_template, '')); $tb_son->addBody($cont); } $html .= $tb_son->getTable(); } return $html; }
public function run() { $num_tabs = 0; $selected_tab = false; if ($this->show_fncrole_selector) { $num_tabs++; $selected_tab = 'fncrole'; } if ($this->show_orgchart_selector) { $num_tabs++; $selected_tab = 'orgchart'; } if ($this->show_group_selector) { $num_tabs++; $selected_tab = 'group'; } if ($this->show_user_selector) { $num_tabs++; $selected_tab = 'user'; } if ($num_tabs <= 0 || !$selected_tab) { return; } //no tabs to display: do nothing //set selected tab, if specified a valid one $_check_tab = strtolower($this->selected_tab); switch ($_check_tab) { case 'user': case 'group': case 'orgchart': case 'fncrole': $selected_tab = $_check_tab; break; } $_selection = array(); if (is_array($this->initial_selection) && count($this->initial_selection) > 0) { $_selection = $this->util->getInitialSelFromIdst($this->initial_selection); } //validate tab configuration $initial_selection = array('user' => isset($_selection['user']) ? $_selection['user'] : array(), 'group' => isset($_selection['group']) ? $_selection['group'] : array(), 'orgchart' => isset($_selection['orgchart']) ? $this->_filterOrgchartSelection($_selection['orgchart']) : array(), 'fncrole' => isset($_selection['fncrole']) ? $_selection['fncrole'] : array()); //set view parameters $params = array('id' => $this->id, 'show_user_selector' => $this->show_user_selector, 'show_group_selector' => $this->show_group_selector, 'show_orgchart_selector' => $this->show_orgchart_selector, 'show_fncrole_selector' => $this->show_fncrole_selector, 'selected_tab' => $selected_tab, 'use_form_input' => (bool) $this->use_form_input, 'separate_input' => (bool) $this->separate_input, 'initial_selection' => $initial_selection, 'ajax_url' => '../widget/ajax.widget.php?r=userselector/gettreedata'); //single tabs specific parameters: //--- USER SELECTOR PARAMETERS --------------------------------------------- if ($this->show_user_selector) { require_once _adm_ . '/lib/lib.field.php'; $fman = new FieldList(); $fields = $fman->getFlatAllFields(array('framework', 'lms')); $f_list = array('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; $f_selected = $this->json->decode(Docebo::user()->getPreference('ui.directory.custom_columns')); if ($f_selected == false) { $f_selected = array('email', 'lastenter', 'register_date'); } $js_arr = array(); foreach ($f_list as $key => $value) { $js_arr[] = $key . ': ' . $this->json->encode($value); } $f_list_js = '{' . implode(',', $js_arr) . '}'; require_once _adm_ . '/lib/user_selector/lib.dynamicuserfilter.php'; $dyn_filter = new DynamicUserFilter("user_dyn_filter"); $dyn_filter->init(); $user_config = new stdClass(); $user_config->num_var_fields = $this->nFields; //$this->numVarFields, $user_config->fieldlist = $f_list; $user_config->fieldlist_js = $f_list_js; $user_config->selected = $f_selected; $user_config->use_suspended = $this->use_suspended; $user_config->show_suspended = false; //$this-> _getSuspendedFilter(), $user_config->filter_text = ""; //$this->_getTextFilter(); $user_config->dynamic_filter = $dyn_filter; $params['user_config'] = $user_config; } //--- GROUP SELECTOR PARAMETERS -------------------------------------------- if ($this->show_group_selector) { //... } //--- ORGCHART SELECTOR PARAMETERS ----------------------------------------- if ($this->show_orgchart_selector) { $acl_man = Docebo::user()->getACLManager(); $arr_idst = $acl_man->getArrGroupST(array('/oc_0', '/ocd_0')); $orgchart_config = new stdClass(); $orgchart_config->root_node_id = $arr_idst['/oc_0'] . '_' . $arr_idst['/ocd_0']; //$acl_man->getGroupST('oc_0').'_'.$acl_man->getGroupST('ocd_0'); $orgchart_config->can_select_root = (bool) $this->can_select_root; $params['orgchart_config'] = $orgchart_config; } //--- FNCROLES SELECTOR PARAMETERS ----------------------------------------- if ($this->show_fncrole_selector) { //... } $this->render('userselector', $params); }
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>'); }
public function gap_analisysTask() { $back_url = 'index.php?r=adm/functionalroles/show'; $id_fncrole = Get::req('id', DOTY_INT, -1); if ($id_fncrole <= 0) { $this->render('invalid', array('message' => $this->_getErrorMessage('invalid fncrole'), 'back_url' => $back_url)); return; } $title_arr = array($back_url => Lang::t('_FUNCTIONAL_ROLE', 'fncroles'), Lang::t('_GAP_ANALYSIS', 'fncroles') . ': ' . $this->model->getFunctionalRoleName($id_fncrole)); $result = Get::req('res', DOTY_ALPHANUM, ''); $result_message = ""; /* switch ($result) { case "ok_gap": $result_message = Lang::t('_RESULT_GAP_OK', 'fncroles'); break; case "err_gap": $result_message = Lang::t('_RESULT_GAP_ERR', 'fncroles'); break; } */ require_once _adm_ . '/lib/user_selector/lib.dynamicuserfilter.php'; $dyn_filter = new DynamicUserFilter("user_dyn_filter"); $dyn_filter->init(); require_once _adm_ . '/lib/lib.field.php'; $fman = new FieldList(); $fields = $fman->getFlatAllFields(array('framework', 'lms')); $f_list = array('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; $f_selected = $this->json->decode(Docebo::user()->getPreference('ui.directory.custom_columns')); if ($f_selected == false) { $f_selected = array('email', 'lastenter', 'register_date'); } $js_arr = array(); foreach ($f_list as $key => $value) { $js_arr[] = $key . ': ' . $this->json->encode($value); } $f_list_js = '{' . implode(',', $js_arr) . '}'; $this->render('gap_analisys', array('id_fncrole' => $id_fncrole, 'num_var_fields' => 1, 'fieldlist' => $f_list, 'fieldlist_js' => $f_list_js, 'selected' => $f_selected, 'title_arr' => $title_arr, 'filter_text' => "", 'result_message' => $result_message, 'advanced_filter' => array('active' => false, 'gap_filter' => 0, 'expire_filter' => 0))); }
public function getCustomFields($lang_code = false, $indexes = false) { require_once _adm_ . '/lib/lib.field.php'; $output = array(); $fl = new FieldList(); $fields = $fl->getFlatAllFields(false, false, $lang_code); foreach ($fields as $key => $val) { if ($indexes) { $output[$key] = $val; } else { $output[] = array('id' => $key, 'name' => $val); } } return $output; }
function subscribemod() { checkPerm('subscribe', false, 'course'); require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once _base_ . '/lib/lib.form.php'; require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; require_once _base_ . '/lib/lib.table.php'; $id_course = importVar('id_course', true, 0); $course_info = Man_Course::getCourseInfo($id_course); $edition_id = getCourseEditionId(); $fman = new FieldList(); //addScriptaculousJs(); YuiLib::load(array('json' => 'json-min.js')); $GLOBALS['page']->add('<script type="text/javascript">' . ' function reloadInfo() { var $ = YAHOO.util.Dom.get; var selection = $("extra_info").value; var id_course = $("id_course").value; var data = "op=get_info&id_course="+id_course+"&id_field=" + selection; var objAjax = YAHOO.util.Connect.asyncRequest("POST", "' . $GLOBALS['where_lms_relative'] . '/ajax.adm_server.php?mn=subscribe", {onSuccess: callback_change}, data ); $("extra_info").disabled = true; } ' . ' function callback_change(o) { var result = YAHOO.lang.JSON.parse(o.responseText); var table = $("subscribed_list"); for(var i= 0;i < table.rows.length;i++) { var ind = table.rows[i].id.indexOf("user_"); if(ind >= 0) { var id_user = table.rows[i].id.substr(5); table.rows[i].cells[1].innerHTML = result[id_user]; } } $("extra_info").disabled = false; }' . '</script>', 'page_head'); $out =& $GLOBALS['page']; $lang =& DoceboLanguage::CreateInstance('subscribe', 'lms'); $acl_man =& Docebo::user()->getAclManager(); $levels = CourseLevel::getLevels(); $arr_absent = array(0 => $lang->def('_NO'), 1 => $lang->def('_JUSTIFIED'), 2 => $lang->def('_NOT_JUSTIFIED')); $arr_status = array(_CUS_CONFIRMED => $lang->def('_USER_STATUS_CONFIRMED'), _CUS_SUBSCRIBED => $lang->def('_USER_STATUS_SUBS'), _CUS_BEGIN => $lang->def('_USER_STATUS_BEGIN'), _CUS_END => $lang->def('_USER_STATUS_END'), _CUS_SUSPEND => $lang->def('_USER_STATUS_SUSPEND'), _CUS_CANCELLED => $lang->def('_USER_STATUS_CANCELLED')); $field = $fman->getFlatAllFields(); $field = array('name' => $lang->def('_FULLNAME'), 'email' => $lang->def('_EMAIL')) + $field; // Retrive info about the selected user $user_alredy_subscribed = getSubscribed($id_course, false, false, true, $edition_id); $user_levels = getSubscribedInfo($id_course, false, false, false, false, $edition_id); require_once $GLOBALS['where_framework'] . '/lib/lib.adminmanager.php'; $adminManager = new AdminManager(); $acl_manager = new DoceboACLManager(); $idst_associated = $adminManager->getAdminTree(getLogUserId()); $array_user_associated =& $acl_manager->getAllUsersFromIdst($idst_associated); $user_level = Docebo::user()->getUserLevelId(); if ($user_level != ADMIN_GROUP_GODADMIN) { $user_alredy_subscribed = array_intersect($user_alredy_subscribed, $array_user_associated); } $user_selected_info =& $acl_man->getUsers($user_alredy_subscribed); $page_title = array('index.php?modname=course&op=course_list' => $lang->def('_COURSES'), $course_info['name'], $lang->def('_SUBSCRIBE')); $GLOBALS['page']->add(getTitleArea($page_title, 'subscribe') . '<div class="std_block">' . Form::openForm('levelselection', 'index.php?modname=subscribe&op=subscribeupdate') . Form::getHidden('id_course', 'id_course', $id_course) . Form::getHidden('edition_id', 'edition_id', $edition_id), 'content'); $tb = new Table(0, $lang->def('_CAPTION_SELECT_LEVELS'), $lang->def('_SUMMARY_SELECT_LEVEL')); $tb->setTableId('subscribed_list'); $type_h = array('', ''); $content_h = array($lang->def('_USERNAME'), Form::getInputDropdown('dropdown_nowh', 'extra_info', 'extra_info', $field, 0, ' onchange="reloadInfo();"')); foreach ($levels as $lv => $lv_name) { $type_h[] = 'image'; $content_h[] = '<a href="javascript:SelAll(\'' . $lv . '\');">' . $lv_name . '</a>'; } $type_h[] = 'image'; $content_h[] = $lang->def('_STATUS'); if ($course_info['course_type'] != 'elearning') { $type_h[] = 'image'; $content_h[] = $lang->def('_ABSENT'); } $tb->addHead($content_h, $type_h); $num_user_sel = 0; if (is_array($user_selected_info)) { reset($user_selected_info); $jsArr = "var elementi = new Array("; $i = 0; while (list($id_user, $user_info) = each($user_selected_info)) { if ($i != 0) { $jsArr .= ","; } $i++; $jsArr .= "'" . $id_user . "'"; // if the user isn't alredy subscribed to the course $content = array(substr($user_info[ACL_INFO_USERID], 1), $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME]); foreach ($levels as $lv => $lv_name) { $content[] = Form::getInputRadio('user_level_sel_' . $id_user . '_' . $lv, 'user_level_sel[' . $id_user . ']', $lv, $lv == $user_levels[$id_user]['level'], '') . '<label class="access-only" for="user_level_sel_' . $id_user . '_' . $lv . '">' . $lv_name . '</label>'; } $content[] = Form::getInputDropdown('dropdown', 'user_status_sel_' . $id_user . '', 'user_status_sel[' . $id_user . ']', $arr_status, $user_levels[$id_user]['status'], '') . '<label class="access-only" for="user_status_sel_' . $id_user . '">' . $lang->def('_STATUS') . '</label>'; if ($course_info['course_type'] != 'elearning') { $content[] = Form::getInputDropdown('dropdown_nowh', 'user_absent' . $id_user . '', 'user_absent[' . $id_user . ']', $arr_absent, $user_levels[$id_user]['absent'], '') . '<label class="access-only" for="user_absent_' . $id_user . '">' . $lang->def('_ABSENT') . '</label>'; } $tb->addBody($content, false, false, 'user_' . $id_user); } $GLOBALS['page']->add($tb->getTable(), 'content'); } $GLOBALS['page']->add(Form::openButtonSpace() . '<br />' . Form::getButton('subscribe', 'subscribe', $lang->def('_MOD')) . Form::getButton('cancelselector', 'cancelselector', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm(), 'content'); $GLOBALS['page']->add('</div>', 'content'); $GLOBALS['page']->add(' <script> ' . $jsArr . '); function SelAll (lvl) { var nb; ne = elementi.length; mod = document.getElementById(\'levelselection\'); for (var i=0;i<ne;i++) { elem = \'user_level_sel_\'+elementi[i]+\'_\'+lvl; var e = document.getElementById(elem); e.checked = 1; } } </script>'); }
/** * @param string $id_folder folder destination of fields * @param array $arr_fields an array with fields to attach to folder * any element of folder is an array: * key => array( 'fvalue', 'mandatory' ) * - key is the field name in current language * - fvalue is the value of the field * - mandatory is TRUE if this field is mandatory */ function _add_custom_fields($id_folder, $arr_fields) { require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; $fl = new FieldList(); $fl->setGroupFieldsTable($GLOBALS['prefix_fw'] . ORGCHAR_FIELDTABLE); $fl->setFieldEntryTable($GLOBALS['prefix_fw'] . ORGCHAR_FIELDENTRYTABLE); $arr_all_fields = $fl->getFlatAllFields(false, false, $this->default_lang); // remove all fields foreach ($arr_all_fields as $id_field => $ftranslation) { $fl->removeFieldFromGroup($id_field, $id_folder); } $arr_all_fields_translation = array_flip($arr_all_fields); $arr_fields_value = array(); // add selected fields foreach ($arr_fields as $field_translation => $field_data) { if (isset($arr_all_fields_translation[$field_translation])) { $field_id = $arr_all_fields_translation[$field_translation]; $fl->addFieldToGroup($field_id, $id_folder, $field_data['mandatory']); $arr_fields_value[$field_id] = $field_data['fvalue']; } else { die("Field non trovato: {$field_translation}"); } } $fl->storeDirectFieldsForUser($id_folder, $arr_fields_value, FALSE); }
public function show() { if (!$this->permissions['subscribe_course']) { // the user cannot use this function $this->render('invalid', array('message' => $this->_getErrorMessage('no permission'), 'back_url' => 'index.php?r=' . $this->link_course . '/show')); return; } Util::get_js(Get::rel_path('base') . '/lib/lib.elem_selector.js', true, true); Util::get_js(Get::rel_path('base') . '/lib/js_utils.js', true, true); Util::get_js(Get::rel_path('lms') . '/admin/views/subscription/subscription.js', true, true); if (isset($_GET['res']) && $_GET['res'] !== '') { UIFeedback::info(Lang::t(strtoupper($_GET['res']), 'subscription')); } if (isset($_GET['err']) && $_GET['err'] !== '') { UIFeedback::error(Lang::t(strtoupper($_GET['err']), 'subscription')); } Form::loadDatefieldScript(); //some dialogs use date inputs $umodel = new UsermanagementAdm(); $course_info = $this->model->getCourseInfoForSubscription(); $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name']; //generate field list for dynamic user column require_once _adm_ . '/lib/lib.field.php'; $fman = new FieldList(); $fields = $fman->getFlatAllFields(array('framework', 'lms')); $f_list = array('email' => Lang::t('_EMAIL', 'standard'), 'lastenter' => Lang::t('_DATE_LAST_ACCESS', 'profile'), 'register_date' => Lang::t('_DIRECTORY_FILTER_register_date', 'admin_directory'), 'level' => Lang::t('_LEVEL', 'standard'), 'language' => Lang::t('_LANGUAGE', 'standard')); $f_list = $f_list + $fields; $f_selected = $this->json->decode(Docebo::user()->getPreference('ui.directory.custom_columns')); if ($f_selected == false) { $f_selected = array('email'); } $js_arr = array(); foreach ($f_list as $key => $value) { $js_arr[] = $key . ': ' . $this->json->encode($value); } $f_list_js = '{' . implode(',', $js_arr) . '}'; $params = array('back_link' => $this->_getBackLink(), 'id_course' => $this->id_course, 'id_edition' => $this->id_edition, 'id_date' => $this->id_date, 'level_list_js' => $this->_getJsArrayLevel(), 'status_list_js' => $this->_getJsArrayStatus(), 'orgchart_list' => $umodel->getOrgChartDropdownList(), 'is_active_advanced_filter' => false, 'filter_text' => "", 'filter_orgchart' => 0, 'filter_descendants' => false, 'filter_date_valid' => "", 'filter_show' => 0, 'course_name' => $course_name, 'use_overbooking' => isset($course_info['overbooking']) ? (bool) $course_info['overbooking'] : false, 'num_var_fields' => 1, 'fieldlist' => $f_list, 'fieldlist_js' => $f_list_js, 'selected' => $f_selected, 'hidden_validity' => false); $this->render('show', $params); }
public function multimodTask() { if (!$this->permissions['mod_user']) { $output = array('success' => false, 'message' => $this->_getErrorMessage('no permission')); echo $this->json->encode($output); return; } $title = Lang::t('_MOD', 'admin_directory'); $users_count = Get::req('users_count', DOTY_INT, 0); if ($users_count <= 0) { $output = array('success' => true, 'header' => $title, 'body' => Lang::t('_EMPTY_SELECTION', 'admin_directory')); echo $this->json->encode($output); return; } $acl_man = Docebo::user()->getAclManager(); $level = ADMIN_GROUP_USER; $arr_levels = $acl_man->getAdminLevels(); //index = idst; value = groupid; $levels = array(); foreach ($arr_levels as $groupid_level => $idst_level) { $levels[$groupid_level] = Lang::t('_DIRECTORY_' . $groupid_level, 'admin_directory'); } $info = array('firstname' => '', 'lastname' => '', 'email' => '', 'level' => '', 'facebook_id' => '', 'twitter_id' => '', 'linkedin_id' => '', 'google_id' => ''); $language = getDefaultLanguage(); $languages = Docebo::langManager()->getAllLanguages(); require_once _base_ . '/lib/lib.platform.php'; $pman =& PlatformManager::createInstance(); // = new PlatformManager(); $platforms = $pman->getPlatformList(); require_once _adm_ . '/lib/lib.field.php'; $fman = new FieldList(); $field_list = $fman->getFlatAllFields(array_keys($platforms)); $fields_to_exclude = $fman->getFieldsByType('upload'); $preference = new UserPreferences(0); $modify_mask = $preference->getModifyMask('ui.', true, true); $fields_mask = $fman->playFieldsForUser(-1, false, false, true, false, true); //build edit mask $this->render('multimod', array('users_count' => $users_count, 'title' => $title, 'levels' => $levels, 'modify_mask' => $modify_mask, 'fields_mask' => $fields_mask, 'fields_to_exclude' => is_array($fields_to_exclude) ? $fields_to_exclude : array(), 'info' => $info, 'json' => $this->json)); }
function _step0() { require_once $GLOBALS['where_framework'] . '/lib/lib.field.php'; $field_man = new FieldList(); $field_list = $field_man->getFlatAllFields(); $out = ''; // ---- name ----- $out = $this->form->getTextfield($this->lang->def('_NAME'), $this->_get_base_name() . '_name', $this->_get_base_name() . '[name]', 255, $this->post_params['name']); // ---- description ----- $out .= $this->form->getSimpleTextarea($this->lang->def('_DESCRIPTION'), $this->_get_base_name() . '_description', $this->_get_base_name() . '[description]', $this->post_params['description']); // --- cid field -------- $out .= $this->form->getDropdown($this->lang->def('_CID'), $this->_get_base_name() . '_cid_field', $this->_get_base_name() . '[cid_field]', $field_list, $this->post_params['cid_field']); return $out; }