Files
        @ d903bd3d579e
    
        
              Branch filter: 
        
    Location: SlatePermutate/process.php - annotation
        
            
            d903bd3d579e
            4.0 KiB
            text/x-php
        
        
    
    Add school profiles support. Currently, the only significant thing school profiles does is provide a different blog of HTML at the bottom of the input.php page so that users may receive school-specific instructions on how to use slate_permutate. School profiles _will_ be extended to provide autocompletion of sections for a specific course based on previously crawling a college's registration website. All-in-all, it maintains a simple school_id string which can be used by other components to uniquely identify a school for any arbitrary purpose.
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143  | 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 6b24e9820611 6b24e9820611 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 6b24e9820611 6b24e9820611 6b24e9820611 27edaecc0d90 6b24e9820611 27edaecc0d90 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 f13987338fbf 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 5cce14d5f1c2 8a7d392478a6 8a7d392478a6 8a7d392478a6 cebfe2251d8c cebfe2251d8c cebfe2251d8c cebfe2251d8c cebfe2251d8c cebfe2251d8c cebfe2251d8c 5cce14d5f1c2 5cce14d5f1c2 5cce14d5f1c2 5cce14d5f1c2 cebfe2251d8c cebfe2251d8c 5cce14d5f1c2 5cce14d5f1c2 5cce14d5f1c2 5cce14d5f1c2 8a7d392478a6 8a7d392478a6 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 8a7d392478a6 6b24e9820611 6b24e9820611 6b24e9820611 6b24e9820611 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90 27edaecc0d90  | <?php
session_start();
require_once('inc/schedule_store.inc');
require_once('inc/class.page.php');
include_once 'class.schedule.php';
include_once 'class.class.php';
include_once 'class.section.php';
function sortInputs($post){
//	return array_filter($post['postData']); // Remove any null or unset items. Disabled as it kills day stuff, @FIXME and add day unset setting here (==0).
	return $post['postData'];
}
// Converts a 5-element array into a nice string.
// Supports multiple modes, prettiness, and searching for different indicators
function arrayToDays($array, $mode = 'num', $pretty = false, $key = 1) {
	$outString = '';
	switch($mode){
		case 'short':
			$days = array('Mon','Tue','Wed','Thur','Fri');
			break;
		case 'long':
			$days = array('Monday','Tuesday','Wednesday','Thursday','Friday');
			break;
		case 'num':
			$days = array('1','2','3','4','5');
			break;
		default:
			$outString = 'Invalid mode passed to arrayToDays()!';
			return $outString;
	}
	if(count($array) > 1){
		for($i=0; $i<=4; $i++)	{
			if(isset($array[$i]) && $array[$i] == $key){
				$outString .= $days[$i];
				if($pretty)
					$outString .= ', ';
			}
		}
		if($pretty){
			$outString = substr($outString,0,strlen($outString) - 2); // Remove last comma and space
			$outString = substr($outString,0, strrpos( $outString, ' ')) . ' and' . substr($outString, strrpos( $outString, ' '), strlen($outString));
		}
	}
	else {
		for($i=0; $i<=4; $i++)
			if(isset($array[$i]))
				$outString = $days[$i];
	}
	return $outString;
}
function prettyTime($time){
	return substr($time,0,strlen($time)-2) . ":" . substr($time,strlen($time)-2, strlen($time));
}
$DEBUG = FALSE;
if (isset($_GET['debug']))
  $DEBUG = $_GET['debug'];
$schedule_store = schedule_store_init();
if(!$DEBUG)
  {
    if(isset($_GET['s']))
      {
	$savedSched = schedule_store_retrieve($schedule_store, $_GET['s']);
	if ($savedSched)
	  $savedSched->writeoutTables();
	else
	  Page::show_404('Unable to find a saved schedule with an ID of ' . $_GET['s'] . '.');
      }
    elseif(isset($_GET['del']))
      {
	/* Allow the user to delete schedules that he has stored in his session */
	if ($_SESSION['saved'][(int)$_GET['del']])
	  {
	    /* user owns this schedule ID */
	    schedule_store_delete($schedule_store, (int)$_GET['del']);
	    unset($_SESSION['saved'][(int)$_GET['del']]);
	  }
	header('Location: input.php');
      }
    else
      {
		$allClasses = new Schedule($_POST['postData']['name']);
	
		foreach(sortInputs($_POST) as $class)
		{
		  /*
		   * Only add classes if the user added at least one
		   * section to the class. We know that $class['name']
		   * is not a section, so count() needs to be > 1 and
		   * we need to skip over 'name' in our loop.
		   */
			if(is_array($class) && count($class) > 1)
			{
				$allClasses->addClass($class['name']);
		
				foreach($class as $section)
				  /* Skip the section name, which isn't a section */
					if(is_array($section))
					{
				             $allClasses->addSection($class['name'], $section['letter'], $section['start'], $section['end'], arrayToDays($section['days']));
					}
			}
		}
		$allClasses->findPossibilities();
		if (!isset($_SESSION['saved']))
		  $_SESSION['saved'] = array();
		$schedule_id = schedule_store_store($schedule_store, $allClasses);
		if ($schedule_id != NULL)
		  $_SESSION['saved'][$schedule_id] = $allClasses->getName();
		/*
		 * writeoutTables() needs to know $schedule_id, so it
		 * has to be called after we save the schedule. See
		 * schedule_store_store().
		 */
		$allClasses->writeoutTables();
      }
  }
else
  {
	echo '<pre>DEBUG OUTPUT: <br /><br />';
	foreach(sortInputs($_POST) as $class) {
		echo 'Class: ' . $class['name'] . '<br />';
		foreach($class as $section)
			if(is_array($section))
			{
				echo '---- Section that starts at ' . prettyTime($section['start']) . ' and ends at ' . prettyTime($section['end']) . '. This class meets on ';
				echo arrayToDays($section['days'],'long',true) . '.<br />';
			}
		echo '<br />';
	}
	echo '</pre>';
}
 |