<?php // Add new feed route (api/feed/new) global $dbh; // Auth user $user = Auth::authAPICall($dbh); $sdb = new ScoutingDB($dbh, $user["organization_id"], 1, $user["id"]); global $_POST; $data = array_merge(array("entry" => "", "url" => ""), $_POST, array("organization_user_id" => $user["id"])); if (strlen($data["entry"])) { global $_FILES; $id = $sdb->addFeedEntry($data); if ($id) { $entry = $sdb->getItem("feed_entry", array("id" => $id)); $user = $sdb->getItem("organization_user", array("id" => $entry["organization_user_id"]), array("firstname", "lastname")); $entry["organization_user"] = $user["firstname"] . " " . $user["lastname"]; if (strlen($entry["filename"])) { global $api_dir; rename("{$api_dir}/feed_files/files/last-{$entry["filename"]}", "{$api_dir}/feed_files/files/{$id}-{$entry["filename"]}"); } $output = array("success" => true, "data" => $entry); } else { $output = array("success" => false, "error" => array("Server Error")); } } else { $output = array("success" => false, "errors" => array("You must enter the entry text")); }
<?php // Feed route (api/feed/) global $dbh; // Auth user $user = Auth::authAPICall($dbh); $sdb = new ScoutingDB($dbh, $user["organization_id"], 1, $user["id"]); $options = array_merge(array("id" => 0, "down" => 0), $get); $where = array("id" => $options["id"]); $feed_entry = $sdb->getItem("feed_entry", array("id" => $options["id"]), array("id", "entry", "filename"), true); if (is_array($feed_entry) && isset($feed_entry["id"]) && $feed_entry["id"] > 0 && isset($feed_entry["filename"]) && strlen($feed_entry["filename"])) { global $api_dir; $filepath = "{$api_dir}/feed_files/files/{$feed_entry["id"]}-{$feed_entry["filename"]}"; if (file_exists($filepath)) { $file_info = new SplFileInfo($filepath); $extension = strtolower($file_info->getExtension()); $image_extensions = array("jpg", "jpeg", "png", "gif"); if (in_array($extension, $image_extensions)) { $type = "image/{$extension}"; header("Content-Type: {$type}"); header("Content-Length: " . filesize($filepath)); } else { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($feed_entry["filename"]) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filepath)); } readfile($filepath);
$file_contents = file_get_contents($file); $data = array("stats" => array("defenses" => json_decode($file_contents, 1))); $team_stats = array(); foreach ($data["stats"] as $stat => $teams) { if (is_string($teams)) { $teams = json_decode($teams, 1); } foreach ($teams as $team_number => $stats) { if (!isset($team_stats[$team_number])) { $team_stats[$team_number] = array(); } $team_stats[$team_number][$stat] = $stats; } } $json_fields = array("questions", "stats"); foreach ($team_stats as $team_number => $stats) { $existing = $sdb->getItem("team", array("team_number" => $team_number), array("id", "stats_json")); if ($existing["id"] > 0) { $sdb->updateTeam($team_number, array_merge($existing, array("stats" => $stats))); } else { $tba_team = $tba->get("team/frc{$team_number}"); $data = array_merge($default_fields, $tba_team, array("team_number" => $team_number, "team_name" => $tba_team["nickname"], "stats" => $stats)); foreach ($json_fields as $field) { if (isset($data[$field])) { $data["{$field}_json"] = json_encode($data[$field]); } } $sdb->addTeam($data); } } die(print_r($team_stats));
global $dbh; // Auth user $user = Auth::authAPICall($dbh); // Initialize scouting db $sdb = new ScoutingDB($dbh, $user["organization_id"], 1, $user["id"]); function array_pluck($array = array(), $keys = array(), $default_values = array()) { $result = array(); $array = array_merge($default_values, $array); foreach ($keys as $key) { $result[$key] = isset($array[$key]) ? $array[$key] : NULL; } return $result; } $default_fields = array("id", "firstname", "lastname", "username", "active"); $options = array_merge(array("fields" => $default_fields), $get); $default_values = array("id" => 0, "firstname" => "", "lastname" => "", "username" => ""); $safe_fields = $options["fields"] === $default_fields; $where = array(); if (is_numeric($data["userID"])) { $where["id"] = $data["userID"]; } else { $where["username"] = $data["userID"]; } $output = array("data" => $sdb->getItem("organization_user", $where, $options["fields"], $safe_fields)); $output["data"] = array_pluck($output["data"], $options["fields"], $default_values); if (!is_array($output["data"]) || !count($output["data"])) { $output["data"] = array(); $output["status"] = "404 Not Found"; $output["error"] = array("User not found"); }
if (isset($post[$field])) { if (strlen(trim($post[$field]))) { $team_data[$field] = trim($post[$field]); } else { $errors[] = array("field" => $field, "msg" => "{$label} can't be blank"); $success = false; } } } foreach ($other_fields as $field) { if (isset($post[$field])) { $team_data[$field] = trim($post[$field]); } } if ($success) { $existing = $sdb->getItem("team", array("team_number" => $data["teamID"])); if (!count($existing)) { $success = false; $errors[] = array("field" => "team_number", "msg" => "Team #{$data["teamID"]} doesn't exist!"); } } if ($success) { $data = $sdb->updateTeam($data["teamID"], $team_data); if (!isset($data["id"]) || !$data["id"] && !$data["error"]) { $success = false; $data = array(); $errors[] = "Database error"; } } } $output = array("data" => $data, "error" => $errors, "success" => $success);
<?php // Feed route (api/feed/) global $dbh; // Auth user $user = Auth::authAPICall($dbh); $sdb = new ScoutingDB($dbh, $user["organization_id"], 1, $user["id"]); $default_fields = array("id", "organization_user_id", "name", "url", "entry", "filename", "use_markdown", "date_added"); $options = array_merge(array("sort_col" => "date_added", "sort_dir" => "down", "page" => 1, "limit" => 20, "fields" => $default_fields, "url" => ""), $get); $safe_fields = $options["fields"] === $default_fields; $where = array(); if (strlen($options["url"])) { $where["url"] = $options["url"]; } // Output results $output = array("data" => $sdb->getList("feed_entry", $options["sort_col"], $options["sort_dir"], $options["page"], $options["limit"], $options["fields"], $safe_fields, $where), "numPages" => $sdb->getNumPages("feed_entry", $options["limit"], $where)); foreach ($output["data"] as &$row) { $user = $sdb->getItem("organization_user", array("id" => $row["organization_user_id"]), array("firstname", "lastname")); $row["organization_user"] = $user["firstname"] . " " . $user["lastname"]; }
$team_data = array(); foreach ($required_fields as $field => $label) { if (isset($post[$field]) && strlen(trim($post[$field]))) { $team_data[$field] = trim($post[$field]); } else { $errors[] = array("field" => $field, "msg" => "{$label} is required"); $success = false; } } foreach ($other_fields as $field) { if (isset($post[$field]) && strlen(trim($post[$field]))) { $team_data[$field] = trim($post[$field]); } } if ($success) { $teams = $tba->get("event/{$team_data["event_code"]}/teams"); if (is_array($teams) && count($teams)) { foreach ($teams as $team) { $existing = $sdb->getItem("team", array("team_number" => $team["team_number"]), array("id")); if (!$existing) { $sdb->addTeam(array_merge($default_fields, array("team_number" => $team["team_number"], "team_name" => $team["nickname"]))); } } } else { $data = array(); $errors[] = "Invalid event code \"{$team_data["event_code"]}\""; $success = false; } } } $output = array("data" => $data, "error" => $errors, "success" => $success);
<?php // List teams route (api/team/) global $dbh; // Auth user $user = Auth::authAPICall($dbh); // Initialize scouting db $sdb = new ScoutingDB($dbh, $user["organization_id"], 1, $user["id"]); // Default team fields $default_fields = array("id", "team_number", "team_name", "team_type", "summary", "score", "strengths", "weaknesses", "questions_json", "scores_json", "stats_json", "use_markdown", "date_added"); $options = array_merge(array("fields" => $default_fields, "query" => ""), $get); $safe_fields = $options["fields"] === $default_fields; // Output results $output = array("data" => $sdb->getItem("team", array("team_number" => $data["teamID"]), $options["fields"], $safe_fields));