All pastes #459541 Raw Edit

Mine

public php v1 · immutable
#459541 ·published 2007-04-26 15:03 UTC
rendered paste body
<p>The Spring 2007 will be available in the coming weeks.</p><p></p>  The website links on this schedule are not affiliated with or hosted by Manhattan Neighborhood Network, therefore MNN is not responsible for their content.</p><?php/** Name: schedule.php* Author: Jacob Redding & Hailu Dyami* Date: April 24th, 2007* Purpose: Displays a simple multi-row "table" from the on-air scheduling DB. Allows users to * search past and future shows* Comments: This is working towards a more permanent solution*///Constants $NOSHOWS_MSG = "Nothing scheduled for that time/date/topic combination, please try a different combination.";$DATABASE_ERROR = "<div align=\"center\">We apologize but there was an error connecting to the database, the schedule can not be viewed at this time<br> Please try again later</div>";error_reporting(0);//Variables$allowed_days_in_past=14; //max days allowed in the past$allowed_days_in_future=14; //max days allowed in the future$channel = 34; //default channel$dayfromuser = time();; //Default date to display$category = ""; //Default category, blanks means all//Grab the GET variablesif ($_GET['topic']) { $topic = $_GET['topic']; }if ($_GET['Date']) { $Date = $_GET['Date']; } //Build the start and end times$time = $dayfromuser;//Make sure that the start and end time do not go before or after the allow min/max times$past_time = time() - ($allowed_days_in_past * 24 * 60 * 60); $future_time = time() + ($allowed_days_in_future * 24 * 60 * 60); if ($time < $past_time OR $time > $future_time) { $time = time(); }//Grab the beginning of the day$start_time = mktime(1, 0, 0, date('m', $time),date('d', $time),date('Y', $time));$end_time = $start_time + (24 * 60 * 60);//Build the Query$query= "SELECT schedule.project_no, project.name, project.narrative, project.runtime, schedule.channel, project.content_type_no, content_type.name, schedule.starts, project.public_email, project.public_url, project.public_contact_info  FROM schedule " ."LEFT JOIN project on project.no = schedule.project_no " ."LEFT JOIN project_member on project_member.project_no = project.no AND execute_producer =TRUE " ."LEFT JOIN content_type on project.content_type_no = content_type.no " ."LEFT JOIN topic on project.topic_no = topic.no " .//We have to append 3 zeros to the unixtimestamp because Ocean 7 (developers of the database) decided to //attempt to create a to-the-millisecond unix timestamp although their implementation was very poor"WHERE schedule.starts >= ". $start_time . "000" ." AND " ." schedule.ends <= " . $end_time . "000" ." AND schedule.channel='". $channel."'";//if there's a topic narrow search to only the topic and escape stringif ($topic) {     $topic = mysql_real_escape_string($topic);     $query .= " AND content_type.name = '$topic' "; }if ($Date) {     $Date = mysql_real_escape_string($Date);     $query .= " WHERE schedule.starts >= " . '$Date' . "000"; }//**********sorts by start time************$query .=" ORDER BY schedule.starts, schedule.channel ASC ";//Below this point output is possible so we need to create HTML tags//Add Javascript?><?php//Connect to DB$pgconn = pg_connect("host=216.164.83.163 port=5432 dbname=mnno7app user=extwebaccount password=webbyboy") or die($DATABASE_ERROR);//Execute the Query $schedule_results = pg_query($query) or die($DATABASE_ERROR); //executes a query//Output the results using theme_table(formatting to be controlled via CSS; schedule.css in the same directory)//We actually have to modify the implementation of theme_table to() pass html 'class' attributes later//make header argument for theme_table$header = array("Time", "Title", "Description", "Topic");//manualy defines $row each time, then adds $row as a line of $rows, overwrites $row to start a new line for $rowswhile($pgresult = pg_fetch_array($schedule_results)){		//Because Ocean 7 attempted to create a to-the-millisecond UNIX timestamp this code is created. the last 3 zeros must be stripped	//The time is also 3 hours off... whatever. 	$starts = substr($pgresult["starts"],1,strlen($string)-3) + (2*60*60);	//The time (Ocean 7 error) is a bit screwed up so if the minutes are larger than 20 minutes then we'll put it on the half-hour 	// if less than 20 minutes then on the hour. You can thank Ocean 7 for this one.. uggh. 	$minutes = date('i', $starts);	if ( $minutes >= 20 ) {		$minutes = "30";	} else {		$minutes = "00";	}	$hours = date('h', $starts);	$ampm = date('a', $starts);	$oSevenTime = $hours.":".$minutes.$ampm;	//oSeven's the var that theme_table uses to populate the start times			$row["starts"] = $oSevenTime;	$row["title"] = $pgresult[1];	$row["narrative"] = $pgresult['narrative'];	$row["topic"] = $pgresult[6];		$rows[] = $row;	};	$schedtable = theme_table($header, $rows);//end table definition/********************Use forms api to create the dropdowns****************///Go to Postgres and pull the various topics that are available for this date/time/channel.$sql = "SELECT content_type.name, content_type.no FROM schedule ".	"LEFT JOIN project on project.no = schedule.project_no ".	"LEFT JOIN content_type on project.content_type_no = content_type.no " .	    //Limit to only the dateselect. minding the starting and end time of the day	"WHERE schedule.starts >= ". $start_time . "000" .	" AND " .	" schedule.ends <= " . $end_time . "000" .	" AND schedule.channel='". $channel."'".	   //Drop the empty names	" AND content_type.name <> ''" .        " GROUP BY content_type.name, content_type.no ORDER BY content_type.name ASC";$fieldset = pg_query($sql) or die($DATABASE_ERROR);	//****************date selector**************		//First today's date	$time = time();		//max days prior to today        $subtract_days = ($allowed_days_in_past * 24 * 60 * 60);	$day_in_past = mktime(0,0,0, date('m', $time), date('d', $time),date('Y', $time)) - $subtract_days;	//max days in the future        $add_days = ($allowed_days_in_future * 24 * 60 * 60);	$day_in_future = mktime(0,0,0, date('m', $time), date('d', $time),date('Y', $time)) + $add_days;		//Add the Show All option	$Doptions[""] = 'Show All';		//iterate to populate options array	for($i = $day_in_past; $i <= $day_in_future; $i = $i + (1 * 24 * 60 * 60))				{			$Doptions["?Date=".$i."000"] = t(date('D m/d/y', $i));			}	$default_date =  t('');if ($Date) { $default_date = "?Date=".$i."000"; }	//name the form$Dformname = "datedropdown";		$form['dates'] = array(	 		'#type' => 'select',	 		'#name' => "$Dformname",	            '#id' => "$Dformname",	 		'#title' => t('Select a Date'),	 		'#default_value' => $default_date,	 		'#options' => $Doptions,	 		'#description' => '',	 		'#multiple' => $multiple = FALSE,	 		'#required' => $required = FALSE,	 		'#attributes' => array('onChange' => "top.location.href=document.getElementById('$Dformname').options[document.getElementById('$Dformname').selectedIndex].value"),	#	);$date_form = drupal_get_form('$Dformname', $form);								//*************topic selector**************//Add the Show All option$options[""] = 'Show All';//Put the data into an options array while($sqlresult = pg_fetch_array($fieldset)) 	{ 	$options["?topic=".$sqlresult[name]] = t($sqlresult[name]);  	}$default_topic =  t('');if ($topic) { $default_topic = "?topic=".$topic; } $formname = "topicdropdown";	//reset variable for use of another form		$form = array();	$form['topics'] = array( 		'#type' => 'select', 		'#name' => "$formname",            '#id' => "$formname", 		'#title' => t('Select a Topic'), 		'#default_value' => $default_topic, 		'#options' => $options, 		'#description' => '', 		'#multiple' => $multiple = FALSE, 		'#required' => $required = FALSE, 		'#attributes' => array('onChange' => "top.location.href=document.getElementById('$formname').options[document.getElementById('$formname').selectedIndex].value"),#);$topic_form = drupal_get_form('topics', $form);//************Output************echo $topic_form;echo $date_form;echo $schedtable;?>