public function fastsubscribe()
 {
     if (!$this->permissions['subscribe_course']) {
         $output = array('success' => false, 'message' => $this->_getMessage("no permission"));
         echo $this->json->encode($output);
         return;
     } else {
         if (!$this->checkAdminLimit()) {
             $output = array('success' => false, 'message' => Lang::t('_SUBSCRIBE_LIMIT_REACHED', 'subscribe'));
             echo $this->json->encode($output);
             return;
         }
     }
     $id_user = Get::req('idst', DOTY_INT, 0);
     //user idst
     $userid = Get::req('userid', DOTY_STRING, '');
     //user username
     $result = false;
     if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) {
         require_once _base_ . '/lib/lib.preference.php';
         $adminManager = new AdminPreference();
         $admin_users = $adminManager->getAdminUsers(Docebo::user()->getIdST());
         $is_admin = true;
     }
     //adjust idst to subscribe
     if ($id_user <= 0) {
         $id_user = false;
         if ($userid != '') {
             $id_user = Docebo::aclm()->getUserST($userid);
         }
     }
     if ($id_user <= 0) {
         $output = array('success' => false, 'message' => $this->_getMessage("invalid user"));
         echo $this->json->encode($output);
         return;
     }
     if (isset($admin_users) && array_search($id_user, $admin_users) == false && Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) {
         $output = array('success' => true);
         echo $this->json->encode($output);
     } elseif ($id_user) {
         $level = 3;
         //student level
         $waiting = false;
         $result = $this->model->subscribeUser($id_user, $level, $waiting);
         if ($result) {
             require_once _lms_ . '/lib/lib.course.php';
             $docebo_course = new DoceboCourse($this->id_course);
             $level_idst =& $docebo_course->getCourseLevel($this->model->getIdCourse());
             if (count($level_idst) == 0 || $level_idst[1] == '') {
                 $level_idst =& $docebo_course->createCourseLevel($this->id_course);
             }
             //$this->acl_man->addToGroup($level_idst[$level], $id_user);
             $this->_addToCourseGroup($level_idst[$level], $id_user);
             // Save limit preference for admin
             if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) {
                 $admin_pref = new AdminPreference();
                 $pref = $admin_pref->getAdminRules(Docebo::user()->getIdSt());
                 if ($pref['admin_rules.limit_course_subscribe'] == 'on') {
                     $user_pref = new UserPreferences(Docebo::user()->getIdSt());
                     $subscribed_count = $user_pref->getPreference('user_subscribed_count');
                     $user_pref->setPreference('user_subscribed_count', $subscribed_count + 1);
                 }
             }
             //check if we have selected send alert checkbox
             $send_alert = Get::req('send_alert', DOTY_INT, 0) > 0;
             if ($send_alert) {
                 require_once _base_ . '/lib/lib.eventmanager.php';
                 $uinfo = Docebo::aclm()->getUser($id_user, false);
                 $course_info = $docebo_course->getAllInfo();
                 $array_subst = array('[url]' => Get::sett('url'), '[course]' => $course_info['name'], '[medium_time]' => $course_info['mediumTime'], '[firstname]' => $uinfo[ACL_INFO_FIRSTNAME], '[lastname]' => $uinfo[ACL_INFO_LASTNAME], '[username]' => Docebo::aclm()->relativeId($uinfo[ACL_INFO_USERID]));
                 // message to user that is waiting
                 $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
                 $users = array($id_user);
                 createNewAlert('UserCourseInserted', 'subscribe', 'insert', '1', 'User subscribed', $users, $msg_composer, $send_alert, true);
             }
         }
         $output = array('success' => $result);
         echo $this->json->encode($output);
     }
 }
示例#2
0
function dashAcourse($id_course, $h_number)
{
    require_once _base_ . '/lib/lib.form.php';
    require_once _base_ . '/lib/lib.user_profile.php';
    require_once _base_ . '/lib/lib.navbar.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.preassessment.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.catalogue.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.coursepath.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    require_once $GLOBALS["where_lms"] . "/modules/coursecatalogue/lib.coursecatalogue.php";
    $lang =& DoceboLanguage::createInstance('standard', 'framework');
    $lang->setGlobal();
    $lang =& DoceboLanguage::createInstance('course', 'lms');
    $normal_subs = 1;
    $man_course = new DoceboCourse($id_course);
    $cinfo = $man_course->getAllInfo();
    $man_courseuser = new Man_CourseUser();
    $usercourses =& $man_courseuser->getUserSubscriptionsInfo(getLogUserId(), false);
    $select_edition = " SELECT * ";
    $from_edition = " FROM " . $GLOBALS["prefix_lms"] . "_course_edition";
    $where_edition = " WHERE idCourse = '" . $id_course . "' ";
    $order_edition = " ORDER BY date_begin ";
    $re_edition = sql_query($select_edition . $from_edition . $where_edition . $order_edition);
    $editions = array();
    if ($re_edition) {
        while ($edition_elem = mysql_fetch_assoc($re_edition)) {
            $edition_elem['waiting'] = 0;
            $edition_elem['user_count'] = 0;
            $edition_elem['theacher_list'] = getSubscribed($edition_elem["idCourse"], false, 6, true, $edition_elem["idCourseEdition"]);
            $editions[$edition_elem["idCourse"]][$edition_elem["idCourseEdition"]] = $edition_elem;
        }
    }
    $select_ed_count = "SELECT idCourse, edition_id, sum(waiting) as waiting, COUNT(*) as user_count ";
    $from_ed_count = "FROM " . $GLOBALS["prefix_lms"] . "_courseuser ";
    $where_ed_count = "WHERE edition_id <> 0 AND idCourse = '" . $id_course . "'";
    $group_ed_count = "GROUP BY edition_id ";
    $re_ed_count = sql_query($select_ed_count . $from_ed_count . $where_ed_count . $group_ed_count);
    if ($re_ed_count) {
        while ($ed_count_elem = mysql_fetch_assoc($re_ed_count)) {
            $editions[$ed_count_elem["idCourse"]][$ed_count_elem["edition_id"]]['waiting'] = $ed_count_elem['waiting'];
            $editions[$ed_count_elem["idCourse"]][$ed_count_elem["edition_id"]]['user_count'] = $ed_count_elem['user_count'];
        }
    }
    $cinfo['theacher_list'] = getSubscribed($cinfo['idCourse'], false, 6, true);
    $cinfo['edition_list'] = isset($editions[$cinfo['idCourse']]) ? $editions[$cinfo['idCourse']] : array();
    $cinfo['edition_available'] = count($cinfo['edition_list']);
    $cinfo['user_score'] = isset($user_score[$cinfo['idCourse']]) ? $user_score[$cinfo['idCourse']] : NULL;
    require_once _base_ . '/lib/lib.urlmanager.php';
    $url =& UrlManager::getInstance('catalogue');
    $url->setStdQuery('r=' . _after_login_);
    if ($normal_subs == 0) {
        $cinfo['can_subscribe'] = 0;
    }
    $html = dashcourse($url, $lang, $cinfo, isset($usercourses[$cinfo['idCourse']]) ? $usercourses[$cinfo['idCourse']] : false, 0, $h_number);
    return $html;
}
     $lang =& DoceboLanguage::createInstance('course', 'lms');
     $man_course = new DoceboCourse(importVar('id_course', true, 0));
     $course_name = $man_course->getValue('name');
     $string = $lang->def('_THANKS_LOGIN_OR_REGISTER');
     $string = substr($string, strpos($string, '<a'));
     $subst = array('[name]' => $course_name, '[link_register]' => 'index.php?modname=login&amp;op=register');
     $value = array("next_op" => '', "id" => 'course_editions', "title" => $lang->def('_COURSE_SUBSCRIPTION', 'catalogue'), "content" => str_replace(array_keys($subst), $subst, $string));
 } else {
     if (!defined("_ECOM_CURRENCY")) {
         $currency_label = getPLSetting("ecom", "currency_label", "");
         define("_ECOM_CURRENCY", $currency_label);
     }
     $lang =& DoceboLanguage::createInstance('course', 'lms');
     $id_course = importVar('id_course', true, 0);
     $man_course = new DoceboCourse($id_course);
     $cinfo = $man_course->getAllInfo();
     $man_courseuser = new Man_CourseUser();
     $usercourses =& $man_courseuser->getUserSubscriptionsInfo(getLogUserId(), false);
     // retrive subscribed -----------------------------------------------------
     $select_count = "SELECT COUNT(*) as user_count ";
     $from_count = " FROM " . $GLOBALS["prefix_lms"] . "_courseuser AS u";
     $where_count = " WHERE u.idCourse = '" . $id_course . "' " . " AND u.level = '3'" . " AND u.status IN ('" . _CUS_CONFIRMED . "', '" . _CUS_SUBSCRIBED . "', '" . _CUS_BEGIN . "', '" . _CUS_END . "', '" . _CUS_SUSPEND . "', '" . _CUS_WAITING_LIST . "')" . " AND u.absent = '0'";
     $re_count = sql_query($select_count . $from_count . $where_count);
     list($cinfo['enrolled']) = sql_fetch_row($re_count);
     $action = relationWithCourse($cinfo['idCourse'], $cinfo, isset($usercourses[$cinfo['idCourse']]) ? $usercourses[$cinfo['idCourse']] : false, false);
     $html = $lang->def('_' . strtoupper($action[0]) . '_DESCR');
     $search = array('[course_name]');
     $replace = array('<b>&quot;' . $cinfo['name'] . '&quot;</b>');
     switch ($action[0]) {
         case "can_buy":
         case "can_reserve":