Example #1
0
function export()
{
    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';
    $lang =& DoceboLanguage::createInstance('coursereport', 'lms');
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $included_test = array();
    $mod_perm = checkPerm('mod', true);
    $csv = '';
    $acl_man = Docebo::user()->getAclManager();
    $test_man = new GroupTestManagement();
    $report_man = new CourseReportManager();
    $org_tests =& $report_man->getTest();
    $tests_info = $test_man->getTestInfo($org_tests);
    $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);
    $i = 0;
    $students_info = array();
    foreach ($students as $idst => $user_course_info) {
        $students_info[$idst] =& $acl_man->getUser($idst, FALSE);
    }
    $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;
    }
    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);
    $img_mod = '<img src="' . getPathImage() . 'standard/edit.png" alt="' . $lang->def('_MOD') . '" />';
    $cont_h[] = $lang->def('_DETAILS');
    $csv .= '"' . $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
        switch ($info_report['source_of']) {
            case "test":
                $title = strip_tags($tests_info[$info_report['id_source']]['title']);
                break;
            case "scoitem":
                $title = strip_tags($info_report['title']);
                break;
            case "activity":
                $title = strip_tags($info_report['title']);
                break;
            case "final_vote":
                $title = strip_tags($lang->def('_FINAL_SCORE'));
                break;
        }
        $top = $title;
        $cont_h[] = $top;
        $csv .= ';"' . $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'];
        }
    }
    $csv .= "\n";
    $first = true;
    foreach ($colums['max_score'] as $content) {
        if ($first) {
            $first = false;
            $csv .= '"' . $content . '"';
        } else {
            $csv .= ';"' . $content . '"';
        }
    }
    $csv .= "\n";
    $first = true;
    foreach ($colums['required_score'] as $content) {
        if ($first) {
            $first = false;
            $csv .= '"' . $content . '"';
        } else {
            $csv .= ';"' . $content . '"';
        }
    }
    $csv .= "\n";
    $first = true;
    foreach ($colums['weight'] as $content) {
        if ($first) {
            $first = false;
            $csv .= '"' . $content . '"';
        } else {
            $csv .= ';"' . $content . '"';
        }
    }
    $csv .= "\n";
    $first = true;
    foreach ($colums['show_to_user'] as $content) {
        if ($first) {
            $first = false;
            $csv .= '"' . $content . '"';
        } else {
            $csv .= ';"' . $content . '"';
        }
    }
    $csv .= "\n";
    $first = true;
    foreach ($colums['use_for_final'] as $content) {
        if ($first) {
            $first = false;
            $csv .= '"' . $content . '"';
        } else {
            $csv .= ';"' . $content . '"';
        }
    }
    $csv .= "\n\n\n";
    $first = true;
    foreach ($cont_h as $content) {
        if ($first) {
            $first = false;
            $csv .= '"' . $content . '"';
        } else {
            $csv .= ';"' . $content . '"';
        }
    }
    $csv .= "\n";
    $tests_score =& $test_man->getTestsScores($included_test, $id_students);
    $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') {
                    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'];
                    }
                    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'];
                    }
                    if (!isset($test_details[$id_test]['num_result'])) {
                        $test_details[$id_test]['num_result'] = 1;
                    } else {
                        $test_details[$id_test]['num_result']++;
                    }
                    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);
    }
    $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);
    $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') {
                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'];
                }
                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'];
                }
                if (!isset($report_details[$id_report]['num_result'])) {
                    $report_details[$id_report]['num_result'] = 1;
                } else {
                    $report_details[$id_report]['num_result']++;
                }
                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);
    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]);
            $csv .= '"' . $user_name . '"';
            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":
                                    $csv .= ';"-"';
                                    break;
                                case "not_checked":
                                    $csv .= ';"' . $lang->def('_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":
                                    $csv .= ';"' . $lang->def('_PASSED') . '"';
                                    if (!isset($test_details[$id_test]['passed'])) {
                                        $test_details[$id_test]['passed'] = 1;
                                    } else {
                                        $test_details[$id_test]['passed']++;
                                    }
                                    break;
                                case "not_passed":
                                    $csv .= ';"' . $lang->def('_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 ($score >= $info_report['required_score']) {
                                        if ($score == $test_details[$id_test]['max_score']) {
                                            $csv .= ';"' . $score . " " . $tt . '"';
                                        } else {
                                            $csv .= ';"' . " " . $tt . '"';
                                        }
                                        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']) {
                                            $csv .= ';"' . $score . " " . $tt . '"';
                                        } else {
                                            $csv .= ';"' . $score . " " . $tt . '"';
                                        }
                                        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:
                                    $csv .= ';"-"';
                            }
                        } else {
                            $csv .= ';"-"';
                        }
                        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";
                        $report = sql_fetch_assoc(sql_query($query_report));
                        if ($report['score_raw'] == NULL) {
                            $report['score_raw'] = "-";
                        }
                        $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";
                        $query = sql_query($query_report);
                        $num = sql_num_rows($query);
                        $csv .= ';"' . $report['score_raw'] . '"';
                        break;
                    case "activity":
                    case "final_vote":
                        $id_report = $info_report['id_report'];
                        if (isset($reports_score[$id_report][$idst_user])) {
                            switch ($reports_score[$id_report][$idst_user]['score_status']) {
                                case "not_complete":
                                    $csv .= ';"-"';
                                    break;
                                case "valid":
                                    if ($reports_score[$id_report][$idst_user]['score'] >= $info_report['required_score']) {
                                        if ($reports_score[$id_report][$idst_user]['score'] == $info_report['max_score']) {
                                            $csv .= ';"' . $reports_score[$id_report][$idst_user]['score'] . '"';
                                        } else {
                                            $csv .= ';"' . $reports_score[$id_report][$idst_user]['score'] . '"';
                                        }
                                        // Count passed
                                        if (!isset($report_details[$id_report]['passed'])) {
                                            $report_details[$id_report]['passed'] = 1;
                                        } else {
                                            $report_details[$id_report]['passed']++;
                                        }
                                    } else {
                                        $csv .= ';"' . $reports_score[$id_report][$idst_user]['score'] . '"';
                                        // 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 {
                            $csv .= ';"-"';
                        }
                        break;
                }
            }
            $csv .= "\n";
        }
    }
    $file_name = date('YmdHis') . '_report_export.csv';
    require_once _base_ . '/lib/lib.download.php';
    sendStrAsFile($csv, $file_name);
}
function viewReport()
{
    checkPerm('view');
    $idrep = Get::req('idrep', DOTY_INT, 0);
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    load_filter($idrep, true);
    require_once _base_ . '/lib/lib.form.php';
    require_once _base_ . '/lib/lib.download.php';
    $lang =& DoceboLanguage::createInstance('report', 'framework');
    //$obj_report = openreport($idrep);
    if ($idrep != false && $idrep > 0) {
        $id_report = $idrep;
    } else {
        $id_report = $_SESSION['report_tempdata']['id_report'];
        if ($id_report != false && $idrep > 0) {
            load_filter($idrep, true, false);
        }
    }
    $query_report = "\r\n\tSELECT r.class_name, r.file_name, r.report_name, f.filter_name, f.filter_data, f.author\r\n\tFROM %lms_report AS r\r\n\t\tJOIN %lms_report_filter AS f\r\n\t\tON ( r.id_report = f.id_report )\r\n\tWHERE f.id_filter = '" . $idrep . "'";
    $re_report = sql_query($query_report);
    list($class_name, $file_name, $report_name, $filter_name, $report_data) = sql_fetch_row($re_report);
    if (sql_num_rows($re_report) == 0) {
        reportlist();
        return;
    }
    $report_data = unserialize($report_data);
    require_once _lms_ . '/admin/modules/report/' . $file_name;
    $obj_report = new $class_name($id_report);
    $obj_report->back_url = 'index.php?modname=public_report_admin&op=reportlist';
    $obj_report->jump_url = 'index.php?modname=public_report_admin&op=view_report&idrep=' . $idrep;
    $start_url = 'index.php?modname=public_report_admin&op=reportlist';
    $temp = Get::req('dl', DOTY_STRING, false);
    if ($temp) {
        list($filter_name) = mysql_fetch_row(mysql_query("SELECT filter_name FROM " . $GLOBALS['prefix_lms'] . "_report_filter WHERE id_filter = '" . $idrep . "'"));
        $filename = 'report_' . $filter_name . '_' . date("d_m_Y");
        switch ($temp) {
            case 'htm':
                sendStrAsFile($obj_report->getHTML(false, NULL), $filename . '.html');
                break;
            case 'csv':
                sendStrAsFile($obj_report->getCSV(false, NULL), $filename . '.csv');
                break;
            case 'xls':
                sendStrAsFile($obj_report->getXLS(false, NULL), $filename . '.xls');
                break;
        }
    }
    $report_info = $lang->def('_SHOW_REPORT_INFO', 'report', 'framework') . getReportNameById($idrep);
    $GLOBALS['page']->add(getTitleArea($lang->def('REPORT_SHOW_RESULTS', 'report', 'framework'), 'report', $lang->def('_REPORT_PRINTTABLE', 'report', 'framework')) . '<div class="std_block">', 'content');
    if (Get::req('no_show_repdownload', DOTY_INT, 0) <= 0) {
        $GLOBALS['page']->add(getBackUi($obj_report->back_url, $lang->def('_BACK', 'report', 'framework'), 'content') . getInfoUi($report_info), 'content');
        $export_url = 'index.php?modname=public_report_admin&amp;op=view_report&amp;idrep=' . $idrep;
        $GLOBALS['page']->add('<p class="export_list">' . '<a class="export_htm" href="' . $export_url . '&amp;dl=htm">' . $lang->def('_EXPORT_HTML', 'report', 'framework') . '</a>&nbsp;' . '<a class="export_csv" href="' . $export_url . '&amp;dl=csv">' . $lang->def('_EXPORT_CSV', 'report', 'framework') . '</a>&nbsp;' . '<a class="export_xls" href="' . $export_url . '&amp;dl=xls">' . $lang->def('_EXPORT_XLS', 'report', 'framework') . '</a>' . '</p><br />', 'content');
    }
    $GLOBALS['page']->add(Form::openForm('report_form', $obj_report->jump_url), 'content');
    // css -----------------------------------------------------------
    $GLOBALS['page']->add("\n" . '<link href="' . getPathTemplate('lms') . 'style/report/style_report_user.css" rel="stylesheet" type="text/css" />' . "\n", 'page_head');
    $obj_report->show_results($report_data['columns_filter_category'], $report_data);
    $out->add(Form::closeForm(), 'content');
    $out->add('</div>', 'content');
}
 public function export_user_gap()
 {
     $id_fncrole = Get::req('id_fncrole', DOTY_INT, 0);
     $id_user = Get::req('id_user', DOTY_INT, 0);
     $sort = Get::req('sort', DOTY_STRING, "");
     $dir = Get::req('dir', DOTY_STRING, "asc");
     if ($id_fncrole <= 0) {
         $this->render('invalid', array('message' => $this->_getErrorMessage('invalid fncrole'), 'back_url' => $back_url));
         return;
     }
     if ($id_user <= 0) {
         $this->render('invalid', array('message' => $this->_getErrorMessage('invalid user'), 'back_url' => $back_url));
         return;
     }
     //prepare csv file
     require_once _base_ . '/lib/lib.download.php';
     $format = Get::req('format', DOTY_STRING, 'csv');
     $acl_man = Docebo::user()->getAclManager();
     $user_info = $acl_man->getUser($id_user, false);
     $buffer = "";
     $filename = preg_replace('/[\\W]/i', '_', $this->model->getFunctionalRoleName($id_fncrole)) . '_' . preg_replace('/\\//i', '', $user_info[1]) . '_' . date("Y_m_d") . '.' . $format;
     $_CSV_SEPARATOR = ',';
     $_CSV_ENDLINE = "\r\n";
     $_XLS_STARTLINE = '<tr><td>';
     $_XLS_SEPARATOR = '</td><td>';
     $_XLS_ENDLINE = "</td></tr>";
     //retrieve data to export
     $filter = array('user' => $id_user);
     $pagination = array('startIndex' => 0, 'results' => $this->model->getGapTotal($id_fncrole, $filter), 'sort' => $sort, 'dir' => $dir);
     $list = $this->model->getGapList($id_fncrole, $pagination, $filter);
     //prepare the data for exporting
     $output_results = array();
     if (is_array($list) && count($list) > 0) {
         if ($format == 'xls') {
             $buffer .= "<head><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><style>td, th { border:solid 1px black; } </style><body><table>";
         }
         foreach ($list as $idst => $record) {
             $_not_obtained = $record->last_assign_date == "";
             $_date_expire = $_not_obtained ? "" : date("Y-m-d H:i:s", fromDatetimeToTimestamp($record->last_assign_date) + $record->expiration * 86400);
             //json encoding used for string formatting with double quotes ""
             $line = array($this->json->encode($record->competence_name), (int) $record->score_got, (int) $record->score_requested, (int) $record->gap * -1, $_not_obtained ? "" : $this->json->encode(Format::date($record->last_assign_date, 'datetime')), $_not_obtained ? "" : $this->json->encode($record->expiration > 0 ? Format::date($_date_expire, 'datetime') : Lang::t('_NEVER', 'standard')));
             if ($format == 'xls') {
                 $buffer .= $_XLS_STARTLINE;
                 $buffer .= str_replace('"', '', implode($_XLS_SEPARATOR, $line)) . $_CSV_ENDLINE;
             } else {
                 $buffer .= implode($_CSV_SEPARATOR, $line) . $_CSV_ENDLINE;
             }
         }
         if ($format == 'xls') {
             $buffer .= "</table></body>";
         }
     }
     $charset = false;
     sendStrAsFile($buffer, $filename, $charset);
 }
Example #4
0
function writePollReport($id_poll, $id_param, $back_url, $mvc = false)
{
    require_once _lms_ . '/lib/lib.param.php';
    require_once _lms_ . '/lib/lib.poll.php';
    $poll_man = new PollManagement($id_poll);
    $report_man = new ReportPollManagement();
    $poll_info = $poll_man->getPollAllInfo();
    $valid_track = $report_man->getAllTrackId($id_poll, 'valid');
    $tot_tracks = $report_man->getHowMuchStat($id_poll, 'valid');
    // save page track info
    $quest_sequence_number = $poll_man->getInitQuestSequenceNumberForPage(1);
    $query_question = $report_man->getQuestions($id_poll);
    $treeview_value = str_replace('treeview_selected_' . $_SESSION['idCourse'], '', array_search($poll_info['title'], $_POST));
    $editions_filter = Get::req('poll_editions_filter', DOTY_INT, -1);
    if (Get::req('del_filter', DOTY_STRING, '') != '') {
        $editions_filter = -1;
    }
    $output = "";
    $str = (!$mvc ? '<div class="std_block">' : '') . '<div class="test_answer_space">';
    if ($mvc) {
        $output .= $str;
    } else {
        cout($str, 'content');
    }
    //--- filter on edition ------------------------------------------------------
    //retrieve editions
    $query = "SELECT * FROM %lms_course_editions WHERE id_course = " . (int) $_SESSION['idCourse'];
    $res = sql_query($query);
    //is there any edition ?
    if (sql_num_rows($res) > 0) {
        $arr_editions = array(-1 => Lang::t('_FILTEREDITIONSELECTONEOPTION', 'stats', 'lms'));
        //list of editions for the dropdown, in the format: "[code] name (date_begin - date_end)"
        while ($einfo = sql_fetch_object($res)) {
            $_label = '';
            if ($einfo->code != '') {
                $_label .= '[' . $einfo->code . '] ';
            }
            if ($einfo->name != '') {
                $_label .= $einfo->neme;
            }
            if (($einfo->date_begin != '' || $einfo->date_begin != '0000-00-00') && ($einfo->date_end != '' || $einfo->date_end != '0000-00-00')) {
                $_label .= ' (' . Format::date($einfo->date_begin, 'date') . ' - ' . Format::date($einfo->date_end, 'date') . ')';
            }
            if ($_label == '') {
                //...
            }
            $arr_editions[$einfo->id_edition] = $_label;
        }
        //draw editions dropdown and filter
        $str = Form::openForm('tree_filter_form', 'index.php?modname=stats&amp;op=statcourse') . Form::getHidden('seq_0.' . $treeview_value, 'treeview_selected_' . $_SESSION['idCourse'] . $treeview_value, $poll_info['title']) . Form::getHidden('treeview_selected_' . $_SESSION['idCourse'], 'treeview_selected_' . $_SESSION['idCourse'], $treeview_value) . Form::getHidden('treeview_state_' . $_SESSION['idCourse'], 'treeview_state_' . $_SESSION['idCourse'], $_POST['treeview_state_' . $_SESSION['idCourse']]) . Form::openElementSpace() . Form::getDropdown(Lang::t('_FILTEREDITIONSELECTTITLE', 'stats', 'lms'), 'poll_editions_filter', 'poll_editions_filter', $arr_editions, $editions_filter) . Form::openButtonSpace() . Form::getButton('filter', 'filter', Lang::t('_SEARCH', 'stats', 'lms')) . Form::getButton('del_filter', 'del_filter', Lang::t('_DEL_FILTER', 'stats', 'lms')) . Form::closeButtonSpace() . Form::closeElementSpace() . Form::closeForm();
        if ($mvc) {
            $output .= $str;
        } else {
            cout($str, 'content');
        }
    }
    //------------------------------------------------------------------------------
    $user = array();
    $tracks = array();
    if ($editions_filter > 0) {
        $query = "SELECT idUser FROM %lms_courseuser " . " WHERE idCourse = '" . (int) $_SESSION['idCourse'] . "' AND edition_id = '" . $editions_filter . "'";
        $res = sql_query($query);
        while (list($idUser) = sql_fetch_row($res)) {
            $users[] = $idUser;
        }
        if (count($users) > 0) {
            $query_traks = "SELECT id_track " . " FROM %lms_polltrack " . " WHERE id_user IN (" . implode(', ', $users) . ") ";
            $result_traks = sql_query($query_traks);
            while (list($id_traks) = sql_fetch_row($result_traks)) {
                $tracks[$id_traks] = $id_traks;
            }
        }
    }
    if (!empty($tracks)) {
        $valid_track = array_intersect($valid_track, $tracks);
    } elseif ($editions_filter != -1) {
        $valid_track = array();
        $valid_track[] = 0;
    }
    if (empty($valid_track)) {
        $valid_track[] = 0;
    }
    $tot_tracks = count($valid_track);
    //----------------------------------------------------------------------------
    // Get question from database
    $re_question = sql_query($query_question);
    if (isset($_POST['export'])) {
        $export = true;
        $filename = 'stats_' . str_replace(' ', '_', $poll_info['title']) . '_' . date("Y\\_m\\_d") . '.csv';
        $filetext = '';
    } else {
        $export = false;
    }
    while (list($idQuest, $type_quest, $type_file, $type_class) = sql_fetch_row($re_question)) {
        require_once _lms_ . '/modules/question_poll/' . $type_file;
        $quest_obj = eval("return new {$type_class}( {$idQuest} );");
        if ($export) {
            $filetext .= $quest_obj->export_CSV($quest_sequence_number, $tot_tracks, $valid_track);
            $filetext .= "\r\n";
        } else {
            $GLOBALS['page']->add($quest_obj->playReport($quest_sequence_number, $tot_tracks, $valid_track), 'content');
        }
        if ($type_quest != 'break_page' && $type_quest != 'title') {
            ++$quest_sequence_number;
        }
    }
    if ($export) {
        require_once _base_ . '/lib/lib.download.php';
        sendStrAsFile($filetext, $filename);
    }
    $treeview_value = str_replace('treeview_selected_' . $_SESSION['idCourse'], '', array_search($poll_info['title'], $_POST));
    $str = Form::openForm('tree_export_form', 'index.php?modname=stats&amp;op=statcourse') . Form::getHidden('seq_0.' . $treeview_value, 'treeview_selected_' . $_SESSION['idCourse'] . $treeview_value, $poll_info['title']) . Form::getHidden('treeview_selected_' . $_SESSION['idCourse'], 'treeview_selected_' . $_SESSION['idCourse'], $treeview_value) . Form::getHidden('treeview_state_' . $_SESSION['idCourse'], 'treeview_state_' . $_SESSION['idCourse'], $_POST['treeview_state_' . $_SESSION['idCourse']]) . Form::openButtonSpace() . Form::getButton('export', 'export', Lang::t('_EXPORT_CSV', 'standard')) . Form::closeButtonSpace() . Form::closeForm();
    if ($mvc) {
        $output .= $str;
    } else {
        cout($str, 'content');
    }
    $str = '</div>' . (!$mvc ? '</div>' : '');
    if ($mvc) {
        $output .= $str;
    } else {
        cout($str, 'content');
    }
}
Example #5
0
function exportquest()
{
    checkPerm('view', false, 'storage');
    $lang =& DoceboLanguage::createInstance('test');
    $idTest = importVar('idTest', true, 0);
    $back_url = urldecode(importVar('back_url'));
    $back_coded = htmlentities(urlencode($back_url));
    require_once $GLOBALS['where_lms'] . '/lib/lib.quest_bank.php';
    $qb_man = new QuestBankMan();
    $file_format = Get::req('export_quest_select', DOTY_INT, 0);
    $quests = array();
    $re_quest = sql_query("\r\n\tSELECT idQuest, type_quest \r\n\tFROM " . $GLOBALS['prefix_lms'] . "_testquest \r\n\tWHERE idTest = '{$idTest}' \r\n\tORDER BY page, sequence");
    while (list($id_quest, $type_quest) = sql_fetch_row($re_quest)) {
        $quests[$id_quest] = $type_quest;
    }
    $quest_export = $qb_man->export_quest($quests, $file_format);
    require_once _base_ . '/lib/lib.download.php';
    sendStrAsFile($quest_export, 'export_' . date("Y-m-d") . '.txt');
}
Example #6
0
function exportTxt()
{
    require_once _base_ . '/lib/lib.download.php';
    $id_quest = importVar('id_quest', true, 0);
    $query_quest = "SELECT id_quest, title_quest" . " FROM " . $GLOBALS['prefix_lms'] . "_pollquest" . " WHERE id_quest = '" . $id_quest . "'";
    $result_quest = sql_query($query_quest);
    list($id_quest, $title_quest) = sql_fetch_row($result_quest);
    $filename = str_replace('?', '', $title_quest) . '.txt';
    $txt = $title_quest . "\r\n" . "\r\n";
    $query_answer = "SELECT more_info" . " FROM " . $GLOBALS['prefix_lms'] . "_polltrack_answer" . " WHERE id_quest = '" . $id_quest . "'";
    $result_answer = sql_query($query_answer);
    $separator = "--------------------\r\n";
    while (list($answer) = sql_fetch_row($result_answer)) {
        $txt .= $separator . $answer . "\r\n";
    }
    sendStrAsFile($txt, $filename);
}
Example #7
0
function export()
{
    require_once _base_ . '/lib/lib.download.php';
    require_once $GLOBALS['where_framework'] . '/lib/lib.tags.php';
    $acl_man =& Docebo::user()->getAclManager();
    $tags = new Tags('lms_forum');
    $id_forum = Get::req('idForum', DOTY_INT, 0);
    $csv_string = '';
    $file_nme = '';
    $tag_list = array();
    if ($id_forum) {
        $query = "SELECT idThread, title, num_post" . " FROM " . $GLOBALS['prefix_lms'] . "_forumthread" . " WHERE idForum = '" . $id_forum . "'";
        $result = sql_query($query);
        if (mysql_num_rows($result)) {
        }
        $tmp = array();
        $id_list = array();
        while (list($id_thread, $thread_title, $num_post) = sql_fetch_row($result)) {
            $tmp['int'] = '"nomethread";"n.msg";"titolomsg";"autore";"data";"corpomsg";"allegato";"id_msg"';
            $query_msg = "SELECT title, author, posted, textof, attach, idMessage" . " FROM " . $GLOBALS['prefix_lms'] . "_forummessage" . " WHERE idThread = '" . $id_thread . "'";
            $result_msg = sql_query($query_msg);
            $num_post++;
            while (list($message_title, $author, $posted, $textof, $attach, $idMessage) = sql_fetch_row($result_msg)) {
                $sender_info = $acl_man->getUser($author, false);
                $author = $sender_info[ACL_INFO_LASTNAME] . $sender_info[ACL_INFO_FIRSTNAME] == '' ? $acl_man->relativeId($sender_info[ACL_INFO_USERID]) : $sender_info[ACL_INFO_LASTNAME] . ' ' . $sender_info[ACL_INFO_FIRSTNAME];
                $posted = Format::date($posted);
                $tmp[$idMessage] = '"' . str_replace('"', '\\"', $thread_title) . '";"' . $num_post . '";"' . str_replace('"', '\\"', $message_title) . '";"' . $author . '";"' . $posted . '";"' . str_replace('"', '\\"', $textof) . '";"' . $attach . '";"' . $idMessage . '"';
                $id_list[] = $idMessage;
            }
        }
        $tags_associated = $tags->getResourcesOccurrenceTags($id_list);
        $number_of_tag = 0;
        if (count($tags_associated)) {
            foreach ($tags_associated as $tag_tmp) {
                foreach ($tag_tmp as $tmp_tag) {
                    if (!in_array($tmp_tag['tag'], $tag_list)) {
                        $tag_list[] = $tmp_tag['tag'];
                        $number_of_tag++;
                    }
                }
            }
            reset($tags_associated);
            foreach ($tag_list as $tag_name) {
                $tmp['int'] .= ';"' . str_replace('"', '\\"', $tag_name) . '"';
            }
            reset($tag_list);
        }
        $csv_string .= $tmp['int'] . "\r\n";
        unset($tmp['int']);
        foreach ($tmp as $id_message => $string) {
            $csv_string .= $string;
            if (count($tags_associated)) {
                if (isset($tags_associated[$id_message])) {
                    foreach ($tag_list as $tag_name) {
                        if (isset($tags_associated[$id_message][$tag_name])) {
                            $csv_string .= ';"' . str_replace('"', '\\"', $tags_associated[$id_message][$tag_name]['occurences']) . '"';
                        } else {
                            $csv_string .= ';"0"';
                        }
                    }
                } else {
                    for ($i = 0; $i < $number_of_tag; $i++) {
                        $csv_string .= ';"0"';
                    }
                }
            }
            $csv_string .= "\r\n";
        }
        $query_forum = "SELECT title" . " FROM " . $GLOBALS['prefix_lms'] . "_forum" . " WHERE idForum = '" . $id_forum . "'";
        list($forum_title) = sql_fetch_row(sql_query($query_forum));
        $file_name = str_replace(array('\\', '/', ':', '\'', '\\*', '?', '"', '<', '>', '|'), array('', '', '', '', '', '', '', '', '', ''), $forum_title) . '.csv';
        sendStrAsFile($csv_string, $file_name);
    }
}
Example #8
0
function export()
{
    $id_code_group = Get::req('id_code_group', DOTY_INT, 0);
    if ($id_code_group <= 0) {
        $this->render('invalid', array('message' => Lang::t('_INVALID_ID_CODE_GROUP', 'code')));
        return;
    }
    //retrieve data to export
    $code_manager = new CodeManager();
    $acl_man = Docebo::user()->getAclManager();
    $codeGroupInfo = $code_manager->getCodeGroupInfo($id_code_group);
    $array_code = $code_manager->getCodeList($id_code_group, 0, false);
    //prepare csv file
    require_once _base_ . '/lib/lib.download.php';
    $format = Get::req('format', DOTY_STRING, 'csv');
    $buffer = "";
    $filename = preg_replace('/[\\W]/i', '_', $codeGroupInfo['title']) . '_' . date("Y_m_d") . '.' . $format;
    $_CSV_SEPARATOR = ',';
    $_CSV_ENDLINE = "\r\n";
    $_XLS_STARTLINE = '<tr><td>';
    $_XLS_SEPARATOR = '</td><td>';
    $_XLS_ENDLINE = "</td></tr>";
    //prepare the data for exporting
    if (is_array($array_code) && count($array_code) > 0) {
        if ($format == 'xls') {
            $buffer .= "<head><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><style>td, th { border:solid 1px black; } </style><body><table>";
            $buffer .= "<thead>" . $_XLS_STARTLINE . Lang::t('_CODE', 'code') . $_XLS_SEPARATOR . Lang::t('_USED', 'code') . $_XLS_SEPARATOR . Lang::t('_USERNAME', 'code') . $_XLS_SEPARATOR . Lang::t('_UNLIMITED_USE', 'code') . $_XLS_ENDLINE . "</thead>";
        } else {
            $buffer .= Lang::t('_CODE', 'code') . $_CSV_SEPARATOR . Lang::t('_USED', 'code') . $_CSV_SEPARATOR . Lang::t('_USERNAME', 'code') . $_CSV_SEPARATOR . Lang::t('_UNLIMITED_USE', 'code') . $_CSV_ENDLINE;
        }
        foreach ($array_code as $code_info) {
            $line = array();
            $line[] = $code_info['code'];
            if ($code_info['used']) {
                $line[] = '1';
                $user_info = $acl_man->getUser($code_info['id_user'], false);
                if ($user_info) {
                    $line[] = $acl_man->relativeId($user_info[ACL_INFO_USERID]);
                } else {
                    $user_info = $acl_man->getTempUserInfo($code_info['id_user'], false);
                    $line[] = $acl_man->relativeId($user_info['userid']);
                }
                if ($code_info['unlimited_use'] == '1') {
                    $line[] = '1';
                } else {
                    $line[] = '0';
                }
            } else {
                $line[] = '0';
                $line[] = Lang::t('_NONE', 'code');
                if ($code_info['unlimited_use'] == '1') {
                    $line[] = '1';
                } else {
                    $line[] = '0';
                }
            }
            if ($format == 'xls') {
                $buffer .= $_XLS_STARTLINE;
                $buffer .= str_replace('"', '', implode($_XLS_SEPARATOR, $line)) . $_CSV_ENDLINE;
            } else {
                $buffer .= implode($_CSV_SEPARATOR, $line) . $_CSV_ENDLINE;
            }
        }
        if ($format == 'xls') {
            $buffer .= "</table></body>";
        }
    }
    sendStrAsFile($buffer, $filename);
}
Example #9
0
 public function exportTranslation($lang_code)
 {
     $doc = new DOMDocument('1.0');
     $root = $doc->createElement("LANGUAGES");
     $doc->appendChild($root);
     $elem = $doc->createElement("DATE");
     $elemText = $doc->createTextNode(date("Ymd"));
     $elem->appendChild($elemText);
     $root->appendChild($elem);
     $lang_info = $this->getLanguage($lang_code);
     $lang = $doc->createElement("LANG");
     $root->appendChild($lang);
     $elem = $doc->createElement("lang_code");
     $elemText = $doc->createTextNode($lang_info->lang_code);
     $elem->appendChild($elemText);
     $lang->appendChild($elem);
     $lang->setAttribute('id', $lang_info->lang_code);
     $elem = $doc->createElement("lang_description");
     $elemText = $doc->createTextNode($lang_info->lang_description);
     $elem->appendChild($elemText);
     $lang->appendChild($elem);
     $elem = $doc->createElement("lang_charset");
     $elemText = $doc->createTextNode('utf-8');
     $elem->appendChild($elemText);
     $lang->appendChild($elem);
     $elem = $doc->createElement("lang_browsercode");
     $elemText = $doc->createTextNode($lang_info->lang_browsercode);
     $elem->appendChild($elemText);
     $lang->appendChild($elem);
     $elem = $doc->createElement("lang_direction");
     $elemText = $doc->createTextNode($lang_info->lang_direction);
     $elem->appendChild($elemText);
     $lang->appendChild($elem);
     $elemPlatform = $doc->createElement("platform");
     $elemPlatform->setAttribute("id", 'all');
     $lang->appendChild($elemPlatform);
     $arrModules = Docebo::langManager()->getAllModules();
     foreach ($arrModules as $module) {
         $elemModule = $doc->createElement("module");
         $elemModule->setAttribute("id", $module);
         $elemPlatform->appendChild($elemModule);
         $arrTranslations = Docebo::langManager()->getModuleLangTranslations('all', $module, $lang_code, '', false, false, true);
         foreach ($arrTranslations as $tran) {
             $elem = $doc->createElement("key");
             $elem->setAttribute('id', Docebo::langManager()->composeKey($tran[1], $module, 'all'));
             $elem->setAttribute('attributes', $tran[3]);
             $elem->setAttribute('save_date', $tran[4]);
             $elemText = $doc->createCDATASection($tran[2]);
             $elem->appendChild($elemText);
             $elemModule->appendChild($elem);
         }
     }
     $doc->formatOutput = true;
     // save XML in formatted style
     $out = $doc->saveXML();
     require_once _lib_ . '/lib.download.php';
     sendStrAsFile($out, 'lang[' . $lang_info->lang_code . '].xml');
     exit;
 }
Example #10
0
function report_show_results($idrep = false)
{
    require_once _base_ . '/lib/lib.form.php';
    require_once _base_ . '/lib/lib.download.php';
    //import yui pop-up stuff
    setup_report_js();
    $lang =& DoceboLanguage::createInstance('report');
    $start_url = 'index.php?modname=report&op=reportlist';
    $download = Get::req('dl', DOTY_STRING, false);
    $no_download = Get::req('no_show_repdownload', DOTY_INT, 0);
    $nosave = Get::req('nosave', DOTY_INT, 0);
    if ($idrep == false) {
        //die( print_r($_SESSION['report_tempdata'], true ) );
        if (!isset($_SESSION['report_tempdata'])) {
            $ref =& $_SESSION['report'];
        } else {
            $ref =& $_SESSION['report_tempdata'];
        }
        $id_report = $ref['id_report'];
        $res = sql_query("SELECT class_name, file_name FROM %lms_report WHERE id_report=" . $id_report . " AND enabled=1");
        $author = 0;
        $filter_name = $ref['report_name'];
        //['columns_filter_category']
        if ($res && sql_num_rows($res) > 0) {
            list($class_name, $file_name) = sql_fetch_row($res);
            if (file_exists(_base_ . '/customscripts/' . _folder_lms_ . '/admin/modules/report/' . $file_name) && Get::cfg('enable_customscripts', false) == true) {
                require_once _base_ . '/customscripts/' . _folder_lms_ . '/admin/modules/report/' . $file_name;
            } else {
                require_once _lms_ . '/admin/modules/report/' . $file_name;
            }
        } else {
            reportlist();
        }
    } else {
        /// find main class report filename and report info
        $query_report = "\r\n\t\tSELECT r.class_name, r.file_name, r.report_name, f.filter_name, f.filter_data, f.author\r\n\t\tFROM %lms_report AS r\r\n\t\t\tJOIN %lms_report_filter AS f\r\n\t\t\tON ( r.id_report = f.id_report )\r\n\t\tWHERE f.id_filter = '" . $idrep . "'";
        $re_report = sql_query($query_report);
        if (sql_num_rows($re_report) == 0) {
            reportlist();
            return;
        }
        // create the report object
        list($class_name, $file_name, $report_name, $filter_name, $filter_data, $author) = sql_fetch_row($re_report);
        if (file_exists(_base_ . '/customscripts/' . _folder_lms_ . '/admin/modules/report/' . $file_name) && Get::cfg('enable_customscripts', false) == true) {
            require_once _base_ . '/customscripts/' . _folder_lms_ . '/admin/modules/report/' . $file_name;
        } else {
            require_once _lms_ . '/admin/modules/report/' . $file_name;
        }
    }
    $obj_report = new $class_name($idrep);
    $obj_report->back_url = $start_url;
    $obj_report->jump_url = 'index.php?modname=report&op=show_results&idrep=' . $idrep;
    if ($author == 0) {
        $filter_name = $filter_name ? $lang->def($filter_name) : '';
    }
    $data = _decode($filter_data);
    if ($download != false) {
        $export_filename = 'report_' . $filter_name . '_' . date("d_m_Y");
        switch ($download) {
            case 'htm':
                sendStrAsFile($obj_report->getHTML($data['columns_filter_category'], $data), $export_filename . '.html');
                break;
            case 'csv':
                sendStrAsFile($obj_report->getCSV($data['columns_filter_category'], $data), $export_filename . '.csv');
                break;
            case 'xls':
                sendStrAsFile($obj_report->getXLS($data['columns_filter_category'], $data), $export_filename . '.xls');
                break;
        }
    }
    cout(getTitleArea(array($start_url => $lang->def('_REPORT'), $filter_name), 'report') . '<div class="std_block">' . getBackUi($start_url, $lang->def('_BACK_TO_LIST'), 'content'));
    if ($nosave > 0) {
        $mod_id = Get::req('modid', DOTY_INT, false);
        cout('<br/>' . getBackUi('index.php?modname=report&op=report_save' . ($mod_id ? '&modid=' . $mod_id : ''), $lang->def('_SAVE_AND_BACK_TO_LIST')));
    }
    if ($no_download <= 0) {
        cout('<p class="export_list">' . '<a class="ico-wt-sprite subs_htm" href="' . $obj_report->jump_url . '&amp;dl=htm"><span>' . $lang->def('_EXPORT_HTML') . '</span></a>&nbsp;' . '<a class="ico-wt-sprite subs_csv" href="' . $obj_report->jump_url . '&amp;dl=csv"><span>' . $lang->def('_EXPORT_CSV') . '</span></a>&nbsp;' . '<a class="ico-wt-sprite subs_xls" href="' . $obj_report->jump_url . '&amp;dl=xls"><span>' . $lang->def('_EXPORT_XLS') . '</span></a>' . '</p>' . '<br/>');
    }
    // css -----------------------------------------------------------
    cout('<link href="' . getPathTemplate('lms') . 'style/report/style_report_user.css" rel="stylesheet" type="text/css" />' . "\n", 'page_head');
    // $_SESSION['report_tempdata']['columns_filter_category']
    $query_update = "UPDATE %lms_report_filter SET views = views+1 WHERE id_filter = '" . $idrep . "'";
    $re_update = sql_query($query_update);
    cout(Form::openForm('user_report_columns_courses', $obj_report->jump_url));
    cout($obj_report->show_results($data['columns_filter_category'], $data));
    cout(Form::closeForm() . '</div>');
}
Example #11
0
function dispatch($op)
{
    switch ($op) {
        case "tab":
            YuiLib::load(array('tabview' => 'tabview-min.js'), array('tabview/assets/skins/sam/' => 'tabview.css'));
            require_once $GLOBALS['where_framework'] . '/lib/user_selector/lib.basetree.php';
            require_once $GLOBALS['where_framework'] . '/lib/user_selector/lib.groupselectortable.php';
            require_once $GLOBALS['where_framework'] . '/lib/user_selector/lib.userselectortable.php';
            require_once $GLOBALS['where_framework'] . '/lib/user_selector/lib.dynamicuserfilter.php';
            cout(getTitleArea(array('Test manager e selettore utenti')));
            cout('<div class="std_block">');
            $bt = new BaseTree('user_orgchart', false, false, _TREE_COLUMNS_TYPE_RADIO);
            $bt->init();
            $bt->setInitialSelection();
            $bt_out = $bt->get();
            $gst = new GroupSelectorTable('group_table');
            $gst->init();
            $gst_out = $gst->get();
            $ust = new UserSelectorTable('user_table');
            $ust->init();
            $ust_out = $ust->get();
            $duf = new DynamicUserFilter('user_rules');
            $duf->init();
            $duf_out = $duf->get();
            cout($bt_out['js'], 'page_head');
            cout($gst_out['js'], 'page_head');
            cout($ust_out['js'], 'page_head');
            cout($duf_out['js'], 'page_head');
            cout('<div id="' . $this->id . '" class="yui-navset">
				<ul class="yui-nav">
					<li><a href="#tab1"><em>Organigramma</em></a></li>
					<li class="selected"><a href="#tab2"><em>Utenti</em></a></li>
					<li><a href="#tab3"><em>Gruppi</em></a></li>
					<li><a href="#tab4"><em>Regole</em></a></li>
				</ul>
				<div class="yui-content">
					<div id="tab1">' . $bt_out['html'] . '</div>
					<div id="tab2">' . $ust_out['html'] . '</div>
					<div id="tab3"><p>' . $gst_out['html'] . '</p></div>
					<div id="tab4">' . $duf_out['html'] . '</div>
				</div>
			</div>');
            cout('<script type="text/javascript">
				var tabView = new YAHOO.widget.TabView(\'demo\');
			</script>');
            cout('</div>');
            break;
        case "final":
            require_once _base_ . '/lib/lib.form.php';
            require_once $GLOBALS['where_framework'] . '/lib/user_selector/lib.fulluserselector.php';
            $selector = new FullUserSelector('selector');
            $selector->init();
            $temp = $selector->get();
            cout(getTitleArea(array('Selettore utenti completo')));
            cout('<div class="std_block">');
            cout(Form::openForm('test', 'index.php?modname=_test_module&op=resp_to_form'));
            cout($temp['js'], 'page_head');
            cout($temp['html']);
            cout(Form::openButtonSpace() . Form::getButton('save', 'save', 'SALVA') . Form::getButton('undo', 'undo', 'ANNULLA') . Form::closeButtonSpace());
            cout(Form::closeForm());
            cout('</div>');
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case 'dataexport':
            require_once _base_ . '/lib/dataexport/lib.dataexport.php';
            $lang =& DoceboLanguage::CreateInstance('standard', 'framework');
            $query = "SELECT * FROM core_user ORDER BY lastname LIMIT 0,20 ";
            $source = new DataSource_Query($query);
            $nameGroup = array();
            $nameGroup[] = new DataColumn('lastname', $lang->def('_LASTNAME'));
            $nameGroup[] = new DataColumn('firstname', $lang->def('_FIRSTNAME'));
            $columns = array();
            $columns[] = new DataColumn('idst', $lang->def('_ID'));
            $columns[] = new DataColumnGroup('name', $lang->def('_NAME'), $nameGroup);
            $columns[] = new DataColumn('userid', $lang->def('_USERNAME'), 'formatter_userid');
            $columns[] = new DataColumn('email', $lang->def('_EMAIL'));
            //$columns[] = new DataColumn();
            $export = new DataExport(DATATYPE_HTM, 'users', $columns, $source);
            cout($export->render());
            cout('<br /><br /><a href="index.php?modname=_test_module&amp;op=dataexportcsv">SCARICA IN CSV</a>');
            break;
        case 'dataexportcsv':
            require_once _base_ . '/lib/lib.download.php';
            require_once _base_ . '/lib/dataexport/lib.dataexport.php';
            $lang =& DoceboLanguage::CreateInstance('standard', 'framework');
            $query = "SELECT * FROM core_user ORDER BY lastname LIMIT 0,20 ";
            $source = new DataSource_Query($query);
            $nameGroup = array();
            $nameGroup[] = new DataColumn('lastname', $lang->def('_LASTNAME'));
            $nameGroup[] = new DataColumn('firstname', $lang->def('_FIRSTNAME'));
            $columns = array();
            $columns[] = new DataColumn('idst', $lang->def('_ID'));
            $columns[] = new DataColumnGroup('name', $lang->def('_NAME'), $nameGroup);
            $columns[] = new DataColumn('userid', $lang->def('_USERNAME'), 'formatter_userid');
            $columns[] = new DataColumn('email', $lang->def('_EMAIL'));
            //$columns[] = new DataColumn();
            $export = new DataExport(DATATYPE_XLS, 'users', $columns, $source);
            sendStrAsFile($export->render(), "export_utenti.xls");
            break;
        case 'sample':
            $libs = YuiLib::load(false, false, true);
            $GLOBALS['page']->add($libs, 'page_head');
            $GLOBALS['page']->add(Util::get_css('../yui-skin/datatable.css'), 'page_head');
            Util::get_js(Get::rel_path('base') . '/docebocore/modules/_test_module/sample.js', true, true);
            $script = 'YAHOO.util.Event.onDOMReady(function(e) {
					initTable();
				});';
            //$GLOBALS['page']->add('<p>TITLE</p>');
            $GLOBALS['page']->add('<div id="datatable"></div>');
            $GLOBALS['page']->add('<script type="text/javascript">' . $script . '</script>');
            break;
        case 'datatable':
            require_once _lms_ . '/lib/table_view/class.coursetableview.php';
            $_temp_ = array(array("idCourse" => 0, "code" => "codice_001", "name" => "nome_001", "status" => "ok", "subscriptions" => 10), array("idCourse" => 1, "code" => "codice_002", "name" => "nome_002", "status" => "ok", "subscriptions" => 20), array("idCourse" => 2, "code" => "codice_003", "name" => "nome_003", "status" => "ok", "subscriptions" => 30), array("idCourse" => 3, "code" => "codice_004", "name" => "nome_004", "status" => "no", "subscriptions" => 40), array("idCourse" => 4, "code" => "codice_005", "name" => "nome_005", "status" => "ok", "subscriptions" => 50));
            require_once _lms_ . '/lib/table_view/class.coursetableview.php';
            $tableView = new CourseTableView("courses_table");
            $tableView->useDOMReady = true;
            //to change
            $tableView->isGlobalVariable = true;
            //just for debug purpose
            $tableView->initLibraries();
            $tableView->setInitialData($_temp_);
            $temp = $tableView->get();
            cout($temp['js'], 'page_head');
            cout('<div style="border:solid 1px black; padding:8px;"><p>DATATABLE:</p>' . $temp['html'] . '</div>');
            break;
        case "catalogue":
            YuiLib::load();
            cout('<div class="area_block"><h1 class="main_title_dashboard" id="main_area_title">Catalogo corsi</h1></div>', 'content');
            cout('<div class="std_block">', 'content');
            cout('<div id="course_cat" class="">', 'content');
            cout('<ul class="">
					<li class="selected"><a href="#tab1"><em>Inviti</em></a></li>
					<li><a href="#tab2"><em>Nuovi</em></a></li>
					<li><a href="#tab3"><em>Consigliati</em></a></li>
					<li><a href="#tab4"><em>Completo</em></a></li>
					<li><a href="#tab5"><em>Calendario</em></a></li>
				</ul>
				<div class="yui-content">
					<div>' . Get::img(Get::rel_path('base') . '/mycourses.jpg', false, false, false, true) . '</div>
					<div>
						<p>Lorem ipsum dolor sit amet consectetuer accumsan enim tempor neque urna. Tempus interdum euismod felis mauris Aliquam et vitae elit vel leo. Accumsan Phasellus sit natoque rutrum nibh auctor eu neque porta tincidunt. Ipsum enim ut felis nunc Pellentesque sed malesuada justo nec nec. Sem justo dolor mattis porta Quisque.</p>
						<p>Interdum ut diam convallis Sed hendrerit est augue eget ipsum lacinia. Et at montes Sed est nec arcu cursus congue neque quis. Sagittis nec dictum nibh urna non urna justo consectetuer accumsan pretium. A risus velit ante id Donec nibh eros vitae at amet. Enim et hac Nam mus tellus consequat sapien eros nec sapien. Wisi Integer sapien suscipit tincidunt et tincidunt eu et neque et. Semper nisl et.</p>
						<p>Justo nunc et Maecenas dictum Vestibulum vel a neque libero non. Hendrerit metus Vestibulum Pellentesque consectetuer augue malesuada Ut Vestibulum Vestibulum scelerisque. Elit tellus enim purus nascetur Cum condimentum est vitae pellentesque pellentesque. Nisl pretium vel dolor Integer et pharetra elit nulla et nonummy. Phasellus tempus malesuada cursus ipsum urna consectetuer ut quis condimentum consequat. Parturient pretium convallis accumsan.</p>
						<p>Turpis vitae turpis lorem dignissim quis lorem rutrum pede mus justo. Morbi dictumst interdum ut dui elit faucibus ac tempor eget a. Pede penatibus urna mus id pellentesque commodo amet porta risus pede. Sapien semper congue nibh sit tortor enim nibh amet quis in. Vivamus condimentum egestas dictumst vel auctor ut Aenean malesuada mattis convallis. Ipsum Pellentesque libero Nullam Donec nec at enim faucibus sit orci. </p>
					</div>
					<div>' . Get::img(Get::rel_path('base') . '/mycourses.jpg', false, false, false, true) . '</div>
					<div>' . Get::img(Get::rel_path('base') . '/mycourses.jpg', false, false, false, true) . '</div>
					<div>' . Get::img(Get::rel_path('base') . '/calendar.jpg', false, false, false, true) . '</div>
				</div>', 'content');
            cout('</div>', 'content');
            cout('' . '<script type="text/javascript">' . "\n" . '</script>' . "\n", 'scripts');
            break;
        default:
            YuiLib::load();
            //cout('<div class="area_block">PROVA ALBERO</div>', 'content');
            cout('<div style="margin: 2em">', 'content');
            cout('<div id="course_tag" class="yui-navset">', 'content');
            cout('<style>
.subcatbox {
	margin-bottom: 20px;
	font-size: 86%;
}

.subcatbox dt {
	font-weight: bold;
	font-size: 108%;
	margin-bottom: 4px;
}

.subcatbox dd {
	margin-left: 10px;
	margin-bottom: 4px;
}


</style>', 'page_head');
            cout('
    <ul class="yui-nav">
        <li><a href="#tab1"><em>Corsi</em></a></li>
        <li class="selected"><a href="#tab2"><em>Documenti e multimedia</em></a></li>
        <li><a href="#tab3"><em>Videconferenze</em></a></li>
    </ul>            
    <div class="yui-content yui-nopadding">
		<div>
        	<div class="subtab_list">
				<ul class="">
					<li class="selected"><a href="#tab1"><em>In itinere</em></a></li>
					<li><a href="#tab1"><em>Completati</em></a></li>

					<li><a href="#tab1"><em>Inviti</em></a></li>
					<li><a href="#"><em>Nuovi</em></a></li>
					<li><a href="#"><em>Consigliati</em></a></li>
					<li><a href="#"><em>Tutti</em></a></li>
					<li><a href="#"><em>Calendario</em></a></li>
				</ul>
			</div>
			' . Get::img(Get::rel_path('base') . '/mycourses.jpg', false, false, false, true) . '
		</div>
		<div>
        	<div class="subtab_list">
				<ul class="">
					<li class="selected"><a href="#tab1"><em>Ricerca</em></a></li>
					<li><a href="#tab1"><em>Gestione</em></a></li>
				</ul>
			</div>
			<br />
			<br />
			<div style="text-align: center; position:relative;">
			 
			<input type="text" size="40" id="c_filter" name="c_filter" value="Cerca ..." class="" maxlength="255" alt="Cerca" onclick="this.value=\'\';" /><input type="submit" id="c_filter" name="c_filter" value="Cerca" class="search_b" maxlength="255" alt="Cerca" />
			<br/><br/>
			<input type="radio" name="searchin" value="2" checked="checked" /> Nei documenti e nei corsi &nbsp;&nbsp;
			<input type="radio" name="searchin" value="0" /> Nei documenti &nbsp;&nbsp;
			<input type="radio" name="searchin" value="1" /> Nei corsi
			</div>

			<br />
			<br />
			<br />
			<div class="yui-gb" style="margin: 0 22px">
				<div class="yui-u first">

					<!-- sample code from ciao.it-->

					<dl class="subcatbox"><dt> <a href="http://www.ciao.it/Portatili_206481_2" id="Node_Category_197256" class="hdl">Portatili</a></dt><dd> <a href="http://www.ciao.it/Portatili_206481_2-apple" class="subnr">Portatili Apple</a> <span class="subnr">(104)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-sony" class="subnr">Portatili Sony</a> <span class="subnr">(383)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-dell" class="subnr">Portatili Dell</a> <span class="subnr">(81)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-fujitsu_siemens" class="subnr">Portatili Fujitsu-Siemens</a> <span class="subnr">(400)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-hp" class="subnr">Portatili HP</a> <span class="subnr">(799)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-asus" class="subnr">Portatili Asus</a> <span class="subnr">(663)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-acer" class="subnr">Portatili Acer</a>
					<span class="subnr">(713)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-toshiba" class="subnr">Portatili Toshiba</a> <span class="subnr">(737)</span></dd><dd> <a href="http://www.ciao.it/Portatili_206481_2-samsung" class="subnr">Portatili Samsung</a> <span class="subnr">(43)</span></dd></dl><dl class="subcatbox"><dt> <a href="http://www.ciao.it/PC_178183_2" id="Node_Category_168457" class="hdl">PC</a></dt><dd> <a href="http://www.ciao.it/PC_178183_2-hp" class="subnr">PC HP</a> <span class="subnr">(1643)</span></dd><dd> <a href="http://www.ciao.it/PC_178183_2-acer" class="subnr">PC Acer</a> <span class="subnr">(649)</span></dd><dd> <a href="http://www.ciao.it/PC_178183_2-packard_bell" class="subnr">PC Packard Bell</a> <span class="subnr">(864)</span></dd><dd> <a href="http://www.ciao.it/PC_178183_2-apple" class="subnr">PC Apple</a> <span class="subnr">(227)</span></dd><dd> <a href="http://www.ciao.it/PC_178183_2-olidata" class="subnr">PC Olidata</a> <span class="subnr">(574)</span></dd><dd>
					<a href="http://www.ciao.it/PC_178183_2-compaq" class="subnr">PC Compaq</a> <span class="subnr">(627)</span></dd></dl><dl class="subcatbox"><dt> <a href="http://www.ciao.it/Stampanti_178158_2" id="Node_Category_168459" class="hdl">Stampanti</a></dt><dd> <a href="http://www.ciao.it/Stampanti_178158_2-hp" class="subnr">Stampanti HP</a> <span class="subnr">(55)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_178158_2-epson" class="subnr">Stampanti Espson</a> <span class="subnr">(466)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_178158_2-lexmark_international" class="subnr">Stampanti Lexmark</a> <span class="subnr">(301)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_178158_2-canon" class="subnr">Stampanti Canon</a> <span class="subnr">(239)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_178158_2-brother" class="subnr">Stampanti Brother</a> <span class="subnr">(99)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_178158_2-xerox" class="subnr">Stampanti Xerox</a>
					<span class="subnr">(182)</span></dd></dl><dl class="subcatbox"><dt> <a href="http://www.ciao.it/Stampanti_Multifunzione_205569_2" id="Node_Category_196265" class="hdl">Stampanti Multifunzione</a></dt><dd> <a href="http://www.ciao.it/Stampanti_Multifunzione_205569_2-xerox" class="subnr">Stampanti Multifunzione Xerox</a> <span class="subnr">(340)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_Multifunzione_205569_2-canon" class="subnr">Stampanti Multifunzione Canon</a> <span class="subnr">(182)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_Multifunzione_205569_2-brother" class="subnr">Stampanti Multifunzione Brother</a> <span class="subnr">(138)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_Multifunzione_205569_2-lexmark_international" class="subnr">Stampanti Multifunzione Lexmark</a> <span class="subnr">(97)</span></dd><dd> <a href="http://www.ciao.it/Stampanti_Multifunzione_205569_2-epson" class="subnr">Stampanti Multifunzione Epson</a> <span class="subnr">(76)</span></dd><dd>
					<a href="http://www.ciao.it/Stampanti_Multifunzione_205569_2-samsung" class="subnr">Stampanti Multifunzione Samsung</a> <span class="subnr">(59)</span></dd></dl>
					<!-- end of sample code from ciao.it-->

				</div>
				<div class="yui-u">

					<!-- sample code from ciao.it-->

					<dl class="subcatbox"><dt> <a href="http://www.ciao.it/Componenti_Hardware_178057_2" id="Node_Category_168463" class="hdl">Componenti Hardware</a></dt><dd> <a href="http://www.ciao.it/Schede_Madri_205459_3" class="subnr">Schede Madri</a> <span class="subnr">(1877)</span></dd><dd> <a href="http://www.ciao.it/Hard_Disk_178068_3" class="subnr">Hard Disk</a> <span class="subnr">(3568)</span></dd><dd> <a href="http://www.ciao.it/Drive_178061_3" class="subnr">Drive</a> <span class="subnr">(158)</span></dd><dd> <a href="http://www.ciao.it/Floppy_178067_3" class="subnr">Floppy</a> <span class="subnr">(169)</span></dd><dd> <a href="http://www.ciao.it/Alimentatori_178074_3" class="subnr">Alimentatori</a> <span class="subnr">(3207)</span></dd><dd> <a href="http://www.ciao.it/Componenti_Hardware_178057_2" id="Node_Category_More_168463" class="hdl">continua</a>
					</dd></dl><dl class="subcatbox"><dt> <a href="http://www.ciao.it/Monitor_LCD_178159_2" id="Node_Category_168460" class="hdl">Monitor LCD</a></dt><dd> <a href="http://www.ciao.it/Monitor_LCD_178159_2-samsung" class="subnr">Monitor Samsung</a> <span class="subnr">(394)</span></dd><dd> <a href="http://www.ciao.it/Monitor_LCD_178159_2-lg" class="subnr">Monitor LG</a> <span class="subnr">(315)</span></dd><dd> <a href="http://www.ciao.it/Monitor_LCD_178159_2-sony" class="subnr">Monitor Sony</a> <span class="subnr">(181)</span></dd><dd> <a href="http://www.ciao.it/Monitor_LCD_178159_2-philips" class="subnr">Monitor Philips</a> <span class="subnr">(275)</span></dd><dd> <a href="http://www.ciao.it/Monitor_LCD_178159_2-acer" class="subnr">Monitor Acer</a> <span class="subnr">(323)</span></dd><dd> <a href="http://www.ciao.it/Monitor_LCD_178159_2-hp" class="subnr">Monitor HP</a> <span class="subnr">(127)</span></dd></dl><dl class="subcatbox"><dt>
					<a href="http://www.ciao.it/Monitor_CRT_206455_2" id="Node_Category_197225" class="hdl">Monitor CRT</a></dt><dd> <a href="http://www.ciao.it/Monitor_CRT_206455_2-philips" class="subnr">Monitor CRT Philips</a> <span class="subnr">(120)</span></dd><dd> <a href="http://www.ciao.it/Monitor_CRT_206455_2-hp" class="subnr">Monitor CRT HP</a> <span class="subnr">(41)</span></dd><dd> <a href="http://www.ciao.it/Monitor_CRT_206455_2-samsung" class="subnr">Monitor CRT Samsung</a> <span class="subnr">(80)</span></dd><dd> <a href="http://www.ciao.it/Monitor_CRT_206455_2-ibm" class="subnr">Monitor CRT IBM</a> <span class="subnr">(67)</span></dd><dd> <a href="http://www.ciao.it/Monitor_CRT_206455_2-compaq" class="subnr">Monitor CRT Compaq</a> <span class="subnr">(61)</span></dd><dd> <a href="http://www.ciao.it/Monitor_CRT_206455_2-nec" class="subnr">Monitor CRT NEC</a> <span class="subnr">(64)</span></dd></dl><dl class="subcatbox"><dt>
					<a href="http://www.ciao.it/Processori_206294_2" id="Node_Category_197039" class="hdl">Processori</a></dt><dd> <a href="http://www.ciao.it/Processori_206294_2-hewlett_packard" class="subnr">Processori HP</a> <span class="subnr">(379)</span></dd><dd> <a href="http://www.ciao.it/Processori_206294_2-intel" class="subnr">Processori Intel</a> <span class="subnr">(311)</span></dd><dd> <a href="http://www.ciao.it/Processori_206294_2-ibm" class="subnr">Processori IBM</a> <span class="subnr">(141)</span></dd><dd> <a href="http://www.ciao.it/Processori_206294_2-fujitsu_siemens_computers" class="subnr">Processori Fujitsu Siemens</a> <span class="subnr">(43)</span></dd><dd> <a href="http://www.ciao.it/Processori_206294_2-compaq" class="subnr">Processori Compaq</a> <span class="subnr">(14)</span></dd><dd> <a href="http://www.ciao.it/Processori_206294_2-acer" class="subnr">Processori Acer</a> <span class="subnr">(24)</span></dd></dl>
					<!-- end of sample code from ciao.it-->

				</div>

				<div class="yui-u">

					<!-- sample code from ciao.it-->

					<dl class="subcatbox"><dt> <a href="http://www.ciao.it/Componenti_di_Rete_178049_2" id="Node_Category_168462" class="hdl">Componenti di Rete</a></dt><dd> <a href="http://www.ciao.it/Modem_178051_3" class="subnr">Modem</a> <span class="subnr">(1428)</span></dd><dd> <a href="http://www.ciao.it/Schede_di_Rete_178050_3" class="subnr">Schede di Rete</a> <span class="subnr">(3191)</span></dd><dd> <a href="http://www.ciao.it/Router_e_Bridge_178053_3" class="subnr">Router e Bridge</a> <span class="subnr">(1176)</span></dd><dd> <a href="http://www.ciao.it/Hub_e_Switch_178052_3" class="subnr">Hub e Switch</a> <span class="subnr">(2739)</span></dd><dd> <a href="http://www.ciao.it/Dispositivi_di_Rete_205570_3" class="subnr">Dispositivi di Rete</a> <span class="subnr">(1791)</span></dd><dd> <a href="http://www.ciao.it/Componenti_di_Rete_178049_2" id="Node_Category_More_168462" class="hdl">continua</a></dd></dl><dl class="subcatbox"><dt>
					<a href="http://www.ciao.it/Palmari_Smartphone_206480_2" id="Node_Category_197255" class="hdl">Palmari &amp; Smartphone</a></dt><dd> <a href="http://www.ciao.it/Palmari_Smartphone_206480_2-htc" class="subnr">Palmari HTC</a> <span class="subnr">(26)</span></dd><dd> <a href="http://www.ciao.it/Palmari_Smartphone_206480_2-nokia" class="subnr">Palmari Nokia</a> <span class="subnr">(22)</span></dd><dd> <a href="http://www.ciao.it/Palmari_Smartphone_206480_2-hp" class="subnr">Palmari HP</a> <span class="subnr">(85)</span></dd><dd> <a href="http://www.ciao.it/Palmari_Smartphone_206480_2-i_mate" class="subnr">Palmari i-mate</a> <span class="subnr">(19)</span></dd><dd> <a href="http://www.ciao.it/Palmari_Smartphone_206480_2-samsung" class="subnr">Palmari Samsung</a> <span class="subnr">(10)</span></dd><dd> <a href="http://www.ciao.it/Palmari_Smartphone_206480_2-palm" class="subnr">Palmari Palm</a> <span class="subnr">(89)</span></dd></dl>
					<dd> <a href="http://www.ciao.it/Mouse_178035_3" class="subnr">Mouse</a> <span class="subnr">(3589)</span></dd><dd> <a href="http://www.ciao.it/Tastiere_178036_3" class="subnr">Tastiere</a> <span class="subnr">(2826)</span></dd><dd> <a href="http://www.ciao.it/Scanner_178040_3" class="subnr">Scanner</a> <span class="subnr">(879)</span></dd><dd> <a href="http://www.ciao.it/Webcam_206484_3" class="subnr">Webcam</a> <span class="subnr">(578)</span></dd><dd> <a href="http://www.ciao.it/USB_Flash_Drive_205463_3" class="subnr">USB Flash Drive</a> <span class="subnr">(1086)</span></dd><dd> <a href="http://www.ciao.it/Periferiche_178035_2" id="Node_Category_More_168461" class="hdl">continua</a></dd></dl><dl class="subcatbox"><dt> <a href="http://www.ciao.it/Storage_Media_178080_2" id="Node_Category_168465" class="hdl">Storage Media</a></dt><dd>
					<a href="http://www.ciao.it/CD_Registrabili_178080_3" class="subnr">CD Registrabili</a> <span class="subnr">(2340)</span></dd><dd> <a href="http://www.ciao.it/DVD_Registrabili_178081_3" class="subnr">DVD Registrabili</a> <span class="subnr">(2490)</span></dd></dl><dl class="subcatbox"><dt> <a href="http://www.ciao.it/Accessori_178161_2" id="Node_Category_168466" class="hdl">Accessori</a></dt><dd> <a href="http://www.ciao.it/Supporti_Cartacei_per_Stampanti_205643_3" class="subnr">Supporti Cartacei per Stampanti</a> <span class="subnr">(1891)</span></dd><dd> <a href="http://www.ciao.it/Accessori_per_Stampanti_205472_3" class="subnr">Accessori per Stampanti</a> <span class="subnr">(20111)</span></dd><dd> <a href="http://www.ciao.it/Cartucce_per_Stampanti_e_Toner_206282_3" class="subnr">Cartucce per Stampanti e Toner</a></dd><dd> <a href="http://www.ciao.it/Accessori_per_Portatili_197962_3" class="subnr">Accessori per Portatili</a> <span class="subnr">(42)</span></dd><dd>
					<a href="http://www.ciao.it/Accessori_per_Palmari_178161_3" class="subnr">Accessori per Palmari</a> <span class="subnr">(41)</span></dd><dd> <a href="http://www.ciao.it/Accessori_178161_2" id="Node_Category_More_168466" class="hdl">continua</a></dd></dl><dl class="subcatbox"><dt> <a href="http://www.ciao.it/Servizi_e_Consigli_178181_2" id="Node_Category_168467" class="hdl">Servizi e Consigli</a></dt></dl>

					<!-- end of sample code from ciao.it-->

				</div>
			</div>
		</div>
		<div>
        	<div class="subtab_list">
				<ul class="">
					<li><a href="#tab1"><em>Attive ora</em></a></li>
					<li><a href="#tab1"><em>Programmate</em></a></li>
					<li class="selected"><a href="#tab1"><em>Calendario</em></a></li>
				</ul>
				
			</div>
				' . Get::img(Get::rel_path('base') . '/calendar.jpg', false, false, false, true) . '

		</div>
		', 'content');
            cout('</div>', 'content');
            cout('</div>', 'content');
            cout('' . '<script type="text/javascript">' . "\n" . "\tvar myTabs = new YAHOO.widget.TabView('course_tag'); " . "\n" . '</script>' . "\n", 'scripts');
            /*
            
            
            cout('<script type="text/javascript">
            		var temp;
            		YAHOO.util.Event.onDOMReady(function(e) {
            		  var oConfig = {
            	dragdrop: false,
            	initNodes: '.$nodes.',
            	ajax_url: "ajax.adm_server.php?plf=framework&file=category_tree&sf=folder_tree'.'"
            };
            		  temp = new FolderTree("tree", oConfig);
            		});
            	  </script>', 'page_head');
            
            cout('<div class="area_block">PROVA ALBERO</div>', 'content');
            cout('<div class="std_block">', 'content');
            cout('<div style="border:solid 1px" class="folder_tree">', 'content');
            cout('<div id="tree"></div>', 'content');
            cout('</div>', 'content');
            cout('<br /><br />DEBUG:&nbsp;<button onclick="alert(temp.getCurrentSelection());">SELEZIONE</button>', 'content');
            
            cout('</div>', 'content');
            require_once(_lms_.'/lib/folder_tree/class.category_tree.php');
            $tree = new CategoryTree('categorytree');
            
            $tree->initLibraries();
            $tree->useDOMready = true;
            $temp = $tree->get();
            
            cout($temp['js'], 'page_head');
            cout('<div class="area_block">PROVA ALBERO</div>', 'content');
            cout('<div class="std_block">', 'content');
            cout('<div style="border:solid 1px" class="folder_tree">', 'content');
            cout($temp['html'], 'content');
            cout('</div>', 'content');
            cout('<br /><br />DEBUG:&nbsp;<button onclick="alert(temp.getCurrentSelection());">SELEZIONE</button>', 'content');
            
            cout('</div>', 'content');
            */
            break;
    }
}
 public function csvexport()
 {
     //check permissions
     if (!$this->permissions['view_user']) {
         Util::jump_to('index.php?r=' . $this->link . '/show');
     }
     require_once _base_ . '/lib/lib.download.php';
     require_once _adm_ . '/lib/lib.field.php';
     $users = Get::req('users', DOTY_STRING, "");
     $separator = ',';
     $delimiter = '"';
     $line_end = "\r\n";
     $output = "";
     $fman = new FieldList();
     $field_list = $fman->getFlatAllFields();
     $head = array();
     $head[] = $this->_formatCsvValue(Lang::t('_USERNAME', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_FIRSTNAME', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_LASTNAME', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_EMAIL', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_SIGNATURE', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_REGISTER_DATE', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_LAST_ENTER', 'standard'), $delimiter);
     foreach ($field_list as $id_field => $field_translation) {
         $head[] = $this->_formatCsvValue($field_translation, $delimiter);
     }
     $output .= implode($separator, $head) . $line_end;
     if ($users != "") {
         $acl_man = Docebo::user()->getAclManager();
         $arr_users = explode(',', $users);
         $arr_users = array_unique($arr_users);
         $details = $this->model->getUsersDetails($arr_users, true, true);
         if (is_array($details)) {
             foreach ($details as $id_user => $detail) {
                 $row = array();
                 $row[] = $acl_man->relativeId($detail->userid);
                 $row[] = $detail->firstname;
                 $row[] = $detail->lastname;
                 $row[] = $detail->email;
                 $row[] = $detail->signature;
                 $row[] = $detail->register_date;
                 $row[] = $detail->lastenter;
                 foreach ($field_list as $id_field => $field_translation) {
                     $row[] = isset($detail->_custom_fields[$id_field]) ? $detail->_custom_fields[$id_field] : "";
                 }
                 //format row and produce a string text to add to CSV file
                 $csv_row = array();
                 foreach ($row as $row_data) {
                     $csv_row[] = $this->_formatCsvValue($row_data, $delimiter);
                 }
                 $output .= implode($separator, $csv_row) . $line_end;
             }
         }
     }
     sendStrAsFile($output, 'users_export_' . date("Ymd") . '.csv');
 }
Example #13
0
function wikiPdfExport($wiki_id, $all)
{
    $cwp =& cwpSetup($wiki_id);
    $query = "SELECT title" . " FROM " . $GLOBALS['prefix_fw'] . "_wiki" . " WHERE wiki_id = '" . $wiki_id . "'";
    list($wiki_title) = sql_fetch_row(sql_query($query));
    $pages_selected = $_POST['page'];
    $page_code_array = array();
    $query = "SELECT page_code" . " FROM " . $GLOBALS['prefix_fw'] . "_wiki_page";
    if ($all) {
        $query .= " WHERE wiki_id = '" . $wiki_id . "'";
    } else {
        $query .= " WHERE page_id IN (" . implode(',', $pages_selected) . ")";
    }
    $result = sql_query($query);
    while (list($page_code) = sql_fetch_row($result)) {
        $page_code_array[] = $page_code;
    }
    $query = "SELECT p.page_id, p.page_code, i.title, r.content" . " FROM " . $GLOBALS['prefix_fw'] . "_wiki_page as p" . " JOIN " . $GLOBALS['prefix_fw'] . "_wiki_page_info as i ON p.page_id = i.page_id" . " JOIN " . $GLOBALS['prefix_fw'] . "_wiki_revision as r ON p.page_id = r.page_id";
    if ($all) {
        $query .= " WHERE p.wiki_id = '" . $wiki_id . "'";
    } else {
        $query .= " WHERE p.page_id IN (" . implode(',', $pages_selected) . ")";
    }
    $query .= " AND i.version = r.version" . " AND i.language = '" . $cwp->getWikiLanguage($wiki_id) . "'" . " AND r.language = '" . $cwp->getWikiLanguage($wiki_id) . "'" . " ORDER BY p.page_path";
    $html = '';
    $result = sql_query($query);
    while (list($page_id, $page_code, $title, $content) = sql_fetch_row($result)) {
        $content = str_replace('{site_base_url}', getSiteBaseUrl(), $content);
        $html .= '<div style="page-break-after:always">' . '<a name="' . $page_code . '"><h2>' . htmlentities($title, ENT_COMPAT, 'UTF-8') . '</h2></a>' . $cwp->parseWikiLinks($content, true, $page_code_array) . '</div>';
    }
    $html = '<html><head>' . '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . '<style>' . 'body {font-family: helvetica;' . 'margin: 30px 30px 30px 30px;}' . '</style>' . '</hedad><body>' . $html . '</body></html>';
    require_once _base_ . '/lib/lib.download.php';
    sendStrAsFile($html, getCleanTitle($wiki_title, 60) . '.html', 'utf-8');
}
 public function export_csvTask()
 {
     //check permissions
     if (!$this->permissions['view']) {
         Util::jump_to('index.php?r=coursestats/show');
     }
     require_once _base_ . '/lib/lib.download.php';
     $id_course = isset($_SESSION['idCourse']) && $_SESSION['idCourse'] > 0 ? $_SESSION['idCourse'] : false;
     if ((int) $id_course <= 0) {
         //...
         return;
     }
     $separator = ',';
     $delimiter = '"';
     $line_end = "\r\n";
     $output = "";
     $lo_list = $this->model->getCourseLOs($id_course);
     $lo_total = count($lo_list);
     $head = array();
     $head[] = $this->_formatCsvValue(Lang::t('_USERNAME', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_FULLNAME', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_LEVEL', 'standard'), $delimiter);
     $head[] = $this->_formatCsvValue(Lang::t('_STATUS', 'standard'), $delimiter);
     foreach ($lo_list as $id_lo => $lo_info) {
         $head[] = $this->_formatCsvValue($lo_info->title, $delimiter);
     }
     $head[] = $this->_formatCsvValue(Lang::t('_COMPLETED', 'course'), $delimiter);
     $output .= implode($separator, $head) . $line_end;
     $records = $this->model->getCourseStatsList(false, $id_course, false);
     if (!empty($records)) {
         $acl_man = Docebo::user()->getAclManager();
         require_once _lms_ . '/lib/lib.subscribe.php';
         $cman = new CourseSubscribe_Manager();
         $arr_status = $cman->getUserStatus();
         $arr_level = $cman->getUserLevel();
         if (is_array($records)) {
             foreach ($records as $record) {
                 $row = array();
                 $row[] = $acl_man->relativeId($record->userid);
                 $row[] = $record->firstname . ' ' . $record->lastname;
                 $row[] = isset($arr_level[$record->level]) ? $arr_level[$record->level] : "";
                 $row[] = isset($arr_status[$record->status]) ? $arr_status[$record->status] : "";
                 $num_completed = 0;
                 foreach ($lo_list as $id_lo => $lo_info) {
                     $_lo_status = isset($record->lo_status[$id_lo]) ? $record->lo_status[$id_lo] : "";
                     $row[] = $_lo_status;
                     if ($_lo_status == 'completed' || $_lo_status == 'passed') {
                         $num_completed++;
                     }
                 }
                 $row[] = $num_completed . ' / ' . $lo_total;
                 //format row and produce a string text to add to CSV file
                 $csv_row = array();
                 foreach ($row as $row_data) {
                     $csv_row[] = $this->_formatCsvValue($row_data, $delimiter);
                 }
                 $output .= implode($separator, $csv_row) . $line_end;
             }
         }
     }
     sendStrAsFile($output, 'coursestats_export_' . date("Ymd") . '.csv');
 }
Example #15
0
function exportquest(&$url)
{
    require_once _lms_ . '/lib/lib.quest_bank.php';
    $lang =& DoceboLanguage::createInstance('test');
    $qb_man = new QuestBankMan();
    $file_format = Get::pReq('export_quest_select', DOTY_INT, 0);
    $quest_category = Get::pReq('quest_category', DOTY_INT);
    $quest_difficult = Get::pReq('quest_difficult', DOTY_INT);
    $quest_type = Get::pReq('quest_type', DOTY_ALPHANUM);
    $quest_selection = Get::req('selected_quest', DOTY_NUMLIST, '');
    $quest_selection = array_filter(preg_split('/,/', $quest_selection, -1, PREG_SPLIT_NO_EMPTY));
    if ($file_format == -1) {
        $new_test_step = Get::pReq('new_test_step', DOTY_INT);
        if (Get::req('button_undo', DOTY_MIXED, false) !== false) {
            questbank($url);
            return;
        }
        if ($new_test_step == 2) {
            $title = trim($_POST['title']);
            if ($title == '') {
                $title = $lang->def('_NOTITLE');
            }
            if (is_array($quest_selection) && !empty($quest_selection)) {
                //Insert the test
                $ins_query = "\r\n\t\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_test\r\n\t\t\t\t( author, title, description )\r\n\t\t\t\t\tVALUES\r\n\t\t\t\t( '" . (int) getLogUserId() . "', '" . $title . "', '" . $_POST['textof'] . "' )";
                //TODO:
                if (!mysql_query($ins_query)) {
                    $_SESSION['last_error'] = $lang->def('_OPERATION_FAILURE');
                }
                list($id_test) = sql_fetch_row(sql_query("SELECT LAST_INSERT_ID()"));
                if ($id_test) {
                    //Insert the question for the test
                    $reQuest = sql_query("\r\n\t\t\t\t\tSELECT q.idQuest, q.type_quest, t.type_file, t.type_class\r\n\t\t\t\t\tFROM " . $GLOBALS['prefix_lms'] . "_testquest AS q JOIN " . $GLOBALS['prefix_lms'] . "_quest_type AS t\r\n\t\t\t\t\tWHERE q.idQuest IN (" . implode(',', $quest_selection) . ") AND q.type_quest = t.type_quest");
                    while (list($idQuest, $type_quest, $type_file, $type_class) = sql_fetch_row($reQuest)) {
                        require_once _lms_ . '/modules/question/' . $type_file;
                        $quest_obj = new $type_class($idQuest);
                        $new_id = $quest_obj->copy($id_test);
                    }
                    //Adding the item to the tree
                    require_once _lms_ . '/modules/organization/orglib.php';
                    $odb = new OrgDirDb($_SESSION['idCourse']);
                    $odb->addItem(0, $title, 'test', $id_test, '0', '0', getLogUserId(), '1.0', '_DIFFICULT_MEDIUM', '', '', '', '', date('Y-m-d H:i:s'));
                }
            }
            questbank($url);
        } else {
            if (is_array($quest_selection) && !empty($quest_selection)) {
                require_once _lib_ . '/lib.form.php';
                cout(getTitleArea($lang->def('_QUEST_BANK', 'menu_course')) . '<div class="std_block yui-skin-docebo yui-skin-sam">', 'content');
                $form = new Form();
                cout($form->openForm('search_form', $url->getUrl(), false, 'POST') . $form->getHidden('new_test_step', 'new_test_step', '2') . $form->getHidden('export_quest', 'export_quest', $lang->def('_EXPORT')) . $form->getHidden('export_quest_select', 'export_quest_select', $file_format) . $form->getHidden('quest_category', 'quest_category', $quest_category) . $form->getHidden('quest_difficult', 'quest_difficult', $quest_difficult) . $form->getHidden('quest_type', 'quest_type', $quest_type) . $form->getHidden('selected_quest', 'selected_quest', $_POST['selected_quest']) . $form->openElementSpace() . $form->getTextfield($lang->def('_TITLE'), 'title', 'title', '255') . $form->getTextarea($lang->def('_DESCRIPTION'), 'textof', 'textof') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('button_ins', 'button_ins', $lang->def('_TEST_INSERT')) . $form->getButton('button_undo', 'button_undo', $lang->def('_UNDO')) . $form->closeButtonSpace() . $form->closeForm(), 'content');
            } else {
                $_SESSION['last_error'] = $lang->def('_EMPTY_SELECTION');
                questbank($url);
            }
        }
    } else {
        $quests = $qb_man->getQuestFromId($quest_selection);
        $quest_export = $qb_man->export_quest($quests, $file_format);
        require_once _lib_ . '/lib.download.php';
        sendStrAsFile($quest_export, 'export_' . date("Y-m-d") . '.txt');
    }
}