function _get_time_query($type = 'html', $report_data = NULL, $other = '') { require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; require_once dirname(__FILE__) . '/report_tableprinter.php'; if ($report_data == NULL) { $ref =& $_SESSION['report_tempdata']; } else { $ref =& $report_data; } $fw = $GLOBALS['prefix_fw']; $lms = $GLOBALS['prefix_lms']; $sel_all = $ref['rows_filter']['select_all']; $sel_type = $ref['rows_filter']['selection_type']; $selection = $ref['rows_filter']['selection']; $timetype = $ref['columns_filter']['timetype']; $years =& $ref['columns_filter']['years']; $months =& $ref['columns_filter']['months']; if (!$sel_all && count($selection) <= 0) { cout('<p>' . $this->lang->def('_EMPTY_SELECTION') . '</p>'); return; } $acl = new DoceboACLManager(); $acl->include_suspended = true; //admin users filter $userlevelid = Docebo::user()->getUserLevelId(); if ($userlevelid != ADMIN_GROUP_GODADMIN && !Docebo::user()->isAnonymous()) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_tree = $adminManager->getAdminTree(Docebo::user()->getIdST()); $admin_users = $acl_man->getAllUsersFromIdst($admin_tree); $admin_users = array_unique($admin_users); } $html = ''; $times = array(); switch ($timetype) { case 'years': $now = date('Y'); for ($i = $now - $years + 1; $i <= $now; $i++) { $times[] = $i; } break; case 'months': //... break; } switch ($sel_type) { case 'users': $data = array(); $users_list = $sel_all ? $acl->getAllUsersIdst() : $acl->getAllUsersFromIdst($selection); $users_list = array_unique($users_list); if ($userlevelid != ADMIN_GROUP_GODADMIN && !Docebo::user()->isAnonymous()) { $users_list = array_intersect($users_list, $admin_users); } $query = "SELECT idUser, YEAR(date_complete) as yearComplete " . " FROM " . $lms . "_courseuser " . " WHERE status=2 " . ($userlevelid != ADMIN_GROUP_GODADMIN && !Docebo::user()->isAnonymous() ? " AND idUser IN (" . implode(",", $users_list) . ") " : ""); $res = sql_query($query); while ($row = mysql_fetch_assoc($res)) { //$data[ $row['idUser'] ][ $row['yearComplete'] ] = $row['complete']; $idUser = $row['idUser']; $year = $row['yearComplete']; if (!isset($data[$idUser][$year])) { $data[$idUser][$year] = 0; } $data[$idUser][$year]++; } $usernames = array(); $query = "SELECT idst, userid FROM " . $fw . "_user WHERE idst IN (" . implode(",", $users_list) . ")"; $res = sql_query($query); while ($row = mysql_fetch_assoc($res)) { $usernames[$row['idst']] = $acl->relativeId($row['userid']); } //draw table $buffer = new ReportTablePrinter($type, true); $buffer->openTable('', ''); $head = array($this->lang->def('_USER')); foreach ($times as $time) { $head[] = $time; } $head[] = $this->lang->def('_TOTAL'); $buffer->openHeader(); $buffer->addHeader($head); $buffer->closeHeader(); $tot_total = 0; $buffer->openBody(); foreach ($users_list as $user) { if (!isset($usernames[$user])) { break; } $line = array(); $line_total = 0; $line[] = $usernames[$user]; foreach ($times as $time) { //years or months switch ($timetype) { case 'years': if (isset($data[$user][$time])) { $line[] = $data[$user][$time]; $line_total += $data[$user][$time]; } else { $line[] = '0'; } break; case 'months': //$year = ... //$month = ... //$line[] = (isset($data[$group][$year][$month]) ? $data[$group][$year][$month] : '0'); break; } } $line[] = $line_total; $tot_total += $line_total; $buffer->addLine($line); } $buffer->closeBody(); //totals $foot = array(''); foreach ($times as $time) { $temp = 0; foreach ($users_list as $user) { if (isset($data[$user][$time])) { $temp += $data[$user][$time]; } } $foot[] = $temp; } $foot[] = $tot_total; $buffer->setFoot($foot); $buffer->closeTable(); $html .= $buffer->get(); break; //-------------------- //-------------------- case 'groups': //retrieve all labels $orgchart_labels = array(); $query = "SELECT * FROM " . $fw . "_org_chart WHERE lang_code='" . getLanguage() . "'"; $res = sql_query($query); while ($row = mysql_fetch_assoc($res)) { $orgchart_labels[$row['id_dir']] = $row['translation']; } $labels = array(); //$query = "SELECT * FROM ".$fw."_group WHERE (hidden='false' OR groupid LIKE '/oc_%' OR groupid LIKE '/ocd_%') AND type='free'"; $query = "SELECT * FROM " . $fw . "_group WHERE groupid LIKE '/oc\\_%' OR groupid LIKE '/ocd\\_%' OR hidden = 'false' "; $res = sql_query($query); while ($row = mysql_fetch_assoc($res)) { if ($row['hidden'] == 'false') { $labels[$row['idst']] = $acl->relativeId($row['groupid']); } else { $temp = explode("_", $row['groupid']); //echo '<div>'.print_r($temp,true).'</div>'; if ($temp[0] == '/oc') { $labels[$row['idst']] = $temp[1] != 0 ? $orgchart_labels[$temp[1]] : ''; } elseif ($temp[0] == '/ocd') { $labels[$row['idst']] = $temp[1] != 0 ? $orgchart_labels[$temp[1]] : ''; } } } //solve groups user $solved_groups = array(); $subgroups_list = array(); foreach ($selection as $group) { $temp = $acl->getGroupGDescendants($group); $temp[] = $group; foreach ($temp as $idst_subgroup) { $solved_groups[$idst_subgroup] = $group; } $subgroups_list = array_merge($subgroups_list, $temp); } $query = "SELECT gm.idst as idGroup, YEAR(cu.date_complete) as yearComplete, MONTH(cu.date_complete) as monthComplete " . " FROM " . $lms . "_courseuser as cu JOIN " . $fw . "_group_members as gm ON (cu.idUser=gm.idstMember) " . " WHERE status=2 AND gm.idst IN (" . implode(",", $subgroups_list) . ")"; $data = array(); $res = sql_query($query); while ($row = mysql_fetch_assoc($res)) { $idGroup = $solved_groups[$row['idGroup']]; $year = $row['yearComplete']; $month = $row['monthComplete']; switch ($timetype) { case 'years': if (!isset($data[$idGroup][$year])) { $data[$idGroup][$year] = 0; } $data[$idGroup][$year]++; break; case 'months': if (!isset($data[$idGroup][$year][$month])) { $data[$idGroup][$year][$month] = 0; } $data[$idGroup][$year][$month]++; break; } //end switch } //draw table $buffer = new ReportTablePrinter($type, true); $buffer->openTable('', ''); $head = array($this->lang->def('_GROUPS'), $this->lang->def('_USERS')); foreach ($times as $time) { $head[] = $time; } $head[] = $this->lang->def('_TOTAL'); $buffer->openHeader(); $buffer->addHeader($head); $buffer->closeHeader(); $tot_users = 0; $tot_total = 0; $buffer->openBody(); foreach ($selection as $group) { $group_users = $acl->getGroupAllUser($group); if ($userlevelid != ADMIN_GROUP_GODADMIN && !Docebo::user()->isAnonymous()) { $group_users = array_intersect($group_users, $admin_users); } $users_num = count($group_users); $line = array(); $line_total = 0; $line[] = $labels[$group]; $line[] = $users_num; foreach ($times as $time) { //years or months switch ($timetype) { case 'years': if (isset($data[$group][$time])) { $line[] = $data[$group][$time]; $line_total += $data[$group][$time]; } else { $line[] = '0'; } break; case 'months': //$year = ... //$month = ... //$line[] = (isset($data[$group][$year][$month]) ? $data[$group][$year][$month] : '0'); break; } } $line[] = $line_total; $tot_users += $users_num; $tot_total += $line_total; $buffer->addLine($line); } $buffer->closeBody(); //totals $foot = array('', $tot_users); foreach ($times as $time) { $temp = 0; foreach ($selection as $group) { if (isset($data[$group][$time])) { $temp += $data[$group][$time]; } } $foot[] = $temp; } $foot[] = $tot_total; $buffer->setFoot($foot); $buffer->closeTable(); $html .= $buffer->get(); break; } //end switch cout($html); }
function _printTable_users($type, &$acl_man, &$id_courses, &$num_iscr, &$num_nobegin, &$num_itinere, &$num_end, &$time_in_course, $filter_cols, $show_percent, $show_classrooms_editions, &$classrooms_editions_info) { require_once _lms_ . '/admin/modules/report/report_tableprinter.php'; $buffer = new ReportTablePrinter($type); $output = ''; require_once $GLOBALS['where_lms'] . '/lib/lib.course.php'; $lang =& DoceboLanguage::createInstance('course', 'lms'); $course_lang =& DoceboLanguage::createInstance('course', 'lms'); $rg_lang =& DoceboLanguage::createInstance('report', 'framework'); $colspan_course = 0; if (in_array('_CODE_COURSE', $filter_cols)) { $colspan_course++; } if (in_array('_NAME_COURSE', $filter_cols)) { $colspan_course++; } if (in_array('_COURSE_CATEGORY', $filter_cols)) { $colspan_course++; } if (in_array('_COURSESTATUS', $filter_cols)) { $colspan_course++; } if (in_array('_COURSECATALOGUE', $filter_cols)) { $colspan_course++; } if (in_array('_PUBLICATION_DATE', $filter_cols)) { $colspan_course++; } if (in_array('_LANGUAGE', $filter_cols)) { $colspan_course++; } if (in_array('_DIFFICULT', $filter_cols)) { $colspan_course++; } if (in_array('_DATE_BEGIN', $filter_cols)) { $colspan_course++; } if (in_array('_DATE_END', $filter_cols)) { $colspan_course++; } if (in_array('_TIME_BEGIN', $filter_cols)) { $colspan_course++; } if (in_array('_TIME_END', $filter_cols)) { $colspan_course++; } if (in_array('_MAX_NUM_SUBSCRIBED', $filter_cols)) { $colspan_course++; } if (in_array('_MIN_NUM_SUBSCRIBED', $filter_cols)) { $colspan_course++; } if (in_array('_CREDITS', $filter_cols)) { $colspan_course++; } if (in_array('_PRICE', $filter_cols)) { $colspan_course++; } if (in_array('_ADVANCE', $filter_cols)) { $colspan_course++; } if (in_array('_COURSE_TYPE', $filter_cols)) { $colspan_course++; } if (in_array('_AUTOREGISTRATION_CODE', $filter_cols)) { $colspan_course++; } $colspan_classrooms_editions = 0; if ($show_classrooms_editions) { if (in_array('_TH_CLASSROOM_CODE', $filter_cols)) { $colspan_classrooms_editions++; } if (in_array('_TH_CLASSROOM_NAME', $filter_cols)) { $colspan_classrooms_editions++; } if (in_array('_TH_CLASSROOM_MIN_DATE', $filter_cols)) { $colspan_classrooms_editions++; } if (in_array('_TH_CLASSROOM_MAX_DATE', $filter_cols)) { $colspan_classrooms_editions++; } } $colspan_stats = 0; if (in_array('_INSCR', $filter_cols)) { $colspan_stats++; } if (in_array('_MUSTBEGIN', $filter_cols)) { $colspan_stats += $show_percent ? 2 : 1; } if (in_array('_USER_STATUS_BEGIN', $filter_cols)) { $colspan_stats += $show_percent ? 2 : 1; } if (in_array('_COMPLETECOURSE', $filter_cols)) { $colspan_stats += $show_percent ? 2 : 1; } $buffer->openTable(); $th1 = array(array('colspan' => $colspan_course + $colspan_classrooms_editions, 'style' => 'align-center', 'value' => $lang->def('_COURSE')), array('colspan' => $colspan_stats, 'style' => 'align-center', 'value' => $rg_lang->def('_USERS'))); $th2 = array(); $th2[] = array('colspan' => $colspan_course, 'value' => ''); if ($show_classrooms_editions) { $th2[] = array('colspan' => $colspan_classrooms_editions, 'style' => 'align-center', 'value' => Lang::t('_CLASSROOM', 'classroom')); } if (in_array('_INSCR', $filter_cols)) { $th2[] = array('style' => 'align-center', 'value' => $rg_lang->def('_USER_STATUS_SUBS')); } if (in_array('_MUSTBEGIN', $filter_cols)) { $th2[] = array('colspan' => $show_percent ? 2 : 1, 'style' => 'align-center', 'value' => $rg_lang->def('_MUSTBEGIN')); } if (in_array('_USER_STATUS_BEGIN', $filter_cols)) { $th2[] = array('colspan' => $show_percent ? 2 : 1, 'style' => 'align-center', 'value' => $rg_lang->def('_USER_STATUS_BEGIN')); } if (in_array('_COMPLETECOURSE', $filter_cols)) { $th2[] = array('colspan' => $show_percent ? 2 : 1, 'style' => 'align-center', 'value' => $rg_lang->def('_COMPLETED')); } $th3 = array(); if (in_array('_CODE_COURSE', $filter_cols)) { $th3[] = $lang->def('_COURSE_CODE'); } if (in_array('_NAME_COURSE', $filter_cols)) { $th3[] = $lang->def('_COURSE_NAME'); } if (in_array('_COURSE_CATEGORY', $filter_cols)) { $th3[] = $lang->def('_CATEGORY'); } if (in_array('_COURSESTATUS', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_STATUS')); } if (in_array('_COURSECATALOGUE', $filter_cols)) { $th3[] = $lang->def('_CATALOGUE'); } if (in_array('_PUBLICATION_DATE', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_CREATION_DATE')); } if (in_array('_LANGUAGE', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_COURSE_LANG_METHOD')); } if (in_array('_DIFFICULT', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_DIFFICULTY')); } if (in_array('_DATE_BEGIN', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_DATE_BEGIN')); } if (in_array('_DATE_END', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_DATE_END')); } if (in_array('_TIME_BEGIN', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_HOUR_BEGIN')); } if (in_array('_TIME_END', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_HOUR_END')); } if (in_array('_MAX_NUM_SUBSCRIBED', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_MAX_NUM_SUBSCRIBE')); } if (in_array('_MIN_NUM_SUBSCRIBED', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_MIN_NUM_SUBSCRIBE')); } if (in_array('_CREDITS', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => Lang::t('_CREDITS', 'standard')); } if (in_array('_PRICE', $filter_cols)) { $th3[] = $lang->def('_COURSE_PRIZE'); } if (in_array('_ADVANCE', $filter_cols)) { $th3[] = $lang->def('_COURSE_ADVANCE'); } if (in_array('_COURSE_TYPE', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $lang->def('_COURSE_TYPE')); } if (in_array('_AUTOREGISTRATION_CODE', $filter_cols)) { $th3[] = $lang->def('_AUTOREGISTRATION_CODE'); } if ($show_classrooms_editions) { if (in_array('_TH_CLASSROOM_CODE', $filter_cols)) { $th3[] = Lang::t('_NAME', 'standard'); } if (in_array('_TH_CLASSROOM_NAME', $filter_cols)) { $th3[] = Lang::t('_CODE', 'standard'); } if (in_array('_TH_CLASSROOM_MIN_DATE', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => Lang::t('_DATE_BEGIN', 'standard')); } if (in_array('_TH_CLASSROOM_MAX_DATE', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => Lang::t('_DATE_END', 'standard')); } } if (in_array('_INSCR', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM')); } if (in_array('_MUSTBEGIN', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM', 'report')); if ($show_percent) { $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_PERC')); } } if (in_array('_USER_STATUS_BEGIN', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM', 'report')); if ($show_percent) { $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_PERC')); } } if (in_array('_COMPLETECOURSE', $filter_cols)) { $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM', 'report')); if ($show_percent) { $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_PERC')); } } if (in_array('_TOTAL_SESSION', $filter_cols)) { $th1[] = array('style' => 'align-center', 'value' => $rg_lang->def('_TOTAL_SESSION')); $th2[] = ''; $th3[] = ''; } $buffer->openHeader(); $buffer->addHeader($th1); $buffer->addHeader($th2); $buffer->addHeader($th3); $buffer->closeHeader(); $i = 0; $tot_iscr = $tot_itinere = $tot_nobegin = $tot_comple = ''; $tot_perc_itinere = $tot_perc_nobegin = $tot_perc_comple = ''; $total_time = 0; $array_status = array(CST_PREPARATION => $lang->def('_CST_PREPARATION', 'course', 'lms'), CST_AVAILABLE => $lang->def('_CST_AVAILABLE', 'course', 'lms'), CST_EFFECTIVE => $lang->def('_CST_CONFIRMED', 'course', 'lms'), CST_CONCLUDED => $lang->def('_CST_CONCLUDED', 'course', 'lms'), CST_CANCELLED => $lang->def('_CST_CANCELLED', 'course', 'lms')); //extract course categories $query = "SELECT idCategory, path" . " FROM " . $GLOBALS['prefix_lms'] . "_category"; $result = sql_query($query); $array_category = array(0 => $lang->def('_NONE')); while (list($id_cat, $name_cat) = sql_fetch_row($result)) { $array_category[$id_cat] = substr($name_cat, 5, strlen($name_cat) - 5); } //strrpos($name_cat, '/') + 1 ); //extract course catalogues and relations $query = "SELECT idCatalogue, name" . " FROM " . $GLOBALS['prefix_lms'] . "_catalogue"; $result = sql_query($query); $array_catalogue = array(); while (list($id_cat, $name_cat) = sql_fetch_row($result)) { $array_catalogue[$id_cat] = $name_cat; } //strrpos($name_cat, '/') + 1 ); $catalogue_entries = array(); $query = "select * FROM " . $GLOBALS['prefix_lms'] . "_catalogue_entry "; //where idst_member in (...) $result = sql_query($query); while (list($idcat, $entry, $type) = sql_fetch_row($result)) { switch ($type) { case 'course': if (!isset($catalogue_entries[$entry])) { $catalogue_entries[$entry] = array(); } $catalogue_entries[$entry][] = $idcat; break; case 'coursepath': //... break; } //end switch } $difficult_trans = array('veryeasy' => Lang::t('_DIFFICULT_VERYEASY', 'standard'), 'easy' => Lang::t('_DIFFICULT_EASY', 'standard'), 'medium' => Lang::t('_DIFFICULT_MEDIUM', 'standard'), 'difficult' => Lang::t('_DIFFICULT_DIFFICULT', 'standard'), 'verydifficult' => Lang::t('_DIFFICULT_VERYDIFFICULT', 'standard')); $course_man = new Man_Course(); $buffer->openBody(); while (list($index, $course_info) = each($id_courses)) { $idc = $id_date = 0; if ($show_classrooms_editions) { if (isset($course_info['course_type']) && $course_info['course_type'] == 'classroom') { list($idc, $id_date) = explode('_', $index); } else { $idc = $index; } } else { $idc = $index; } $info_course = $course_man->getCourseInfo($idc); $code_c = $course_info['code']; $name_c = $course_info['name']; $_date_create = $info_course['create_date'] != '0000-00-00 00:00:00' && $info_course['create_date'] != "" ? Format::date($info_course['create_date'], 'datetime') : ""; $_date_begin = $info_course['date_begin'] != '0000-00-00 00:00:00' && $info_course['date_begin'] != "" ? Format::date($info_course['date_begin'], 'datetime') : ""; $_date_end = $info_course['date_end'] != '0000-00-00 00:00:00' && $info_course['date_end'] != "" ? Format::date($info_course['date_end'], 'datetime') : ""; $trow = array(); if (in_array('_CODE_COURSE', $filter_cols)) { $trow[] = addslashes($code_c); } if (in_array('_NAME_COURSE', $filter_cols)) { $trow[] = addslashes($name_c); } if (in_array('_COURSE_CATEGORY', $filter_cols)) { $trow[] = $array_category[$info_course['idCategory']]; } if (in_array('_COURSESTATUS', $filter_cols)) { $trow[] = isset($array_status[$info_course['status']]) ? $array_status[$info_course['status']] : ''; } if (in_array('_COURSECATALOGUE', $filter_cols)) { $temp = array(); if (isset($catalogue_entries[$info_course['idCourse']])) { foreach ($catalogue_entries[$info_course['idCourse']] as $idcat) { $temp[] = $array_catalogue[$idcat]; } } $trow[] = implode(', ', $temp); } if (in_array('_PUBLICATION_DATE', $filter_cols)) { $trow[] = array('style' => 'align-center', 'value' => $_date_create); } if (in_array('_LANGUAGE', $filter_cols)) { $trow[] = $info_course['lang_code']; } if (in_array('_DIFFICULT', $filter_cols)) { $trow[] = isset($difficult_trans[$info_course['difficult']]) ? $difficult_trans[$info_course['difficult']] : ""; } if (in_array('_DATE_BEGIN', $filter_cols)) { $trow[] = array('style' => 'align-center', 'value' => $_date_begin); } if (in_array('_DATE_END', $filter_cols)) { $trow[] = array('style' => 'align-center', 'value' => $_date_end); } if (in_array('_TIME_BEGIN', $filter_cols)) { $trow[] = $info_course['hour_begin'] < 0 ? '' : $info_course['hour_begin']; } if (in_array('_TIME_END', $filter_cols)) { $trow[] = $info_course['hour_end'] < 0 ? '' : $info_course['hour_end']; } if (in_array('_MAX_NUM_SUBSCRIBED', $filter_cols)) { $trow[] = $info_course['max_num_subscribe'] ? $info_course['max_num_subscribe'] : ''; } if (in_array('_MIN_NUM_SUBSCRIBED', $filter_cols)) { $trow[] = $info_course['min_num_subscribe'] ? $info_course['min_num_subscribe'] : ''; } if (in_array('_CREDITS', $filter_cols)) { $trow[] = isset($info_course['credits']) ? $info_course['credits'] : ''; } if (in_array('_PRICE', $filter_cols)) { $trow[] = $info_course['prize'] != '' ? $info_course['prize'] : '0'; } if (in_array('_ADVANCE', $filter_cols)) { $trow[] = $info_course['advance'] != '' ? $info_course['advance'] : '0'; } if (in_array('_COURSE_TYPE', $filter_cols)) { $trow[] = array('style' => 'align-center', 'value' => $this->_translateCourseType($info_course['course_type'])); } if (in_array('_AUTOREGISTRATION_CODE', $filter_cols)) { $trow[] = $info_course['autoregistration_code']; } if ($show_classrooms_editions) { $e_code = $e_name = $date_1 = $date_2 = ''; if ($id_date > 0 && 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', $filter_cols)) { $trow[] = $e_code; } if (in_array('_TH_CLASSROOM_NAME', $filter_cols)) { $trow[] = $e_name; } if (in_array('_TH_CLASSROOM_MIN_DATE', $filter_cols)) { $trow[] = array('style' => 'align-center', 'value' => $date_1); } if (in_array('_TH_CLASSROOM_MAX_DATE', $filter_cols)) { $trow[] = array('style' => 'align-center', 'value' => $date_2); } } if (isset($num_iscr[$index])) { if (in_array('_INSCR', $filter_cols)) { $trow[] = array('style' => 'img-cell', 'value' => $num_iscr[$index]); } $tot_iscr += $num_iscr[$index]; //no begin course if (in_array('_MUSTBEGIN', $filter_cols)) { if (isset($num_nobegin[$index])) { $perc = $num_nobegin[$index] / $num_iscr[$index] * 100; $tot_nobegin += $num_nobegin[$index]; $tot_perc_nobegin += $perc; $trow[] = array('style' => 'img-cell', 'value' => $num_nobegin[$index]); if ($show_percent) { $trow[] = array('style' => 'img-cell', 'value' => number_format($perc, 2, '.', '') . '%'); } } else { $trow[] = ''; if ($show_percent) { $trow[] = ''; } } } //begin if (in_array('_USER_STATUS_BEGIN', $filter_cols)) { if (isset($num_itinere[$index])) { $perc = $num_itinere[$index] / $num_iscr[$index] * 100; $tot_itinere += $num_itinere[$index]; $tot_perc_itinere += $perc; $trow[] = array('style' => 'img-cell', 'value' => $num_itinere[$index]); if ($show_percent) { $trow[] = array('style' => 'img-cell', 'value' => number_format($perc, 2, '.', '') . '%'); } } else { $trow[] = array('style' => 'img-cell', 'value' => ''); if ($show_percent) { $trow[] = array('style' => 'img-cell', 'value' => ''); } } } //end course if (in_array('_COMPLETECOURSE', $filter_cols)) { if (isset($num_end[$index])) { $perc = $num_end[$index] / $num_iscr[$index] * 100; $tot_comple += $num_end[$index]; $tot_perc_comple += $perc; $trow[] = array('style' => 'img-cell', 'value' => $num_end[$index]); if ($show_percent) { $trow[] = array('style' => 'img-cell', 'value' => number_format($perc, 2, '.', '') . '%'); } } else { $trow[] = array('style' => 'img-cell', 'value' => ''); if ($show_percent) { $trow[] = array('style' => 'img-cell', 'value' => ''); } } } // time in if (in_array('_TOTAL_SESSION', $filter_cols)) { if (isset($time_in_course[$idc])) { $total_time += $time_in_course[$idc]; $trow[] = array('style' => 'img-cell', 'value' => (int) ($time_in_course[$idc] / 3600) . 'h ' . substr('0' . (int) ($time_in_course[$idc] % 3600 / 60), -2) . 'm ' . substr('0' . (int) ($time_in_course[$idc] % 60), -2) . 's '); } else { $trow[] = array('style' => 'img-cell', 'value' => ''); } } } else { if (in_array('_INSCR', $filter_cols)) { $trow[] = ''; } //no begin course if (in_array('_MUSTBEGIN', $filter_cols)) { $trow[] = ''; if ($show_percent) { $trow[] = ''; } } //begin if (in_array('_USER_STATUS_BEGIN', $filter_cols)) { $trow[] = ''; if ($show_percent) { $trow[] = ''; } } //end course if (in_array('_COMPLETECOURSE', $filter_cols)) { $trow[] = ''; if ($show_percent) { $trow[] = ''; } } // time in if (in_array('_TOTAL_SESSION', $filter_cols)) { $trow[] = ''; } } //print row if (isset($num_iscr[$index]) && $num_iscr[$index]) { $buffer->addLine($trow); } else { $i--; } } $buffer->closeBody(); $tfoot = array(array('colspan' => $colspan_course + $colspan_classrooms_editions, 'value' => $lang->def('_TOTAL'))); if (in_array('_INSCR', $filter_cols)) { $tfoot[] = $tot_iscr; } if (in_array('_MUSTBEGIN', $filter_cols)) { $tfoot[] = $tot_nobegin; if ($show_percent) { $tfoot[] = $tot_nobegin ? number_format($tot_nobegin / $tot_iscr * 100, 2, '.', '') . '%' : 'n.d.'; } } if (in_array('_USER_STATUS_BEGIN', $filter_cols)) { $tfoot[] = $tot_itinere; if ($show_percent) { $tfoot[] = $tot_itinere ? number_format($tot_itinere / $tot_iscr * 100, 2, '.', '') . '%' : 'n.d.'; } } if (in_array('_COMPLETECOURSE', $filter_cols)) { $tfoot[] = $tot_comple; if ($show_percent) { $tfoot[] = $tot_comple ? number_format($tot_comple / $tot_iscr * 100, 2, '.', '') . '%' : 'n.d.'; } } if (in_array('_TOTAL_SESSION', $filter_cols)) { $tfoot[] = (int) ($total_time / 3600) . 'h ' . substr('0' . (int) ($total_time / 60), -2) . 'm ' . substr('0' . (int) $total_time, -2) . 's '; } $buffer->setFoot($tfoot); $buffer->closeTable(); //return $output; return $buffer->get(); }