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')); }
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); }