<?php require "/home/hpr/php/include.php"; $format="json"; if (isset($_GET['format'])){ if ($_GET['format'] === "txt") { $format="txt"; } if ($_GET['format'] === "json") { $format="json"; } if ($_GET['format'] === "xml") { $format="xml"; } if ($_GET['format'] === "csv") { $format="csv"; } } $twat_startdate = abs(strtotime(date("c")) - strtotime("2005-09-19T00:00:00Z")); $twat_years = floor($twat_startdate / (365*60*60*24)); $twat_months = floor(($twat_startdate - $twat_years * 365*60*60*24) / (30*60*60*24)); $twat_days = floor(($twat_startdate - $twat_years * 365*60*60*24 - $twat_months*30*60*60*24)/ (60*60*24)); $agetwat = $twat_startdate; $hpr_startdate = abs(strtotime(date("c")) - strtotime("2007-12-31T00:00:00Z")); $hpr_years = floor($hpr_startdate / (365*60*60*24)); $hpr_months = floor(($hpr_startdate - $hpr_years * 365*60*60*24) / (30*60*60*24)); $hpr_days = floor(($hpr_startdate - $hpr_years * 365*60*60*24 - $hpr_months*30*60*60*24)/ (60*60*24)); $agehpr = $hpr_startdate; $last_show = mysqli_query($connection, "SELECT max(date), max(id) from eps"); $last_show_date = mysqli_fetch_row($last_show); $totalshows=$last_show_date[1]+300; $totalhpr=$last_show_date[1]; // -------------------------------------------- // Get the number of hosts $ep_retrieve = "SELECT hostid FROM hosts WHERE valid = '1' ORDER BY hostid ASC"; $num_of_hosts = "1"; if ($result = mysqli_query($connection, $ep_retrieve)) { while ($row = mysqli_fetch_array($result)) { $hostid = $row['hostid']; $last_show = mysqli_query($connection, "SELECT max(date) from eps WHERE hostid='$hostid' AND valid = '1'"); $last_show_date = mysqli_fetch_row($last_show); if (!empty($last_show_date[0])) { $num_of_hosts++; } } } // -------------------------------------------- // Get first free slot $query = mysqli_query($connection, "SELECT id + 1 FROM eps mo WHERE NOT EXISTS ( SELECT NULL FROM eps mi WHERE mi.id = mo.id + 1 ) ORDER BY id LIMIT 1"); $next_show_num_array = mysqli_fetch_row($query); $next_show_num = $next_show_num_array[0]; // -------------------------------------------- // Get latest published show $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 $un_delivered = -1; $days_to_undelivered = 0; $show_array = array (); $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"; if ($result = mysqli_query($connection, $ep_retrieve)) { while ($row = mysqli_fetch_array($result)) { $id = $row['id']; $id = fixid($id); $date = $row['date']; $title = $row['title']; $host = $row['host']; if ( file_exists("./eps/hpr$id.ogg") and file_exists("./eps/hpr$id.spx") and file_exists("./eps/hpr$id.mp3") ) { $delivered = 1; if ($un_delivered === -1 ) { $days_to_undelivered++; } } else { $delivered = 0; $un_delivered = $days_to_undelivered; } $show_array[$id] = array ( "date" => $date, "title" => $title, "host" => $host, "delivered" => $delivered ); } } // -------------------------------------------- // Calculate the time to the next show $next_show_date = date('Y-m-d', strtotime($show_array[$next_show_num - 1 ]["date"] . ' + 1 weekday')); $days_to_wait = floor((strtotime($next_show_date) - strtotime(gmdate('Y-m-d')))/(60*60*24)); // -------------------------------------------- // Future Hosts $ep_retrieve = "SELECT DISTINCT hostid FROM eps WHERE eps.date > UTC_DATE()"; // $ep_retrieve = "SELECT id, type, date, title, notes, host, hostid FROM eps WHERE valid = '1' ORDER BY id DESC LIMIT 10"; if ($result = mysqli_query($connection, $ep_retrieve)) { $num_future_hosts = mysqli_num_rows($result); } // -------------------------------------------- // Shows in the Queue $ep_retrieve = "SELECT DISTINCT id FROM eps WHERE eps.date > UTC_DATE() AND duration <> 0"; // $ep_retrieve = "SELECT id, type, date, title, notes, host, hostid FROM eps WHERE valid = '1' ORDER BY id DESC LIMIT 10"; if ($result = mysqli_query($connection, $ep_retrieve)) { $num_future_shows = mysqli_num_rows($result); } // -------------------------------------------- // Shows in the Queue $result=mysqli_query($connection, "SELECT count(*) as total FROM `reservations` WHERE `status` LIKE 'SHOW_SUBMITTED' ORDER BY `ip` ASC "); $data=mysqli_fetch_assoc($result); $num_submitted_shows = $data['total']; // -------------------------------------------- // Duration of all shows $result=mysqli_query($connection, "SELECT SUM(duration) as total_duration FROM `eps`"); $data=mysqli_fetch_assoc($result); $total_duration = $data['total_duration']; $human_total_duration = convertSecToTime($total_duration); // -------------------------------------------- // Reserve Shows $result = mysqli_query($connection, 'SELECT COUNT(*) FROM reservations WHERE status="RESERVE_SHOW_SUBMITTED";'); if (!isset($result)) { naughty("cac33babd8a24edd138087ef7e4280f6"); } $reserve_array = mysqli_fetch_row( $result ); $reserve_shows = $reserve_array[0]; mysqli_free_result($result); // -------------------------------------------- // workflow $ep_retrieve = "SELECT status, COUNT(*) AS total FROM reservations WHERE status != 'RESERVE_SHOW_SUBMITTED' GROUP BY status;"; $workflow="\"workflow\": {"; if ($result = mysqli_query($connection, $ep_retrieve)) { while ($row = mysqli_fetch_array($result)) { $status = $row['status']; $total = $row['total']; $workflow=$workflow." \"$status\": \"$total\","; } } $workflow=$workflow." \"RESERVE_SHOW_SUBMITTED\": \"$reserve_shows\" },"; // -------------------------------------------- // duration $result=mysqli_query($connection, "SELECT SUM(duration) as total_duration FROM `eps`"); $data=mysqli_fetch_assoc($result); $total_duration = $data['total_duration']; $human_total_duration = convertSecToTime($total_duration); // -------------------------------------------- // Unprocessed comments $comment_directory = "/home/hpr/comments"; $unprocessed_comments = iterator_count(new FilesystemIterator("$comment_directory", FilesystemIterator::SKIP_DOTS)); // -------------------------------------------- // Shows on the FTP server $new_shows=0; if ($handle = opendir('/home/hpr/upload')) { while (false !== ($entry = readdir($handle))) { if ( $entry != "." && $entry != "..") { $new_shows++; } } closedir($handle); } // -------------------------------------------- // Produce output $current_time = time(); if ($format === "json") { header('Content-Type: application/json'); header("Content-disposition: inline; filename=hpr_stats.json"); echo "{ \"stats_generated\": ".$current_time.", \"age\": { \"start\": \"2005-09-19T00:00:00Z\", \"rename\": \"2007-12-31T00:00:00Z\", \"since_start\": { \"total_seconds\": ".$agetwat.", \"years\": ".$twat_years.", \"months\": ".$twat_months.", \"days\": ".$twat_days." }, \"since_rename\": { \"total_seconds\": ".$agehpr.", \"years\": ".$hpr_years.", \"months\": ".$hpr_months.", \"days\": ".$hpr_days." } }, \"shows\": { \"total\": ".$totalshows.", \"twat\": 300, \"hpr\": ".$totalhpr.", \"duration\": ".$total_duration.", \"human_duration\": \"".$human_total_duration."\" }, \"hosts\": ".$num_of_hosts.", \"slot\": { \"next_free\": ".$days_to_wait.", \"no_media\": ".$un_delivered." }, $workflow \"queue\": { \"number_future_hosts\": ".$num_future_hosts.", \"number_future_shows\": ".$num_future_shows.", \"unprocessed_comments\": ".$unprocessed_comments.", \"submitted_shows\": ".$num_submitted_shows.", \"shows_in_workflow\": ".$new_shows.", \"reserve\": ".$reserve_shows." } } "; } elseif ($format === "xml") { header("Content-type: application/xml"); header("Content-disposition: inline; filename=hpr_stats.xml"); echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> <stats> <stats_generated>".$current_time."</stats_generated> <age> <start>2005-09-19T00:00:00Z</start> <rename>2007-12-31T00:00:00Z</rename> <since_start> <total_seconds>".$agetwat."</total_seconds> <years>". $twat_years."</years> <months>".$twat_months."</months> <days>".$twat_days."</days> </since_start> <since_rename> <total_seconds>".$agehpr."</total_seconds> <years>".$hpr_years."</years> <months>".$hpr_months."</months> <days>".$hpr_days."</days> </since_rename> </age> <shows> <total>".$totalshows."</total> <twat>300</twat> <hpr>".$totalhpr."</hpr> <duration>".$total_duration."</duration> <human_duration>".$human_total_duration."</human_duration> </shows> <hosts>".$num_of_hosts."</hosts> <slot> <next_free>".$days_to_wait."</next_free> <no_media>".$un_delivered."</no_media> </slot> <queue> <number_future_hosts>".$num_future_hosts."</number_future_hosts> <number_future_shows>".$num_future_shows."</number_future_shows> <unprocessed_comments>".$unprocessed_comments."</unprocessed_comments> <submitted_shows>".$num_submitted_shows."</submitted_shows> <shows_in_workflow>".$new_shows."</shows_in_workflow> <reserve>".$reserve_shows."</reserve> </queue> </stats>"; } elseif ($format === "csv") { header("Content-type: text/csv"); header("Content-disposition: inline; filename=hpr_stats.csv"); print "stats_generated,age_start,age_rename,age_since_start_total_seconds,age_since_start_years,age_since_start_months,age_since_start_days,age_since_rename_total_seconds,age_since_rename_years,age_since_rename_months,age_since_rename_days,shows_total,shows_twat,shows_hpr,hosts,slot_next_free,slot_no_media,number_future_hosts,number_future_shows,unprocessed_comments,shows_in_workflow,queue_reserve,duration\n"; print "${current_time},2005-09-19T00:00:00Z,2007-12-31T00:00:00Z,${agetwat},${twat_years},${twat_months},${twat_days},${agehpr},${hpr_years},${hpr_months},${hpr_days},${totalshows},300,${totalhpr},${num_of_hosts},${days_to_wait},${un_delivered},${num_future_hosts},${num_future_shows},${unprocessed_comments},${new_shows},${reserve_shows},${total_duration}\n"; } else { Header('Content-type: text/tab-separated-values'); header("Content-disposition: inline; filename=hpr_stats.txt"); printf("Started:\t%d years, %d months, %d days ago (2005-09-19)\n", $twat_years, $twat_months, $twat_days); printf("Renamed HPR:\t%d years, %d months, %d days ago (2007-12-31)\n", $hpr_years, $hpr_months, $hpr_days); echo "Total Shows:\t" . $totalshows . "\n"; echo "Total TWAT:\t300\n"; echo "Total HPR:\t" . $totalhpr . "\n"; echo "Duration:\t" . $total_duration . "\n"; echo "Human Duration:\t" . $human_total_duration . "\n"; echo "HPR Hosts:\t${num_of_hosts}\n"; echo "Days to next free slot:\t${days_to_wait}\n"; echo "Hosts in Queue:\t$num_future_hosts\n"; echo "Shows in Queue:\t$num_future_shows\n"; echo "Comments waiting approval:\t$unprocessed_comments\n"; echo "Files on the FTP Server:\t$new_shows\n"; echo "Number of Reserve Shows:\t$reserve_shows\n"; echo "Days until show without media:\t$un_delivered\n"; print "$current_time,$agetwat,$agehpr,$totalshows,300,$totalhpr,$num_of_hosts,$days_to_wait,$num_future_hosts,$num_future_shows,$unprocessed_comments,$new_shows,$reserve_shows,$un_delivered"; // print_r($show_array); } mysqli_close($connection); ?>