function get_wkst($id) { // verify access to worksheet if (!abet_is_admin_authenticated() && !abet_is_observer() && !check_assessment_access($_SESSION['id'], $id, 'assessment_worksheet')) { page_fail(UNAUTHORIZED); } // select required data from db $query = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('assessment_worksheet' => array('id', 'activity', 'objective', 'instrument', 'course_of_action'), 'abet_assessment' => 'id', 'course' => array('title', 'course_number'), 'abet_characteristic' => array('level', 'program_specifier', 'description'), 'abet_criterion' => array('rank', 'description')), 'joins' => array('INNER JOIN abet_assessment ON assessment_worksheet.fk_assessment = abet_assessment.id', 'LEFT OUTER JOIN course ON assessment_worksheet.fk_course = course.id', 'LEFT OUTER JOIN abet_characteristic ON abet_assessment.fk_characteristic = abet_characteristic.id', 'INNER JOIN abet_criterion ON abet_assessment.fk_criterion = abet_criterion.id'), 'where' => 'assessment_worksheet.id = ?', 'where-params' => array("i:{$id}")))); if ($query->is_empty()) { page_fail(NOT_FOUND); } $row = $query->get_row_assoc(); // query the assessment personnel via the acl $assess = new ABETAssessment($row['abet_assessment.id']); $faculty = $assess->get_acl(); // build object for client $obj = new stdClass(); $obj->id = $row['assessment_worksheet.id']; $obj->faculty = count($faculty) == 0 ? "n/a" : implode(', ', array_map(function ($x) { return $x->full_name; }, $faculty)); $obj->criterion = "{$row['rank']} {$row['abet_criterion.description']}"; if (!is_null($row['level'])) { $obj->characteristic = "{$row['level']} {$row['abet_characteristic.description']}"; if (!is_null($row['program_specifier']) && $row['program_specifier'] != '') { $obj->characteristic .= " {$row['program_specifier']}"; } } else { $obj->characteristic = null; } if (!is_null($row['title'])) { $obj->course = "{$row['course_number']}: {$row['title']}"; $obj->activity = null; } else { $obj->course = null; $obj->activity = !is_null($row['activity']) && $row['activity'] != '' ? $row['activity'] : 'not specified'; } $obj->objective = $row['objective']; $obj->instrument = $row['instrument']; $obj->course_of_action = $row['course_of_action']; return json_encode($obj); }
$insert = new Query(new QueryBuilder(INSERT_QUERY, array('table' => 'program', 'fields' => array('name'), 'values' => array(array("l:'New Program'"))))); if (!$insert->validate_update()) { $rollback = true; return array(SERVER_ERROR, "an insertion operation failed"); } // grab the new program object $query = new Query(new QueryBuilder(SELECT_QUERY, array('tables' => array('program' => array('id', 'name', 'abbrv', 'semester', 'year', 'description')), 'where' => 'id = LAST_INSERT_ID()'))); $row = $query->get_row_assoc(); if (is_null($row)) { $rollback = true; return array(SERVER_ERROR, "could not retrieve inserted row"); } // create a default assessment for each criterion that has a general // content item foreach (range(1, 8) as $critId) { $assess = ABETAssessment::create('', $row['id'], null, $critId); $assess->add_general_content(); } return array(OKAY, json_encode($row)); }); http_response_code($code); echo $json; } } else { if ($_SERVER['REQUEST_METHOD'] == 'POST') { // verify fields static $fields = array('id', 'name', 'abbrv', 'semester', 'year', 'description'); $a = array_map(function ($x) { if (!array_key_exists($x, $_POST)) { return null; }
static function set_fail(callable $func) { self::$exitFunction = $func; }