protected function edit() { if (!$this->permissions['mod']) { $this->render('invalid', array('message' => $this->_getMessage('no permission'), 'back_url' => 'index.php?r=alms/communication/show')); return; } require_once _base_ . '/lib/lib.form.php'; $id_comm = Get::req('id_comm', DOTY_INT, 0); $data = $this->model->findByPk($id_comm); $data['publish_date'] = Format::date($data['publish_date'], 'date'); $course_model = new CourseAlms(); $cinfo = $course_model->getCourseModDetails($data['id_course']); $course_name = $cinfo['name']; YuiLib::load('autocomplete'); $this->render('mod', array('data' => $data, 'course_name' => $course_name)); }
public function setUnsubscribeRequest($id_user, $id_course, $id_edition = FALSE, $id_date = FALSE) { if ($id_user <= 0 || $id_course <= 0) { return FALSE; } $cmodel = new CourseAlms(); $cinfo = $cmodel->getCourseModDetails($id_course); switch ((int) $cinfo['auto_unsubscribe']) { case 0: return FALSE; break; case 1: case 2: if ($cinfo['unsubscribe_date_limit'] != "" && $cinfo['unsubscribe_date_limit'] != "0000-00-00 00:00:00") { if ($cinfo['unsubscribe_date_limit'] < date("Y-m-d H:i:s")) { return FALSE; } } break; } if ($id_date > 0) { $query = "UPDATE %lms_course_date_user SET requesting_unsubscribe = 1, requesting_unsubscribe_date = NOW() " . " WHERE id_user = "******" AND id_date = " . (int) $id_date; } else { if ($id_edition > 0) { $query = "UPDATE %lms_course_editions_user SET requesting_unsubscribe = 1, requesting_unsubscribe_date = NOW() " . " WHERE id_user = "******" AND id_edition = " . (int) $id_edition; } else { $query = "UPDATE %lms_courseuser SET requesting_unsubscribe = 1, requesting_unsubscribe_date = NOW() " . " WHERE idUser = "******" AND idCourse = " . (int) $id_course; } } $res = $this->db->query($query); // check and send message for unsibscription moderated if ($res && (int) $cinfo['auto_unsubscribe'] == 1) { //moderated self unsubscribe $userinfo = $this->acl_man->getUser($id_user); $array_subst = array('[url]' => Get::sett('url'), '[course]' => $cinfo['name'], '[firstname]' => $userinfo[ACL_INFO_FIRSTNAME], '[lastname]' => $userinfo[ACL_INFO_LASTNAME], '[userid]' => $this->acl_man->relativeId($userinfo[ACL_INFO_USERID])); // message to user that is waiting require_once _base_ . '/lib/lib.eventmanager.php'; $msg_composer = new EventMessageComposer('subscribe', 'lms'); $msg_composer->setSubjectLangText('email', '_NEW_USER_UNSUBS_WAITING_SUBJECT', false); $msg_composer->setBodyLangText('email', '_NEW_USER_UNSUBS_WAITING_TEXT', $array_subst); $msg_composer->setSubjectLangText('sms', '_NEW_USER_UNSUBS_WAITING_SUBJECT_SMS', false); $msg_composer->setBodyLangText('sms', '_NEW_USER_UNSUBS_WAITING_TEXT_SMS', $array_subst); $acl =& Docebo::user()->getAcl(); $acl_man =& $this->acl_man; $recipients = array(); $idst_group_god_admin = $acl->getGroupST(ADMIN_GROUP_GODADMIN); $recipients = $acl_man->getGroupMembers($idst_group_god_admin); $idst_group_admin = $acl->getGroupST(ADMIN_GROUP_ADMIN); $idst_admin = $acl_man->getGroupMembers($idst_group_admin); require_once _adm_ . '/lib/lib.adminmanager.php'; foreach ($idst_admin as $id_user) { $adminManager = new AdminManager(); $acl_manager =& $acl_man; $idst_associated = $adminManager->getAdminTree($id_user); $array_user =& $acl_manager->getAllUsersFromIdst($idst_associated); $array_user = array_unique($array_user); $array_user[] = $array_user[0]; unset($array_user[0]); $control_user = array_search(getLogUserId(), $array_user); $query = "SELECT COUNT(*)" . " FROM " . Get::cfg('prefix_fw') . "_admin_course" . " WHERE idst_user = '******'" . " AND type_of_entry = 'course'" . " AND id_entry = '" . $id_course . "'"; list($control_course) = mysql_fetch_row(mysql_query($query)); $query = "SELECT COUNT(*)" . " FROM " . Get::cfg('prefix_fw') . "_admin_course" . " WHERE idst_user = '******'" . " AND type_of_entry = 'coursepath'" . " AND id_entry IN" . " (" . " SELECT id_path" . " FROM " . Get::cfg('prefix_lms') . "_coursepath_courses" . " WHERE id_item = '" . $id_course . "'" . " )"; list($control_coursepath) = mysql_fetch_row(mysql_query($query)); $query = "SELECT COUNT(*)" . " FROM " . Get::cfg('prefix_fw') . "_admin_course" . " WHERE idst_user = '******'" . " AND type_of_entry = 'catalogue'" . " AND id_entry IN" . " (" . " SELECT idCatalogue" . " FROM " . Get::cfg('prefix_lms') . "_catalogue_entry" . " WHERE idEntry = '" . $id_course . "'" . " )"; list($control_catalogue) = mysql_fetch_row(mysql_query($query)); if ($control_user && ($control_course || $control_coursepath || $control_catalogue)) { $recipients[] = $id_user; } } $recipients = array_unique($recipients); createNewAlert('UserCourseRemovedModerate', 'unsubscribe', 'insert', '1', 'User unsubscribed with moderation', $recipients, $msg_composer); } return $res ? TRUE : FALSE; }
/** * The action of self-unsubscription from a course (if enabled for the course), * available in the course box of the courses list */ public function self_unsubscribe() { $id_user = Docebo::user()->idst; //Get::req('id_user', DOTY_INT, Docebo::user()->idst); $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); $cmodel = new CourseAlms(); $cinfo = $cmodel->getCourseModDetails($id_course); //index.php?r=elearning/show $back = Get::req('back', DOTY_STRING, ""); if ($back != "") { $parts = explode('/', $back); $length = count($parts); if ($length > 0) { $parts[$length - 1] = 'show'; $back = implode('/', $parts); } } $jump_url = 'index.php?r=' . ($back ? $back : 'lms/elearning/show'); if ($cinfo['auto_unsubscribe'] == 0) { //no self unsubscribe possible for this course Util::jump_to($jump_url . '&res=err_unsub'); } $date_ok = TRUE; if ($cinfo['unsubscribe_date_limit'] != "" && $cinfo['unsubscribe_date_limit'] != "0000-00-00 00:00:00") { if ($cinfo['unsubscribe_date_limit'] < date("Y-m-d H:i:s")) { //self unsubscribing is no more allowed, go back to courselist page Util::jump_to($jump_url . '&res=err_unsub'); } } $smodel = new SubscriptionAlms(); $param = ''; if ($cinfo['auto_unsubscribe'] == 1) { //moderated self unsubscribe $res = $smodel->setUnsubscribeRequest($id_user, $id_course, $id_edition, $id_date); $param .= $res ? '&res=ok_unsub' : '&res=err_unsub'; } if ($cinfo['auto_unsubscribe'] == 2) { //directly unsubscribe user $res = $smodel->unsubscribeUser($id_user, $id_course, $id_edition, $id_date); $param .= $res ? '&res=ok_unsub' : '&res=err_unsub'; } Util::jump_to($jump_url); }