public function getCourseEditionSubscription($id_course, $id_edition, $start_index, $results, $sort, $dir, $filter) { $query = "SELECT u.idst, u.userid, u.firstname, u.lastname, s.level, s.status, s.date_begin_validity, s.date_expire_validity" . " FROM " . $this->courseuser_table . " AS s" . " JOIN " . $this->user_table . " AS u ON s.idUser = u.idst" . " WHERE s.idCourse = " . (int) $id_course . " AND u.idst IN (" . implode(', ', $this->getEditionSubscribed($id_edition)) . ")"; if (is_array($filter)) { if (isset($filter['text']) && $filter['text'] != "") { $query .= " AND (u.userid LIKE '%" . $filter['text'] . "%' OR u.firstname LIKE '%" . $filter['text'] . "%' OR u.lastname LIKE '%" . $filter['text'] . "%') "; } $arr_idst = array(); if (isset($filter['orgchart']) && $filter['orgchart'] > 0) { $umodel = new UsermanagementAdm(); $use_desc = isset($filter['descendants']) && $filter['descendants']; $ulist = $umodel->getFolderUsers($filter['orgchart'], $use_desc); if (!empty($ulist)) { $arr_idst = $ulist; } unset($ulist); } if (!empty($arr_idst)) { $conditions[] = " AND u.idst IN (" . implode(",", $arr_idst) . ") "; } if (isset($filter['date_valid']) && strlen($filter['date_valid']) >= 10) { $query .= " AND (s.date_begin_validity <= '" . $filter['date_valid'] . "' OR s.date_begin_validity IS NULL OR s.date_begin_validity='0000-00-00 00:00:00') "; $query .= " AND (s.date_expire_validity >= '" . $filter['date_valid'] . "' OR s.date_expire_validity IS NULL OR s.date_expire_validity='0000-00-00 00:00:00') "; } if (isset($filter['show'])) { //validate values switch ($filter['show']) { case 0: //all //no condition to check ... break; case 1: //expired $query .= " AND (s.date_expire_validity IS NOT NULL AND s.date_expire_validity < NOW())"; break; case 2: //not expired with expiring date $query .= " AND (s.date_expire_validity IS NOT NULL AND s.date_expire_validity > NOW())"; break; case 3: //not expired without expiring date $query .= " AND (s.date_expire_validity IS NULL OR s.date_expire_validity='' OR s.date_expire_validity='0000-00-00 00:00:00') "; break; default: //all ... break; } } } if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $query .= " AND " . $adminManager->getAdminUsersQuery(Docebo::user()->getIdSt(), 'idUser'); } switch ($sort) { case 'userid': $query .= " ORDER BY u.userid " . $dir; break; case 'fullname': $query .= " ORDER BY u.firstname " . $dir . ", u.lastname " . $dir . ", u.userid " . $dir; break; case 'level': $query .= " ORDER BY s.level " . $dir . ", u.userid " . $dir; break; case 'status': $query .= " ORDER BY s.status " . $dir . ", u.userid " . $dir; break; } $start_index === false ? '' : ($query .= " LIMIT " . $start_index . ", " . $results); $result = sql_query($query); $res = array(); while (list($id_user, $userid, $firstname, $lastname, $level, $status, $date_begin_validity, $date_expire_validity) = sql_fetch_row($result)) { if ($firstname !== '' && $lastname !== '') { $user = $firstname . ' ' . $lastname; } elseif ($firstname !== '') { $user = $firstname; } elseif ($lastname !== '') { $user = $lastname; } else { $user = ''; } $res[] = array('sel' => '', 'id_user' => $id_user, 'userid' => $this->acl_man->relativeId($userid), 'fullname' => $user, 'level_id' => $level, 'status_id' => $status, 'date_begin_validity' => $date_begin_validity, 'date_expire_validity' => $date_expire_validity, 'del' => 'ajax.adm_server.php?r=' . (Docebo::user()->getUserLevelId() == ADMIN_GROUP_PUBLICADMIN ? 'lms/p' : 'alms/') . 'subscription/delPopUp&id_course=' . $id_course . '&id_edition=' . $id_edition . '&id_user=' . $id_user); } return $res; }
public function getCourseSubscribedUserIdst($id_course, $no_flat = false, $filter = '') { if (is_numeric($id_course)) { $arr = array($id_course); } elseif (is_array($id_course) && count($id_course) > 0) { $arr =& $id_course; } else { return false; } $query = "SELECT s.idUser, s.idCourse " . " FROM " . $this->subscribe_table . " AS s " . " JOIN " . $this->user_table . " AS u ON u.idst = s.idUser " . " WHERE s.idCourse IN (" . implode(",", $arr) . ") "; if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $query .= " AND " . $adminManager->getAdminUsersQuery(Docebo::user()->getIdSt(), 's.idUser'); } if (is_array($filter)) { if (isset($filter['text']) && $filter['text'] != "") { $query .= " AND (u.userid LIKE '%" . $filter['text'] . "%' OR u.firstname LIKE '%" . $filter['text'] . "%' OR u.lastname LIKE '%" . $filter['text'] . "%') "; } $arr_idst = array(); if (isset($filter['orgchart']) && $filter['orgchart'] > 0) { $umodel = new UsermanagementAdm(); $use_desc = isset($filter['descendants']) && $filter['descendants']; $ulist = $umodel->getFolderUsers($filter['orgchart'], $use_desc); if (!empty($ulist)) { $arr_idst = $ulist; } unset($ulist); } if (!empty($arr_idst)) { $conditions[] = " AND u.idst IN (" . implode(",", $arr_idst) . ") "; } if (isset($filter['date_valid']) && strlen($filter['date_valid']) >= 10) { $query .= " AND (s.date_begin_validity <= '" . $filter['date_valid'] . "' OR s.date_begin_validity IS NULL OR s.date_begin_validity='0000-00-00 00:00:00') "; $query .= " AND (s.date_expire_validity >= '" . $filter['date_valid'] . "' OR s.date_expire_validity IS NULL OR s.date_expire_validity='0000-00-00 00:00:00') "; } } $result = $this->db->query($query); $res = array(); while (list($id_user, $id_course) = $this->db->fetch_row($result)) { if ($no_flat) { $res[$id_course][$id_user] = $id_user; } else { $res[$id_user] = (int) $id_user; } } if (!$no_flat) { $res = array_unique($res); } return $res; }
function getCoursesRequest($startIndex = false, $records = false, $sort = false, $dir = false, $filter = false) { if (!$startIndex) { $startIndex = 0; } if (!$records) { $records = Get::sett('visuItem'); } $filter_conds = ''; if ($filter) { if (isset($filter['c_category'])) { $flat = false; if (isset($filter['c_flatview'])) { $flat = $filter['c_flatview']['value'] == 'true' ? true : false; } $categories = array((int) $filter['c_category']['value']); if ($flat) { //retrieve category's sub-categories ids if ($filter['c_category']['value'] != 0) { $bounds_query = "SELECT iLeft, iRight FROM " . $GLOBALS['prefix_lms'] . "_category WHERE idCategory=" . $filter['c_category']['value']; $res = sql_query($bounds_query); list($c_left, $c_right) = sql_fetch_row($res); $categories_query = "SELECT idCategory FROM " . $GLOBALS['prefix_lms'] . "_category WHERE iLeft>" . $c_left . " AND iRight<" . $c_right; $res = sql_query($categories_query); while (list($sub_category) = sql_fetch_row($res)) { $categories[] = (int) $sub_category; } } else { $categories_query = "SELECT idCategory FROM " . $GLOBALS['prefix_lms'] . "_category WHERE 1"; $res = sql_query($categories_query); while (list($sub_category) = sql_fetch_row($res)) { $categories[] = (int) $sub_category; } } } $filter_conds .= " AND c.idCategory IN (" . implode(",", $categories) . ") "; } if (isset($filter['c_filter'])) { $filter_conds .= " AND ( " . " c.code LIKE '%" . $filter['c_filter']['value'] . "%' OR " . " c.name LIKE '%" . $filter['c_filter']['value'] . "%' OR " . " c.description LIKE '%" . $filter . "%' ) "; } if (isset($filter['c_expire'])) { if ($filter['c_expire']['value'] != '') { $temp = ''; switch ($filter['c_expire']['value']) { case 1: $temp .= " AND c.date_end = '0000-00-00' "; break; case 2: $temp .= " AND c.date_end >= '" . date("Y-m-d") . "' "; break; case 3: $temp .= " AND c.date_end <= '" . date("Y-m-d") . "' AND c.date_end <> '0000-00-00' "; break; } $filter_conds .= $temp; } } if (isset($filter['c_waiting'])) { if ($filter['c_waiting']['value'] == '1') { $filter_conds .= " AND c.idCourse IN" . " (" . " SELECT idCourse" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE waiting = 1" . " )"; } } } $userlevelid = Docebo::user()->getUserLevelId(); $is_subadmin = false; $all_courses = false; if ($userlevelid != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $acl_man =& Docebo::user()->getAclManager(); $admin_courses = $adminManager->getAdminCourse(Docebo::user()->getIdST()); $all_courses = false; if (isset($admin_courses['course'][0])) { $all_courses = true; } elseif (isset($admin_courses['course'][-1])) { require_once _lms_ . '/lib/lib.catalogue.php'; $cat_man = new Catalogue_Manager(); $user_catalogue = $cat_man->getUserAllCatalogueId(Docebo::user()->getIdSt()); if (count($user_catalogue) > 0) { $courses = array(0); foreach ($user_catalogue as $id_cat) { $catalogue_course =& $cat_man->getCatalogueCourse($id_cat, true); $courses = array_merge($courses, $catalogue_course); } foreach ($courses as $id_course) { if ($id_course != 0) { $admin_courses['course'][$id_course] = $id_course; } } } elseif (Get::sett('on_catalogue_empty', 'off') == 'on') { $all_courses = true; } } else { $array_courses = array(); $array_courses = array_merge($array_courses, $admin_courses['course']); if (!empty($admin_courses['coursepath'])) { require_once _lms_ . '/lib/lib.coursepath.php'; $path_man = new Catalogue_Manager(); $coursepath_course =& $path_man->getAllCourses($admin_courses['coursepath']); $array_courses = array_merge($array_courses, $coursepath_course); } if (!empty($admin_courses['catalogue'])) { require_once _lms_ . '/lib/lib.catalogue.php'; $cat_man = new Catalogue_Manager(); foreach ($admin_courses['catalogue'] as $id_cat) { $catalogue_course =& $cat_man->getCatalogueCourse($id_cat, true); $array_courses = array_merge($array_courses, $catalogue_course); } } $admin_courses['course'] = array_merge($admin_courses['course'], $array_courses); } $is_subadmin = true; } $query = "SELECT c.*, COUNT(cu.idUser) as subscriptions, SUM(cu.waiting) as pending " . " FROM " . $GLOBALS['prefix_lms'] . "_course as c " . " LEFT JOIN " . $GLOBALS['prefix_lms'] . "_courseuser as cu ON (c.idCourse=cu.idCourse) " . " WHERE c.course_type = 'elearning' " . $filter_conds . ($is_subadmin && !$all_courses ? !empty($admin_courses['course']) ? ' AND c.idCourse IN (' . implode(',', $admin_courses['course']) . ')' : ' AND c.idCourse = 0' : '') . ($is_subadmin ? " AND " . $adminManager->getAdminUsersQuery(Docebo::user()->getIdSt(), 'cu.idUser') : '') . " GROUP BY c.idCourse " . ($sort ? " ORDER BY " . $sort . " " . $dir . " " : "") . " LIMIT " . $startIndex . ", " . $records; return sql_query($query); }
public function getCourseEdition($id_course, $start_index = false, $results = false, $sort = false, $dir = false, $ed_arr = false) { if ($ed_arr !== false && is_array($ed_arr) && empty($ed_arr)) { $ed_arr[] = 0; } $query = "SELECT dt.id_date, dt.code, dt.name, dt.status, MIN(dy.date_begin) AS date_begin, MAX(dy.date_end) AS date_end, COUNT(dy.id_day) as num_day, COUNT(DISTINCT du.id_user) as user_subscribed, dt.unsubscribe_date_limit" . " FROM " . $this->date_table . " as dt" . " JOIN " . $this->day_date_table . " as dy ON dy.id_date = dt.id_date" . " LEFT JOIN " . $this->user_date_table . " as du ON du.id_date = dt.id_date" . " LEFT JOIN " . $this->user_table . " AS u ON u.idst = du.id_user" . " WHERE dt.id_course = " . $id_course . (!empty($ed_arr) && is_array($ed_arr) ? " AND dt.id_date IN (" . implode(",", $ed_arr) . ") " : "") . " GROUP BY dt.id_date"; switch ($sort) { case 'code': $query .= " ORDER BY dt.code " . $dir . ", dt.name " . $dir . ", date_begin " . $dir; break; case 'name': $query .= " ORDER BY dt.name " . $dir . ", date_begin " . $dir; break; case 'status': $query .= " ORDER BY dt.status " . $dir . ", dt.code " . $dir . ", dt.name " . $dir . ", date_begin " . $dir; break; case 'date_begin': $query .= " ORDER BY date_begin " . $dir . ", dt.code " . $dir . ", dt.name " . $dir; break; case 'date_end': $query .= " ORDER BY date_end " . $dir . ", date_begin " . $dir . ", dt.code " . $dir . ", dt.name " . $dir; break; } $start_index === false ? '' : ($query .= " LIMIT " . $start_index . ", " . $results); $result = sql_query($query); $res = array(); while (list($id_date, $code, $name, $status, $date_begin, $date_end, $num_day, $user_subscribed, $unsubscribe_date_limit) = sql_fetch_row($result)) { if (Docebo::user()->getUserLevelId() != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $adminManager = new AdminPreference(); $query = "SELECT COUNT(*)" . " FROM " . $this->user_date_table . " WHERE id_date = '" . $id_date . "'" . " AND " . $adminManager->getAdminUsersQuery(Docebo::user()->getIdSt(), 'id_user'); list($user_subscribed) = sql_fetch_row(sql_query($query)); $query = "SELECT COUNT(*) FROM %lms_courseuser AS cu JOIN %lms_course_date AS cd JOIN %lms_course_date_user AS cdu " . " ON (cd.id_date = cdu.id_date AND cd.id_course = cu.idCourse AND cu.idUser = cdu.id_user) " . " WHERE cd.id_date = " . (int) $id_date . " AND cu.level = 3" . " AND " . $adminManager->getAdminUsersQuery(Docebo::user()->getIdSt(), 'u.id_user'); list($num_student) = sql_fetch_row(sql_query($query)); } else { $query = "SELECT COUNT(*) FROM %lms_courseuser AS cu JOIN %lms_course_date AS cd JOIN %lms_course_date_user AS cdu " . " ON (cd.id_date = cdu.id_date AND cd.id_course = cu.idCourse AND cu.idUser = cdu.id_user) " . " WHERE cd.id_date = " . (int) $id_date . " AND cu.level = 3"; list($num_student) = sql_fetch_row(sql_query($query)); } $res[] = array('id_date' => $id_date, 'code' => $code, 'name' => $name, 'status' => $status, 'date_begin' => Format::date($date_begin, 'date'), 'date_end' => Format::date($date_end, 'date'), 'classroom' => $this->getDateClassrooms($id_date, true), 'students' => $num_student, 'num_subscribe' => $user_subscribed, 'subscription' => '<a href="index.php?r=' . (Docebo::user()->getUserLevelId() == ADMIN_GROUP_PUBLICADMIN ? 'lms/p' : 'alms/') . 'subscription/show&id_course=' . $id_course . '&id_date=' . $id_date . '" title="' . Lang::t('_SUBSCRIPTION', 'course') . '">' . ($user_subscribed ? $user_subscribed : 0) . ' <span class="ico-sprite subs_' . ($user_subscribed > 0 ? 'users' : 'notice') . '"><span>' . Lang::t('_USER_STATUS_SUBS') . '</span></span></a>', 'presence' => '<a href="index.php?r=' . (Docebo::user()->getUserLevelId() == ADMIN_GROUP_PUBLICADMIN ? 'lms/p' : 'alms/') . 'classroom/presence&id_course=' . $id_course . '&id_date=' . $id_date . '">' . Lang::t('_ATTENDANCE', 'course') . '</a>', 'num_day' => $num_day, 'user_subscribed' => $user_subscribed, 'mod' => '<a href="index.php?r=' . (Docebo::user()->getUserLevelId() == ADMIN_GROUP_PUBLICADMIN ? 'lms/p' : 'alms/') . 'classroom/modclassroom&id_course=' . $id_course . '&id_date=' . $id_date . '">' . Get::img('standard/edit.png', Lang::t('_MOD', 'course')) . '</a>', 'del' => 'ajax.adm_server.php?r=' . (Docebo::user()->getUserLevelId() == ADMIN_GROUP_PUBLICADMIN ? 'lms/p' : 'alms/') . 'classroom/delclassroom&id_course=' . $id_course . '&id_date=' . $id_date, 'unsubscribe_date_limit' => $unsubscribe_date_limit); } return $res; }
/** * Calculate all pending request of unsubscription to be moderated * @return boolean */ public function countPendingUnsubscribeRequests() { $output = 0; $ulevel = Docebo::user()->getUserLevelId(); $id_admin = Docebo::user()->getIdSt(); $filter = FALSE; $admin_query_course = ""; $admin_query_editions = ""; if ($ulevel != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $preference = new AdminPreference(); $view = $preference->getAdminCourse($id_admin); $all_courses = false; if (isset($view['course'][0])) { $all_courses = true; } elseif (isset($view['course'][-1])) { require_once _lms_ . '/lib/lib.catalogue.php'; $cat_man = new Catalogue_Manager(); $user_catalogue = $cat_man->getUserAllCatalogueId(Docebo::user()->getIdSt()); if (count($user_catalogue) > 0) { $courses = array(0); foreach ($user_catalogue as $id_cat) { $catalogue_course =& $cat_man->getCatalogueCourse($id_cat, true); $courses = array_merge($courses, $catalogue_course); } foreach ($courses as $id_course) { if ($id_course != 0) { $view['course'][$id_course] = $id_course; } } } elseif (Get::sett('on_catalogue_empty', 'off') == 'on') { $all_courses = true; } } else { $array_courses = array(); $array_courses = array_merge($array_courses, $view['course']); if (!empty($view['coursepath'])) { require_once _lms_ . '/lib/lib.coursepath.php'; $path_man = new CoursePath_Manager(); $coursepath_course =& $path_man->getAllCourses($view['coursepath']); $array_courses = array_merge($array_courses, $coursepath_course); } if (!empty($view['catalogue'])) { require_once _lms_ . '/lib/lib.catalogue.php'; $cat_man = new Catalogue_Manager(); foreach ($view['catalogue'] as $id_cat) { $catalogue_course =& $cat_man->getCatalogueCourse($id_cat, true); $array_courses = array_merge($array_courses, $catalogue_course); } } $view['course'] = array_merge($view['course'], $array_courses); } $filter = $view['course']; $admin_query_course = $preference->getAdminUsersQuery($id_admin, 'idUser'); $admin_query_editions = $preference->getAdminUsersQuery($id_admin, 't1.id_user'); } // -- Count for normal courses: $query = "SELECT COUNT(*) FROM %lms_courseuser WHERE requesting_unsubscribe = 1"; $query .= " AND course_edition=0 AND course_type='elearning'"; if ($filter !== FALSE) { if (empty($filter)) { return 0; } //no courses to check --> no requests for sure if (!$all_courses) { //we haven't assigned "all courses" to the admin $query .= " AND idCourse IN (" . implode(",", $filter) . ")"; } } if ($admin_query_course) { $query .= " AND " . $admin_query_course; } $res = $this->db->query($query); if ($res) { list($tot) = $this->db->fetch_row($res); $output = (int) $tot; } // -- Count for editions: $query = "SELECT COUNT(*) FROM %lms_course_editions_user as t1,\r\n\t\t\t%lms_course_edition as t2 WHERE t1.requesting_unsubscribe = 1 AND\r\n\t\t\tt1.id_edition=t2.idCourseEdition "; if ($filter !== FALSE) { if (empty($filter)) { return 0; } //no courses to check --> no requests for sure if (!isset($filter[0]) || $filter[0] != 0) { //we haven't assigned "all courses" to the admin $query .= " AND t2.idCourse IN (" . implode(",", $filter) . ")"; } } if ($admin_query_editions) { $query .= " AND " . $admin_query_editions; } $res = $this->db->query($query); if ($res) { list($tot) = $this->db->fetch_row($res); $output = (int) $tot; } // -- Count for classrooms: $query = "SELECT COUNT(*) FROM %lms_course_date_user as t1,\r\n\t\t\t%lms_course_date as t2 WHERE t1.requesting_unsubscribe = 1 AND\r\n\t\t\tt1.id_date=t2.id_date "; if ($filter !== FALSE) { if (empty($filter)) { return 0; } //no courses to check --> no requests for sure if (!isset($filter[0]) || $filter[0] != 0) { //we haven't assigned "all courses" to the admin $query .= " AND t2.id_course IN (" . implode(",", $filter) . ")"; } } if ($admin_query_editions) { $query .= " AND " . $admin_query_editions; } $res = $this->db->query($query); if ($res) { list($tot) = $this->db->fetch_row($res); $output = (int) $tot; } return $output > 0 ? $output : false; }
public function getunsubscribetabledataTask() { $op = Get::req('op', DOTY_STRING, ""); if ($op == 'selectall') { $this->_getUnsubscribeSelectAll(); return; } $startIndex = Get::req('startIndex', DOTY_INT, 0); $results = Get::req('results', DOTY_MIXED, Get::sett('visuItem', 25)); $sort = Get::req('sort', DOTY_MIXED, 'userid'); $dir = Get::req('dir', DOTY_MIXED, 'asc'); $filter_text = Get::req('filter_text', DOTY_STRING, ""); $filter_course = Get::req('filter_course', DOTY_INT, 0); $filter = array(); if ($filter_text != "") { $filter['text'] = $filter_text; } $courses_filter = FALSE; $ulevel = Docebo::user()->getUserLevelId(); if ($ulevel != ADMIN_GROUP_GODADMIN) { require_once _base_ . '/lib/lib.preference.php'; $preference = new AdminPreference(); $view = $preference->getAdminCourse(Docebo::user()->idst); $all_courses = false; if (isset($view['course'][0])) { $all_courses = true; } elseif (isset($view['course'][-1])) { require_once _lms_ . '/lib/lib.catalogue.php'; $cat_man = new Catalogue_Manager(); $user_catalogue = $cat_man->getUserAllCatalogueId(Docebo::user()->getIdSt()); if (count($user_catalogue) > 0) { $courses = array(0); foreach ($user_catalogue as $id_cat) { $catalogue_course =& $cat_man->getCatalogueCourse($id_cat, true); $courses = array_merge($courses, $catalogue_course); } foreach ($courses as $id_course) { if ($id_course != 0) { $view['course'][$id_course] = $id_course; } } } elseif (Get::sett('on_catalogue_empty', 'off') == 'on') { $all_courses = true; } } else { $array_courses = array(); $array_courses = array_merge($array_courses, $view['course']); if (!empty($view['coursepath'])) { require_once _lms_ . '/lib/lib.coursepath.php'; $path_man = new Catalogue_Manager(); $coursepath_course =& $path_man->getAllCourses($view['coursepath']); $array_courses = array_merge($array_courses, $coursepath_course); } if (!empty($view['catalogue'])) { require_once _lms_ . '/lib/lib.catalogue.php'; $cat_man = new Catalogue_Manager(); foreach ($view['catalogue'] as $id_cat) { $catalogue_course =& $cat_man->getCatalogueCourse($id_cat, true); $array_courses = array_merge($array_courses, $catalogue_course); } } $view['course'] = array_merge($view['course'], $array_courses); } if (!$all_courses) { $courses_filter = $view['course']; } $filter['user_q'] = $preference->getAdminUsersQuery(Docebo::user()->getIdst(), 'user_id'); } if ($filter_course > 0) { if ($courses_filter === FALSE) { $courses_filter = (int) $filter_course; } else { if (!in_array($filter_course, $courses_filter)) { $courses_filter = array(); } else { $courses_filter = (int) $filter_course; } } } if (is_array($courses_filter)) { $filter['course'] = $courses_filter; } $total = $this->model->getUnsubscribeRequestsTotal($filter); if ($startIndex >= $total) { if ($total < $results) { $startIndex = 0; } else { $startIndex = $total - $results; } } $pagination = array('startIndex' => $startIndex, 'results' => $results, 'sort' => $sort, 'dir' => $dir); $list = $this->model->getUnsubscribeRequestsList($pagination, $filter); //format models' data $records = array(); if (is_array($list)) { foreach ($list as $record) { $id_unsub = (int) $record->user_id . '_' . $record->idCourse . '_' . $record->res_id . '_' . $record->r_type; $record->id = $id_unsub; $record->userid = Layout::highlight($this->acl_man->relativeId($record->userid), $filter_text); $record->firstname = Layout::highlight($record->firstname, $filter_text); $record->lastname = Layout::highlight($record->lastname, $filter_text); $record->request_date = Format::date($record->request_date, 'datetime'); $record->del = 'ajax.adm_server.php?r=alms/subscription/deny_unsubscribe_request&id=' . $id_unsub; $records[] = $record; } } if (is_array($records)) { $output = array('startIndex' => $startIndex, 'recordsReturned' => count($records), 'sort' => $sort, 'dir' => $dir, 'totalRecords' => $total, 'pageSize' => $results, 'records' => $records); } else { $output['success'] = false; } echo $this->json->encode($output); }