new Option("Subject"), "Dept (4-letter code)" => new Option("Dept (4-letter code)"), "Class Number" => new Option("Class Number"), "Class Title" => new Option("Class Title"), "Professor" => new Option("Professor"),); $form["criteriaDropdown"] = new Select("criteria", $options, $options["Subject"], "By:", null, array("onchange"=>"toggleSubjectDropdown(this)")); $form["searchField"] = new Text("query", "", ""); $form["openOnlyCheckbox"] = new Checkbox("openOnly", "true", true, "Show Open Classes Only"); $form["onlineOnlyCheckbox"] = new Checkbox("onlineOnly", "true", true, "Show Online Classes Only"); $form["s1Checkbox"] = new Checkbox("s1", "true", true, "S1"); $form["s2Checkbox"] = new Checkbox("s2", "true", true, "S2"); $form["s3Checkbox"] = new Checkbox("s3", "true", true, "S3"); $form["c1Checkbox"] = new Checkbox("c1", "true", true, "Component 1 (online/hybrid)"); $form["c2Checkbox"] = new Checkbox("c2", "true", true, "Component 2 (face-to-face)"); $form["subject"] = new Select("subject", array(), null, "Subject"); $form["submit_form"] = new Submit("submit_form", "Search"); //Populate the subject Select box with data from db. $sql = "SELECT DISTINCT DeptName FROM SubjectAreas S, SOLARClasses C WHERE C.Term = $term AND C.Dept = S.DeptCode AND (C.ClassStatus = 'Active' OR C.ClassStatus = 'Cancelled') ORDER BY DeptName"; $result = mysql_query($sql); $subjects = array("" => new Option("")); if($result !== false){ while($row = mysql_fetch_assoc($result)){ $truncated = (strlen($row["DeptName"]) > 39) ? substr($row["DeptName"], 0, 39) . "..." : $row["DeptName"]; $subjects[$row["DeptName"]] = new Option($truncated); $subjects[$row["DeptName"]]->addAttribute("title", $row["DeptName"]); } $form["subject"]->setOptions($subjects); } unset($sql); //Populate form with params previously entered into the form or load default values if(!empty($_GET["query"])){ $form["searchField"]->setValue($_GET["query"]); } if($_GET['criteria'] == "Subject"){ //capitalize the first letter in each word. $str = ""; $parts = explode(" ", $_GET["subject"]); foreach($parts as &$part){ $str .= ucfirst($part) . " "; } $str = substr_replace($str, "", strlen($str)-1); $_GET["subject"] = $str; $form["subject"]->setSelected($_GET["subject"]); unset($_GET["query"]); } else{ unset($_GET["subject"]); } if(isset($_GET['submit_form'])){ if(!empty($_GET["criteria"])){ $form["criteriaDropdown"]->setSelected($_GET["criteria"]); } $form["openOnlyCheckbox"]->setChecked($_GET["openOnly"]); $form["onlineOnlyCheckbox"]->setChecked($_GET["onlineOnly"]); $form["s1Checkbox"]->setChecked($_GET["s1"]); $form["s2Checkbox"]->setChecked($_GET["s2"]); $form["s3Checkbox"]->setChecked($_GET["s3"]); $form["c1Checkbox"]->setChecked($_GET["c1"]); $form["c2Checkbox"]->setChecked($_GET["c2"]); }else{ //load default values $form["openOnlyCheckbox"]->setChecked(false); $form["onlineOnlyCheckbox"]->setChecked(false); $form["s1Checkbox"]->setChecked(true); $form["s2Checkbox"]->setChecked(true); $form["s3Checkbox"]->setChecked(true); $form["c1Checkbox"]->setChecked(true); $form["c2Checkbox"]->setChecked(true); } //Genereate SQL query using admin's settings and user's search params $searchBySubject = false; if($_GET["criteria"] == "Subject" && isset($_GET["subject"]) && !empty($_GET["subject"])){ $searchBySubject = true; $sql = <<= '2012-01-03' " : ""; } if($show_openOnly === true && $_GET['openOnly'] === true){ $sql .= "AND Enrolled < Capacity "; } if($show_onlineOnly === true && $_GET['onlineOnly'] === true){ $sql .= "AND Online = 'Yes' "; } if($searchBySubject){ //search by subject $sql .= "AND SS.Dept = A.DeptCode "; $sql .= "AND DeptName LIKE '%{$_GET["subject"]}' "; } else if(isset($_GET["criteria"])){ //search by 'criteria' if($_GET["criteria"] == "Dept (4-letter code)"){ // $query = str_replace(" ", "", $_GET['query']); $query = $_GET['query']; $pattern = "/[a-zA-Z\s]+(\s)[0-9]+[0-9A-Za-z]+/"; $found = preg_match($pattern, $query, &$matches, PREG_OFFSET_CAPTURE); if($found == 1){ $query = substr_replace($query, "", $matches[1][1], 1) . "\n"; $query = trim($query); } $sql .= "AND CONCAT(Dept, Number) LIKE '%$query%'"; } else if($_GET["criteria"] == "Class Number"){ $sql .= "AND SS.ClassNbr LIKE '%{$_GET['query']}%' "; } else if($_GET["criteria"] == "Class Title"){ $sql .= "AND SC.TitleLong LIKE '%{$_GET['query']}%' "; } else if($_GET["criteria"] == "Professor"){ $sql .= "AND Instructor LIKE '%{$_GET['query']}%' "; } } $sql .= "ORDER BY DeptNum, Section "; //Execute Query $result = mysql_query($sql); //Instantiate table if($result !== false){ $table = new Table($result); }else{ $errors[] = "An unknown error occured. Please try again or notify the Tseng College tech support if the problem persists."; } //Process Table data if(count($errors) == 0){ foreach($table->table as $row){ //make enrollment column if($row["Enrolled"]->getInnerHTML() >= $row["Capacity"]->getInnerHTML()){ $row["Enrolled"]->addAttribute("style", "color: red; "); } $row["Enrolled"]->setInnerHTML($row["Enrolled"]->getInnerHTML()."/".$row["Capacity"]->getInnerHTML()); $row["Capacity"] = null; //trucate long titles & add class attribute to title column if(strlen($row["TitleLong"]->getInnerHTML()) >= 40){ $row["TitleLong"]->addAttribute("title", $row["TitleLong"]->getInnerHTML()); $row["TitleLong"]->setInnerHTML(substr($row["TitleLong"]->getInnerHTML(), 0, 37) . "..."); } $row["TitleLong"]->addAttribute("class", "class_title_col"); //Add class attribute to title column //make the class (DeptNum) column links $link = "getInnerHTML()}&term=$term&ses={$row["Session"]->getInnerHTML()}&sec={$row["Section"]->getInnerHTML()}\" >"; $link .= $row["DeptNum"]->getInnerHTML() . ""; $row["DeptNum"]->setInnerHTML($link); } if(isset($_GET["moreInfo"])){ $colValues = array("DeptNum", "ClassNbr", "Session", "Section", "TitleLong", "Enrolled"); $colTitles = array("Course", "Class #", "Session", "Section #", "Class Title", "Enrollment"); } else{ // $colValues = array("DeptNum", "ClassNbr", "Session", "Section", "TitleLong"); // $colTitles = array("Course", "Class #", "Session", "Section #", "Class Title"); $colValues = array("DeptNum", "TitleLong", "ClassNbr", "Section", "Session"); $colTitles = array("Course", "Class Title", "Class #", "Section #", "Session"); } $table->setValues($colValues); $table->setTitles($colTitles); $table->setAttribute("class", "table"); } $_css = <<getLabel() . " " . $form["openOnlyCheckbox"] . "
" : ""; // $onlineOnlyCheckboxesHTML = ($show_onlineOnly === true) ? $form["onlineOnlyCheckbox"]->getLabel() ." " . $form["onlineOnlyCheckbox"] . "
" : ""; $onlineOnlyCheckboxesHTML = ''; $show_summer_session_checkboxes = true;//Add session checkboxes for the Summer 2013 $sessionCheckboxesHTML = ($show_summer_session_checkboxes === true) ? "Show Sessions: " . $form["s1Checkbox"]->getLabel().$form["s1Checkbox"] .$form["s2Checkbox"]->getLabel().$form["s2Checkbox"] . $form["s3Checkbox"]->getLabel().$form["s3Checkbox"] . "
" : ""; $winterSessionCheckboxesHTML = ($show_winter_session_checkboxes === true) ? $form["c1Checkbox"].$form["c1Checkbox"]->getLabel() ."
". $form["c2Checkbox"].$form["c2Checkbox"]->getLabel()."
" : ""; $form = <<
$englishTerm Class Search
Search {$form["criteriaDropdown"]->getLabel()} {$form["criteriaDropdown"]} {$form["searchField"]}{$form["subject"]}
$openOnlyCheckboxesHTML $onlineOnlyCheckboxesHTML $sessionCheckboxesHTML $winterSessionCheckboxesHTML {$form["submit_form"]}
FORM; //Set meta data $_title = (!empty($pageTitle)) ? $pageTitle : $englishTerm . " Class Search (Tseng College of Extended Learning) | Cal. State. Northridge"; $_keywords = $englishPlease." Class Search, " . "Cal State Northridge, EXL, Extended Leargning, California State University Northrige"; if($searchBySubject){ $_keywords .= ", {$_GET["subject"]}"; }elseif(isset($_GET["submit_form"])){ $_keywords .= ", {$_GET["query"]}"; } $_description = "A simple form for students to use to search for $englishPlease classes at California State University Northridge."; //Create HTML error messages if(count($errors) != 0){ $errorHTML = "
    "; foreach($errors as $error){ $errorHTML .= "
  • $error
  • "; } $errorHTML .= "
"; }else{ $errorHTML = ""; } //Assemble Content to go on page. $_content = $errorHTML . $form . $table; $_head .= ''; $_head .= ''; $_head .= ''; //Display Page by Including Template require($templateFile); ?>