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); } }
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&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>"' . $cinfo['name'] . '"</b>'); switch ($action[0]) { case "can_buy": case "can_reserve":