示例#1
0
 function addsubscriptionedition()
 {
     require_once _lms_ . '/lib/lib.subscribe.php';
     require_once _lms_ . '/lib/lib.coursepath.php';
     $cpath_man = new CoursePath_Manager();
     $subs_man = new CourseSubscribe_Management();
     $id_path = Get::req('id_path', DOTY_INT, 0);
     $user_selected = unserialize(urldecode(Get::req('users', DOTY_MIXED, array())));
     $courses = $cpath_man->getAllCourses(array($id_path));
     if (isset($_POST['undo']) || !isset($_POST['save'])) {
         Util::jump_to('index.php?modname=coursepath&op=addsubscription&id_path=' . $id_path);
     }
     $re = true;
     $query_pathlist = "\r\n\tSELECT path_name, subscribe_method\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_coursepath\r\n\tWHERE id_path = '" . $id_path . "'\r\n\tORDER BY path_name ";
     list($path_name, $subscribe_method) = sql_fetch_row(sql_query($query_pathlist));
     if ($subscribe_method != 1 && !checkPerm('moderate', true)) {
         $waiting = 1;
     } else {
         $waiting = 0;
     }
     $users_subsc = array();
     $course_man = new Man_Course();
     $assessment = $course_man->getAllCourses(false, 'assessment', $courses);
     $classroom = $course_man->getAllCourses(false, 'classroom', $courses);
     $edition = $course_man->getAllCourses(false, 'edition', $courses);
     $array_id_date = array();
     $array_id_edition = array();
     if (!empty($classroom)) {
         foreach ($classroom as $id_course => $info) {
             if (Get::req('classroom_' . $id_course, DOTY_INT, 0) != 0) {
                 $array_id_date[Get::req('classroom_' . $id_course, DOTY_INT, 0)] = Get::req('classroom_' . $id_course, DOTY_INT, 0);
             }
         }
     }
     if (!empty($edition)) {
         foreach ($edition as $id_course => $info) {
             if (Get::req('edition_' . $id_course, DOTY_INT, 0) != 0) {
                 $array_id_edition[Get::req('edition_' . $id_course, DOTY_INT, 0)] = Get::req('edition_' . $id_course, DOTY_INT, 0);
             }
         }
     }
     require_once _lms_ . '/lib/lib.date.php';
     $date_man = new DateManager();
     require_once _lms_ . '/lib/lib.edition.php';
     $edition_man = new EditionManager();
     while (list(, $id_user) = each($user_selected)) {
         $text_query = "\r\n\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_coursepath_user\r\n\t\t( id_path, idUser, waiting, subscribed_by ) VALUES\r\n\t\t( '" . $id_path . "', '" . $id_user . "', '" . $waiting . "', '" . getLogUserId() . "' )";
         $re_s = sql_query($text_query);
         if ($re_s == true) {
             $users_subsc[] = $id_user;
         }
         $re &= $re_s;
         if (!empty($assessment)) {
             foreach ($assessment as $id_assessment => $assessment_info) {
                 sql_query("INSERT INTO %lms_assessment_user (id_assessment, id_user, type_of) VALUES ('" . $id_assessment . "', '" . $id_user . "', 'user')");
             }
             reset($assessment);
         }
         if (!empty($array_id_date)) {
             foreach ($array_id_date as $id_date) {
                 $date_man->addUserToDate($id_date, $id_user, Docebo::user()->getIdSt());
             }
             reset($array_id_date);
         }
         if (!empty($array_id_edition)) {
             foreach ($array_id_edition as $id_edition) {
                 $edition_man->addUserToEdition($id_edition, $id_user, Docebo::user()->getIdSt());
             }
             reset($array_id_edition);
         }
     }
     // now subscribe user to all the course
     if ($waiting == 0) {
         $re &= $subs_man->multipleSubscribe($users_subsc, $courses, 3);
     }
     Util::jump_to('index.php?modname=coursepath&op=pathlist&result=' . ($re ? 'ok' : 'err'));
 }
示例#2
0
 public function applyRulesMultiLang($log_action, $arr_users, $id_org, $id_entity = false, $user_temp = false)
 {
     $ent = array();
     if ($id_org != false) {
         $acl_man = Docebo::aclm();
         $oc_sn = $acl_man->getGroupST('oc_' . $id_org);
         $um_adm = new UsermanagementAdm();
         $ancestor = $um_adm->getAncestorInfoFolders($id_org);
         $ancestor['idst_ocd'][] = $oc_sn;
         $ent = $ancestor['idst_ocd'];
     }
     if ($id_entity != false) {
         $ent[] = $id_entity;
     }
     if (empty($ent)) {
         return false;
     }
     // FORMA: if we have the user_temp param we have to use user_temp table
     $user_table = "%adm_user";
     if ($user_temp) {
         $user_table = "%adm_user_temp";
     }
     $query = "SELECT DISTINCT u.idst, us.value " . " FROM " . $user_table . " AS u " . " LEFT JOIN %adm_setting_user AS us " . " ON ( u.idst = us.id_user AND us.path_name = 'ui.language' ) " . " WHERE u.idst IN ( " . implode(",", $arr_users) . " )";
     // END FORMA
     $re_query = $this->db->query($query);
     if (!$re_query) {
         return false;
     }
     $arr_users = array();
     $langs = array();
     $default_lang = getDefaultLanguage();
     while (list($idst_user, $value) = $this->db->fetch_row($re_query)) {
         if ($value == '') {
             $value = $default_lang;
         }
         $langs[$value] = $value;
         $arr_users[$value][] = $idst_user;
     }
     // find rules for evry language in the array
     require_once _lms_ . '/lib/lib.subscribe.php';
     $cs = new CourseSubscribe_Management();
     $applicable = $this->getApplicableRuleForEntityMultiLang($ent);
     $course_list = $applicable['course_list'];
     if (!isset($course_list['all'])) {
         $course_list['all'] = array();
     }
     $this->db->start_transaction();
     // create a entry log
     $id_log = $this->addLogEntry($log_action, $applicable['rules']);
     if (!$id_log) {
         return false;
     }
     foreach ($langs as $i => $lang_code) {
         if (!empty($course_list[$lang_code])) {
             $courses = array_unique(array_merge($course_list['all'], $course_list[$lang_code]));
         } else {
             $courses = array_unique($course_list['all']);
         }
         if (!empty($arr_users[$lang_code]) && !empty($courses)) {
             $re = $cs->multipleSubscribe($arr_users[$lang_code], $courses, 3, $id_log);
         }
     }
     $this->db->commit();
     return $re;
 }
 public function subscribeToCoursePath()
 {
     $id_path = Get::req('id_path', DOTY_INT, 0);
     $id_user = Docebo::user()->getIdSt();
     $query_pathlist = "\n\t\tSELECT path_name, subscribe_method\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_coursepath\n\t\tWHERE id_path = '" . $id_path . "'\n\t\tORDER BY path_name ";
     list($path_name, $subscribe_method) = sql_fetch_row(sql_query($query_pathlist));
     if ($subscribe_method == 1) {
         $waiting = 1;
     } else {
         $waiting = 0;
     }
     $text_query = "\n\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_coursepath_user\n\t\t\t( id_path, idUser, waiting, subscribed_by ) VALUES\n\t\t\t( '" . $id_path . "', '" . $id_user . "', '" . $waiting . "', '" . getLogUserId() . "' )";
     $re_s = sql_query($text_query);
     /////////////////////////
     if ($waiting == 0) {
         require_once _lms_ . '/lib/lib.subscribe.php';
         require_once _lms_ . '/lib/lib.coursepath.php';
         $cpath_man = new CoursePath_Manager();
         $subs_man = new CourseSubscribe_Management();
         $id_path = Get::req('id_path', DOTY_INT, 0);
         $user_selected = unserialize(urldecode(Get::req('users', DOTY_MIXED, array())));
         $courses = $cpath_man->getAllCourses(array($id_path));
         $users_subsc = array($id_user);
         $re &= $subs_man->multipleSubscribe($users_subsc, $courses, 3);
     }
     /*
     		qui non posso intervenire, si devono scegliere gli assesment e le edizioni... da admin ci sono form
     		$course_man = new Man_Course();
     		$assessment = $course_man->getAllCourses(false, 'assessment', $courses);
     		$classroom = $course_man->getAllCourses(false, 'classroom', $courses);
     		$edition = $course_man->getAllCourses(false, 'edition', $courses);
     		if(!empty($assessment))
     		{
     			foreach($assessment as $id_assessment => $assessment_info)
     				sql_query("INSERT INTO %lms_assessment_user (id_assessment, id_user, type_of) VALUES ('".$id_assessment."', '".$id_user."', 'user')");
     			reset($assessment);
     		}
     		if(!empty($array_id_date))
     		{
     			foreach($array_id_date as $id_date)
     				$date_man->addUserToDate($id_date, $id_user, Docebo::user()->getIdSt());
     			reset($array_id_date);
     		}
     		if(!empty($array_id_edition))
     		{
     			foreach($array_id_edition as $id_edition)
     				$edition_man->addUserToEdition($id_edition, $id_user, Docebo::user()->getIdSt());
     			reset($array_id_edition);
     		}
     */
     $res['success'] = true;
     if ($waiting == 1) {
         $res['new_status'] = '<p class="cannot_subscribe">' . Lang::t('_WAITING', 'catalogue') . '</p>';
     } else {
         $res['new_status'] = '<p class="cannot_subscribe">' . Lang::t('_USER_STATUS_SUBS', 'catalogue') . '</p>';
     }
     $res['message'] = $res['message'] = UIFeedback::info(Lang::t('_SUBSCRIPTION_CORRECT', 'catalogue'), true);
     echo $this->json->encode($res);
 }