Files
@ 54bfd4a095e6
Branch filter:
Location: SlatePermutate/class.class.php
54bfd4a095e6
3.0 KiB
text/x-php
Move the conflict checking functionality into the Section class (no functional change though -- if this change causes different permutation results, I did something wrong).
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 | <?php
//**************************************************
// class.class.php Author: Nathan Gelderloos
//
// Represents a class.
//**************************************************
include_once 'class.section.php';
class Classes
{
private $name; // String
private $sections; // Array of sections
private $nsections; // int
//--------------------------------------------------
// Creates a class with the given name.
//--------------------------------------------------
function __construct($n)
{
$this->name = $n;
$this->nsections = 0;
}
/**
* \brief
* Adds an already-instantiated section to this class.
*/
public function section_add(Section $section)
{
$this->sections[$this->nsections] = $section;
$this->nsections ++;
}
//--------------------------------------------------
// Returns the number of sections in the class.
//--------------------------------------------------
function getnsections()
{
return $this->nsections;
}
//--------------------------------------------------
// Returns the desired section for analysis.
//--------------------------------------------------
function getSection($i)
{
// Checks to make sure the desired section is part of the set.
if(isset($this->sections[$i]))
{
//echo "Object sections[$i] was set<br />";
} else {
echo "Object sections[$i] was NOT set <br />";
}
$result = $this->sections[$i];
return $result;
}
//--------------------------------------------------
// Returns the name of the class.
//--------------------------------------------------
public function getName()
{
return $this->name;
}
/**
* \brief
* Split up a user-friendly course specification into components.
*
* This will only return the 'department' and 'course' components of
* the given course identifier. Otherwise, it acts the same as
* Section::parse.
*
* \see Section::parse()
*
* \param $course_spec
* A course specifier to parse, such as 'cs262' or 'MATH-156'.
* \return
* An array with normalized output having keys of 'department' and
* 'course'. If the user's input has less than these two keys of
* information, the returned array may have zero or one elements.
*/
public static function parse($course_spec)
{
$section_parts = Section::parse($course_spec);
if (isset($section_parts['section']))
unset($section_parts['section']);
return $section_parts;
}
/**
* \brief
* Represent this class as a string.
*/
public function __toString()
{
return $this->getName();
}
/**
* \brief
* Represent this class as an array of sections ready to be JSONized.
*/
public function to_json_array()
{
$json_array = array('class' => $this->getName(),
'sections' => array());
foreach ($this->sections as $section)
{
$json_array['sections'][] = $section->to_json_array();
}
return $json_array;
}
}
|