コード例 #1
0
ファイル: coursereport.php プロジェクト: abhinay100/forma_app
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);
}
コード例 #2
0
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');
}
コード例 #3
0
 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);
 }
コード例 #4
0
ファイル: do.poll.php プロジェクト: abhinay100/forma_app
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');
    }
}
コード例 #5
0
ファイル: test.php プロジェクト: abhinay100/forma_app
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');
}
コード例 #6
0
ファイル: stats.php プロジェクト: abhinay100/forma_app
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);
}
コード例 #7
0
ファイル: forum.php プロジェクト: abhinay100/forma_app
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);
    }
}
コード例 #8
0
ファイル: code.php プロジェクト: abhinay100/forma_app
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);
}
コード例 #9
0
ファイル: LangAdm.php プロジェクト: abhinay100/forma_app
 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;
 }
コード例 #10
0
ファイル: report.php プロジェクト: abhinay100/forma_app
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>');
}
コード例 #11
0
ファイル: _test_module.php プロジェクト: abhinay100/forma_app
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;
    }
}
コード例 #12
0
 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');
 }
コード例 #13
0
ファイル: wiki.php プロジェクト: abhinay100/forma_app
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');
}
コード例 #14
0
 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');
 }
コード例 #15
0
ファイル: quest_bank.php プロジェクト: abhinay100/forma_app
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');
    }
}