forked from HPR/hpr_hub
Initial push of the dynamic code
This commit is contained in:
164
cms/schedule.php
Normal file
164
cms/schedule.php
Normal file
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
|
||||
require "/home/hpr/php/include.php";
|
||||
$pos = strpos($_SERVER['REQUEST_URI'], '?');
|
||||
if ( ! $pos === false) {
|
||||
header("Status: 412 Precondition Failed");
|
||||
include '412.shtml';
|
||||
file_put_contents($naughtyfile, getUserIP(), FILE_APPEND | LOCK_EX );
|
||||
exit;
|
||||
}
|
||||
|
||||
// --------------------------------------------
|
||||
// Clean up stale reservations
|
||||
|
||||
$ip = $_SERVER["REMOTE_ADDR"];
|
||||
|
||||
# Remove any stale requests.
|
||||
# This should be enough to deter attackers while been short enough to allow real hosts to request a show.
|
||||
$query_delete_old = "DELETE
|
||||
FROM
|
||||
reservations
|
||||
WHERE
|
||||
reservations.timestamp + INTERVAL 1 HOUR <= UTC_TIMESTAMP()
|
||||
AND reservations.status = 'REQUEST_UNVERIFIED'";
|
||||
$result_delete_old = @mysqli_query($connection, $query_delete_old);
|
||||
logextra( "Deleting requests older than 1 hour" . $result_delete_old );
|
||||
|
||||
# Remove stale requests from this IP Address after 15 minutes.
|
||||
# This should be enough to deter attackers while been short enough to allow real hosts to request a show.
|
||||
$query_delete = "DELETE FROM reservations WHERE reservations.ip = '$ip' AND reservations.timestamp + INTERVAL 15 MINUTE <= UTC_TIMESTAMP() AND reservations.status = 'REQUEST_UNVERIFIED'";
|
||||
$result_delete = @mysqli_query($connection, $query_delete);
|
||||
logextra( "Remove stale requests from this \"${ip}\" IP Address after 15 minutes. " . $result_delete_old );
|
||||
|
||||
|
||||
$query = mysqli_query($connection, "SELECT max(date), max(id) from eps WHERE eps.date <= UTC_DATE()");
|
||||
$current_episode_array = mysqli_fetch_row($query);
|
||||
$current_episode_date = $current_episode_array[0];
|
||||
$current_episode_number = $current_episode_array[1];
|
||||
|
||||
// --------------------------------------------
|
||||
// Populate array with future shows and reservations
|
||||
$show_array = array ();
|
||||
|
||||
// REQUEST_UNVERIFIED → SHOW_SUBMITTED → METADATA_PROCESSED → SHOW_POSTED → MEDIA_TRANSCODED → UPLOADED_TO_IA → UPLOADED_TO_RSYNC_NET
|
||||
$ep_retrieve = "SELECT hosts.host, eps.id, eps.title, eps.date FROM eps, hosts WHERE eps.valid=1 AND eps.hostid = hosts.hostid AND eps.date >= '$current_episode_date' ORDER BY date DESC";
|
||||
|
||||
$ep_retrieve = "SELECT
|
||||
hosts.host,
|
||||
eps.id,
|
||||
eps.title,
|
||||
eps.date,
|
||||
COUNT( assets.extension) AS numfiles
|
||||
FROM
|
||||
eps
|
||||
LEFT JOIN hosts ON eps.hostid = hosts.hostid
|
||||
LEFT JOIN assets ON eps.id = assets.episode_id
|
||||
WHERE
|
||||
eps.valid = 1
|
||||
AND eps.date >= '$current_episode_date'
|
||||
GROUP BY eps.id;";
|
||||
|
||||
if ($result = mysqli_query($connection, $ep_retrieve)) {
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$id = $row['id'];
|
||||
$date = $row['date'];
|
||||
$title = $row['title'];
|
||||
$host = $row['host'];
|
||||
$numfiles = $row['numfiles'];
|
||||
if( isset($numfiles) and $numfiles >= 3 ) {
|
||||
$status = "Finished";
|
||||
}
|
||||
else {
|
||||
$status = "Reserved";
|
||||
}
|
||||
$show_array[$id] = array ( "date" => date('Y-m-d', strtotime($date) ),
|
||||
"title" => $title,
|
||||
"host" => $host,
|
||||
"status" => $status
|
||||
);
|
||||
}
|
||||
}
|
||||
// REQUEST_UNVERIFIED → SHOW_SUBMITTED → METADATA_PROCESSED → SHOW_POSTED → MEDIA_TRANSCODED → UPLOADED_TO_IA → UPLOADED_TO_RSYNC_NET
|
||||
|
||||
// Populate array with currently processing shows EMAIL_LINK_CLICKED
|
||||
$ep_retrieve = "
|
||||
SELECT
|
||||
reservations.ep_num,
|
||||
reservations.ep_date,
|
||||
reservations.status
|
||||
FROM
|
||||
reservations
|
||||
WHERE
|
||||
reservations.verified = 1
|
||||
AND reservations.ep_date >= '$current_episode_date'
|
||||
ORDER BY
|
||||
reservations.ep_date DESC";
|
||||
|
||||
if ($result = mysqli_query($connection, $ep_retrieve)) {
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$id = $row['ep_num'];
|
||||
$date = $row['ep_date'];
|
||||
$status = $row['status'];
|
||||
$show_array[$id] = array ( "date" => date('Y-m-d', strtotime($date) ),
|
||||
"title" => $status,
|
||||
"host" => "Unverified",
|
||||
"status" => "Processing"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Populate array with temporary reservations.
|
||||
$ep_retrieve = "SELECT r.ep_num, r.ep_date, r.timestamp + INTERVAL 1 HOUR - UTC_TIMESTAMP() AS seconds_to_expiration FROM reservations r
|
||||
WHERE r.timestamp + INTERVAL 1 HOUR > UTC_TIMESTAMP() AND r.verified =0 AND r.ep_date >= '$current_episode_date' ORDER BY r.ep_date DESC";
|
||||
|
||||
if ($result = mysqli_query($connection, $ep_retrieve)) {
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$id = $row['ep_num'];
|
||||
$date = $row['ep_date'];
|
||||
$seconds_to_expiration = $row['seconds_to_expiration'];
|
||||
$minutes = floor($seconds_to_expiration / 60) + 1;
|
||||
$show_array[$id] = array ( "date" => date('Y-m-d', strtotime($date) ),
|
||||
"title" => " Available again in $minutes minutes",
|
||||
"host" => "Unverified",
|
||||
"status" => "Locked"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$ep_retrieve = "SELECT
|
||||
hosts.host,
|
||||
eps.id,
|
||||
eps.title,
|
||||
eps.date
|
||||
FROM
|
||||
eps,
|
||||
hosts,
|
||||
assets
|
||||
WHERE
|
||||
eps.valid = 1
|
||||
AND eps.hostid = hosts.hostid
|
||||
AND eps.id = assets.episode_id
|
||||
AND assets.extension = 'ogg'
|
||||
AND eps.date >= '$current_episode_date'
|
||||
ORDER BY
|
||||
date DESC";
|
||||
if ($result = mysqli_query($connection, $ep_retrieve)) {
|
||||
while ($row = mysqli_fetch_array($result)) {
|
||||
$id = $row['id'];
|
||||
$date = $row['date'];
|
||||
$title = $row['title'];
|
||||
$host = $row['host'];
|
||||
$show_array[$id] = array ( "date" => date('Y-m-d', strtotime($date) ),
|
||||
"title" => $title,
|
||||
"host" => $host,
|
||||
"status" => "Finished"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
echo json_encode($show_array, JSON_FORCE_OBJECT);
|
||||
?>
|
||||
|
Reference in New Issue
Block a user