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));
 }
Exemplo n.º 2
0
 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);
 }