<?php

require_once __DIR__ . "/includes/root.php";
must_allow("modify issues");
$issue = new Issue(Issue::LOCTYPE_PENDING, $_REQUEST["rp"]);
if ($issue == NULL) {
    $renderer->flash_alert("Cannot find valid issue for metadata entry");
    header("Location: issues-list.php");
    exit;
}
$renderer->variable("title", "Metadata for \"{$issue->label()}\"");
$renderer->variable("issue", $issue);
$renderer->render("issues-enter-metadata");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("modify users");
$user = User::find($_GET["id"]);
if ($user == NULL) {
    $renderer->flash_alert("Can't find a user by the given id!");
    header("Location: user-list.php");
    exit;
}
$curruser = get_user();
if ($curruser->id == $user->id) {
    $renderer->flash_alert("You cannot delete yourself!");
    header("Location: user-list.php");
    exit;
}
foreach ($user->roles as $role) {
    if (!can_give_role($curruser, $role)) {
        $renderer->flash_alert("You cannot delete users with the '{$role}' role");
        header("Location: user-list.php");
        exit;
    }
}
if ($user->id == 1) {
    $renderer->flash_alert("You cannot delete user 1");
    header("Location: user-list.php");
    exit;
}
$user->delete();
audit("delete user", $user->login);
$renderer->flash_success("Deleted {$user->login}");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("review issues");
$issue = new Issue(Issue::LOCTYPE_AWAITING_REVIEW, $_POST["rp"]);
if ($issue == NULL) {
    $renderer->flash_alert("Cannot find issue to approve - has it already been approved or rejected?");
    header("Location: issues-list.php");
}
audit("approve issue", sprintf("Issue in '%s' approved for processing", $issue->relative_path));
$issue->queue_for_processing();
$renderer->flash_success("Issue approved and queued for processing");
header("Location: issues-list.php");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("manage mocs");
$moc = MOC::find($_GET["id"]);
if ($moc->delete()) {
    audit("delete MOC", sprintf("ID: %d, Code: %s", $moc->id, $moc->code));
    $renderer->flash_success("Deleted MARC Org Code");
} else {
    $renderer->flash_alert("Error trying to delete MARC Org Code; is the directory empty?");
}
header("Location: mocs-list.php");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("modify titles");
$title = Title::find($_REQUEST["id"]);
if ($title == NULL) {
    $renderer->flash_alert("Unable to find the requested title");
    header("Location: title-list.php");
    exit;
}
$renderer->variable("pub", $title);
$renderer->variable("title", sprintf("Editing %s", $title->title));
$renderer->render("title-form");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("list titles");
$titles = Title::find_current();
$page_title = "Newspaper List";
// Hidden query param to allow viewing historic titles
if (aval($_GET, "historic", 0) == 1) {
    $renderer->variable("historic", true);
    $titles = Title::find_historic();
    $page_title = "Historic Newspaper List";
}
$renderer->variable("titles", $titles);
$renderer->variable("title", $page_title);
$renderer->render("title-list");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("list users");
$curruser = get_user();
if (in_array(ROLE_ADMIN, $curruser->roles)) {
    $users = User::all();
} else {
    $users = User::non_admin();
}
$renderer->variable("users", $users);
$renderer->variable("title", "User List");
$renderer->render("user-list");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("modify review queue");
$issue = new Issue(Issue::LOCTYPE_PENDING, $_REQUEST["rp"]);
if ($issue == NULL) {
    $renderer->flash_alert("Cannot find valid issue to queue");
    header("Location: issues-list.php");
}
$errors = $issue->errors();
if (count($errors) > 0) {
    $renderer->flash_alertlist("Cannot queue for review:", $errors);
    header("Location: issues-list.php");
    return;
}
audit("queue issue", sprintf("Issue in '%s' queued for review", $issue->relative_path));
$issue->queue_for_review();
$renderer->flash_success("Issue queued for review");
header("Location: issues-list.php");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("list audit logs");
$db = DB::get_db();
$rows = DB::fetchall(sprintf("SELECT * FROM audit_logs order by `when` desc LIMIT 1000"));
$logs = array();
foreach ($rows as $row) {
    array_push($logs, $row);
}
$renderer->variable("logs", $logs);
$renderer->variable("title", "Audit logs");
$renderer->render("audit-logs-list");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow(NULL);
$renderer->variable("title", "ODNP Admin");
$renderer->render("home");
<?php

require_once __DIR__ . "/includes/root.php";
must_allow("list issues");
$renderer->variable("title", "Manage Issues");
$renderer->variable("pending_issues", Issue::all(Issue::LOCTYPE_PENDING, 5));
$renderer->variable("issues_awaiting_review", Issue::all(Issue::LOCTYPE_AWAITING_REVIEW, 5));
$renderer->add_function("can_review", function ($issue) {
    return count($issue->errors()) == 0;
});
$renderer->render("issues-list");