defined("IN_FORMA") or die('Direct access is forbidden.');
/* ======================================================================== \
|   FORMA - The E-Learning Suite                                            |
|                                                                           |
|   Copyright (c) 2013 (Forma)                                              |
|   http://www.formalms.org                                                 |
|   License  http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt           |
|                                                                           |
|   from docebo 4.0.5 CE 2008-2012 (c) docebo                               |
|   License http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt            |
\ ======================================================================== */
// redirection
if (!isset($_GET['no_redirect']) && !isset($_POST['no_redirect'])) {
    if (Docebo::user()->isAnonymous() && (!isset($GLOBALS['modname']) || $GLOBALS['modname'] != 'login') && !isset($_GET['login_user']) && !isset($_POST['login_user'])) {
        require_once _base_ . '/lib/lib.platform.php';
        $pl_man =& PlatformManager::CreateInstance();
        $pl = $pl_man->getHomePlatform();
        if ($pl != 'cms') {
            // Added by Claudio Redaelli
            $_SESSION['login_requestedURL'] = "?" . $_SERVER['QUERY_STRING'];
            $GLOBALS['op'] = 'login';
            $GLOBALS['modname'] = 'login';
            Util::jump_to('../index.php');
        }
    }
}
if (Get::sett('stop_concurrent_user') == 'on') {
    if (!Docebo::user()->isAnonymous() && isset($_SESSION['idCourse'])) {
        //two user logged at the same time
        if (!TrackUser::checkSession(getLogUserId())) {
            TrackUser::resetUserSession(getLogUserId());
 function getUserGroupsList($viewer = false)
 {
     if ($viewer !== false) {
         $this->setViewer($viewer);
     }
     require_once _base_ . '/lib/lib.platform.php';
     $pl_man =& PlatformManager::CreateInstance();
     if ($pl_man->isLoaded('lms')) {
         $user_groups = $this->_up_data_man->getUserGroupsList($this->_id_user);
         return $this->_up_viewer->getUserGroupsList($user_groups);
     }
     return '';
 }
Beispiel #3
0
function maskModCourse(&$course, $new = false, $name_category = '')
{
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $form = new Form();
    $classroom = false;
    if (isset($_GET['type']) && $_GET['type'] === 'classroom') {
        $classroom = true;
    }
    //addAjaxJs();
    YuiLib::load();
    $lang =& DoceboLanguage::CreateInstance('course', 'lms');
    $levels = CourseLevel::getLevels();
    $array_lang = Docebo::langManager()->getAllLangCode();
    $array_lang[] = 'none';
    //status of course -----------------------------------------------------
    $status = array(CST_PREPARATION => $lang->def('_CST_PREPARATION'), CST_AVAILABLE => $lang->def('_CST_AVAILABLE'), CST_EFFECTIVE => $lang->def('_CST_CONFIRMED'), CST_CONCLUDED => $lang->def('_CST_CONCLUDED'), CST_CANCELLED => $lang->def('_CST_CANCELLED'));
    //difficult ------------------------------------------------------------
    $difficult_lang = array('veryeasy' => $lang->def('_DIFFICULT_VERYEASY'), 'easy' => $lang->def('_DIFFICULT_EASY'), 'medium' => $lang->def('_DIFFICULT_MEDIUM'), 'difficult' => $lang->def('_DIFFICULT_DIFFICULT'), 'verydifficult' => $lang->def('_DIFFICULT_VERYDIFFICULT'));
    //type of course -------------------------------------------------------
    $course_type = array('elearning' => $lang->def('_COURSE_TYPE_ELEARNING'), 'blended' => $lang->def('_COURSE_TYPE_BLENDED'), 'classroom' => $lang->def('_CLASSROOM'));
    // points policy -------------------------------------------------------
    $show_who_online = array(0 => $lang->def('_DONT_SHOW'), _SHOW_COUNT => $lang->def('_SHOW_COUNT'), _SHOW_INSTMSG => $lang->def('_SHOW_INSTMSG'));
    if ($new == true) {
        // menu availables -----------------------------------------------------
        $menu_custom = getAllCustom();
        list($sel_custom) = current($menu_custom);
        reset($menu_custom);
    }
    $out->add($form->openElementSpace());
    if ($new == true) {
        $out->add($form->getLineBox($lang->def('_CATEGORY_SELECTED'), $name_category));
    } else {
        $out->add($form->getDropdown($lang->def('_CATGORY'), 'idCategory', 'idCategory', getCategoryForDropdown(), $course['idCategory']));
    }
    require_once _lms_ . '/admin/models/LabelAlms.php';
    $label_model = new LabelAlms();
    $out->add($form->getTextfield($lang->def('_CODE'), 'course_code', 'course_code', '50', $course['code']) . $form->getTextfield($lang->def('_COURSE_NAME'), 'course_name', 'course_name', '255', $course['name']) . $form->getDropdown($lang->def('_COURSE_LANG_METHOD'), 'course_lang', 'course_lang', $array_lang, array_search($course['lang_code'], $array_lang)) . $form->getDropdown($lang->def('_DIFFICULTY'), 'course_difficult', 'course_difficult', $difficult_lang, $course['difficult']) . ($classroom ? $form->getHidden('course_type', 'course_type', 'classroom') : $form->getDropdown($lang->def('_COURSE_TYPE'), 'course_type', 'course_type', $course_type, $course['course_type'])) . $form->getDropdown($lang->def('_STATUS'), 'course_status', 'course_status', $status, $course['status']) . $form->getDropdown($lang->def('_LABEL'), 'label', 'label', $label_model->getLabelFromDropdown(true), $new ? false : $label_model->getCourseLabel($course['idCourse'])) . ($classroom ? '' : $form->getCheckbox($lang->def('_COURSE_EDITION'), 'course_edition_yes', 'course_edition', 1, $course['course_edition'] == 1)) . ($new == true ? $form->getDropdown($lang->def('_COURSE_MENU_TO_ASSIGN'), 'selected_menu', 'selected_menu', $menu_custom, $sel_custom) : '') . $form->getCheckbox($lang->def('_DIRECT_PLAY'), 'direct_play', 'direct_play', '1', $course['direct_play'] == 1) . $form->getCheckbox($lang->def('_SHOW_RESULTS'), 'show_result', 'show_result', '1', $course['show_result'] == 1) . $form->getTextarea($lang->def('_DESCRIPTION'), 'course_descr', 'course_descr', $course['description']) . '<div class="align_center">' . str_replace('[down]', '', $lang->def('_COURSE_MORE_OPTION')) . '</div>' . (!$new && !$classroom ? $form->getCheckbox($lang->def('_CASCADE_MOD_ON_EDITION'), 'cascade_on_ed', 'cascade_on_ed', 1) : '') . $form->closeElementSpace() . $form->openElementSpace() . $form->getOpenFieldset($lang->def('_COURSE_SUBSCRIPTION')) . $form->getOpenCombo($lang->def('_USER_CAN_SUBSCRIBE')) . $form->getRadio($lang->def('_SUBSCRIPTION_CLOSED'), 'subscription_closed', 'can_subscribe', '0', $course['can_subscribe'] == 0) . $form->getRadio($lang->def('_SUBSCRIPTION_OPEN'), 'subscription_open', 'can_subscribe', '1', $course['can_subscribe'] == 1) . $form->getRadio($lang->def('_SUBSCRIPTION_IN_PERIOD') . ":", 'subscription_period', 'can_subscribe', '2', $course['can_subscribe'] == 2) . $form->getCloseCombo() . $form->getDatefield($lang->def('_SUBSCRIPTION_DATE_BEGIN') . ":", 'sub_start_date', 'sub_start_date', $course['sub_start_date']) . $form->getDatefield($lang->def('_SUBSCRIPTION_DATE_END') . ":", 'sub_end_date', 'sub_end_date', $course['sub_end_date']) . $form->getBreakRow() . $form->getTextfield($lang->def('_COURSE_AUTOREGISTRATION_CODE'), 'course_autoregistration_code', 'course_autoregistration_code', '255', $course['autoregistration_code']) . $form->getCheckbox($lang->def('_RANDOM_COURSE_AUTOREGISTRATION_CODE'), 'random_course_autoregistration_code', 'random_course_autoregistration_code', 0) . $form->getCloseFieldset() . $form->getOpenFieldset($lang->def('_COURSE_DISPLAY_MODE')) . $form->getOpenCombo($lang->def('_WHERE_SHOW_COURSE')) . $form->getRadio($lang->def('_SC_EVERYWHERE'), 'course_show_rules_every', 'course_show_rules', '0', $course['show_rules'] == 0) . $form->getRadio($lang->def('_SC_ONLY_IN'), 'course_show_rules_only_in', 'course_show_rules', '1', $course['show_rules'] == 1) . $form->getRadio($lang->def('_SC_ONLYINSC_USER'), 'course_show_rules_onlyinsc_user', 'course_show_rules', '2', $course['show_rules'] == 2) . $form->getCloseCombo() . $form->getOpenCombo($lang->def('_WHAT_SHOW')) . $form->getCheckbox($lang->def('_SHOW_PROGRESS'), 'course_progress', 'course_progress', '1', $course['show_progress'] == 1) . $form->getCheckbox($lang->def('_SHOW_TIME'), 'course_time', 'course_time', '1', $course['show_time'] == 1) . $form->getCheckbox($lang->def('_SHOW_ADVANCED_INFO'), 'course_advanced', 'course_advanced', '1', $course['show_extra_info'] == 1) . $form->getCloseCombo() . $form->getDropdown($lang->def('_SHOW_WHOISONLINE'), 'show_who_online', 'show_who_online', $show_who_online, $course['show_who_online']) . $form->getOpenCombo($lang->def('_SHOW_USER_OF_LEVEL')), 'content');
    while (list($level, $level_name) = each($levels)) {
        $out->add($form->getCheckbox($level_name, 'course_show_level_' . $level, 'course_show_level[' . $level . ']', $level, $course['level_show_user'] & 1 << $level));
    }
    $out->add($form->getCloseCombo() . $form->getCloseFieldset() . $form->getOpenFieldset($lang->def('_USER_INTERACTION_OPTION')) . $form->getOpenCombo($lang->def('_COURSE_SUBSRIBE')) . $form->getRadio($lang->def('_COURSE_S_GODADMIN'), 'course_subs_godadmin', 'course_subs', '0', $course['subscribe_method'] == 0) . $form->getRadio($lang->def('_COURSE_S_MODERATE'), 'course_subs_moderate', 'course_subs', '1', $course['subscribe_method'] == 1) . $form->getRadio($lang->def('_COURSE_S_FREE'), 'course_subs_free', 'course_subs', '2', $course['subscribe_method'] == 2) . $form->getCloseCombo());
    $pl_man =& PlatformManager::CreateInstance();
    if ($pl_man->isLoaded('ecom') || 1) {
        $out->add($form->getCheckbox($lang->def('_COURSE_SELL'), 'course_sell', 'course_sell', '1', $course['selling'] == 1) . $form->getTextfield($lang->def('_COURSE_PRIZE'), 'course_prize', 'course_prize', '11', $course['prize']) . $form->getTextfield($lang->def('_COURSE_ADVANCE'), 'advance', 'advance', '11', $course['advance']));
    } else {
        $out->add($form->getHidden('course_prize', 'course_prize', '0') . $form->getHidden('advance', 'advance', '0'));
    }
    // mode for course end--------------------------------------------
    $out->add($form->getHidden('course_em', 'course_em', '0') . $form->getOpenCombo($lang->def('_COURSE_STATUS_CANNOT_ENTER')) . $form->getCheckbox($lang->def('_USER_STATUS_SUBS'), 'user_status_' . _CUS_SUBSCRIBED, 'user_status[' . _CUS_SUBSCRIBED . ']', _CUS_SUBSCRIBED, $course['userStatusOp'] & 1 << _CUS_SUBSCRIBED) . $form->getCheckbox($lang->def('_USER_STATUS_BEGIN'), 'user_status_' . _CUS_BEGIN, 'user_status[' . _CUS_BEGIN . ']', _CUS_BEGIN, $course['userStatusOp'] & 1 << _CUS_BEGIN) . $form->getCheckbox($lang->def('_USER_STATUS_END'), 'user_status_' . _CUS_END, 'user_status[' . _CUS_END . ']', _CUS_END, $course['userStatusOp'] & 1 << _CUS_END) . $form->getCheckbox($lang->def('_USER_STATUS_SUSPEND'), 'user_status_' . _CUS_SUSPEND, 'user_status[' . _CUS_SUSPEND . ']', _CUS_SUSPEND, $course['userStatusOp'] & 1 << _CUS_SUSPEND) . $form->getCloseCombo() . $form->getCloseFieldset());
    //-expiration---------------------------------------------------------
    $hours = array('-1' => '- -', '0' => '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23');
    $quarter = array('-1' => '- -', '00' => '00', '15' => '15', '30' => '30', '45' => '45');
    if ($course['hour_begin'] != '-1') {
        $hb_sel = (int) substr($course['hour_begin'], 0, 2);
        $qb_sel = substr($course['hour_begin'], 3, 2);
    } else {
        $hb_sel = $qb_sel = '-1';
    }
    if ($course['hour_end'] != '-1') {
        $he_sel = (int) substr($course['hour_end'], 0, 2);
        $qe_sel = substr($course['hour_end'], 3, 2);
    } else {
        $he_sel = $qe_sel = '-1';
    }
    /*
    	$out->add(
    		'<script type="text/javascript">'
    		."
    		alert(cal_course_date_begin);
    		cal_course_date_begin.onUpdate = function() {
    			var new_date = \$F('course_date_begin');
    			\$('course_date_end').value = new_date;
    		}
    
    
    		"
    		.'</script>'
    	, 'footer');*/
    $out->add($form->getOpenFieldset($lang->def('_COURSE_TIME_OPTION')) . $form->getDatefield($lang->def('_DATE_BEGIN'), 'course_date_begin', 'course_date_begin', $course['date_begin']) . $form->getDatefield($lang->def('_DATE_END'), 'course_date_end', 'course_date_end', $course['date_end']) . $form->getLineBox('<label for="hour_begin_hour">' . $lang->def('_HOUR_BEGIN') . '</label>', $form->getInputDropdown('dropdown_nw', 'hour_begin_hour', 'hour_begin[hour]', $hours, $hb_sel, '') . ' : ' . $form->getInputDropdown('dropdown_nw', 'hour_begin_quarter', 'hour_begin[quarter]', $quarter, $qe_sel, '')) . $form->getLineBox('<label for="hour_end_hour">' . $lang->def('_HOUR_END') . '</label>', $form->getInputDropdown('dropdown_nw', 'hour_end_hour', 'hour_end[hour]', $hours, $he_sel, '') . ' : ' . $form->getInputDropdown('dropdown_nw', 'hour_end_quarter', 'hour_end[quarter]', $quarter, $qe_sel, '')) . $form->getTextfield($lang->def('_DAY_OF_VALIDITY'), 'course_day_of', 'course_day_of', '10', $course['valid_time']) . $form->getTextfield($lang->def('_MEDIUM_TIME'), 'course_medium_time', 'course_medium_time', '10', $course['mediumTime']) . $form->getCloseFieldset());
    //sponsor-and-logo----------------------------------------------------
    $out->add($form->getOpenFieldset($lang->def('_COURSE_SPECIAL_OPTION')) . $form->getTextfield($lang->def('_MIN_NUM_SUBSCRIBE'), 'min_num_subscribe', 'min_num_subscribe', '11', $course['min_num_subscribe']) . $form->getTextfield($lang->def('_MAX_NUM_SUBSCRIBE'), 'max_num_subscribe', 'max_num_subscribe', '11', $course['max_num_subscribe']) . $form->getCheckbox($lang->def('_ALLOW_OVERBOOKING'), 'allow_overbooking', 'allow_overbooking', '1', $course['allow_overbooking'] == 1) . $form->getTextfield($lang->def('_COURSE_QUOTA'), 'course_quota', 'course_quota', '11', $course['course_quota'] != COURSE_QUOTA_INHERIT ? $course['course_quota'] : 0) . $form->getCheckbox($lang->def('_INHERIT_QUOTA'), 'inherit_quota', 'inherit_quota', '1', $course['course_quota'] == COURSE_QUOTA_INHERIT) . $form->getCloseFieldset() . $form->getOpenFieldset($lang->def('_DOCUMENT_UPLOAD')));
    if ($new == true) {
        $out->add($form->getFilefield($lang->def('_USER_MATERIAL'), 'course_user_material', 'course_user_material') . $form->getFilefield($lang->def('_OTHER_USER_MATERIAL'), 'course_otheruser_material', 'course_otheruser_material') . $form->getTextfield($lang->def('_SPONSOR_LINK'), 'course_sponsor_link', 'course_sponsor_link', '255', $course['linkSponsor']) . $form->getFilefield($lang->def('_SPONSOR_LOGO'), 'course_sponsor_logo', 'course_sponsor_logo') . $form->getFilefield($lang->def('_COURSE_LOGO'), 'course_logo', 'course_logo') . $form->getFilefield($lang->def('_COURSE_DEMO'), 'course_demo', 'course_demo'));
    } else {
        $out->add($form->getExtendedFilefield($lang->def('_USER_MATERIAL'), 'course_user_material', 'course_user_material', $course["img_material"]) . $form->getExtendedFilefield($lang->def('_OTHER_USER_MATERIAL'), 'course_otheruser_material', 'course_otheruser_material', $course["img_othermaterial"]) . $form->getTextfield($lang->def('_SPONSOR_LINK'), 'course_sponsor_link', 'course_sponsor_link', '255', $course['linkSponsor']) . $form->getExtendedFilefield($lang->def('_SPONSOR_LOGO'), 'course_sponsor_logo', 'course_sponsor_logo', $course["imgSponsor"]) . $form->getExtendedFilefield($lang->def('_COURSE_LOGO'), 'course_logo', 'course_logo', $course["img_course"]) . $form->getExtendedFilefield($lang->def('_COURSE_DEMO'), 'course_demo', 'course_demo', $course["course_demo"]));
    }
    $out->add($form->getCheckbox($lang->def('_USE_LOGO_IN_COURSELIST'), 'use_logo_in_courselist', 'use_logo_in_courselist', 1, $course["use_logo_in_courselist"]) . $form->getCloseFieldset() . $form->closeElementSpace());
}
Beispiel #4
0
function isPlatformActive($platform)
{
    $pl_man =& PlatformManager::CreateInstance();
    $res = $pl_man->isLoaded($platform);
    return $res;
}
Beispiel #5
0
/**
 * Return a specific setting from a platform
 * @param string $platform the code of the platform
 * @param string $param_name the name of the value
 * @param string $default the default value to return if noone is found
 * @return mixed the param required
 */
function getPLSetting($platform, $param_name, $default = FALSE)
{
    require_once _base_ . "/lib/lib.platform.php";
    $pl_man =& PlatformManager::CreateInstance();
    $res = $default;
    if ($pl_man->isLoaded($platform)) {
        /*
        if(!defined("LMS")) Util::load_setting(Get::cfg('prefix_lms').'_setting', 'lms');
        elseif(!defined("CMS")) Util::load_setting(Get::cfg('prefix_cms').'_setting', 'cms');
        elseif(!defined("SCS")) Util::load_setting(Get::cfg('prefix_scs').'_setting', 'scs');
        */
        $res = Get::sett($param_name);
    }
    return $res;
}
/**
 * @return array 0 => can_buy		=> user can put the course in the cart
 * 					can_prenote 	=> user can
 * 					can_subscribe 	=> user can subscribe freely
 * 					can_reserve		=> user can put the course in the buyer cart
 * 					can_overbook	=> user can put the course in the buyer cart, but in overbooking
 *
 * 					impossible 		=> the user can do nothing with the course
 * 					in_cart 		=> the course is in the user cart
 * 					subscribed 		=> user is alredy enrolled to the course
 *
 * 					waiting_admin 	=> alredy request subs. and waiting for admin approvation
 * 					waiting_buyer 	=> alredy request, waiting for buyer approvation
 * 					waiting_payment => waiting for payment confirmation
 * 					waiting_overbooking => in overbooking, cannot be approved
 *
 * 				1=> link for action
 * 				2=> associated icon
 * 				3=> if the subscrition is impossibile here you can find the problem
 *
 */
function relationWithCourse($id_course, &$course, $uc_details, $edition_id = false)
{
    // 	require_once($GLOBALS['where_ecom'].'/lib/lib.cart.php');
    // 	$cart =& Cart::createInstance();
    list($enrolled) = sql_fetch_row(sql_query("SELECT COUNT(*) FROM " . $GLOBALS['prefix_lms'] . "_courseuser WHERE idCourse = '" . $id_course . "' AND edition_id = '0'"));
    $course['enrolled'] = $enrolled;
    $base_link = 'index.php?modname=' . (Docebo::user()->isAnonymous() ? 'login' : 'coursecatalogue') . '&op=';
    $bought_items =& getEcomItems();
    $product_type = $edition_id !== FALSE ? "course_edition" : "course";
    $search_item = $edition_id !== FALSE ? $product_type . "_" . $edition_id : $product_type . "_" . $id_course;
    if ($uc_details != false) {
        // user is in relation with the course, alredy subscribed or waiting for admin approvation
        switch ($uc_details['waiting']) {
            case '0':
                return array('subscribed', false, false);
                break;
            case '1':
                return array('waiting_admin', false, false);
                break;
            case '2':
                return array('waiting_overbooking', false, false);
                break;
        }
    }
    switch ($course['can_subscribe']) {
        case "0":
            return array('impossible', false, false, 'subscribe_lock');
            break;
        case "2":
            $today = date("Y-m-d H:i:s");
            if ($course['sub_start_date'] != 'NULL' && strcmp($course['sub_start_date'], $today) > 0) {
                return array('impossible', false, false, 'date_range');
            }
            if ($course['sub_end_date'] != 'NULL' && strcmp($course['sub_end_date'], $today) < 0) {
                return array('impossible', false, false, 'date_range');
            }
            break;
    }
    if ($course['subscribe_method'] > 0) {
        $pl_man =& PlatformManager::CreateInstance();
        if (!$pl_man->isLoaded('ecom')) {
            $course['selling'] = 0;
        }
        if ($course['selling'] == 1) {
            $ecom_type = getPLSetting("ecom", "ecom_type", "none");
            if ($ecom_type == "standard") {
                // maybe if the course is with edition there is an editon in the cart
                if ($edition_id !== FALSE && isset($course['edition_list']) && !empty($course['edition_list'])) {
                    while (list($id) = each($course['edition_list'])) {
                        /*
                        						if(isset($bought_items['transaction'][$product_type]) && in_array($product_type."_".$id, $bought_items['transaction'][$product_type])) {
                        							// find in bought item
                        							return array('waiting_payment', false, false);
                        						} else*/
                        if ($cart->isInCart($product_type . "_" . $id)) {
                            // find in cart
                            return array('in_cart', false, false);
                        }
                    }
                    reset($course['edition_list']);
                } else {
                    /*if(isset($bought_items['transaction'][$product_type]) && in_array($search_item, $bought_items['transaction'][$product_type])) {
                    			// find in bought item
                    			return array('waiting_payment', false, false);
                    		} else*/
                    if ($cart->isInCart($search_item)) {
                        // find in cart
                        return array('in_cart', false, false);
                    }
                }
                // max number of subscription ? overbooking ? ---------------------------------------
                if ($course['max_num_subscribe'] != 0 && $course['max_num_subscribe'] <= $course['enrolled']) {
                    if ($course['allow_overbooking'] == 1) {
                        return array('can_overbook', $base_link . 'overbook&amp;id=' . $id_course, false);
                    } else {
                        return array('impossible', false, false, 'full_course');
                    }
                }
                return array('can_buy', $base_link . 'addToCart&id=' . $id_course, 'can_buy.png');
            } elseif ($ecom_type == "with_buyer") {
                // ecom is with buyer --------------------------------------------------------------------------
                // maybe if the course is with edition there is an editon in the cart
                if ($edition_id !== FALSE && isset($course['edition_list']) && !empty($course['edition_list'])) {
                    while (list($id) = each($course['edition_list'])) {
                        if (isset($bought_items['reservation'][$product_type]) && in_array($product_type . "_" . $id, $bought_items['reservation'][$product_type])) {
                            // find in bought item
                            return array('waiting_payment', false, false);
                        } elseif ($cart->isInCart($product_type . "_" . $id)) {
                            // find in cart
                            return array('in_cart', false, false);
                        }
                    }
                    reset($course['edition_list']);
                } else {
                    // searching in the buyer assigned to the user the course
                    if (isset($bought_items['reservation'][$product_type]) && in_array($search_item, $bought_items['reservation'][$product_type])) {
                        return array('waiting_buyer', false, false);
                    } elseif ($cart->isInCart($search_item)) {
                        // find in cart
                        return array('in_cart', false, false);
                    }
                }
                // max number of subscription ? overbooking ? ---------------------------------------
                if ($course['max_num_subscribe'] != 0 && $course['max_num_subscribe'] <= $course['enrolled']) {
                    if ($course['allow_overbooking'] == 1) {
                        return array('can_overbook', $base_link . 'overbook&amp;id=' . $id_course, false);
                    } else {
                        return array('impossible', false, false, 'full_course');
                    }
                }
                return array('can_reserve', $base_link . 'reserve&amp;id=' . $id_course, 'can_prenote.png');
            }
        } else {
            if ($course['subscribe_method'] == 1) {
                // max number of subscription ? overbooking ? ---------------------------------------
                if ($course['max_num_subscribe'] != 0 && $course['max_num_subscribe'] <= $course['enrolled']) {
                    if ($course['allow_overbooking'] == 1) {
                        return array('can_overbook', false, false);
                    } else {
                        return array('impossible', false, false, 'full_course');
                    }
                }
                return array('can_prenote', $base_link . 'subscribecourse&amp;id=' . $id_course, 'can_prenote.png');
            }
            if ($course['subscribe_method'] == 2) {
                // max number of subscription ? overbooking ? ---------------------------------------
                if ($course['max_num_subscribe'] != 0 && $course['max_num_subscribe'] <= $course['enrolled']) {
                    if ($course['allow_overbooking'] == 1) {
                        return array('can_overbook', false, false);
                    } else {
                        return array('impossible', false, false, 'full_course');
                    }
                }
                return array('can_subscribe', $base_link . 'subscribecourse&amp;id=' . $id_course, 'can_subscribe.png');
            }
        }
    }
    return array('impossible', false, false, 'only_admin');
}