示例#1
0
function build_table($components, $where, $page, $per_page)
{
    global $CFG, $USER;
    $defaults = $components->as_dict();
    list($table, $prequery) = get_pre_query($USER->id);
    // if they have the ability to view a particular sport then
    // we have to do some joins in our lookup
    $viewsports = (isset($where['sports']) or !empty($table));
    if ($viewsports) {
        $extra_values = ", spo.code AS sports, spo.name ";
        $sports_tables = ", {$CFG->prefix}block_courseprefs_sports spo,\n                     {$CFG->prefix}block_courseprefs_sportusers spu ";
        $sports_where = " u.id = spu.usersid \n                          AND spu.sportsid = spo.id\n                          AND ";
    } else {
        $extra_values = '';
        $sports_tables = '';
        $sports_where = '';
    }
    $count_sql = "SELECT COUNT(u.id) FROM {$CFG->prefix}block_courseprefs_users u ";
    $sql = "SELECT u.* {$extra_values}\n              FROM {$CFG->prefix}block_courseprefs_users u ";
    // Do a prequery for those who have student gradeviewer assignments
    if ($prequery) {
        $where[] = $prequery;
    }
    $limit = $offset = '';
    if (!empty($per_page)) {
        $limit = " LIMIT " . $per_page;
        $offset = " OFFSET " . $per_page * $page;
    }
    $where_sql = "WHERE " . $sports_where . implode(' AND ', $where);
    // Get our users, hopefully!
    $users = get_records_sql($sql . $sports_tables . $where_sql . $limit . $offset);
    $count = count_records_sql($count_sql . $sports_tables . $where_sql);
    if (!$viewsports) {
        array_pop($defaults);
    }
    // pop per page selector
    array_pop($defaults);
    $defaults['grades'] = get_string("grades");
    $keys = array_keys($defaults);
    if (empty($users)) {
        echo '<div class = "results">' . get_string('content_no_results', 'block_courseprefs') . '</div>';
    } else {
        // Finding where eligible components to preserve lookup
        $where_eligible_components = array_filter($components->components, create_function('$c', '
                return $c->where_eligible();
            '));
        // Building param map from eligible components
        $html_params = implode('&amp;', array_map(create_function('$c', 'return "$c->key=$c->value";'), $where_eligible_components)) . '&amp;per_page=' . $per_page . '&amp;';
        // The html to do the paging
        $bar = print_paging_bar($count, $page, $per_page, 'viewgrades.php?' . $html_params, 'page', false, true);
        echo $bar;
        echo '<div class = "results">' . $count . get_string('content_results', 'block_courseprefs') . '</div>';
        // print the results table
        $table = new stdClass();
        $table->head = $defaults;
        $table->data = array();
        foreach ($users as $user) {
            // pull the courses where the user is enrolled as a student
            $course_grades = pull_course_grades($user);
            // Boolean if they have or don't have courses
            $no_courses = empty($course_grades);
            $line = array();
            foreach ($keys as $key) {
                if ($viewsports && $key == 'sports') {
                    $value = flatten_sport($user);
                } else {
                    if ($key == 'username') {
                        $value = $no_courses ? $user->username : '******' . $CFG->wwwroot . '/blocks/student_gradeviewer/mentee.php?id=' . $user->id . '">' . $user->username . '</a>';
                    } else {
                        if ($key == 'grades') {
                            $value = $no_courses ? 'NA' : implode('<br/>', $course_grades);
                        } else {
                            $value = $user->{$key};
                        }
                    }
                }
                $line[] = $value;
            }
            $table->data[] = $line;
        }
        print_table($table);
        echo $bar;
    }
}
示例#2
0
文件: lib.php 项目: rrusso/EARS
 function referral_where($where)
 {
     global $CFG, $USER;
     list($table, $prequery) = get_pre_query($USER->id);
     $order = in_array('student', $this->keys) ? ", u.lastname, u.firstname ASC" : '';
     $sql = " FROM {$CFG->prefix}block_student_referrals ref " . array_reduce($this->keys, array($this, 'reduce_tables')) . " {$table}\n                    WHERE " . $this->{$this->key . '_where'}($this->id) . " AND\n                    " . implode(" AND ", array_filter(array_map(array($this, 'transform_where'), $this->keys))) . "\n                    " . ($where ? " AND " . implode(" AND ", $where) : '') . "\n                    " . ($prequery ? " AND {$prequery}" : '') . "\n                    ORDER BY ref.date_referred DESC {$order}";
     return $sql;
 }