public function getSubscriptionsList($filter = false) { $output = false; if ($this->id_edition != 0) { require_once _lms_ . '/lib/lib.edition.php'; $edition_man = new EditionManager(); $output = $edition_man->getEditionSubscribed($this->id_edition, false, $filter); } elseif ($this->id_date != 0) { require_once _lms_ . '/lib/lib.date.php'; $date_man = new DateManager(); $output = $date_man->getDateSubscribed($this->id_date, $filter); } else { require_once _lms_ . '/lib/lib.subscribe.php'; $subscribe_man = new CourseSubscribe_Manager(); $output = $subscribe_man->getCourseSubscribedUserIdst($this->id_course, false, $filter); } return $output; }
/** * @param int $id_course the id of the course * @param bool $subdived_for_level if is true the array is in the form * [id_lv] => ([] => id_user, [] => id_user, ...), [id_lv] => ([] => id_user, ...) * @param int $id_level if is not false the array contains only a list of id_user of the level passed * @param bool $exclude_waiting if true exclude the user in wait status * * @return array contains the id_user of the user subscribed, the structure is dependent of the other param */ function getSubscribedInfo($id_course, $subdived_for_level = false, $id_level = false, $exclude_waiting = false, $status = false, $edition_id = false, $sort = false, $user_filter = '', $group_all_members = false, $limit = false, $date_id = false) { $acl_man =& Docebo::user()->getAclManager(); $id_users = array(); $query_courseuser = "******" . $GLOBALS['prefix_lms'] . "_courseuser AS c"; if ($sort || $user_filter !== '') { $query_courseuser .= " JOIN " . $GLOBALS['prefix_fw'] . "_user AS u ON u.idst = c.idUser"; } $query_courseuser .= " WHERE c.idCourse = '" . $id_course . "'"; if ($exclude_waiting) { $query_courseuser .= " AND c.waiting = 0"; } if ($id_level !== false) { $query_courseuser .= " AND c.level = '" . $id_level . "'"; } if ($status !== false) { $query_courseuser .= " AND c.status = '" . $status . "'"; } if ($group_all_members !== false) { $query_courseuser .= " AND c.idUser IN (" . implode(',', $group_all_members) . ")"; } if ($edition_id !== false && $edition_id > 0) { require_once _lms_ . '/lib/lib.edition.php'; $ed_man = new EditionManager(); $ed_users = $ed_man->getEditionSubscribed($edition_id); if (!empty($ed_users)) { $query_courseuser .= " AND c.idUser IN (" . implode(",", $ed_users) . ")"; } } if ($date_id !== false && $date_id > 0) { require_once _lms_ . '/lib/lib.date.php'; $date_man = new DateManager(); $dt_users_arr = $date_man->getUserForPresence($date_id); $dt_users = array_keys($dt_users_arr); if (!empty($dt_users)) { $query_courseuser .= " AND c.idUser IN (" . implode(",", $dt_users) . ")"; } else { // se per quella data o edizione non è iscritto nessun utente $query_courseuser .= " AND c.idUser IN (-1)"; } } if ($user_filter !== '') { $query_courseuser .= " AND (u.firstname LIKE '%" . $user_filter . "%' OR u.lastname LIKE '%" . $user_filter . "%' OR u.userid LIKE '%" . $user_filter . "%')"; } if ($sort) { $query_courseuser .= " ORDER BY u.lastname, u.firstname, u.userid"; } if ($limit !== false) { $query_courseuser .= " LIMIT " . (int) $limit . ", " . (int) Get::sett('visuItem'); } $re_courseuser = sql_query($query_courseuser); while (list($id_user, $lv, $is_waiting, $status, $absent) = sql_fetch_row($re_courseuser)) { if ($subdived_for_level === false) { $id_users[$id_user] = array('idUser' => $id_user, 'level' => $lv, 'waiting' => $is_waiting, 'status' => $status, 'absent' => $absent); } else { if ($is_waiting) { $id_users['waiting'][$id_user] = array('idUser' => $id_user, 'level' => $lv, 'waiting' => $is_waiting, 'status' => $status, 'absent' => $absent); } else { $id_users[$lv][$id_user] = array('idUser' => $id_user, 'level' => $lv, 'waiting' => $is_waiting, 'status' => $status, 'absent' => $absent); } } } return $id_users; }
protected function _subscribeUsersToCatalogue($data) { require_once _lms_ . '/lib/lib.course.php'; require_once _lms_ . '/lib/lib.subscribe.php'; require_once _lms_ . '/lib/lib.edition.php'; require_once _lms_ . '/lib/lib.date.php'; $subscribe_man = new CourseSubscribe_Manager(); $edition_man = new EditionManager(); $date_man = new DateManager(); $user_subscribed = array(); $user_waiting = array(); //check users who are already subscribed in any selected course $arr_courses = array(); foreach ($data as $value) { list($id_user, $id_course, $id_edition, $id_date) = $value; $arr_courses[] = $id_course; } $arr_editions = $edition_man->getCourseEditions($arr_courses); $arr_classrooms = $date_man->getCourseDate($arr_courses); //get subscriptions to courses and editions $already_courses = $subscribe_man->getCourseSubscribedUserIdst($arr_courses, true); $already_editions = $edition_man->getEditionSubscribed($arr_editions, true); $already_classrooms = $date_man->getDatesSubscribed(array_keys($arr_classrooms), true); //subscribe users $count_u = 0; $count_e = 0; $count_d = 0; $lv_user = 3; //only students can be managed for multiple subscriptions $waiting = false; //no waiting condition reset($data); foreach ($data as $value) { list($id_user, $id_course, $id_edition, $id_date) = $value; $_u_subscribed = false; if ($id_date) { if (!isset($already_classrooms[$id_date][$id_user])) { //subscribe to classroom $res = $date_man->subscribeUserToDate($id_user, $id_course, $id_date, $lv_user, $waiting); if ($res) { $count_d++; } if ($res) { $_u_subscribed = true; } // user subscribed } } elseif ($id_edition) { if (!isset($already_editions[$id_edition][$id_user])) { //subscribe to edition $res = $edition_man->subscribeUserToEdition($id_user, $id_course, $id_edition, $lv_user, $waiting); if ($res) { $count_e++; } if ($res) { $_u_subscribed = true; } // user subscribed } } else { if (!isset($already_courses[$id_course][$id_user])) { //subscribe to course $res = $subscribe_man->subscribeUserToCourse($id_user, $id_course, $lv_user, $waiting); if ($res) { $count_u++; } if ($res) { $_u_subscribed = true; } // user subscribed } } if ($_u_subscribed) { // user subscribed $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); } $this->_addToCourseGroup($level_idst[$lv_user], $id_user); } } /* //send alerts if(!empty($user_subscribed)) { _sendSubscribedAlert($user_subscribed, $course_info); } if(!empty($user_waiting)) { _sendWaitingAlert($user_waiting, $course_info); } */ return $count_u + $count_e + $count_d; }