print_table($table);
        }
    }
    ?>
            </td>
        </tr>
    </table>
<?php 
} else {
    // grading a user
    /// starting form
    echo '<form name="gradesform" action="view.php" method="post">';
    echo "<input type=\"hidden\" name=\"id\" value=\"{$cm->id}\" />";
    echo "<input type=\"hidden\" name=\"what\" value=\"savegrade\" />";
    echo "<input type=\"hidden\" name=\"for\" value=\"{$gradefor}\" />";
    $gradeset = brainstorm_get_gradeset($brainstorm->id, $gradefor);
    $user = get_record('user', 'id', $gradefor);
    print_heading(get_string('gradingof', 'brainstorm') . ' ' . fullname($user));
    /// printing ideas
    print_heading(get_string('responses', 'brainstorm'), '', 3);
    $responses = brainstorm_get_responses($brainstorm->id, $user->id, 0, false);
    if ($responses) {
        echo '<table><tr>';
        brainstorm_print_responses_cols($brainstorm, $responses, false);
        echo '</tr></table>';
    } else {
        print_simple_box(get_string('notresponded', 'brainstorm'));
    }
    if (!$brainstorm->singlegrade && $brainstorm->seqaccesscollect) {
        print_string('gradeforparticipation', 'brainstorm');
        echo ' : ';
/**
 * Must return an array of grades for a given instance of this module, 
 * indexed by user. It also returns a maximum allowed grade.
 * 
 * Example:
 *    $return->grades = array of grades;
 *    $return->maxgrade = maximum allowed grade;
 *
 *    return $return;
 *
 * @param int $newmoduleid ID of an instance of this module
 * @return mixed null or object with an array of grades and with the maximum grade
 **/
function brainstorm_grades($cmid)
{
    global $CFG;
    if (!($module = get_record('course_modules', 'id', $cmid))) {
        return NULL;
    }
    if (!($brainstorm = get_record('brainstorm', 'id', $module->instance))) {
        return NULL;
    }
    if ($brainstorm->scale == 0) {
        // No grading
        return NULL;
    }
    $context = get_context_instance(CONTEXT_MODULE, $cmid);
    $participants = get_users_by_capability($context, 'mod/brainstorm:gradable', 'u.id,lastname,firstname', 'lastname');
    if ($participants) {
        foreach ($participants as $participant) {
            $gradeset = brainstorm_get_gradeset($brainstorm->id, $participant->id);
            if (!$gradeset) {
                return null;
            }
            if ($brainstorm->scale > 0) {
                // Grading numerically
                if ($brainstorm->singlegrade) {
                    $finalgrades[$participant->id] = $gradeset->single;
                } else {
                    if ($brainstorm->seqaccesscollect && isset($gradeset->participate)) {
                        $total[] = $gradeset->participate;
                        $weights[] = $brainstorm->participationweight;
                    }
                    if ($brainstorm->seqaccessprepare && isset($gradeset->prepare)) {
                        $total[] = $gradeset->prepare;
                        $weights[] = $brainstorm->preparingweight;
                    }
                    if ($brainstorm->seqaccessorganize && isset($gradeset->organize)) {
                        $total[] = $gradeset->organize;
                        $weights[] = $brainstorm->organizeweight;
                    }
                    if ($brainstorm->seqaccessfeedback && isset($gradeset->feedback)) {
                        $total[] = $gradeset->feedback;
                        $weights[] = $brainstorm->feedbackweight;
                    }
                    $totalweights = array_sum($weights);
                    $totalgrade = 0;
                    for ($i = 0; $i < count(@$total); $i++) {
                        $totalgrade += $total[$i] * $weights[$i];
                    }
                    $totalgrade = $totalweights != 0 ? round($totalgrade / $totalweights) : 0;
                    $finalgrades[$participant->id] = $totalgrade;
                }
                $return->grades = @$finalgrades;
                $return->maxgrade = $brainstorm->scale;
                return $return;
            } else {
                // Scales
                $finalgrades = array();
                $scaleid = -$brainstorm->grade;
                $maxgrade = '';
                if ($scale = get_record('scale', 'id', $scaleid)) {
                    $scalegrades = make_menu_from_list($scale->scale);
                }
                if ($brainstorm->singlegrade) {
                    $finalgrades[$participant->id] = $scalegrades($gradeset->single);
                } else {
                    if ($brainstorm->setaccesscollect) {
                        $total[] = $scalegrades($gradeset->participate);
                        $weights[] = $brainstorm->participationweight;
                    }
                    if ($brainstorm->setaccessprepare) {
                        $total[] = $scalegrades($gradeset->prepare);
                        $weights[] = $brainstorm->preparingweight;
                    }
                    if ($brainstorm->setaccessorganize) {
                        $total[] = $scalegrades($gradeset->organize);
                        $weights[] = $brainstorm->organizeweight;
                    }
                    if ($brainstorm->setaccessfeedback) {
                        $total[] = $scalegrades($gradeset->feedback);
                        $weights[] = $brainstorm->feedbackweight;
                    }
                    $totalweights = array_sum($weights);
                    $totalgrade = 0;
                    for ($i = 0; $i < count(@$total); $i++) {
                        $totalgrade += $total[$i] * $weights[$i];
                    }
                    $totalgrade = $totalweights != 0 ? round($totalgrade / $totalweights) : 0;
                    $finalgrades[$participant->id] = $totalgrade;
                }
                $return->grades = @$final;
                $return->maxgrade = $maxgrade;
                return $return;
            }
        }
    }
    return null;
}