public function add() { if (!$this->permissions['subscribe_course']) { $this->render('invalid', array('message' => $this->_getErrorMessage('no permission'), 'back_url' => 'index.php?r=' . $this->link_course . '/show')); return; } else { if (!$this->checkAdminLimit()) { $this->render('invalid', array('message' => Lang::t('_SUBSCRIBE_LIMIT_REACHED', 'subscribe'), 'back_url' => 'index.php?r=' . $this->link_course . '/show')); return; } } require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.userselector.php'; //require_once($GLOBALS['where_framework'].'/class.module/class.directory.php'); $user_selector = new UserSelector(); $cman = new CourseAlms(); //Course info $id_course = Get::req('id_course', DOTY_INT, 0); $id_edition = Get::req('id_edition', DOTY_INT, 0); $id_date = Get::req('id_date', DOTY_INT, 0); if (isset($_POST['cancelselector'])) { Util::jump_to('index.php?r=' . $this->link . '/show&id_course=' . $id_course . '&id_edition=' . $id_edition . '&id_date=' . $id_date); } $model = new SubscriptionAlms($id_course, $id_edition, $id_date); if (isset($_POST['okselector'])) { $_selection = $user_selector->getSelection($_POST); $acl_man = Docebo::user()->getAclManager(); $user_selected = $acl_man->getAllUsersFromSelection($_selection); //$acl_man->getAllUsersFromIdst($_selection); $user_alredy_subscribed = $model->loadUserSelectorSelection(); $user_selected = array_diff($user_selected, $user_alredy_subscribed); if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { $to_subscribe = count($user_selected); $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'); if ($subscribed_count + $to_subscribe > $pref['admin_rules.max_course_subscribe']) { $this->render('invalid', array('message' => Lang::t('_SUBSCRIBE_LIMIT_REACHED', 'subscribe'), 'back_url' => 'index.php?r=' . $this->link_course . '/show')); return; } } } if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $admin_users = $adminManager->getAdminUsers(Docebo::user()->getIdST()); $user_selected = array_intersect($user_selected, $admin_users); } $user_selected = $acl_man->getUsersFromMixedIdst($user_selected); if (count($user_selected) == 0) { Util::jump_to('index.php?r=' . $this->link . '/add&id_course=' . $id_course . '&id_edition=' . $id_edition . '&id_date=' . $id_date . '&err=_empty_selection'); } $sel_date_begin_validity = Get::req('sel_date_begin_validity', DOTY_INT, 0) > 0; $sel_date_expire_validity = Get::req('sel_date_expire_validity', DOTY_INT, 0) > 0; $date_begin_validity = $sel_date_begin_validity ? Get::req('set_date_begin_validity', DOTY_STRING, "") : false; $date_expire_validity = $sel_date_expire_validity ? Get::req('set_date_expire_validity', DOTY_STRING, "") : false; if ($date_begin_validity) { $date_begin_validity = Format::dateDb($date_begin_validity, 'date'); } if ($date_expire_validity) { $date_expire_validity = Format::dateDb($date_expire_validity, 'date'); } $select_level_mode = Get::req('select_level_mode', DOTY_STRING, ""); switch ($select_level_mode) { case "students": // subscribe the selection with the students level require_once _lms_ . '/lib/lib.course.php'; $course_info = $model->getCourseInfoForSubscription(); //check if the subscriber is a sub admin and, if true check it's limitation $can_subscribe = true; $subscribe_method = $course_info['subscribe_method']; if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { $limited_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.limit_course_subscribe'); $max_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.max_course_subscribe'); $direct_subscribe = Docebo::user()->preference->getAdminPreference('admin_rules.direct_course_subscribe'); if ($limited_subscribe == 'on') { $limited_subscribe = true; } else { $limited_subscribe = false; } if ($direct_subscribe == 'on') { $direct_subscribe = true; } else { $direct_subscribe = false; } } else { $limited_subscribe = false; $max_subscribe = 0; $direct_subscribe = true; } if ($can_subscribe) { require_once _lms_ . '/lib/lib.course.php'; $docebo_course = new DoceboCourse($id_course); $level_idst =& $docebo_course->getCourseLevel($id_course); if (count($level_idst) == 0 || $level_idst[1] == '') { $level_idst =& $docebo_course->createCourseLevel($id_course); } $waiting = 0; $user_subscribed = array(); $user_waiting = array(); if (!$direct_subscribe) { $waiting = 1; } // do the subscriptions $result = true; $this->db->start_transaction(); while (list(, $id_user) = each($user_selected)) { if (!$limited_subscribe || $max_subscribe) { //$this->acl_man->addToGroup($level_idst[3], $id_user); $this->_addToCourseGroup($level_idst[3], $id_user); if ($model->subscribeUser($id_user, 3, $waiting, $date_begin_validity, $date_expire_validity)) { $max_subscribe--; } else { $this->acl_man->removeFromGroup($level_idst[3], $id_user); $result = false; } } } //End While $this->db->commit(); // Save limit preference for admin if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { $to_subscribe = count($user_selected); if ($pref['admin_rules.limit_course_subscribe'] == 'on') { $user_pref->setPreference('user_subscribed_count', $subscribed_count + $to_subscribe); } } reset($user_selected); $send_alert = Get::req('send_alert', DOTY_INT, 0); //basically we will consider the alert as a checkbox, the initial state of the checkbox will be setted according to the alert status if (!empty($user_selected) && $send_alert) { 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']); // 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 createNewAlert('UserCourseInserted', 'subscribe', 'insert', '1', 'User subscribed', $user_selected, $msg_composer, $send_alert, true); } } $result = $result > 0 ? '_operation_successful' : '_operation_failed'; Util::jump_to('index.php?r=' . $this->link . '/show&id_course=' . $id_course . '&id_edition=' . $id_edition . '&id_date=' . $id_date . '&res=' . $result); break; } $model->loadSelectedUser($user_selected); $course_info = $this->model->getCourseInfoForSubscription(); $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name']; $this->render('level', array('id_course' => $id_course, 'id_edition' => $id_edition, 'id_date' => $id_date, 'model' => $model, 'course_info' => $cman->getInfo($id_course, $id_edition, $id_date), 'num_subscribed' => count($user_selected), 'send_alert' => Get::req('send_alert', DOTY_INT, 0), 'date_begin_validity' => $date_begin_validity, 'date_expire_validity' => $date_expire_validity, 'course_name' => $course_name)); } else { if (isset($_GET['err']) && $_GET['err'] !== '') { UIFeedback::error(Lang::t(strtoupper($_GET['err']), 'subscription')); } $user_selector->show_user_selector = TRUE; $user_selector->show_group_selector = TRUE; $user_selector->show_orgchart_selector = TRUE; $user_selector->show_orgchart_simple_selector = TRUE; $user_alredy_subscribed = array(); if (isset($_GET['load'])) { $user_selector->requested_tab = PEOPLEVIEW_TAB; $user_alredy_subscribed = $model->loadUserSelectorSelection(); $user_selector->resetSelection($user_alredy_subscribed); } //find if the event manager is configured to send an alert or not in case of new subscription list($send_alert) = sql_fetch_row(sql_query("SELECT permission " . " FROM %adm_event_class as ec" . " JOIN %adm_event_manager as em" . " WHERE ec.idClass = em.idClass AND ec.class = 'UserCourseInserted' ")); $course_info = $this->model->getCourseInfoForSubscription(); $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name']; $this->render('add', array('id_course' => $id_course, 'id_edition' => $id_edition, 'id_date' => $id_date, 'model' => $model, 'course_info' => $cman->getInfo($id_course, $id_edition, $id_date), 'user_selector' => $user_selector, 'user_alredy_subscribed' => $user_alredy_subscribed, 'send_alert' => $send_alert == 'mandatory', 'course_name' => $course_name)); } }
protected function presence() { //Course info $id_course = Get::req('id_course', DOTY_INT, 0); $id_date = Get::req('id_date', DOTY_INT, 0); $model = new ClassroomAlms($id_course, $id_date); if (isset($_POST['save'])) { if ($model->savePresence()) { Util::jump_to('index.php?r=' . $this->base_link_classroom . '/classroom&id_course=' . $model->getIdCourse() . '&result=ok'); } else { Util::jump_to('index.php?r=' . $this->base_link_classroom . '/classroom&id_course=' . $model->getIdCourse() . '&result=err_pres'); } } elseif (isset($_POST['undo'])) { Util::jump_to('index.php?r=' . $this->base_link_classroom . '/classroom&id_course=' . $model->getIdCourse()); } $cmodel = new CourseAlms(); $course_info = $cmodel->getInfo($id_course, FALSE, $id_date); $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name']; $this->render('presence', array('model' => $model, 'base_link_course' => $this->base_link_course, 'base_link_classroom' => $this->base_link_classroom, 'course_name' => $course_name)); }
public function man_courseTask() { $id_course = Get::req('id_course', DOTY_INT, 0); if ($id_course <= 0) { $this->render('invalid', array('message' => $this->_getErrorMessage("invalid course"), 'back_url' => $base_url)); return; } $cmodel = new CourseAlms(); $course_info = $cmodel->getInfo($id_course); $course_name = ($course_info['code'] !== '' ? '[' . $course_info['code'] . '] ' : '') . $course_info['name']; $title_arr = array('index.php?r=' . $this->base_link_course . '/show' => Lang::t('_COURSES', 'course'), Lang::t('_COMPETENCES', 'competences') . ' : ' . $course_name); $res = Get::req('res', DOTY_ALPHANUM, ''); $result_message = ""; switch ($res) { case 'ok_competences': $result_message = Lang::t('_OPERATION_SUCCESSFUL', 'standard'); break; case 'err_competences': $result_message = Lang::t('_OPERATION_FAILURE', 'standard'); break; } $this->render('man_course', array('id_course' => $id_course, 'has_scores' => $this->model->courseHasScoreCompetences($id_course), 'title_arr' => $title_arr, 'result_message' => $result_message, 'filter_text' => "", 'base_link_competence' => $this->base_link_competence)); }