2023-12-23 10:24:21 +00:00
< ? php
require " /home/hpr/php/include.php " ;
2024-02-14 14:11:25 +00:00
$format = " json " ;
2023-12-23 10:24:21 +00:00
if ( isset ( $_GET [ 'format' ])){
2024-02-14 14:11:25 +00:00
if ( $_GET [ 'format' ] === " txt " ) {
$format = " txt " ;
}
2023-12-23 10:24:21 +00:00
if ( $_GET [ 'format' ] === " json " ) {
$format = " json " ;
}
if ( $_GET [ 'format' ] === " xml " ) {
$format = " xml " ;
}
if ( $_GET [ 'format' ] === " csv " ) {
$format = " csv " ;
}
}
2024-05-31 07:01:09 +00:00
$twt_startdate = abs ( strtotime ( date ( " c " )) - strtotime ( " 2005-09-19T00:00:00Z " ));
$twt_years = floor ( $twt_startdate / ( 365 * 60 * 60 * 24 ));
$twt_months = floor (( $twt_startdate - $twt_years * 365 * 60 * 60 * 24 ) / ( 30 * 60 * 60 * 24 ));
$twt_days = floor (( $twt_startdate - $twt_years * 365 * 60 * 60 * 24 - $twt_months * 30 * 60 * 60 * 24 ) / ( 60 * 60 * 24 ));
$age_twt = $twt_startdate ;
2023-12-23 10:24:21 +00:00
$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 ;
2024-02-14 14:11:25 +00:00
$last_show = mysqli_query ( $connection , " SELECT max(date), max(id) from eps " );
$last_show_date = mysqli_fetch_row ( $last_show );
2023-12-23 10:24:21 +00:00
$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 " ;
2024-02-14 14:11:25 +00:00
if ( $result = mysqli_query ( $connection , $ep_retrieve )) {
while ( $row = mysqli_fetch_array ( $result )) {
2023-12-23 10:24:21 +00:00
$hostid = $row [ 'hostid' ];
2024-02-14 14:11:25 +00:00
$last_show = mysqli_query ( $connection , " SELECT max(date) from eps WHERE hostid=' $hostid ' AND valid = '1' " );
$last_show_date = mysqli_fetch_row ( $last_show );
2023-12-23 10:24:21 +00:00
if ( ! empty ( $last_show_date [ 0 ])) {
$num_of_hosts ++ ;
}
}
}
// --------------------------------------------
// Get first free slot
2024-02-14 14:11:25 +00:00
$query = mysqli_query ( $connection , " SELECT id + 1 FROM eps mo
2023-12-23 10:24:21 +00:00
WHERE NOT EXISTS
(
SELECT NULL
FROM eps mi
WHERE mi . id = mo . id + 1
)
ORDER BY
id
LIMIT 1 " );
2024-02-14 14:11:25 +00:00
$next_show_num_array = mysqli_fetch_row ( $query );
2023-12-23 10:24:21 +00:00
$next_show_num = $next_show_num_array [ 0 ];
// --------------------------------------------
// Get latest published show
2024-02-14 14:11:25 +00:00
$query = mysqli_query ( $connection , " SELECT max(date), max(id) from eps WHERE eps.date <= UTC_DATE() " );
$current_episode_array = mysqli_fetch_row ( $query );
2023-12-23 10:24:21 +00:00
$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 " ;
2024-02-14 14:11:25 +00:00
if ( $result = mysqli_query ( $connection , $ep_retrieve )) {
while ( $row = mysqli_fetch_array ( $result )) {
2023-12-23 10:24:21 +00:00
$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";
2024-02-14 14:11:25 +00:00
if ( $result = mysqli_query ( $connection , $ep_retrieve )) {
$num_future_hosts = mysqli_num_rows ( $result );
2023-12-23 10:24:21 +00:00
}
// --------------------------------------------
// 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";
2024-02-14 14:11:25 +00:00
if ( $result = mysqli_query ( $connection , $ep_retrieve )) {
$num_future_shows = mysqli_num_rows ( $result );
2023-12-23 10:24:21 +00:00
}
// --------------------------------------------
// Shows in the Queue
2024-02-14 14:11:25 +00:00
$result = mysqli_query ( $connection , " SELECT count(*) as total FROM `reservations` WHERE `status` LIKE 'SHOW_SUBMITTED' ORDER BY `ip` ASC " );
$data = mysqli_fetch_assoc ( $result );
2023-12-23 10:24:21 +00:00
$num_submitted_shows = $data [ 'total' ];
// --------------------------------------------
// Duration of all shows
2024-02-14 14:11:25 +00:00
$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 );
2023-12-23 10:24:21 +00:00
$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 );
}
// --------------------------------------------
2024-02-14 14:11:25 +00:00
// Produce output
2023-12-23 10:24:21 +00:00
$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 \" : {
2024-05-31 07:01:09 +00:00
\ " total_seconds \" : " . $age_twt . " ,
\ " years \" : " . $twt_years . " ,
\ " months \" : " . $twt_months . " ,
\ " days \" : " . $twt_days . "
2023-12-23 10:24:21 +00:00
},
\ " since_rename \" : {
\ " total_seconds \" : " . $agehpr . " ,
\ " years \" : " . $hpr_years . " ,
\ " months \" : " . $hpr_months . " ,
\ " days \" : " . $hpr_days . "
}
},
\ " shows \" : {
\ " total \" : " . $totalshows . " ,
2024-05-31 07:01:09 +00:00
\ " twt \" : 300,
2023-12-23 10:24:21 +00:00
\ " hpr \" : " . $totalhpr . " ,
\ " duration \" : " . $total_duration . " ,
\ " human_duration \" : \" " . $human_total_duration . " \"
},
\ " hosts \" : " . $num_of_hosts . " ,
\ " slot \" : {
\ " next_free \" : " . $days_to_wait . " ,
\ " no_media \" : " . $un_delivered . "
},
2024-02-14 14:11:25 +00:00
$workflow
2023-12-23 10:24:21 +00:00
\ " 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 . " ,
2024-02-14 14:11:25 +00:00
\ " reserve \" : " . $reserve_shows . "
2023-12-23 10:24:21 +00:00
}
}
" ;
}
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 - 19 T00 : 00 : 00 Z </ start >
< rename > 2007 - 12 - 31 T00 : 00 : 00 Z </ rename >
< since_start >
2024-05-31 07:01:09 +00:00
< total_seconds > " . $age_twt . " </ total_seconds >
< years > " . $twt_years . " </ years >
< months > " . $twt_months . " </ months >
< days > " . $twt_days . " </ days >
2023-12-23 10:24:21 +00:00
</ 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 >
2024-05-31 07:01:09 +00:00
< twt > 300 </ twt >
2023-12-23 10:24:21 +00:00
< 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 >
2024-02-14 14:11:25 +00:00
< reserve > " . $reserve_shows . " </ reserve >
2023-12-23 10:24:21 +00:00
</ queue >
</ stats > " ;
}
elseif ( $format === " csv " ) {
header ( " Content-type: text/csv " );
header ( " Content-disposition: inline; filename=hpr_stats.csv " );
2024-05-31 07:01:09 +00:00
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_twt,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,${age_twt},${twt_years},${twt_months},${twt_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 " ;
2023-12-23 10:24:21 +00:00
}
else {
Header ( 'Content-type: text/tab-separated-values' );
header ( " Content-disposition: inline; filename=hpr_stats.txt " );
2024-05-31 07:01:09 +00:00
printf ( " Started: \t %d years, %d months, %d days ago (2005-09-19) \n " , $twt_years , $twt_months , $twt_days );
2023-12-23 10:24:21 +00:00
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 " ;
2024-05-31 07:01:09 +00:00
echo " Total TWT: \t 300 \n " ;
2023-12-23 10:24:21 +00:00
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 " ;
2024-02-14 14:11:25 +00:00
echo " Number of Reserve Shows: \t $reserve_shows\n " ;
2023-12-23 10:24:21 +00:00
echo " Days until show without media: \t $un_delivered\n " ;
2024-05-31 07:01:09 +00:00
print " $current_time , $age_twt , $agehpr , $totalshows ,300, $totalhpr , $num_of_hosts , $days_to_wait , $num_future_hosts , $num_future_shows , $unprocessed_comments , $new_shows , $reserve_shows , $un_delivered " ;
2023-12-23 10:24:21 +00:00
// print_r($show_array);
}
2024-02-14 14:11:25 +00:00
mysqli_close ( $connection );
2023-12-23 10:24:21 +00:00
?>