public function add()
 {
     require_once _lms_ . '/lib/lib.course.php';
     //Course info
     $id_course = Get::req('id_course', DOTY_INT, 0);
     $course_info = Man_Course::getCourseInfo($id_course);
     $model = new EditionLms($id_course);
     if (isset($_POST['undo'])) {
         Util::jump_to('index.php?r=edition/show&id_course=' . $model->getIdCourse());
     } elseif (isset($_POST['ins'])) {
         if ($model->addEdition()) {
             Util::jump_to('index.php?r=edition/show&id_course=' . $model->getIdCourse() . '&result=ok');
         }
         Util::jump_to('index.php?r=edition/show&id_course=' . $model->getIdCourse() . '&result=err_ins');
     } else {
         $this->render('add', array('model' => $model, 'course_info' => $course_info));
     }
 }
 public function add()
 {
     if (!$this->permissions['add']) {
         $this->render('invalid', array('message' => $this->_getMessage('no permission'), 'back_url' => 'index.php?r=alms/communication/show'));
         return;
     }
     require_once _lms_ . '/lib/lib.course.php';
     //Course info
     $id_course = Get::req('id_course', DOTY_INT, 0);
     $course_info = Man_Course::getCourseInfo($id_course);
     $model = new EditionAlms($id_course);
     if (isset($_POST['undo'])) {
         Util::jump_to('index.php?r=' . $this->base_link_edition . '/show&id_course=' . $model->getIdCourse());
     } elseif (isset($_POST['ins'])) {
         if ($model->addEdition()) {
             Util::jump_to('index.php?r=' . $this->base_link_edition . '/show&id_course=' . $model->getIdCourse() . '&result=ok');
         }
         Util::jump_to('index.php?r=' . $this->base_link_edition . '/show&id_course=' . $model->getIdCourse() . '&result=err_ins');
     } else {
         $this->render('add', array('model' => $model, 'course_info' => $course_info, 'base_link_course' => $this->base_link_course, 'base_link_edition' => $this->base_link_edition));
     }
 }
Exemple #3
0
function showprofile()
{
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.lms_user_profile.php';
    $lang =& DoceboLanguage::createInstance('catalogue');
    $lang =& DoceboLanguage::createInstance('course');
    $id_user = importVar('id_user');
    $id_course = importVar('id_course');
    $man_course = new Man_Course();
    $course = $man_course->getCourseInfo($id_course);
    $profile = new LmsUserProfile($id_user);
    $profile->init('profile', 'framework', 'modname=login&op=showprofile&id_course' . $id_course . '&id_user='******'ap');
    $GLOBALS['page']->add(getTitleArea($lang->def('_NAME', 'catalogue'), 'catalogue') . '<div class="std_block">' . getBackUi('index.php?modname=login&amp;op=courselist&amp;id_parent=' . $course['idCategory'], $lang->def('_BACK')), 'content');
    $GLOBALS['page']->add('<p class="category_path">' . '<b>' . $lang->def('_CATEGORY_PATH') . ' :</b> ' . $man_course->getCategoryPath($course['idCategory'], $lang->def('_MAIN_CATEGORY'), $lang->def('_TITLE_CATEGORY_JUMP'), 'index.php?modname=login&amp;op=courselist', 'id_parent') . ' &gt; ' . $course['name'] . '</p>' . $profile->getProfile(getLogUserId()) . '</div>', 'content');
}
 function _get_delay_query($type = 'html', $report_data = NULL, $other = '')
 {
     if ($report_data == NULL) {
         $report_data =& $_SESSION['report_tempdata'];
     }
     $rdata =& $report_data['rows_filter'];
     $cdata =& $report_data['columns_filter'];
     $acl_man = new DoceboACLManager();
     $acl_man->include_suspended = TRUE;
     $course_man = new Man_Course();
     $alluser = $rdata['all_users'];
     $jump_url = '';
     $org_chart_subdivision = isset($cdata['org_chart_subdivision']) ? $cdata['org_chart_subdivision'] : false;
     $day_from_subscription = $cdata['day_from_subscription'] != "" ? $cdata['day_from_subscription'] : false;
     $day_until_course_end = $cdata['day_until_course_end'] != "" ? $cdata['day_until_course_end'] : false;
     $date_until_course_end = $cdata['date_until_course_end'] != "" ? $cdata['date_until_course_end'] : false;
     $report_type_completed = isset($cdata['report_type_completed']) ? $cdata['report_type_completed'] : false;
     $report_type_started = isset($cdata['report_type_started']) ? $cdata['report_type_started'] : false;
     $course_selected = $cdata['selected_courses'];
     $all_courses = $cdata['all_courses'];
     $order_by = isset($cdata['order_by']) ? $cdata['order_by'] : 'userid';
     $order_dir = isset($cdata['order_dir']) ? $cdata['order_dir'] : 'asc';
     $show_suspended = isset($cdata['show_suspended']) ? (bool) $cdata['show_suspended'] : false;
     if (!$alluser) {
         $user_selected =& $acl_man->getAllUsersFromIdst($rdata['users']);
     } else {
         $user_selected =& $acl_man->getAllUsersIdst();
     }
     $lang =& DoceboLanguage::createInstance('report', 'framework');
     $lang_u =& DoceboLanguage::CreateInstance('stats', 'lms');
     if (empty($user_selected)) {
         return $lang->def('_NULL_SELECTION');
     }
     if (empty($course_selected) && !$all_courses) {
         return $lang->def('_NULL_COURSE_SELECTION');
     }
     if (1 == 1) {
         $date_now = Format::date(date("Y-m-d H:i:s"));
         //set query suspended users condition
         $query_show_suspended = "u.valid = 1";
         //default condition
         switch ($show_suspended) {
             case "all":
                 $query_show_suspended = "";
                 break;
             case "suspended_only":
                 $query_show_suspended = " AND u.valid = 0 ";
                 break;
             case "active_only":
                 $query_show_suspended = " AND u.valid = 1 ";
                 break;
         }
         //set query order by param
         $_dir = "ASC";
         switch ($order_dir) {
             case "desc":
                 $_dir = "DESC";
                 break;
         }
         $query_order_by = "u.lastname, u.firstname, u.userid";
         switch ($order_by) {
             case 'firstname':
                 $query_order_by = "u.firstname " . $_dir . ", u.userid " . $_dir;
                 break;
             case 'lastname':
                 $query_order_by = "u.lastname " . $_dir . ", u.userid " . $_dir;
                 break;
             case 'email':
                 $query_order_by = "u.email " . $_dir . ", u.userid " . $_dir;
                 break;
             case 'status':
                 $query_order_by = "cu.status " . $_dir . ", u.userid " . $_dir . ", u.lastname " . $_dir;
                 break;
                 //case 'level': $query_order_by = "cu.level ".$_dir.", u.userid ".$_dir.", c.code ".$_dir.""; break;
             //case 'level': $query_order_by = "cu.level ".$_dir.", u.userid ".$_dir.", c.code ".$_dir.""; break;
             case 'date_subscription':
                 $query_order_by = "cu.date_inscr " . $_dir . ", u.userid " . $_dir . ", u.lastname " . $_dir;
                 break;
             case 'date_first_access':
                 $query_order_by = "cu.date_first_access " . $_dir . ", u.userid " . $_dir . ", u.lastname " . $_dir;
                 break;
             case 'date_last_access':
                 $query_order_by = "cu.date_last_access " . $_dir . ", u.userid " . $_dir . ", u.lastname " . $_dir;
                 break;
             case 'date_complete':
                 $query_order_by = "cu.date_complete " . $_dir . ", u.userid " . $_dir . ", u.lastname " . $_dir;
                 break;
         }
         $query_course_user = "******" . $GLOBALS['prefix_lms'] . "_courseuser AS cu " . " JOIN " . $GLOBALS['prefix_fw'] . "_user as u ON cu.idUser = u.idst\r\n\t\t\t\tWHERE cu.idCourse > 0 " . $query_show_suspended . ($alluser ? "" : " AND cu.idUser IN ( " . implode(',', $user_selected) . " ) ") . ($all_courses ? '' : " AND cu.idCourse IN (" . implode(',', $course_selected) . ")") . " ORDER BY " . $query_order_by;
         $re_course_user = sql_query($query_course_user);
         $element_to_print = array();
         $courses_codes = array();
         while (list($id_u, $id_c, $id_e, $date_inscr, $date_first_access, $date_complete, $status, $level, $date_last_access, $u_userid, $u_firstname, $u_lastname, $u_email, $u_valid) = sql_fetch_row($re_course_user)) {
             if ($level == '3') {
                 //$report_type === 'course_started' && $level == '3') {
                 $user_check = false;
                 $now_timestamp = mktime('0', '0', '0', date('m'), date('d'), date('Y'));
                 //check the condition on status (course started and/or completed)
                 $status_condition = $status != _CUS_END;
                 //&& $status != _CUS_SUSPEND;
                 if ($report_type_completed && !$report_type_started) {
                     $status_condition = $status_condition && $status == _CUS_BEGIN;
                 }
                 if ($report_type_started && !$report_type_completed) {
                     $status_condition = $status_condition && $status != _CUS_BEGIN;
                 }
                 if ($day_from_subscription) {
                     if ($status_condition) {
                         $user_timestamp = mktime('0', '0', '0', $date_inscr[5] . $date_inscr[6], $date_inscr[8] . $date_inscr[9] + $day_from_subscription, $date_inscr[0] . $date_inscr[1] . $date_inscr[2] . $date_inscr[3]);
                         if ($user_timestamp < $now_timestamp) {
                             $user_check = true;
                         }
                     }
                 }
                 if ($day_until_course_end) {
                     if ($status_condition) {
                         if ($id_e > 0) {
                             $query = "SELECT date_end" . " FROM " . $GLOBALS['prefix_lms'] . "_course_edition" . " WHERE idCourseEdition = '" . $id_e . "'";
                             list($date_end) = sql_fetch_row(sql_query($query));
                             $user_timestamp = mktime('0', '0', '0', $date_end[5] . $date_end[6], $date_end[8] . $date_end[9] - $day_until_course_end, $date_end[0] . $date_end[1] . $date_end[2] . $date_end[3]);
                             if ($user_timestamp < $now_timestamp) {
                                 $user_check = true;
                             }
                         } else {
                             $query = "SELECT date_end" . " FROM " . $GLOBALS['prefix_lms'] . "_course" . " WHERE idCourse = '" . $id_c . "'";
                             list($date_end) = sql_fetch_row(sql_query($query));
                             $user_timestamp = mktime('0', '0', '0', $date_end[5] . $date_end[6], $date_end[8] . $date_end[9] - $day_until_course_end, $date_end[0] . $date_end[1] . $date_end[2] . $date_end[3]);
                             if ($user_timestamp < $now_timestamp) {
                                 $user_check = true;
                             }
                         }
                     }
                 }
                 if ($date_until_course_end) {
                     if ($status_condition) {
                         if ($id_e > 0) {
                             $query = "SELECT COUNT(*)" . " FROM " . $GLOBALS['prefix_lms'] . "_course_edition" . " WHERE idCourseEdition = '" . $id_e . "'" . " AND date_end < '" . Format::dateDb($date_until_course_end, 'date') . "'";
                             list($control) = sql_fetch_row(sql_query($query));
                             if ($control) {
                                 $user_check = true;
                             }
                         } else {
                             $query = "SELECT COUNT(*)" . " FROM " . $GLOBALS['prefix_lms'] . "_course" . " WHERE idCourse = '" . $id_c . "'" . " AND date_end < '" . Format::dateDb($date_until_course_end, 'date') . "'";
                             list($control) = sql_fetch_row(sql_query($query));
                             if ($control) {
                                 $user_check = true;
                             }
                         }
                     }
                 }
                 if (!$date_until_course_end && !$day_from_subscription && !$date_until_course_end) {
                     if ($status_condition) {
                         $user_check = true;
                     }
                 }
                 if ($user_check) {
                     $course_info = $course_man->getCourseInfo($id_c);
                     //$user_detail = $acl_man->getUser($id_u, false);
                     $element_to_print[$id_c]['name'] = $course_info['name'];
                     $element_to_print[$id_c]['code'] = $course_info['code'];
                     $element_to_print[$id_c]['data'][] = array('idUser' => $id_u, 'idCourse' => $id_c, 'idCourseEdition' => $id_e, 'status' => $status, 'level' => $level, 'userid' => Docebo::aclm()->relativeId($u_userid), 'firstname' => $u_firstname, 'lastname' => $u_lastname, 'mail' => $u_email, 'suspended' => $u_valid <= 0, 'date_subscription' => $date_inscr, 'date_first_access' => $date_first_access, 'date_completed' => $date_complete, 'date_last_access' => $date_last_access);
                 }
             }
         }
         //backward compatibility
         $showed_columns = array();
         foreach ($cdata['showed_columns'] as $_column_key) {
             $showed_columns[] = $this->_check_delay_column($_column_key);
         }
         //print course table
         $this->_printTable_delay($type, $element_to_print, $showed_columns);
         if ($this->use_mail) {
             $this->_loadEmailActions();
         }
     }
 }
function modAssignmentAssignMetaCertificate()
{
    checkPerm('mod');
    require_once _base_ . '/lib/lib.form.php';
    require_once $GLOBALS['where_framework'] . '/lib/lib.directory.php';
    require_once _base_ . '/lib/lib.userselector.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course_managment.php';
    $lang =& DoceboLanguage::createInstance('certificate', 'lms');
    $id_certificate = importVar('id_certificate', true, 0);
    $id_meta = Get::req('idmeta', DOTY_INT, 0);
    $step = Get::req('step', DOTY_INT, 0);
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $acl_man =& Docebo::user()->getAclManager();
    $aclManager = new DoceboACLManager();
    $user_select = new UserSelector();
    $form = new Form();
    $sel = new Course_Manager();
    $course_man = new Man_Course();
    if (isset($_POST['okselector'])) {
        $user_selected = $user_select->getSelection($_POST);
        $_SESSION['meta_certificate']['users'] = $user_selected;
        $step++;
    }
    if (isset($_POST['import_filter'])) {
        $_SESSION['meta_certificate']['course'] = $sel->getCourseSelection($_POST);
        $step++;
    }
    if (isset($_POST['insert'])) {
        $step++;
    }
    if ($step == 3) {
        $array_user =& $aclManager->getAllUsersFromIdst($_SESSION['meta_certificate']['users']);
        $array_user = array_unique($array_user);
        $res = true;
        $user_reset = array();
        $course_reset = array();
        $reasign = array();
        //array reasign
        $query = "SELECT idUser, idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'";
        $result = sql_query($query);
        while (list($id_user, $id_course) = sql_fetch_row($result)) {
            $reasign[$id_user][$id_course] = 1;
        }
        //array user_reset
        $query = "SELECT DISTINCT idUser" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'";
        $result = sql_query($query);
        while (list($id_user) = sql_fetch_row($result)) {
            $user_reset[$id_user] = $id_user;
        }
        //array course_reset
        $query = "SELECT DISTINCT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'";
        $result = sql_query($query);
        while (list($id_course) = sql_fetch_row($result)) {
            $course_reset[$id_course] = $id_course;
        }
        //finish array initialization
        $query_course = "INSERT INTO " . $GLOBALS['prefix_lms'] . "_certificate_meta_course (idMetaCertificate, idUser, idCourse)" . " VALUES ";
        $first = true;
        $array_user_flipped = array_flip($array_user);
        foreach ($user_reset as $id_user) {
            if (!isset($array_user_flipped[$id_user])) {
                $query = "DELETE FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idUser = '******'" . " AND idMetaCertificate = '" . $id_meta . "'";
                if (!sql_query($query)) {
                    $res = false;
                }
            }
        }
        if (!$res) {
            Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign');
        }
        foreach ($course_reset as $id_course) {
            if (!isset($_SESSION['meta_certificate']['course'][$id_course])) {
                $query = "DELETE FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idCourse = '" . $id_course . "'" . " AND idMetaCertificate = '" . $id_meta . "'";
                if (!sql_query($query)) {
                    $res = false;
                }
            }
        }
        if (!$res) {
            Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign');
        }
        reset($_SESSION['meta_certificate']['course']);
        foreach ($array_user as $id_user) {
            foreach ($_SESSION['meta_certificate']['course'] as $id_course) {
                if (isset($_POST['_' . $id_user . '_' . $id_course . '_'])) {
                    if (!isset($reasign[$id_user][$id_course])) {
                        if ($first) {
                            $query_course .= "('" . $id_meta . "', '" . $id_user . "', '" . $id_course . "')";
                            $first = false;
                        } else {
                            $query_course .= ", ('" . $id_meta . "', '" . $id_user . "', '" . $id_course . "')";
                        }
                    }
                } else {
                    if (isset($reasign[$id_user][$id_course])) {
                        $query = "DELETE FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idUser = '******'" . " AND idCourse = '" . $id_course . "'" . " AND idMetaCertificate = '" . $id_meta . "'";
                        if (!sql_query($query)) {
                            $res = false;
                        }
                    }
                }
            }
        }
        if (!$res) {
            Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign');
        }
        $res = sql_query($query_course);
        if ($res) {
            Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=ok');
        } else {
            Util::jump_to('index.php?modname=meta_certificate&op=assign&id_certificate=' . $id_certificate . '&res=error_mod_assign');
        }
    } elseif ($step == 2) {
        YuiLib::load();
        Util::get_js(Get::rel_path('base') . '/lib/js_utils.js', true, true);
        $tb = new Table(0, $lang->def('_META_CERTIFICATE_NEW_ASSIGN_CAPTION'), $lang->def('_META_CERTIFICATE_NEW_ASSIGN_SUMMARY'));
        $tb->setLink('index.php?modname=meta_certificate&amp;op=modassignment');
        $out->add(getTitleArea($lang->def('_TITLE_META_CERTIFICATE_ASSIGN'), 'certificate') . '<div class="std_block">' . $form->openForm('new_assign_step_2', 'index.php?modname=meta_certificate&amp;op=modassignment') . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . $form->getHidden('idmeta', 'idmeta', $id_meta) . $form->getHidden('step', 'step', 2) . $form->getHidden('reasign', 'reasign', 1));
        $reasign = array();
        if (!isset($_POST['reasign'])) {
            $query = "SELECT idUser, idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'";
            $result = sql_query($query);
            while (list($id_user, $id_course) = sql_fetch_row($result)) {
                $reasign[$id_user][$id_course] = 1;
            }
        }
        $form_name = 'new_assign_step_2';
        $type_h = array('', '');
        $cont_h = array($lang->def('_FULLNAME'), $lang->def('_USERNAME'));
        foreach ($_SESSION['meta_certificate']['course'] as $id_course) {
            $type_h[] = 'align_center';
            $course_info = $course_man->getCourseInfo($id_course);
            $cont_h[] = $course_info['code'] . ' - ' . $course_info['name'];
        }
        $type_h[] = 'image';
        $cont_h[] = $lang->def('_CHECKALL');
        $type_h[] = 'image';
        $cont_h[] = $lang->def('_UNCHECKALL');
        $tb->setColsStyle($type_h);
        $tb->addHead($cont_h);
        reset($_SESSION['meta_certificate']['course']);
        $array_user =& $aclManager->getAllUsersFromIdst($_SESSION['meta_certificate']['users']);
        $array_user = array_unique($array_user);
        $query = "SELECT idst" . " FROM " . $GLOBALS['prefix_fw'] . "_user" . " WHERE idst IN (" . implode(',', $array_user) . ")" . " ORDER BY userid";
        $result = sql_query($query);
        $array_user = array();
        while (list($id_user) = sql_fetch_row($result)) {
            $array_user[] = $id_user;
        }
        foreach ($array_user as $id_user) {
            $cont = array();
            $user_info = $acl_man->getUser($id_user, false);
            $cont[] = $user_info[ACL_INFO_LASTNAME] . ' ' . $user_info[ACL_INFO_FIRSTNAME];
            $cont[] = $acl_man->relativeId($user_info[ACL_INFO_USERID]);
            foreach ($_SESSION['meta_certificate']['course'] as $id_course) {
                if (isset($_POST['_' . $id_user . '_' . $id_course . '_']) || isset($_POST['select_all']) || isset($reasign[$id_user][$id_course])) {
                    $checked = true;
                } else {
                    $checked = false;
                }
                $cont[] = $form->getCheckbox('', '_' . $id_user . '_' . $id_course . '_', '_' . $id_user . '_' . $id_course . '_', 1, $checked);
            }
            $cont[] = '<a href="javascript:;" onclick="checkall_fromback_meta(\'' . $form_name . '\', \'' . $id_user . '\', true); return false;">' . $lang->def('_CHECKALL') . '</a>';
            $cont[] = '<a href="javascript:;" onclick="checkall_fromback_meta(\'' . $form_name . '\', \'' . $id_user . '\', false); return false;">' . $lang->def('_UNCHECKALL') . '</a>';
            $tb->addBody($cont);
        }
        reset($_SESSION['meta_certificate']['course']);
        $cont = array();
        $cont[] = '';
        $cont[] = '';
        foreach ($_SESSION['meta_certificate']['course'] as $id_course) {
            $cont[] = '<a href="javascript:;" onclick="checkall_meta(\'' . $form_name . '\', \'' . $id_course . '\', true); return false;">' . $lang->def('_CHECKALL') . '</a><br/>' . '<a href="javascript:;" onclick="checkall_meta(\'' . $form_name . '\', \'' . $id_course . '\', false); return false;">' . $lang->def('_UNCHECKALL') . '</a>';
        }
        $cont[] = '';
        $cont[] = '';
        $tb->addBody($cont);
        $out->add($form->openElementSpace() . $tb->getTable() . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('select_all', 'select_all', $lang->def('_SELECT_ALL')) . $form->getButton('insert', 'insert', $lang->def('_INSERT')) . $form->getButton('undo_assign', 'undo_assign', $lang->def('_UNDO')) . $form->closeButtonSpace() . $form->closeForm());
    } elseif ($step == 1) {
        $sel->setLink('index.php?modname=meta_certificate&amp;op=modassignment');
        $out->add(getTitleArea($lang->def('_TITLE_META_CERTIFICATE_ASSIGN'), 'certificate') . '<div class="std_block">' . $form->openForm('new_assign_step_1', 'index.php?modname=meta_certificate&amp;op=modassignment') . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . $form->getHidden('idmeta', 'idmeta', $id_meta) . $form->getHidden('step', 'step', 1) . $form->getHidden('course_reload', 'course_reload', 1));
        if (!isset($_POST['course_reload'])) {
            $query = "SELECT DISTINCT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'";
            $result = sql_query($query);
            $course_reset = array();
            while (list($id_course) = sql_fetch_row($result)) {
                $course_reset[$id_course] = $id_course;
            }
            $sel->resetCourseSelection($course_reset);
        }
        $sel->loadSelector();
        $out->add(Form::getHidden('update_tempdata', 'update_tempdata', 1) . Form::openButtonSpace() . Form::getBreakRow() . Form::getButton('ok_filter', 'import_filter', $lang->def('_NEXT')) . Form::getButton('undo_filter', 'undo_filter', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm() . '</div>');
    } else {
        $user_select->show_orgchart_simple_selector = FALSE;
        $user_select->multi_choice = TRUE;
        $user_select->addFormInfo($form->getHidden('step', 'step', 0) . $form->getHidden('id_certificate', 'id_certificate', $id_certificate) . $form->getHidden('idmeta', 'idmeta', $id_meta) . $form->getHidden('user_reload', 'user_reload', 1));
        $user_select->setPageTitle(getTitleArea($lang->def('_TITLE_META_CERTIFICATE_ASSIGN'), 'certificate') . '<div class="std_block">');
        if (!isset($_POST['user_reload'])) {
            $query = "SELECT DISTINCT idUser" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $id_meta . "'";
            $result = sql_query($query);
            $user_reset = array();
            while (list($id_user) = sql_fetch_row($result)) {
                $user_reset[$id_user] = $id_user;
            }
            $user_select->resetSelection($user_reset);
        }
        $user_select->loadSelector('index.php?modname=meta_certificate&amp;op=modassignment', false, $lang->def('_USER_FOR_META_CERTIFICATE_ASSIGN'), true);
    }
}
Exemple #6
0
function report_certificate()
{
    require_once _base_ . '/lib/lib.form.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.certificate.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    require_once _base_ . '/lib/lib.table.php';
    checkPerm('view');
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $form = new Form();
    $certificate = new Certificate();
    $lang =& DoceboLanguage::createInstance('certificate', 'lms');
    if (isset($_GET['id_certificate'])) {
        $id_certificate = importVar('id_certificate', true, 0);
        $man_course = new Man_Course();
        $id_course = array();
        $id_course = $certificate->getCourseForCertificate($id_certificate);
        $course_info = array();
        $out->add(getTitleArea(array('index.php?modname=certificate&amp;op=certificate' => $lang->def('_TITLE_CERTIFICATE'), $lang->def('_COURSES'))) . '<div class="std_block">' . getBackUi('index.php?modname=certificate&amp;op=certificate', $lang->def('_BACK')));
        $tb = new Table(Get::sett('visuItem'), $lang->def('_CHOOSE_COURSE'), $lang->def('_COURSE_LIST'));
        $type_h = array('', '', 'min-cell');
        $cont_h = array($lang->def('_CODE'), $lang->def('_NAME'), $lang->def('_CERTIFICATE_REPORT'));
        $tb->setColsStyle($type_h);
        $tb->addHead($cont_h);
        foreach ($id_course as $course_id) {
            $course_info = $man_course->getCourseInfo($course_id);
            $cont = array($course_info['code'], '<a href="index.php?modname=certificate&amp;op=view_report_certificate&amp;id_certificate=' . $id_certificate . '&amp;id_course=' . $course_id . '">' . $course_info['name'] . '</a>', $certificate->getNumberOfCertificateForCourse($id_certificate, $course_info['idCourse']));
            $tb->addBody($cont);
        }
        $out->add($tb->getTable() . '<br/>' . getBackUi('index.php?modname=certificate&amp;op=certificate', $lang->def('_BACK')) . '</div>');
    } else {
        $out->add(getTitleArea($lang->def('_CERTIFICATE_REPORT'), 'certificate') . '<div class="std_block">');
        if (isset($_POST['toggle_filter'])) {
            unset($_POST['name_filter']);
            unset($_POST['code_filter']);
        }
        $out->add($form->openForm('certificate_filter', 'index.php?modname=certificate&amp;op=report_certificate') . $form->openElementSpace() . $form->getTextfield($lang->def('_NAME'), 'name_filter', 'name_filter', '255', isset($_POST['name_filter']) && $_POST['name_filter'] !== '' ? $_POST['name_filter'] : '') . $form->getTextfield($lang->def('_CODE'), 'code_filter', 'code_filter', '255', isset($_POST['code_filter']) && $_POST['code_filter'] !== '' ? $_POST['code_filter'] : '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('filter', 'filter', $lang->def('_FILTER')) . $form->getButton('toggle_filter', 'toggle_filter', $lang->def('_TOGGLE_FILTER')) . $form->closeButtonSpace() . $form->closeForm());
        if (isset($_POST['filter'])) {
            if ($_POST['name_filter'] !== '' && $_POST['code_filter'] !== '') {
                $certificate_info = $certificate->getCertificateList($_POST['name_filter'], $_POST['code_filter']);
            } elseif ($_POST['name_filter'] !== '') {
                $certificate_info = $certificate->getCertificateList($_POST['name_filter']);
            } elseif ($_POST['code_filter'] !== '') {
                $certificate_info = $certificate->getCertificateList(false, $_POST['code_filter']);
            } else {
                $certificate_info = $certificate->getCertificateList();
            }
        } else {
            $certificate_info = $certificate->getCertificateList();
        }
        $tb = new Table(Get::sett('visuItem'), $lang->def('_CHOOSE_CERTIFICATE'), $lang->def('_CERTIFICATE_LIST'));
        $type_h = array('', '');
        $cont_h = array($lang->def('_CODE'), $lang->def('_NAME'), $lang->def('_DESCRIPTION'));
        $tb->setColsStyle($type_h);
        $tb->addHead($cont_h);
        foreach ($certificate_info as $info_certificate) {
            $cont = array($info_certificate[CERT_CODE], '<a href="index.php?modname=certificate&amp;op=report_certificate&amp;id_certificate=' . $info_certificate[CERT_ID] . '">' . $info_certificate[CERT_NAME] . '</a>', $info_certificate[CERT_DESCR]);
            $tb->addBody($cont);
        }
        $out->add($tb->getTable() . '</div>');
    }
}
Exemple #7
0
function subscribeFromCourse()
{
    require_once _base_ . '/lib/lib.form.php';
    require_once $GLOBALS['where_framework'] . '/lib/lib.directory.php';
    require_once _base_ . '/lib/lib.userselector.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course_managment.php';
    $lang =& DoceboLanguage::CreateInstance('subscribe', 'lms');
    $back_url = 'index.php?modname=course&op=course_list';
    $acl_man =& Docebo::user()->getAclManager();
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $id_course = Get::req('id_course', DOTY_INT, 0);
    $edition_id = Get::req('edition_id', DOTY_INT, 0);
    $alert = Get::req('alert', DOTY_INT, 0);
    $delete_prev = Get::req('delete_from_prev', DOTY_INT, 0);
    $sel = new Course_Manager();
    if (isset($_POST['subscribe_import'])) {
        $course_info = Man_Course::getCourseInfo($id_course);
        $level_idst =& getCourseLevel($id_course);
        if (count($level_idst) == 0) {
            $level_idst =& DoceboCourse::createCourseLevel($id_course);
        }
        $course_selected = $sel->getCourseSelection($_POST);
        if (empty($course_selected)) {
            Util::jump_to('index.php?modname=course&op=course_list&result=err');
        }
        $id_course = Get::req('id_course', DOTY_INT, 0);
        $level = Get::req('level', DOTY_INT, 0);
        $status = Get::req('status', DOTY_INT, 0);
        $gsel = array();
        foreach ($course_selected as $trash => $id) {
            $gsel[$id] = getCourseLevel($id);
        }
        $query = "SELECT idUser, idCourse, level" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE idCourse IN (" . implode(',', $course_selected) . ")";
        if ($level) {
            $query .= " AND level = '" . $level . "'";
        }
        if ($status != '-2') {
            $query .= " AND status = '" . $status . "'";
        }
        $result = sql_query($query);
        $array_user = array();
        $user_subscribed = array();
        while (list($id_user, $id_prev_course, $lv_sel) = sql_fetch_row($result)) {
            if ($delete_prev) {
                removeSubscription($id_prev_course, $id_user, $gsel[$id_prev_course][$lv_sel]);
            }
            // Add in group for permission
            $acl_man->addToGroup($level_idst[$lv_sel], $id_user);
            // Add in table
            $re = sql_query("\r\n\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_courseuser\r\n\t\t\t( idUser, idCourse, edition_id, level, waiting, subscribed_by, date_inscr )\r\n\t\t\tVALUES\r\n\t\t\t( '" . $id_user . "', '" . $id_course . "', '" . $edition_id . "', '" . $lv_sel . "', '0', '" . getLogUserId() . "', '" . date("Y-m-d H:i:s") . "' )\t");
            if ($re) {
                $user_subscribed[] = $id_user;
                addUserToTimeTable($id_user, $id_course, $edition_id);
            }
        }
        Docebo::user()->loadUserSectionST('/lms/course/private/');
        Docebo::user()->SaveInSession();
        require_once _base_ . '/lib/lib.eventmanager.php';
        $array_subst = array('[url]' => Get::sett('url'), '[course]' => $course_info['name'], '[medium_time]' => $course_info['mediumTime'], '[course_name]' => $course_info['name'], '[course_code]' => $course['code']);
        if (!empty($user_subscribed) && $alert) {
            // message to user that is subscribed
            $msg_composer = new EventMessageComposer();
            $msg_composer->setSubjectLangText('email', '_NEW_USER_SUBSCRIBED_SUBJECT', false);
            $msg_composer->setBodyLangText('email', '_NEW_USER_SUBSCRIBED_TEXT', $array_subst);
            $msg_composer->setBodyLangText('sms', '_NEW_USER_SUBSCRIBED_TEXT_SMS', $array_subst);
            // send message to the user subscribed
            createNewAlert('UserCourseInserted', 'subscribe', 'insert', '1', 'User subscribed', $user_subscribed, $msg_composer);
        }
        Util::jump_to('index.php?modname=course&op=course_list&result=ok');
    }
    $sel->setLink('index.php?modname=meta_certificate&amp;op=new_assign');
    $sel->show_coursepath_selector = false;
    $sel->show_catalogue_selector = false;
    $array_level = CourseLevel::getLevels();
    $array_level['0'] = $lang->def('_ALL');
    $arr_status = array('-2' => $lang->def('_ALL'), _CUS_CONFIRMED => $lang->def('_USER_STATUS_CONFIRMED'), _CUS_SUBSCRIBED => $lang->def('_USER_STATUS_SUBS'), _CUS_BEGIN => $lang->def('_USER_STATUS_BEGIN'), _CUS_END => $lang->def('_USER_STATUS_END'), _CUS_SUSPEND => $lang->def('_SUSPENDED'), _CUS_CANCELLED => $lang->def('_USER_STATUS_CANCELLED'));
    $out->add(getTitleArea($lang->def('_IMPORT_FROM_COURSE')) . '<div class="std_block">' . Form::openForm('course_selection', 'index.php?modname=subscribe&amp;op=subscribe_from_course') . Form::openElementSpace() . Form::getDropdown($lang->def('_LEVEL_TO_IMPORT'), 'level', 'level', $array_level, isset($_POST['level']) ? $_POST['level'] : '0') . Form::getDropdown($lang->def('_STATUS_TO_IMPORT'), 'status', 'status', $arr_status, isset($_POST['status']) ? $_POST['status'] : '-2') . Form::getCheckbox($lang->def('_SEND_ALERT'), 'alert', 'alert', '1', $delete_prev) . Form::getCheckbox($lang->def('_DELETE'), 'delete_from_prev', 'delete_from_prev', '1', $delete_prev) . Form::closeElementSpace());
    $sel->loadSelector(false);
    $out->add(Form::getHidden('id_course', 'id_course', $id_course) . Form::getHidden('edition_id', 'edition_id', $edition_id) . Form::openButtonSpace() . Form::getBreakRow() . Form::getButton('subscribe_import', 'subscribe_import', $lang->def('_SUBSCRIBE')) . Form::getButton('undo_course', 'undo_course', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm() . '</div>');
}
Exemple #8
0
 public function delDate($id_date)
 {
     $res = false;
     $id_course = $this->getDateCourse($id_date);
     $subscribed = $this->getDateSubscribed($id_date);
     foreach ($subscribed as $id_user) {
         $control = $this->removeUserFromDate($id_user, $id_date, $id_course);
         if (!$control) {
             require_once _lms_ . '/admin/modules/subscribe/subscribe.php';
             require_once _lms_ . '/lib/lib.course.php';
             $docebo_course = new DoceboCourse($id_course);
             $course_man = new Man_Course();
             $course_info = $course_man->getCourseInfo($id_course);
             $date_begin = $course_info["date_begin"];
             $date_end = $course_info["date_end"];
             $group_levels = $docebo_course->getCourseLevel($id_course);
             $user_levels = getSubscribedLevel($id_course, false, false, 0);
             removeSubscription($id_course, $id_user, $group_levels[$user_levels[$id_user]], 0, $date_begin, $date_end);
         }
     }
     if ($this->clearDateDay($id_date)) {
         $query = "DELETE FROM " . $this->date_table . " WHERE id_date = " . $id_date;
         $res = sql_query($query);
     }
     return $res;
 }
function savePanel()
{
    checkPerm('mod');
    require_once _base_ . '/lib/lib.form.php';
    require_once _adm_ . '/lib/lib.publicadminmanager.php';
    require_once _lms_ . '/lib/lib.course.php';
    require_once _lms_ . '/lib/lib.date.php';
    require_once _lms_ . '/lib/lib.competences.php';
    $save = Get::req('save', DOTY_MIXED, false);
    $undo = Get::req('undo', DOTY_MIXED, false);
    $update = Get::req('update', DOTY_MIXED, false);
    $db = DbConn::getInstance();
    $lang =& DoceboLanguage::CreateInstance('public_coursepanel', 'lms');
    $man_competences = new Competences_Manager();
    //back page link
    $back_ui = getBackUi('index.php?modname=public_coursepanel&op=coursepanel', $lang->def('_BACK'));
    cout(getTitleArea($lang->def('_COURSEPANEL'), 'coursepanel') . '<div class="std_block">' . $back_ui, 'content');
    $sel_competence = Get::req('sel_competence', DOTY_INT, false);
    $sel_course = Get::req('sel_course', DOTY_INT, false);
    $required_filter = Get::req('required_filter', DOTY_INT, 0);
    $is_retraining = $man_competences->isRetrainingCourse($sel_course, $sel_competence);
    $back_url = "index.php?modname=public_coursepanel&op=coursepanel&sel_competence=" . (int) $sel_competence . "&sel_course=" . (int) $sel_course;
    if ($required_filter > 0) {
        $back_url .= '&required_filter=1';
    }
    $to_consider = Get::req('to_consider', DOTY_MIXED, false);
    if ($to_consider) {
        require_once _base_ . '/lib/lib.json.php';
        $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
        $to_consider = $json->decode(base64_decode($to_consider));
    } else {
        $to_consider = array('users' => array(), 'editions' => array());
    }
    if ($undo) {
        Util::jump_to("index.php");
    } elseif ($save) {
        //change users' subscription to course editions
        $data = Get::req('subscriptions', DOTY_MIXED, array());
        $man_course = new Man_Course();
        $course_info = $man_course->getCourseInfo($sel_course);
        if (!$sel_competence || !$sel_course) {
            //error ...
            Util::jump_to($back_url . "&err=invalid");
        }
        //check the admin level of the current user, if it's not an admin or the idst is invalid, return an error
        $id_pa = getLogUserId();
        if (!$id_pa) {
            Util::jump_to($back_url . "&err=invalid");
        }
        $acl_man = new DoceboACLManager();
        $admin_manager = new PublicAdminManager();
        $array_users = array();
        $idst_associated = $admin_manager->getAdminTree($id_pa);
        $array_users =& $acl_man->getAllUsersFromIdst($idst_associated);
        $array_users = array_unique($array_users);
        if (empty($array_users)) {
            Util::jump_to($back_url . "&err=invalid");
        }
        //filter array of user ids by competence
        $filtered_users = array();
        $query_filter = "SELECT id_user FROM %lms_competence_user WHERE id_user IN (" . implode(",", $array_users) . ") AND id_competence='" . (int) $sel_competence . "'";
        $res_filter = $db->query($query_filter);
        while (list($idst) = $db->fetch_row($res_filter)) {
            $filtered_users[] = $idst;
        }
        $subs_limit = array();
        $subs_count = array();
        if ($course_info['course_type'] == 'elearning') {
            $editions[] = $sel_course;
            $subscribed[$sel_course] = getSubscribed((int) $sel_course);
            $course_info = $man_course->getCourseInfo($sel_course);
            $subs_count[$sel_course] = count($data);
        } elseif ($course_info['course_type'] == 'classroom') {
            //get all combinations id_user - id_date
            $date_man = new DateManager();
            $editions = array();
            $query_editions = "SELECT id_date, id_course, code, name FROM %lms_course_date WHERE id_course='" . (int) $sel_course . "'";
            $res_editions = $db->query($query_editions);
            while (list($id_edition, $id_course, $code, $name) = $db->fetch_row($res_editions)) {
                $editions[] = $id_edition;
                $subscribed[$id_edition] = $date_man->getDateSubscribed($id_edition);
                $date_info = $date_man->getDateInfo($id_edition);
                $subs_limit[$id_edition] = array('max' => $date_info['max_par'], 'subs' => $date_info['user_subscribed']);
                $subs_count[$id_edition] = 0;
            }
        }
        //------------------------------------------------------------------------------
        //count the users to be subscribed/unsubscribed and check subscription limits, if any
        //subtract users to de-subscribe from courses
        foreach ($subscribed as $id_edition => $users_list) {
            foreach ($users_list as $id_user) {
                if ($course_info['course_type'] == 'elearning') {
                    if (!isset($data[$id_user])) {
                        $subs_count[$id_edition]--;
                    }
                } elseif ($course_info['course_type'] == 'classroom') {
                    //check if the current selection match the current subscriptions
                    if (!isset($data[$id_user][$id_edition])) {
                        $subs_count[$id_edition]--;
                    }
                }
            }
        }
        foreach ($data as $user => $edition_list) {
            //id user
            foreach ($edition_list as $edition => $val) {
                //id date edition
                if (isset($subscribed[$edition][$user])) {
                    //already subscribed, do nothing
                } else {
                    $subs_count[$edition]++;
                }
            }
        }
        //check if we have enough room to subscribe users
        //{at the moment, rely on js ...}
        //------------------------------------------------------------------------------
        //unsubscribe deselected users
        foreach ($subscribed as $id_edition => $users_list) {
            foreach ($users_list as $id_user) {
                if ($course_info['course_type'] == 'elearning') {
                    if (!isset($data[$id_user])) {
                        if (in_array($id_user, $to_consider['users']) && in_array($id_edition, $to_consider['editions'])) {
                            $group_levels = DoceboCourse::getCourseLevel($sel_course);
                            $user_levels = getSubscribedLevel($sel_course, false, false, 0);
                            $_res = _removeCourseSubscription($sel_course, $id_user, $group_levels[$user_levels[$id_user]], 0);
                        }
                    }
                } elseif ($course_info['course_type'] == 'classroom') {
                    //check if the current selection match the current subscriptions
                    if (!isset($data[$id_user][$id_edition])) {
                        if (in_array($id_user, $to_consider['users']) && in_array($id_edition, $to_consider['editions'])) {
                            $date_man->removeUserFromDate($id_user, $id_edition, $sel_course);
                        }
                    }
                }
            }
        }
        //------------------------------------------------------------------------------
        //check every single user for inscription
        $count = 0;
        $lv_sel = 3;
        //student level
        $waiting = 0;
        //don't subscribe as "waiting for approvation"
        //retrive id of group of the course for the varioud level
        $level_idst = DoceboCourse::getCourseLevel((int) $sel_course);
        //if the group doesn't exists create it
        if (count($level_idst) == 0 || $level_idst[1] == '') {
            $level_idst =& DoceboCourse::createCourseLevel((int) $sel_course);
        }
        foreach ($data as $user => $edition_list) {
            //id user
            foreach ($edition_list as $edition => $val) {
                //id date edition
                if (isset($subscribed[$edition][$user])) {
                    //already subscribed, do nothing
                } else {
                    //this user is to be subscribed, do it
                    //add to level group of the course
                    $acl_man->addToGroup($level_idst[$lv_sel], $user);
                    // Add in table
                    $re = $db->query("INSERT INTO %lms_courseuser (idUser, idCourse, edition_id, level, waiting, subscribed_by, date_inscr)" . " VALUES ( '" . (int) $user . "', '" . (int) $sel_course . "', '0', '" . $lv_sel . "', '" . $waiting . "', '" . getLogUserId() . "', '" . date("Y-m-d H:i:s") . "' )\t");
                    //additional operations for editions
                    if ($course_info['course_type'] == 'elearning') {
                        //...
                    } elseif ($course_info['course_type'] == 'classroom') {
                        $ret = $date_man->addUserToDate($edition, $user, getLogUserId());
                        if ($ret) {
                            $count++;
                        }
                    }
                }
            }
        }
        Util::jump_to($back_url . "&err=ok&count=" . (int) $count);
    } elseif ($update) {
        $sel_competence = Get::req('sel_competence', DOTY_INT, false);
        $sel_course = Get::req('sel_course', DOTY_INT, false);
        Util::jump_to($back_url);
        //."&sel_competence=".(int)$sel_competence."&sel_course=".(int)$sel_course);
    } else {
        //...
    }
    cout($back_ui . '</div>', 'content');
}
 function getSubstitution()
 {
     $subs = array();
     $lang =& DoceboLanguage::createInstance('course', 'lms');
     $lang =& DoceboLanguage::createInstance('certificate', 'lms');
     if ($this->id_meta != 0) {
         require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
         require_once $GLOBALS['where_lms'] . '/lib/lib.coursereport.php';
         $acl_man =& $GLOBALS['current_user']->getAclManager();
         $courses = array();
         $array_coursetype = array('elearning' => $lang->def('_COURSE_TYPE_ELEARNING', 'course', 'lms'), 'classroom' => $lang->def('_CLASSROOM', 'course', 'lms'), 'web_seminar' => $lang->def('Web seminar'));
         $course_time = 0;
         $blended_time = 0;
         $query = "SELECT DISTINCT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_certificate_meta_course" . " WHERE idMetaCertificate = '" . $this->id_meta . "'" . " AND idUser = '******'";
         $result = sql_query($query);
         $table_course = '<table width="100%" cellspacing="1" cellpadding="1" border="1" align="" summary="Corsi frequentati">' . '<thead>' . '<tr>' . '<td>' . $lang->def('_COURSE_NAME') . '</td>' . '<td>' . $lang->def('_COURSE_TYPE') . '</td>' . '<td align="right">' . $lang->def('_COURSE_TIME') . '</td>' . '</tr>' . '</thead>' . '</tbody>';
         $table_blended = '<table width="100%" cellspacing="1" cellpadding="1" border="1" align="" summary="Corsi frequentati">' . '<thead>' . '<tr>' . '<td>' . $lang->def('_COURSE_NAME') . '</td>' . '<td>' . $lang->def('_COURSE_PROF') . '</td>' . '<td>' . $lang->def('_COURSE_TYPE') . '</td>' . '<td align="right">' . $lang->def('_COURSE_TIME') . '</td>' . '</thead>' . '</tbody>';
         $course_count = 0;
         $blended_count = 0;
         $array_meta_complete = array();
         $array_meta_inscr = array();
         $array_meta_access = array();
         while (list($id_course) = sql_fetch_row($result)) {
             $query = "SELECT date_complete, date_inscr, date_first_access" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE idCourse = '" . $id_course . "'" . " AND idUser = '******'";
             list($date_complete_meta, $date_inscr_meta, $date_access_meta) = sql_fetch_row(sql_query($query));
             $array_meta_complete[] = $date_complete_meta;
             $array_meta_inscr[] = $date_inscr_meta;
             $array_meta_access[] = $date_access_meta;
             $man_course = new Man_Course();
             $course_info = $man_course->getCourseInfo($id_course);
             $rep_man = new CourseReportManager();
             $score_course = $rep_man->getUserFinalScore(array($this->id_user), array($this->id_course));
             if ($course_info['course_type'] === 'blended') {
                 $teacher_array = getSubscribed($id_course, false, 6, true);
                 $first = true;
                 if (is_array($teacher_array) && !empty($teacher_array)) {
                     while (list(, $id_teach) = each($teacher_array)) {
                         $teacher_info = $acl_man->getUser($id_teach);
                         if ($first) {
                             $teacher = $teacher_info[ACL_INFO_FIRSTNAME] . ' ' . $teacher_info[ACL_INFO_LASTNAME];
                             $first = false;
                         } else {
                             $teacher = '<br/>' . $teacher_info[ACL_INFO_FIRSTNAME] . ' ' . $teacher_info[ACL_INFO_LASTNAME];
                         }
                     }
                 } else {
                     $teacher = '&nbsp;';
                 }
                 $table_blended .= '<tr>' . '<td>' . $course_info['name'] . '</td>' . '<td>' . $teacher . '</td>' . '<td>' . $array_coursetype[$course_info['course_type']] . '</td>' . '<td align="right">' . $course_info['mediumTime'] . '</td>' . '</tr>';
                 $blended_time += $course_info['mediumTime'];
                 $blended_count++;
             } else {
                 $table_course .= '<tr>' . '<td>' . $course_info['name'] . '</td>' . '<td>' . $array_coursetype[$course_info['course_type']] . '</td>' . '<td align="right">' . $course_info['mediumTime'] . '</td>' . '</tr>';
                 $course_time += $course_info['mediumTime'];
                 $course_count++;
             }
         }
         $table_course .= '<tr>' . '<td align="right" colspan="2">' . $lang->def('_TOTAL_HOURS') . '</td>' . '<td align="right">' . $course_time . '</td>' . '</tr>' . '</tbody>' . '</table>';
         $table_blended .= '<tr>' . '<td align="right" colspan="2">' . $lang->def('_TOTAL_HOURS') . '</td>' . '<td align="right">' . $blended_time . '</td>' . '</tr>' . '</tbody>' . '</table>';
         rsort($array_meta_complete);
         sort($array_meta_inscr);
         sort($array_meta_access);
         $subs['[meta_complete]'] = $array_meta_complete[0];
         $subs['[meta_inscr]'] = $array_meta_inscr[0];
         $subs['[meta_access]'] = $array_meta_access[0];
         $subs['[table_course]'] = $course_count ? $table_course : '';
         $subs['[table_blended]'] = $blended_count ? $table_blended : '';
     } else {
         require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
         $courseuser = new Man_CourseUser();
         $course_stat =& $courseuser->getUserCourses($this->id_user, false, false, false, array($this->id_course));
         if (isset($course_stat[$this->id_course])) {
             $subs['[date_enroll]'] = Format::date($course_stat[$this->id_course]['date_inscr'], 'date');
             $subs['[date_first_access]'] = Format::date($course_stat[$this->id_course]['date_first_access'], 'date');
             $subs['[date_complete]'] = Format::date($course_stat[$this->id_course]['date_complete'], 'date');
             $subs['[date_complete_year]'] = substr($course_stat[$this->id_course]['date_complete'], 0, 4);
         } else {
             $subs['[date_enroll]'] = '';
             $subs['[date_first_access]'] = '';
             $subs['[date_complete]'] = '';
             $subs['[date_complete_year]'] = '';
         }
         require_once $GLOBALS['where_lms'] . '/lib/lib.orgchart.php';
         $org_man = new OrganizationManagement($this->id_course);
         $score_start = $org_man->getStartObjectScore(array($this->id_user), array($this->id_course));
         $score_final = $org_man->getFinalObjectScore(array($this->id_user), array($this->id_course));
         require_once $GLOBALS['where_lms'] . '/lib/lib.coursereport.php';
         $rep_man = new CourseReportManager();
         $score_course = $rep_man->getUserFinalScore(array($this->id_user), array($this->id_course));
         $subs['[test_score_start]'] = isset($score_start[$this->id_course][$this->id_user]) ? $score_start[$this->id_course][$this->id_user]['score'] : '';
         $subs['[test_score_start_max]'] = isset($score_start[$this->id_course][$this->id_user]) ? $score_start[$this->id_course][$this->id_user]['max_score'] : '';
         $subs['[test_score_final]'] = isset($score_final[$this->id_course][$this->id_user]) ? $score_final[$this->id_course][$this->id_user]['score'] : '';
         $subs['[test_score_final_max]'] = !empty($score_final[$this->id_course][$this->id_user]['max_score']) ? $score_final[$this->id_course][$this->id_user]['max_score'] : '100';
         $subs['[course_score_final]'] = isset($score_course[$this->id_user][$this->id_course]) ? $score_course[$this->id_user][$this->id_course]['score'] : '';
         $subs['[course_score_final_max]'] = isset($score_course[$this->id_user][$this->id_course]) ? $score_course[$this->id_user][$this->id_course]['max_score'] : '';
         require_once $GLOBALS['where_lms'] . '/lib/lib.track_user.php';
         $time_in = TrackUser::getUserTotalCourseTime($this->id_user, $this->id_course);
         $hours = (int) ($time_in / 3600);
         $minutes = (int) ($time_in % 3600 / 60);
         $seconds = (int) ($time_in % 60);
         if ($minutes < 10) {
             $minutes = '0' . $minutes;
         }
         if ($seconds < 10) {
             $seconds = '0' . $seconds;
         }
         $subs['[total_time]'] = $hours . 'h ' . $minutes . 'm ' . $seconds . 's';
         $subs['[total_time_hour]'] = $hours;
         $subs['[total_time_minute]'] = $minutes;
         $subs['[total_time_second]'] = $seconds;
     }
     return $subs;
 }
 function approveusers()
 {
     if (!$this->permissions['moderate']) {
         die("You can't access");
     }
     require_once _lms_ . '/lib/lib.course.php';
     require_once _base_ . '/lib/lib.preference.php';
     $id_course = Get::req('id_course', DOTY_INT, 0);
     $course_info = Man_Course::getCourseInfo($id_course);
     $edition_id = Get::req('id_edition', DOTY_INT, 0);
     $re = true;
     $approve_user = array();
     $deny_user = array();
     if (isset($_POST['waiting_user'])) {
         $man_course = new Man_Course();
         $waiting_users =& $man_course->getWaitingSubscribed($id_course);
         $tot_deny = array();
         require_once _lms_ . '/lib/lib.course.php';
         require_once _lms_ . '/admin/modules/subscribe/subscribe.php';
         $docebo_course = new DoceboCourse($id_course);
         $group_levels = $docebo_course->getCourseLevel($id_course);
         if (count($group_levels) == 0 || $group_levels[1] == '') {
             $group_levels =& $docebo_course->createCourseLevel($id_course);
         }
         while (list($id_user, $action) = each($_POST['waiting_user'])) {
             if ($action == 0) {
                 // approved -----------------------------------------------
                 $text_query = "\r\n\t\t\t\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_courseuser\r\n\t\t\t\t\tSET waiting = 0,\r\n\t\t\t\t\t\tstatus = '" . _CUS_SUBSCRIBED . "'\r\n\t\t\t\t\tWHERE idCourse = '" . $id_course . "' AND idUser = '******' ";
                 $text_query .= "AND edition_id='" . $edition_id . "'";
                 $result = sql_query($text_query);
                 if ($result) {
                     $approve_user[] = $id_user;
                 }
                 $re &= $result;
             } elseif ($action == 1) {
                 // refused --------------------------------------------------
                 $level = $waiting_users['users_info'][$id_user]['level'];
                 $sub_by = $waiting_users['users_info'][$id_user]['subscribed_by'];
                 $result = removeSubscription($id_course, $id_user, $group_levels[$level], $edition_id);
                 if ($sub_by != 0 && $id_user != $sub_by) {
                     if (isset($tot_deny[$sub_by])) {
                         $tot_deny[$sub_by]++;
                     } else {
                         $tot_deny[$sub_by] = 1;
                     }
                 }
                 if ($result) {
                     $deny_user[] = $id_user;
                 }
                 $re &= $result;
             }
         }
     }
     if (!empty($tot_deny)) {
         while (list($id_user, $inc) = each($tot_deny)) {
             $pref = new UserPreferences($id_user);
             $max_subscribe = $pref->getAdminPreference('admin_rules.max_course_subscribe');
             $pref->setPreference('admin_rules.max_course_subscribe', $max_subscribe + $inc);
         }
     }
     require_once _base_ . '/lib/lib.eventmanager.php';
     $array_subst = array('[url]' => Get::sett('url'), '[course]' => $course_info['name']);
     if (!empty($approve_user)) {
         $msg_composer = new EventMessageComposer();
         $msg_composer->setSubjectLangText('email', '_APPROVED_SUBSCRIBED_SUBJECT', false);
         $msg_composer->setBodyLangText('email', '_APPROVED_SUBSCRIBED_TEXT', $array_subst);
         $msg_composer->setBodyLangText('email', "\n\n" . $_POST['subscribe_accept'], array(), true);
         $msg_composer->setBodyLangText('sms', '_APPROVED_SUBSCRIBED_TEXT_SMS', $array_subst);
         // send message to the user subscribed
         createNewAlert('UserCourseInserted', 'subscribe', 'approve', '1', 'User course approve', $approve_user, $msg_composer, true);
     }
     if (!empty($deny_user)) {
         $msg_composer = new EventMessageComposer();
         $msg_composer->setSubjectLangText('email', '_DENY_SUBSCRIBED_SUBJECT', false);
         $msg_composer->setBodyLangText('email', '_DENY_SUBSCRIBED_TEXT', $array_subst);
         $msg_composer->setBodyLangText('email', "\n\n" . $_POST['subscribe_refuse'], array(), true);
         $msg_composer->setSubjectLangText('sms', '_DENY_SUBSCRIBED_SUBJECT_SMS', false);
         $msg_composer->setBodyLangText('sms', '_DENY_SUBSCRIBED_TEXT_SMS', $array_subst);
         // send message to the user subscribed
         createNewAlert('UserCourseInserted', 'subscribe', 'deny', '1', 'User course deny', $deny_user, $msg_composer, true);
     }
     Util::jump_to('index.php?r=' . $this->link_course . '/show&res=' . ($re ? 'ok' : 'err'));
 }
function getCourseEditionTable($course_id)
{
    $res = "";
    require_once _base_ . '/lib/lib.table.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    $lang_c =& DoceboLanguage::createInstance('catalogue');
    $lang =& DoceboLanguage::createInstance('course');
    /*
    	$qtxt ="SELECT name FROM ".$GLOBALS["prefix_lms"]."_course ";
    	$qtxt.="WHERE idCourse = '".(int)$course_id."'";
    	list($course_name)=sql_fetch_row(sql_query($qtxt));
    */
    $man_course = new Man_Course();
    $course = $man_course->getCourseInfo($course_id);
    $course_name = $course["name"];
    $subs_lang = array(0 => $lang->def('_COURSE_S_GODADMIN'), 1 => $lang->def('_COURSE_S_MODERATE'), 2 => $lang->def('_COURSE_S_FREE'), 3 => $lang->def('_COURSE_S_SECURITY_CODE'));
    $tab = new Table(0, $lang->def('_EDITIONS') . ": " . $course_name, $lang->def('_EDITIONS'));
    $tab->setTableStyle('edition_block');
    $cont_h[] = $lang->def('_CODE');
    $type_h[] = 'code_course';
    $cont_h[] = $lang->def('_COURSE');
    $type_h[] = '';
    $cont_h[] = $lang->def('_SUBSCRIBE_METHOD');
    $type_h[] = 'image nowrap';
    $cont_h[] = $lang->def('_ENROL_COUNT');
    $type_h[] = 'image nowrap';
    $cont_h[] = $lang->def('_CREATION_DATE');
    $type_h[] = 'image nowrap';
    $cont_h[] = $lang->def('_SUBSCRIPTION', 'course');
    $type_h[] = 'image nowrap';
    $tab->setColsStyle($type_h);
    $tab->addHead($cont_h);
    $qtxt = "SELECT t1.*, COUNT(t2.idUser) as enrolled ";
    $qtxt .= "FROM " . $GLOBALS["prefix_lms"] . "_course_edition as t1 ";
    $qtxt .= "\tLEFT JOIN " . $GLOBALS['prefix_lms'] . "_courseuser AS t2 ON ( t1.idCourseEdition = t2.edition_id ) ";
    $qtxt .= "WHERE t1.idCourse='" . (int) $course_id . "' ";
    $qtxt .= "\tAND t1.status <> '" . CST_PREPARATION . "' ";
    $qtxt .= "GROUP BY t1.idCourseEdition  ";
    $qtxt .= "ORDER BY t1.date_begin ";
    //$res.=$qtxt;
    $q = sql_query($qtxt);
    if ($q && mysql_num_rows($q) > 0) {
        while ($row = mysql_fetch_assoc($q)) {
            $cont = array();
            $cont[] = $row["code"];
            $edition_id = $row["idCourseEdition"];
            $url = "index.php?modname=coursecatalogue&amp;op=editiondetails&amp;edition_id=" . $edition_id;
            $url .= "&amp;course_id=" . $course_id;
            $cont[] = '<a href="' . $url . '">' . $row["name"] . "</a>\n";
            $cont[] = $subs_lang[$course["subscribe_method"]];
            $cont[] = $row["enrolled"];
            $cont[] = createDateDistance($course["create_date"], "coursecatalogue");
            $cont[] = getSubscribeActionLink($course_id, $course, $lang, $edition_id);
            $tab->addBody($cont);
        }
        $res .= $tab->getTable();
    } else {
        $res = FALSE;
    }
    return $res;
}
 function _printTable_users($type, &$acl_man, &$id_courses, &$num_iscr, &$num_nobegin, &$num_itinere, &$num_end, &$time_in_course, $filter_cols, $show_percent, $show_classrooms_editions, &$classrooms_editions_info)
 {
     require_once _lms_ . '/admin/modules/report/report_tableprinter.php';
     $buffer = new ReportTablePrinter($type);
     $output = '';
     require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
     $lang =& DoceboLanguage::createInstance('course', 'lms');
     $course_lang =& DoceboLanguage::createInstance('course', 'lms');
     $rg_lang =& DoceboLanguage::createInstance('report', 'framework');
     $colspan_course = 0;
     if (in_array('_CODE_COURSE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_NAME_COURSE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_COURSE_CATEGORY', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_COURSESTATUS', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_COURSECATALOGUE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_PUBLICATION_DATE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_LANGUAGE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_DIFFICULT', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_DATE_BEGIN', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_DATE_END', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_TIME_BEGIN', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_TIME_END', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_MAX_NUM_SUBSCRIBED', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_MIN_NUM_SUBSCRIBED', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_CREDITS', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_PRICE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_ADVANCE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_COURSE_TYPE', $filter_cols)) {
         $colspan_course++;
     }
     if (in_array('_AUTOREGISTRATION_CODE', $filter_cols)) {
         $colspan_course++;
     }
     $colspan_classrooms_editions = 0;
     if ($show_classrooms_editions) {
         if (in_array('_TH_CLASSROOM_CODE', $filter_cols)) {
             $colspan_classrooms_editions++;
         }
         if (in_array('_TH_CLASSROOM_NAME', $filter_cols)) {
             $colspan_classrooms_editions++;
         }
         if (in_array('_TH_CLASSROOM_MIN_DATE', $filter_cols)) {
             $colspan_classrooms_editions++;
         }
         if (in_array('_TH_CLASSROOM_MAX_DATE', $filter_cols)) {
             $colspan_classrooms_editions++;
         }
     }
     $colspan_stats = 0;
     if (in_array('_INSCR', $filter_cols)) {
         $colspan_stats++;
     }
     if (in_array('_MUSTBEGIN', $filter_cols)) {
         $colspan_stats += $show_percent ? 2 : 1;
     }
     if (in_array('_USER_STATUS_BEGIN', $filter_cols)) {
         $colspan_stats += $show_percent ? 2 : 1;
     }
     if (in_array('_COMPLETECOURSE', $filter_cols)) {
         $colspan_stats += $show_percent ? 2 : 1;
     }
     $buffer->openTable();
     $th1 = array(array('colspan' => $colspan_course + $colspan_classrooms_editions, 'style' => 'align-center', 'value' => $lang->def('_COURSE')), array('colspan' => $colspan_stats, 'style' => 'align-center', 'value' => $rg_lang->def('_USERS')));
     $th2 = array();
     $th2[] = array('colspan' => $colspan_course, 'value' => '');
     if ($show_classrooms_editions) {
         $th2[] = array('colspan' => $colspan_classrooms_editions, 'style' => 'align-center', 'value' => Lang::t('_CLASSROOM', 'classroom'));
     }
     if (in_array('_INSCR', $filter_cols)) {
         $th2[] = array('style' => 'align-center', 'value' => $rg_lang->def('_USER_STATUS_SUBS'));
     }
     if (in_array('_MUSTBEGIN', $filter_cols)) {
         $th2[] = array('colspan' => $show_percent ? 2 : 1, 'style' => 'align-center', 'value' => $rg_lang->def('_MUSTBEGIN'));
     }
     if (in_array('_USER_STATUS_BEGIN', $filter_cols)) {
         $th2[] = array('colspan' => $show_percent ? 2 : 1, 'style' => 'align-center', 'value' => $rg_lang->def('_USER_STATUS_BEGIN'));
     }
     if (in_array('_COMPLETECOURSE', $filter_cols)) {
         $th2[] = array('colspan' => $show_percent ? 2 : 1, 'style' => 'align-center', 'value' => $rg_lang->def('_COMPLETED'));
     }
     $th3 = array();
     if (in_array('_CODE_COURSE', $filter_cols)) {
         $th3[] = $lang->def('_COURSE_CODE');
     }
     if (in_array('_NAME_COURSE', $filter_cols)) {
         $th3[] = $lang->def('_COURSE_NAME');
     }
     if (in_array('_COURSE_CATEGORY', $filter_cols)) {
         $th3[] = $lang->def('_CATEGORY');
     }
     if (in_array('_COURSESTATUS', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_STATUS'));
     }
     if (in_array('_COURSECATALOGUE', $filter_cols)) {
         $th3[] = $lang->def('_CATALOGUE');
     }
     if (in_array('_PUBLICATION_DATE', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_CREATION_DATE'));
     }
     if (in_array('_LANGUAGE', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_COURSE_LANG_METHOD'));
     }
     if (in_array('_DIFFICULT', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_DIFFICULTY'));
     }
     if (in_array('_DATE_BEGIN', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_DATE_BEGIN'));
     }
     if (in_array('_DATE_END', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_DATE_END'));
     }
     if (in_array('_TIME_BEGIN', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_HOUR_BEGIN'));
     }
     if (in_array('_TIME_END', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_HOUR_END'));
     }
     if (in_array('_MAX_NUM_SUBSCRIBED', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_MAX_NUM_SUBSCRIBE'));
     }
     if (in_array('_MIN_NUM_SUBSCRIBED', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_MIN_NUM_SUBSCRIBE'));
     }
     if (in_array('_CREDITS', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => Lang::t('_CREDITS', 'standard'));
     }
     if (in_array('_PRICE', $filter_cols)) {
         $th3[] = $lang->def('_COURSE_PRIZE');
     }
     if (in_array('_ADVANCE', $filter_cols)) {
         $th3[] = $lang->def('_COURSE_ADVANCE');
     }
     if (in_array('_COURSE_TYPE', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $lang->def('_COURSE_TYPE'));
     }
     if (in_array('_AUTOREGISTRATION_CODE', $filter_cols)) {
         $th3[] = $lang->def('_AUTOREGISTRATION_CODE');
     }
     if ($show_classrooms_editions) {
         if (in_array('_TH_CLASSROOM_CODE', $filter_cols)) {
             $th3[] = Lang::t('_NAME', 'standard');
         }
         if (in_array('_TH_CLASSROOM_NAME', $filter_cols)) {
             $th3[] = Lang::t('_CODE', 'standard');
         }
         if (in_array('_TH_CLASSROOM_MIN_DATE', $filter_cols)) {
             $th3[] = array('style' => 'align-center', 'value' => Lang::t('_DATE_BEGIN', 'standard'));
         }
         if (in_array('_TH_CLASSROOM_MAX_DATE', $filter_cols)) {
             $th3[] = array('style' => 'align-center', 'value' => Lang::t('_DATE_END', 'standard'));
         }
     }
     if (in_array('_INSCR', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM'));
     }
     if (in_array('_MUSTBEGIN', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM', 'report'));
         if ($show_percent) {
             $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_PERC'));
         }
     }
     if (in_array('_USER_STATUS_BEGIN', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM', 'report'));
         if ($show_percent) {
             $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_PERC'));
         }
     }
     if (in_array('_COMPLETECOURSE', $filter_cols)) {
         $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_NUM', 'report'));
         if ($show_percent) {
             $th3[] = array('style' => 'align-center', 'value' => $rg_lang->def('_PERC'));
         }
     }
     if (in_array('_TOTAL_SESSION', $filter_cols)) {
         $th1[] = array('style' => 'align-center', 'value' => $rg_lang->def('_TOTAL_SESSION'));
         $th2[] = '';
         $th3[] = '';
     }
     $buffer->openHeader();
     $buffer->addHeader($th1);
     $buffer->addHeader($th2);
     $buffer->addHeader($th3);
     $buffer->closeHeader();
     $i = 0;
     $tot_iscr = $tot_itinere = $tot_nobegin = $tot_comple = '';
     $tot_perc_itinere = $tot_perc_nobegin = $tot_perc_comple = '';
     $total_time = 0;
     $array_status = array(CST_PREPARATION => $lang->def('_CST_PREPARATION', 'course', 'lms'), CST_AVAILABLE => $lang->def('_CST_AVAILABLE', 'course', 'lms'), CST_EFFECTIVE => $lang->def('_CST_CONFIRMED', 'course', 'lms'), CST_CONCLUDED => $lang->def('_CST_CONCLUDED', 'course', 'lms'), CST_CANCELLED => $lang->def('_CST_CANCELLED', 'course', 'lms'));
     //extract course categories
     $query = "SELECT idCategory, path" . " FROM " . $GLOBALS['prefix_lms'] . "_category";
     $result = sql_query($query);
     $array_category = array(0 => $lang->def('_NONE'));
     while (list($id_cat, $name_cat) = sql_fetch_row($result)) {
         $array_category[$id_cat] = substr($name_cat, 5, strlen($name_cat) - 5);
     }
     //strrpos($name_cat, '/') + 1 );
     //extract course catalogues and relations
     $query = "SELECT idCatalogue, name" . " FROM " . $GLOBALS['prefix_lms'] . "_catalogue";
     $result = sql_query($query);
     $array_catalogue = array();
     while (list($id_cat, $name_cat) = sql_fetch_row($result)) {
         $array_catalogue[$id_cat] = $name_cat;
     }
     //strrpos($name_cat, '/') + 1 );
     $catalogue_entries = array();
     $query = "select * FROM " . $GLOBALS['prefix_lms'] . "_catalogue_entry ";
     //where idst_member in (...)
     $result = sql_query($query);
     while (list($idcat, $entry, $type) = sql_fetch_row($result)) {
         switch ($type) {
             case 'course':
                 if (!isset($catalogue_entries[$entry])) {
                     $catalogue_entries[$entry] = array();
                 }
                 $catalogue_entries[$entry][] = $idcat;
                 break;
             case 'coursepath':
                 //...
                 break;
         }
         //end switch
     }
     $difficult_trans = array('veryeasy' => Lang::t('_DIFFICULT_VERYEASY', 'standard'), 'easy' => Lang::t('_DIFFICULT_EASY', 'standard'), 'medium' => Lang::t('_DIFFICULT_MEDIUM', 'standard'), 'difficult' => Lang::t('_DIFFICULT_DIFFICULT', 'standard'), 'verydifficult' => Lang::t('_DIFFICULT_VERYDIFFICULT', 'standard'));
     $course_man = new Man_Course();
     $buffer->openBody();
     while (list($index, $course_info) = each($id_courses)) {
         $idc = $id_date = 0;
         if ($show_classrooms_editions) {
             if (isset($course_info['course_type']) && $course_info['course_type'] == 'classroom') {
                 list($idc, $id_date) = explode('_', $index);
             } else {
                 $idc = $index;
             }
         } else {
             $idc = $index;
         }
         $info_course = $course_man->getCourseInfo($idc);
         $code_c = $course_info['code'];
         $name_c = $course_info['name'];
         $_date_create = $info_course['create_date'] != '0000-00-00 00:00:00' && $info_course['create_date'] != "" ? Format::date($info_course['create_date'], 'datetime') : "";
         $_date_begin = $info_course['date_begin'] != '0000-00-00 00:00:00' && $info_course['date_begin'] != "" ? Format::date($info_course['date_begin'], 'datetime') : "";
         $_date_end = $info_course['date_end'] != '0000-00-00 00:00:00' && $info_course['date_end'] != "" ? Format::date($info_course['date_end'], 'datetime') : "";
         $trow = array();
         if (in_array('_CODE_COURSE', $filter_cols)) {
             $trow[] = addslashes($code_c);
         }
         if (in_array('_NAME_COURSE', $filter_cols)) {
             $trow[] = addslashes($name_c);
         }
         if (in_array('_COURSE_CATEGORY', $filter_cols)) {
             $trow[] = $array_category[$info_course['idCategory']];
         }
         if (in_array('_COURSESTATUS', $filter_cols)) {
             $trow[] = isset($array_status[$info_course['status']]) ? $array_status[$info_course['status']] : '';
         }
         if (in_array('_COURSECATALOGUE', $filter_cols)) {
             $temp = array();
             if (isset($catalogue_entries[$info_course['idCourse']])) {
                 foreach ($catalogue_entries[$info_course['idCourse']] as $idcat) {
                     $temp[] = $array_catalogue[$idcat];
                 }
             }
             $trow[] = implode(', ', $temp);
         }
         if (in_array('_PUBLICATION_DATE', $filter_cols)) {
             $trow[] = array('style' => 'align-center', 'value' => $_date_create);
         }
         if (in_array('_LANGUAGE', $filter_cols)) {
             $trow[] = $info_course['lang_code'];
         }
         if (in_array('_DIFFICULT', $filter_cols)) {
             $trow[] = isset($difficult_trans[$info_course['difficult']]) ? $difficult_trans[$info_course['difficult']] : "";
         }
         if (in_array('_DATE_BEGIN', $filter_cols)) {
             $trow[] = array('style' => 'align-center', 'value' => $_date_begin);
         }
         if (in_array('_DATE_END', $filter_cols)) {
             $trow[] = array('style' => 'align-center', 'value' => $_date_end);
         }
         if (in_array('_TIME_BEGIN', $filter_cols)) {
             $trow[] = $info_course['hour_begin'] < 0 ? '' : $info_course['hour_begin'];
         }
         if (in_array('_TIME_END', $filter_cols)) {
             $trow[] = $info_course['hour_end'] < 0 ? '' : $info_course['hour_end'];
         }
         if (in_array('_MAX_NUM_SUBSCRIBED', $filter_cols)) {
             $trow[] = $info_course['max_num_subscribe'] ? $info_course['max_num_subscribe'] : '';
         }
         if (in_array('_MIN_NUM_SUBSCRIBED', $filter_cols)) {
             $trow[] = $info_course['min_num_subscribe'] ? $info_course['min_num_subscribe'] : '';
         }
         if (in_array('_CREDITS', $filter_cols)) {
             $trow[] = isset($info_course['credits']) ? $info_course['credits'] : '';
         }
         if (in_array('_PRICE', $filter_cols)) {
             $trow[] = $info_course['prize'] != '' ? $info_course['prize'] : '0';
         }
         if (in_array('_ADVANCE', $filter_cols)) {
             $trow[] = $info_course['advance'] != '' ? $info_course['advance'] : '0';
         }
         if (in_array('_COURSE_TYPE', $filter_cols)) {
             $trow[] = array('style' => 'align-center', 'value' => $this->_translateCourseType($info_course['course_type']));
         }
         if (in_array('_AUTOREGISTRATION_CODE', $filter_cols)) {
             $trow[] = $info_course['autoregistration_code'];
         }
         if ($show_classrooms_editions) {
             $e_code = $e_name = $date_1 = $date_2 = '';
             if ($id_date > 0 && isset($classrooms_editions_info['classrooms'][$id_date])) {
                 $e_code = $classrooms_editions_info['classrooms'][$id_date]->code;
                 $e_name = $classrooms_editions_info['classrooms'][$id_date]->name;
                 $date_1 = Format::date($classrooms_editions_info['classrooms'][$id_date]->date_1, 'datetime');
                 $date_2 = Format::date($classrooms_editions_info['classrooms'][$id_date]->date_2, 'datetime');
             }
             if (in_array('_TH_CLASSROOM_CODE', $filter_cols)) {
                 $trow[] = $e_code;
             }
             if (in_array('_TH_CLASSROOM_NAME', $filter_cols)) {
                 $trow[] = $e_name;
             }
             if (in_array('_TH_CLASSROOM_MIN_DATE', $filter_cols)) {
                 $trow[] = array('style' => 'align-center', 'value' => $date_1);
             }
             if (in_array('_TH_CLASSROOM_MAX_DATE', $filter_cols)) {
                 $trow[] = array('style' => 'align-center', 'value' => $date_2);
             }
         }
         if (isset($num_iscr[$index])) {
             if (in_array('_INSCR', $filter_cols)) {
                 $trow[] = array('style' => 'img-cell', 'value' => $num_iscr[$index]);
             }
             $tot_iscr += $num_iscr[$index];
             //no begin course
             if (in_array('_MUSTBEGIN', $filter_cols)) {
                 if (isset($num_nobegin[$index])) {
                     $perc = $num_nobegin[$index] / $num_iscr[$index] * 100;
                     $tot_nobegin += $num_nobegin[$index];
                     $tot_perc_nobegin += $perc;
                     $trow[] = array('style' => 'img-cell', 'value' => $num_nobegin[$index]);
                     if ($show_percent) {
                         $trow[] = array('style' => 'img-cell', 'value' => number_format($perc, 2, '.', '') . '%');
                     }
                 } else {
                     $trow[] = '';
                     if ($show_percent) {
                         $trow[] = '';
                     }
                 }
             }
             //begin
             if (in_array('_USER_STATUS_BEGIN', $filter_cols)) {
                 if (isset($num_itinere[$index])) {
                     $perc = $num_itinere[$index] / $num_iscr[$index] * 100;
                     $tot_itinere += $num_itinere[$index];
                     $tot_perc_itinere += $perc;
                     $trow[] = array('style' => 'img-cell', 'value' => $num_itinere[$index]);
                     if ($show_percent) {
                         $trow[] = array('style' => 'img-cell', 'value' => number_format($perc, 2, '.', '') . '%');
                     }
                 } else {
                     $trow[] = array('style' => 'img-cell', 'value' => '');
                     if ($show_percent) {
                         $trow[] = array('style' => 'img-cell', 'value' => '');
                     }
                 }
             }
             //end course
             if (in_array('_COMPLETECOURSE', $filter_cols)) {
                 if (isset($num_end[$index])) {
                     $perc = $num_end[$index] / $num_iscr[$index] * 100;
                     $tot_comple += $num_end[$index];
                     $tot_perc_comple += $perc;
                     $trow[] = array('style' => 'img-cell', 'value' => $num_end[$index]);
                     if ($show_percent) {
                         $trow[] = array('style' => 'img-cell', 'value' => number_format($perc, 2, '.', '') . '%');
                     }
                 } else {
                     $trow[] = array('style' => 'img-cell', 'value' => '');
                     if ($show_percent) {
                         $trow[] = array('style' => 'img-cell', 'value' => '');
                     }
                 }
             }
             // time in
             if (in_array('_TOTAL_SESSION', $filter_cols)) {
                 if (isset($time_in_course[$idc])) {
                     $total_time += $time_in_course[$idc];
                     $trow[] = array('style' => 'img-cell', 'value' => (int) ($time_in_course[$idc] / 3600) . 'h ' . substr('0' . (int) ($time_in_course[$idc] % 3600 / 60), -2) . 'm ' . substr('0' . (int) ($time_in_course[$idc] % 60), -2) . 's ');
                 } else {
                     $trow[] = array('style' => 'img-cell', 'value' => '');
                 }
             }
         } else {
             if (in_array('_INSCR', $filter_cols)) {
                 $trow[] = '';
             }
             //no begin course
             if (in_array('_MUSTBEGIN', $filter_cols)) {
                 $trow[] = '';
                 if ($show_percent) {
                     $trow[] = '';
                 }
             }
             //begin
             if (in_array('_USER_STATUS_BEGIN', $filter_cols)) {
                 $trow[] = '';
                 if ($show_percent) {
                     $trow[] = '';
                 }
             }
             //end course
             if (in_array('_COMPLETECOURSE', $filter_cols)) {
                 $trow[] = '';
                 if ($show_percent) {
                     $trow[] = '';
                 }
             }
             // time in
             if (in_array('_TOTAL_SESSION', $filter_cols)) {
                 $trow[] = '';
             }
         }
         //print row
         if (isset($num_iscr[$index]) && $num_iscr[$index]) {
             $buffer->addLine($trow);
         } else {
             $i--;
         }
     }
     $buffer->closeBody();
     $tfoot = array(array('colspan' => $colspan_course + $colspan_classrooms_editions, 'value' => $lang->def('_TOTAL')));
     if (in_array('_INSCR', $filter_cols)) {
         $tfoot[] = $tot_iscr;
     }
     if (in_array('_MUSTBEGIN', $filter_cols)) {
         $tfoot[] = $tot_nobegin;
         if ($show_percent) {
             $tfoot[] = $tot_nobegin ? number_format($tot_nobegin / $tot_iscr * 100, 2, '.', '') . '%' : 'n.d.';
         }
     }
     if (in_array('_USER_STATUS_BEGIN', $filter_cols)) {
         $tfoot[] = $tot_itinere;
         if ($show_percent) {
             $tfoot[] = $tot_itinere ? number_format($tot_itinere / $tot_iscr * 100, 2, '.', '') . '%' : 'n.d.';
         }
     }
     if (in_array('_COMPLETECOURSE', $filter_cols)) {
         $tfoot[] = $tot_comple;
         if ($show_percent) {
             $tfoot[] = $tot_comple ? number_format($tot_comple / $tot_iscr * 100, 2, '.', '') . '%' : 'n.d.';
         }
     }
     if (in_array('_TOTAL_SESSION', $filter_cols)) {
         $tfoot[] = (int) ($total_time / 3600) . 'h ' . substr('0' . (int) ($total_time / 60), -2) . 'm ' . substr('0' . (int) $total_time, -2) . 's ';
     }
     $buffer->setFoot($tfoot);
     $buffer->closeTable();
     //return $output;
     return $buffer->get();
 }
Exemple #14
0
 public function getClassrooms($params)
 {
     require_once _lms_ . '/lib/lib.course.php';
     require_once _lms_ . '/lib/lib.date.php';
     $output = array();
     $output['success'] = true;
     $course_id = isset($params['course_id']) ? (int) $params['course_id'] : false;
     $course_code = isset($params['course_code']) ? $params['course_code'] : false;
     if (empty($course_id) && empty($course_code)) {
         return false;
         // return array('success'=>true, 'debug'=>print_r($params, true));
     } else {
         if (empty($course_id) && !empty($course_code)) {
             // grab course info by code:
             $db = DbConn::getInstance();
             $qtxt = "SELECT * FROM %lms_course\r\n\t\t\t\t\tWHERE code='" . $course_code . "'\r\n\t\t\t\t\tLIMIT 0,1";
             $q = $db->query($qtxt);
             $course_info = $db->fetch_assoc($q);
             if (!empty($course_info)) {
                 $course_id = (int) $course_info['idCourse'];
             } else {
                 // course not found
                 return false;
                 // return array('success'=>'true', 'debug'=>print_r($course_info));
             }
         }
     }
     $classroom_man = new DateManager();
     $course_list = $classroom_man->getCourseDate($course_id);
     $course_man = new Man_Course();
     $course = $course_man->getCourseInfo($course_id);
     foreach ($course_list as $key => $course_info) {
         $output[]['course_info'] = array('course_id' => $course['idCourse'], 'date_id' => $course_info['id_date'], 'code' => str_replace('&', '&amp;', $course_info['code']), 'course_name' => str_replace('&', '&amp;', $course_info['name']), 'course_description' => str_replace('&', '&amp;', $course_info['description']), 'status' => $course_info['status'], 'selling' => $course['selling'], 'price' => $course_info['price'], 'subscribe_method' => $course['subscribe_method'], 'sub_start_date' => $course_info['sub_start_date'], 'sub_end_date' => $course_info['sub_end_date'], 'date_begin' => $course_info['date_begin'], 'date_end' => $course_info['date_end'], 'num_day' => $course_info['num_day'], 'classroom' => $course_info['classroom'], 'course_link' => Get::sett('url') . _folder_lms_ . '/index.php?modname=course&amp;op=aula&amp;idCourse=' . $course['idCourse']);
     }
     //$output['debug']=print_r($course_list, true).print_r($course, true);
     return $output;
 }
 public function getCourseInfoForSubscription()
 {
     if ($this->id_edition != 0) {
         require_once _lms_ . '/lib/lib.edition.php';
         $edition_man = new EditionManager();
         $edition_info = $edition_man->getEditionInfo($this->id_edition);
         require_once _lms_ . '/lib/lib.course.php';
         $course_info = Man_Course::getCourseInfo($this->id_course);
         $res = array('max_num_subscribe' => $edition_info['max_num_subscribe'], 'subscribe_method' => $course_info['subscribe_method'], 'code' => $edition_info['code'], 'name' => $edition_info['name'], 'medium_time' => $course_info['mediumTime'], 'course_type' => $course_info['course_type'], 'date_begin' => $edition_info['date_begin'], 'date_end' => $edition_info['date_end']);
     } elseif ($this->id_date != 0) {
         require_once _lms_ . '/lib/lib.date.php';
         $date_man = new DateManager();
         $date_info = $date_man->getDateInfo($this->id_date);
         require_once _lms_ . '/lib/lib.course.php';
         $course_info = Man_Course::getCourseInfo($this->id_course);
         $res = array('max_num_subscribe' => $course_info['max_num_subscribe'], 'subscribe_method' => $course_info['subscribe_method'], 'code' => $date_info['code'], 'name' => $date_info['name'], 'medium_time' => $course_info['mediumTime'], 'course_type' => $course_info['course_type'], 'date_begin' => $date_info['date_begin'], 'date_end' => $date_info['date_end']);
     } else {
         require_once _lms_ . '/lib/lib.course.php';
         $course_info = Man_Course::getCourseInfo($this->id_course);
         $res = array('max_num_subscribe' => $course_info['max_num_subscribe'], 'subscribe_method' => $course_info['subscribe_method'], 'code' => $course_info['code'], 'name' => $course_info['name'], 'medium_time' => $course_info['mediumTime'], 'course_type' => $course_info['course_type'], 'date_begin' => $course_info['date_begin'], 'date_end' => $course_info['date_end']);
     }
     return $res;
 }
Exemple #16
0
function modTransaction()
{
    require_once _base_ . '/lib/lib.table.php';
    require_once _base_ . '/lib/lib.form.php';
    require_once _base_ . '/lib/lib.dialog.php';
    require_once _lms_ . '/lib/lib.course.php';
    require_once _lms_ . '/lib/lib.date.php';
    $lang =& DoceboLanguage::createInstance('transaction');
    $acl_man = Docebo::user()->getAclManager();
    $man_transaction = new Man_Transaction();
    $course_man = new Man_Course();
    $date_man = new DateManager();
    $id_transaction = Get::req('id', DOTY_INT, 0);
    $transaction_info = $man_transaction->getTransactionInfo($id_transaction);
    if (isset($_POST['update'])) {
        $payment_status = Get::req('payment_status', DOTY_INT, 0);
        $course_status = Get::req('course_status', DOTY_INT, 0);
        $note = Get::req('note', DOTY_MIXED, '');
        if ($man_transaction->updateTransaction($id_transaction, $payment_status, $course_status, $note)) {
            if (isset($_POST['confirm'])) {
                $activations = array();
                foreach ($_POST['confirm'] as $id => $n) {
                    list($id_course, $id_date) = explode('_', $id);
                    if ($id_date != 0) {
                        $activations[$id_course]['dates'][$id_date] = $id_date;
                    } else {
                        $activations[$id_course] = $id_course;
                    }
                }
                if ($man_transaction->activateCourses($id_transaction, $transaction_info['id_user'], $activations)) {
                    Util::jump_to('index.php?modname=transaction&op=transaction&res=ok');
                }
            } else {
                Util::jump_to('index.php?modname=transaction&op=transaction&res=ok');
            }
        }
        Util::jump_to('index.php?modname=transaction&op=transaction&res=err_up');
    }
    $array_title = array('index.php?modname=transaction&amp;op=transaction' => $lang->def('_TRANSACTION'), $lang->def('_MOD_TRANSACTION'));
    //Status info & note
    $array_payment_status = array('-1' => $lang->def('_CANCELLED'), '0' => $lang->def('_WAITING_PAYMENT'), '1' => $lang->def('_PARTIAL_PAID'), '2' => $lang->def('_PAID'));
    $array_course_status = array('-1' => $lang->def('_CANCELLED'), '0' => $lang->def('_NO_COURSE_ACTIVATED'), '1' => $lang->def('_SOME_COURSE_ACTIVATED'), '2' => $lang->def('_ALL_COURSE_ACTIVATED'));
    cout(getTitleArea($array_title) . '<div class="std_block">' . Form::openForm('transaction_info', 'index.php?modname=transaction&amp;op=mod&amp;id=' . $id_transaction) . Form::openElementSpace() . Form::getDropdown($lang->def('_PAYMENT_STATUS_FILTER'), 'payment_status', 'payment_status', $array_payment_status, $transaction_info['payment_status']) . Form::getDropdown($lang->def('_COURSE_STATUS_FILTER'), 'course_status', 'course_status', $array_course_status, $transaction_info['course_status']) . Form::getSimpleTextarea($lang->def('_NOTES'), 'note', 'note', $transaction_info['note']) . Form::closeElementSpace());
    //User info
    $user_info = $acl_man->getUser($transaction_info['id_user'], false);
    $tb_user = new Table(0, $lang->def('_USER_INFO'), $lang->def('_USER_INFO'));
    $cont_h = array($lang->def('_USERNAME'), $lang->def('_FIRSTNAME'), $lang->def('_LASTNAME'), $lang->def('_EMAIL'));
    $type_h = array('', '', '', '');
    $tb_user->setColsStyle($type_h);
    $tb_user->addHead($cont_h);
    $tb_user->addBody(array($acl_man->relativeId($user_info[ACL_INFO_USERID]), $user_info[ACL_INFO_FIRSTNAME], $user_info[ACL_INFO_LASTNAME], $user_info[ACL_INFO_EMAIL]));
    cout('<br />' . $tb_user->getTable());
    //Payment info if we need it
    //Product info
    $tb_product = new Table(0, $lang->def('_PRODUCT_INFO'), $lang->def('_PRODUCT_INFO'));
    $cont_h = array($lang->def('_CODE'), $lang->def('_NAME'), $lang->def('_DATE_BEGIN'), $lang->def('_DATE_END'), $lang->def('_COURSE_PRIZE'), $lang->def('_CONFIRM_COURSE'));
    $type_h = array('', '', '', '', '', '');
    $tb_product->setColsStyle($type_h);
    $tb_product->addHead($cont_h);
    $transaction_course = $man_transaction->getTransactionCourses($id_transaction);
    foreach ($transaction_course as $id_course => $details) {
        if (is_array($details)) {
            foreach ($details['dates'] as $id_date) {
                $date_info = $date_man->getDateInfo($id_date);
                $checked = false;
                $other = '';
                if ($man_transaction->controlActivation($id_transaction, $id_course, $id_date)) {
                    $checked = true;
                    $other = 'disabled="disabled"';
                }
                $tb_product->addBody(array($date_info['code'], $date_info['name'], Format::date($date_info['date_begin']), Format::date($date_info['date_end']), $date_info['price'], Form::getInputCheckbox($id_course . '_' . $id_date, 'confirm[' . $id_course . '_' . $id_date . ']', 1, $checked, $other)));
            }
        } else {
            $course_info = $course_man->getCourseInfo($id_course);
            $checked = false;
            $other = '';
            if ($man_transaction->controlActivation($id_transaction, $id_course)) {
                $checked = true;
                $other = 'disabled="disabled"';
            }
            $tb_product->addBody(array($course_info['code'], $course_info['name'], $course_info['date_begin'] !== '0000-00-00' ? Format::date($course_info['date_begin'], 'date') . ($course_info['hour_begin'] !== '-1' ? $course_info['hour_begin'] : '') : '', $course_info['date_end'] !== '0000-00-00' ? Format::date($course_info['date_end'], 'date') . ($course_info['hour_end'] !== '-1' ? $course_info['hour_end'] : '') : '', $course_info['prize'] == '' ? '0' : $course_info['prize'], Form::getInputCheckbox($id_course . '_0', 'confirm[' . $id_course . '_0]', 1, $checked, $other)));
        }
    }
    cout('<br />' . $tb_product->getTable() . Form::openButtonSpace() . Form::getButton('update', 'update', $lang->def('_UPDATE')) . Form::getButton('back_mod', 'back_mod', $lang->def('_BACK')) . Form::closeButtonSpace() . Form::closeForm());
    cout('</div>');
}
function subscribe()
{
    checkPerm('view');
    require_once _base_ . '/lib/lib.form.php';
    $form = new Form();
    if (isset($_POST['course_autoregistration_code'])) {
        require_once _lms_ . '/lib/lib.course.php';
        $out =& $GLOBALS['page'];
        $out->setWorkingZone('content');
        $code = $_POST['course_autoregistration_code'];
        $code = strtoupper($code);
        $code = str_replace('-', '', $code);
        $registration_code_type = Get::sett('registration_code_type', '0');
        if ($registration_code_type == 'tree_course') {
            $code = substr($code, 10, 10);
        }
        $course_registration_result = false;
        $man_course_user = new Man_CourseUser();
        $course_registration_result = $man_course_user->subscribeUserWithCode($code, getLogUserId());
        $out->add(getTitleArea(Lang::t('_AUTOREGISTRATION', 'course_autoregistration')) . '<div class="std_block">');
        if ($course_registration_result > 0) {
            $out->add(str_replace('[course_added]', $course_registration_result, Lang::t('_OPERATION_SUCCESSFUL', 'course_autoregistration')));
            $out->add('<br/><a href="index.php?r=' . _after_login_ . '">' . Lang::t('_BACK_TO_COURSE', 'course_autoregistration') . '</a>');
        } else {
            if ($course_registration_result == -1) {
                $out->add(getErrorUi(Lang::t('_CODE_ALREDY_USED', 'course_autoregistration')));
                $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&amp;op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace());
            } else {
                if ($course_registration_result == -2) {
                    $out->add(getErrorUi(Lang::t('_SUBSCRIPTION_NOT_ALLOWED_YET', 'course_autoregistration')));
                    $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&amp;op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace());
                } else {
                    require_once _adm_ . '/lib/lib.code.php';
                    $code = $_POST['course_autoregistration_code'];
                    $code_manager = new CodeManager();
                    $valid_code = $code_manager->controlCodeValidity($code);
                    if ($valid_code == 1) {
                        $array_course = $code_manager->getAvailableCourseAssociateWithCode($code);
                        require_once _lms_ . '/lib/lib.course.php';
                        $man_course = new Man_Course();
                        $array_course_name = array();
                        $counter = 0;
                        require_once _lms_ . '/lib/lib.subscribe.php';
                        $subscribe = new CourseSubscribe_Management();
                        foreach ($array_course as $id_course) {
                            $query_control = "SELECT COUNT(*)" . " FROM %lms_courseuser" . " WHERE idCourse = " . $id_course . " AND idUser = "******"index.php?r=' . _after_login_ . '">' . Lang::t('_BACK_TO_COURSE', 'course_autoregistration') . '</a>');
                        } else {
                            if (sizeof($array_course) == 0) {
                                $out->add(getErrorUi(Lang::t('_SUBSCRIPTION_NOT_ALLOWED_YET', 'course_autoregistration')));
                            } else {
                                $out->add(getErrorUi(Lang::t('_ALREADY_SUBSCRIBED', 'course_autoregistration')));
                            }
                            $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&amp;op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace());
                        }
                    } else {
                        if ($valid_code == 0) {
                            $out->add(getErrorUi(Lang::t('_CODE_ALREDY_USED', 'course_autoregistration')));
                        } else {
                            $out->add(getErrorUi(Lang::t('_CODE_NOT_VALID', 'course_autoregistration')));
                        }
                        $out->add($form->openForm('course_autoregistration', 'index.php?modname=course_autoregistration&amp;op=course_autoregistration') . $form->openElementSpace() . $form->getTextfield(Lang::t('_COURSE_AUTOREGISTRATION_CODE', 'course_autoregistration'), 'course_autoregistration_code', 'course_autoregistration_code', '255', '') . $form->closeElementSpace() . $form->openButtonSpace() . $form->getButton('subscribe', 'subscribe', Lang::t('_SEND', 'course_autoregistration')) . $form->closeButtonSpace());
                    }
                }
            }
        }
        $out->add('</div>');
    }
}