Пример #1
0
<?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"));
}
Пример #2
0
<?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));
Пример #4
0
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");
}
Пример #5
0
        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);
Пример #6
0
<?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"];
}
Пример #7
0
    $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);
Пример #8
0
<?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));