285 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			285 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php | ||
|  | require "/home/hpr/php/include.php"; | ||
|  | 
 | ||
|  | if (isset($_GET['format'])){ | ||
|  |     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 = mysql_query("SELECT max(date), max(id) from eps"); | ||
|  | $last_show_date = mysql_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 = mysql_query($ep_retrieve)) { | ||
|  |     while ($row = mysql_fetch_array($result)) { | ||
|  |         $hostid = $row['hostid']; | ||
|  |         $last_show = mysql_query("SELECT max(date) from eps WHERE hostid='$hostid' AND valid = '1'"); | ||
|  |         $last_show_date = mysql_fetch_row($last_show); | ||
|  |         if (!empty($last_show_date[0])) { | ||
|  |           $num_of_hosts++; | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | // --------------------------------------------
 | ||
|  | // Get first free slot
 | ||
|  | 
 | ||
|  | $query = mysql_query("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 = mysql_fetch_row($query); | ||
|  | $next_show_num = $next_show_num_array[0]; | ||
|  | 
 | ||
|  | // --------------------------------------------
 | ||
|  | // Get latest published show
 | ||
|  | 
 | ||
|  | $query = mysql_query("SELECT max(date), max(id) from eps WHERE eps.date <= UTC_DATE()"); | ||
|  | $current_episode_array = mysql_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 = mysql_query($ep_retrieve)) { | ||
|  |   while ($row = mysql_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 = mysql_query($ep_retrieve)) { | ||
|  |   $num_future_hosts = mysql_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 = mysql_query($ep_retrieve)) { | ||
|  |   $num_future_shows = mysql_num_rows($result); | ||
|  | } | ||
|  | 
 | ||
|  | // --------------------------------------------
 | ||
|  | // Shows in the Queue
 | ||
|  | $result=mysql_query("SELECT count(*) as total FROM `reservations` WHERE `status` LIKE 'SHOW_SUBMITTED' ORDER BY `ip` ASC "); | ||
|  | $data=mysql_fetch_assoc($result); | ||
|  | $num_submitted_shows = $data['total']; | ||
|  | 
 | ||
|  | // --------------------------------------------
 | ||
|  | // Duration of all shows
 | ||
|  | $result=mysql_query("SELECT SUM(duration) as total_duration FROM `eps`"); | ||
|  | $data=mysql_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); | ||
|  | } | ||
|  | 
 | ||
|  | // --------------------------------------------
 | ||
|  | // Emergency Shows
 | ||
|  | 
 | ||
|  | $emergency_shows = count(glob('/home/hpr/www/emergency/*.ogg')); | ||
|  | $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."
 | ||
|  |     }, | ||
|  |     \"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.",
 | ||
|  |         \"emergency\": ".$emergency_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> | ||
|  |     <emergency>".$emergency_shows."</emergency> | ||
|  |   </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_emergency,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},${emergency_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 Emergency Shows:\t$emergency_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,$emergency_shows,$un_delivered"; | ||
|  |     // print_r($show_array);
 | ||
|  | } | ||
|  | mysql_close(); | ||
|  | ?>
 |