Example #1
0
function get_rubric($id)
{
    // verify access to object
    if (!abet_is_admin_authenticated() && !abet_is_observer() && !check_assessment_access($_SESSION[id], $id, 'assessment_worksheet')) {
        page_fail(UNAUTHORIZED);
    }
    // select required fields from rubric and rubric_result
    $rubric = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('rubric' => array('name', 'threshold', 'threshold_desc'), 'rubric_description' => array('outstanding_desc', 'expected_desc', 'marginal_desc', 'unacceptable_desc'), 'rubric_results' => 'total_students'), 'joins' => array("INNER JOIN assessment_worksheet ON assessment_worksheet.fk_rubric = rubric.id", "INNER JOIN rubric_description ON rubric.fk_description = rubric_description.id", "INNER JOIN rubric_results ON assessment_worksheet.fk_rubric_results = rubric_results.id"), 'where' => 'assessment_worksheet.id = ?', 'where-params' => array("i:{$id}"))));
    $row = $rubric->get_row_assoc();
    if (is_null($row)) {
        page_fail(NOT_FOUND);
    }
    // select competencies
    $comps = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('competency_results' => array('id', 'competency_desc', 'outstanding_tally', 'expected_tally', 'marginal_tally', 'unacceptable_tally', 'pass_fail_type', 'comment')), 'aliases' => array('competency_results.competency_desc' => 'description'), 'joins' => array("INNER JOIN rubric_results ON rubric_results.id = competency_results.fk_rubric_results", "INNER JOIN assessment_worksheet ON assessment_worksheet.fk_rubric_results = rubric_results.id"), 'where' => 'assessment_worksheet.id = ?', 'where-params' => array("i:{$id}"))));
    if ($comps->is_empty()) {
        page_fail(NOT_FOUND);
    }
    // prepare json object
    $cs = array();
    $comps->for_each_assoc(function ($row) use(&$cs) {
        $cs[] = $row;
    });
    $row['competency'] = $cs;
    return json_encode($row);
}
Example #2
0
function get_assessment($id)
{
    // get general assessment information
    $query = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('abet_assessment' => 'name', 'abet_characteristic' => 'id', 'general_content' => 'id'), 'joins' => array('LEFT OUTER JOIN abet_characteristic ON abet_characteristic.id = abet_assessment.fk_characteristic', 'LEFT OUTER JOIN general_content ON general_content.fk_assessment = abet_assessment.id'), 'where' => 'abet_assessment.id = ?', 'where-params' => array("i:{$id}"), 'limit' => 1)));
    if ($query->is_empty()) {
        page_fail(NOT_FOUND);
    }
    // get acl and profile information
    $aclQuery = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('userprofile' => array('id', 'first_name', 'last_name'), 'abet_assessment' => 'id'), 'joins' => array('LEFT OUTER JOIN acl_entry ON acl_entry.fk_profile = userprofile.id', 'LEFT OUTER JOIN acl ON acl.id = acl_entry.fk_acl', 'LEFT OUTER JOIN abet_assessment ON abet_assessment.fk_acl = acl.id ' . 'AND abet_assessment.id = ' . intval($id)), 'orderby' => 'userprofile.last_name')));
    if ($aclQuery->is_empty()) {
        // this shouldn't happen
        page_fail(NOT_FOUND);
    }
    // get worksheet information
    $contentQuery = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('assessment_worksheet' => array('id', 'activity'), 'course' => 'course_number'), 'joins' => array('INNER JOIN abet_assessment ON abet_assessment.id = assessment_worksheet.fk_assessment', 'LEFT OUTER JOIN course ON course.id = assessment_worksheet.fk_course'), 'where' => 'abet_assessment.id = ?', 'where-params' => array("i:{$id}"))));
    // get characteristics information
    $charsQuery = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('abet_characteristic' => array('id', 'level', 'program_specifier', 'short_name')), 'orderby' => 'CHAR_LENGTH(level), level')));
    // get single entity rows
    $genInfo = $query->get_row_assoc();
    // prepare assessment object
    $obj = new stdClass();
    $obj->name = $genInfo['name'];
    $obj->characteristic = $genInfo['abet_characteristic.id'];
    $obj->has_content = !is_null($genInfo['general_content.id']);
    $obj->acl = array();
    $obj->profiles = array();
    $obj->worksheets = array();
    $obj->characteristics = array();
    // assign profile and acl information
    $m = array();
    $aclQuery->for_each_assoc(function ($row) use($obj, &$m) {
        if (array_key_exists($row['userprofile.id'], $m)) {
            return;
        }
        $m[$row['userprofile.id']] = null;
        if (!is_null($row['abet_assessment.id'])) {
            $obj->acl[] = $row['userprofile.id'];
        }
        $p = new stdClass();
        $p->id = $row['userprofile.id'];
        $p->name = "{$row['first_name']} {$row['last_name']}";
        $obj->profiles[] = $p;
    });
    // assign worksheet info
    $contentQuery->for_each_assoc(function ($row) use($obj) {
        $w = new stdClass();
        $w->id = $row['id'];
        if (!is_null($row['activity'])) {
            $w->name = $row['activity'];
        } else {
            $w->name = $row['course_number'];
        }
        $obj->worksheets[] = $w;
    });
    // assign characteristics
    $charsQuery->for_each_assoc(function ($row) use($obj) {
        $c = new stdClass();
        $c->id = $row['id'];
        $c->name = "{$row['level']}. {$row['short_name']}";
        if (!is_null($row['program_specifier'])) {
            $c->name .= " [{$row['program_specifier']}]";
        }
        $obj->characteristics[] = $c;
    });
    return json_encode($obj);
}
Example #3
0
 function get_acl()
 {
     $query = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('userprofile' => array('id', 'username', 'first_name', 'last_name')), 'joins' => array('INNER JOIN userauth ON userprofile.fk_userauth = userauth.id', 'INNER JOIN acl_entry ON acl_entry.fk_profile = userprofile.id', 'INNER JOIN acl ON acl.id = acl_entry.fk_acl', 'INNER JOIN abet_assessment ON abet_assessment.fk_acl = acl.id'), 'where' => "abet_assessment.id = {$this->id} AND userauth.role = 'Faculty'")));
     $results = array();
     $query->for_each_assoc(function ($row) use(&$results) {
         $entry = new stdClass();
         $entry->id = $row['id'];
         $entry->username = $row['username'];
         $entry->full_name = "{$row['first_name']} {$row['last_name']}";
         $results[] = $entry;
     });
     return $results;
 }
Example #4
0
function get_content($gcId)
{
    global $DATETIME_FORMAT;
    $content = array();
    // select comments and file uploads separately
    $comments = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('user_comment' => array('id', 'content'), 1 => array("DATE_FORMAT(user_comment.created,'{$DATETIME_FORMAT}') created", "UNIX_TIMESTAMP(user_comment.created) unix_time"), 'userprofile' => array('first_name', 'last_name')), 'joins' => array('INNER JOIN userprofile ON userprofile.id = user_comment.fk_author'), 'where' => "fk_content_set = ?", 'where-params' => array("i:{$gcId}"))));
    $uploads = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('file_upload' => array('id', 'file_name', 'file_comment'), 1 => array("DATE_FORMAT(file_created,'{$DATETIME_FORMAT}') file_created", "UNIX_TIMESTAMP(file_created) unix_time"), 'userprofile' => array('first_name', 'last_name')), 'joins' => array('INNER JOIN userprofile ON userprofile.id = file_upload.fk_author'), 'where' => "fk_content_set = ?", 'where-params' => array("i:{$gcId}"))));
    // create closure for adding row to content set
    $addRow = function ($row) use(&$content) {
        $row['author'] = "{$row['first_name']} {$row['last_name']}";
        unset($row['first_name']);
        unset($row['last_name']);
        $content[] = $row;
    };
    // grab content items and sort them by create time
    $comments->for_each_assoc($addRow);
    $uploads->for_each_assoc($addRow);
    usort($content, function ($a, $b) {
        return $a['unix_time'] - $b['unix_time'];
    });
    return json_encode($content);
}