Ejemplo n.º 1
0
/**
 * count users which have not completed the feedback
 *
 * @global object
 * @uses CONTEXT_MODULE
 * @param object $cm
 * @param int $group single groupid
 * @param string $sort
 * @param int $startpage
 * @param int $pagecount
 * @return object the userrecords
 */
function feedback_get_incomplete_users($cm, $group = false, $sort = '', $startpage = false, $pagecount = false)
{
    global $DB;
    $context = context_module::instance($cm->id);
    //first get all user who can complete this feedback
    $cap = 'mod/feedback:complete';
    $fields = 'u.id, u.username';
    if (!($allusers = get_users_by_capability($context, $cap, $fields, $sort, '', '', $group, '', true))) {
        return false;
    }
    // Filter users that are not in the correct group/grouping.
    $allusers = groups_filter_users_by_course_module_visible($cm, $allusers);
    $allusers = array_keys($allusers);
    //now get all completeds
    $params = array('feedback' => $cm->instance);
    if (!($completedusers = $DB->get_records_menu('feedback_completed', $params, '', 'userid,id'))) {
        return $allusers;
    }
    $completedusers = array_keys($completedusers);
    //now strike all completedusers from allusers
    $allusers = array_diff($allusers, $completedusers);
    //for paging I use array_slice()
    if ($startpage !== false and $pagecount !== false) {
        $allusers = array_slice($allusers, $startpage, $pagecount);
    }
    return $allusers;
}
Ejemplo n.º 2
0
 /**
  * Load a list of users enrolled in the current course with the specified permission and group.
  * 0 for no group.
  *
  * @param int $currentgroup
  * @param bool $idsonly
  * @return array List of user records
  */
 public function list_participants($currentgroup, $idsonly)
 {
     $key = $this->context->id . '-' . $currentgroup . '-' . $this->show_only_active_users();
     if (!isset($this->participants[$key])) {
         $users = get_enrolled_users($this->context, 'mod/assign:submit', $currentgroup, 'u.*', null, null, null, $this->show_only_active_users());
         $cm = $this->get_course_module();
         $users = groups_filter_users_by_course_module_visible($cm, $users);
         $this->participants[$key] = $users;
     }
     if ($idsonly) {
         $idslist = array();
         foreach ($this->participants[$key] as $id => $user) {
             $idslist[$id] = new stdClass();
             $idslist[$id]->id = $id;
         }
         return $idslist;
     }
     return $this->participants[$key];
 }
Ejemplo n.º 3
0
/**
 * Returns list of user objects that are subscribed to this forum
 *
 * @global object
 * @global object
 * @param object $course the course
 * @param forum $forum the forum
 * @param integer $groupid group id, or 0 for all.
 * @param object $context the forum context, to save re-fetching it where possible.
 * @param string $fields requested user fields (with "u." table prefix)
 * @return array list of users.
 */
function forum_subscribed_users($course, $forum, $groupid=0, $context = null, $fields = null) {
    global $CFG, $DB;

    $allnames = get_all_user_name_fields(true, 'u');
    if (empty($fields)) {
        $fields ="u.id,
                  u.username,
                  $allnames,
                  u.maildisplay,
                  u.mailformat,
                  u.maildigest,
                  u.imagealt,
                  u.email,
                  u.emailstop,
                  u.city,
                  u.country,
                  u.lastaccess,
                  u.lastlogin,
                  u.picture,
                  u.timezone,
                  u.theme,
                  u.lang,
                  u.trackforums,
                  u.mnethostid";
    }

    if (empty($context)) {
        $cm = get_coursemodule_from_instance('forum', $forum->id, $course->id);
        $context = context_module::instance($cm->id);
    }

    if (forum_is_forcesubscribed($forum)) {
        $results = forum_get_potential_subscribers($context, $groupid, $fields, "u.email ASC");

    } else {
        // only active enrolled users or everybody on the frontpage
        list($esql, $params) = get_enrolled_sql($context, '', $groupid, true);
        $params['forumid'] = $forum->id;
        $results = $DB->get_records_sql("SELECT $fields
                                           FROM {user} u
                                           JOIN ($esql) je ON je.id = u.id
                                           JOIN {forum_subscriptions} s ON s.userid = u.id
                                          WHERE s.forum = :forumid
                                       ORDER BY u.email ASC", $params);
    }

    // Guest user should never be subscribed to a forum.
    unset($results[$CFG->siteguest]);

    $cm = get_coursemodule_from_instance('forum', $forum->id);
    $modinfo = get_fast_modinfo($cm->course);
    return groups_filter_users_by_course_module_visible($modinfo->get_cm($cm->id), $results);
}