Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
/**
 * @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;
 }