function render() { global $gbCache, $siteName, $keywords; $args = func_get_args(); if (count($args) > 0) { $school = $args[0]; } else { $school = null; } if ($school) { $school = School::findOneBySlug($school); if (!$school) { header("Location: " . BASE_URL); exit; } } if (!($schoolJson = $gbCache['schooljson'])) { $schoolJson = file_get_contents(BASE_DIR . '/config/schools.json'); $gbCache['schooljson'] = $schoolJson; } $this->setTitle('Textbooks made easy.'); $this->addMetaTag('keywords', (!$school ? '' : $school->getShortName() . ", " . $school->getName() . ",") . "{$siteName}, {$keywords}, college textbooks, lowest " . "textbook prices, affordable textbooks, cheap textbooks, " . "inexpensive textbooks, discount textbooks, textbook price" . " comparison, textbook price-comparison, textbook syllabus" . " information, rent textbooks, college textbooks, search by" . " course, student textbook discounts, better college bookstore," . " alternative college bookstore, cheap text books, compare" . " textbooks prices"); $this->addMetaTag('description', ($school ? $school->getShortName() . ' ' : '') . "GetchaBooks is a free, " . "student-run service that finds " . ($school ? "textbooks for students of " . $school->getName() : "college students' textbooks") . " at the lowest prices."); $this->inlineJS[] = "var Index = {};"; $this->inlineJS[] = "Index.IS_SCHOOL = " . ($school ? "true" : "false") . ";"; $this->inlineJS[] = "Index.SCHOOL_SLUG = " . ($school ? "'" . $school->getSlug() . "'" : "false") . ";"; $this->inlineJS[] = "Index.BASE_URL = '" . BASE_URL . "';"; $this->inlineJS[] = "Index.ISBN_URL = '" . BASE_URL . "selection/';"; $this->inlineJS[] = "Index.SCHOOL_NOT_FOUND_MESSAGE = \"<li class='error' data-url='\" + Index.ISBN_URL + \"'><a href='\" + Index.ISBN_URL + \"'><p class='title'>It looks like we don't know your school's courses right now.</p><p>Don't worry, we can still help. If you tell us what books you're looking for, we'll find the best prices for them.</p><p class='link'>Find my books.</p></a></li>\""; $this->inlineJS[] = "Index.LIST_OF_ALL_SCHOOLS = " . ($schoolJson ? $schoolJson : "[]") . ";"; // When we have zero data but still want to look presentable. if (defined('ISBN')) { $this->renderPage('isbn_index', array()); } else { $this->renderPage('index', array('school' => $school, 'schoolJson' => $schoolJson)); } }
function render() { global $vendors; $args = func_get_args(); if (count($args) == 1) { $school = $campus = $term = null; $ids = $args[0]; } else { if (count($args) == 4) { $school = $args[0]; $campus = $args[1]; $term = $args[2]; $ids = isset($args[3]) ? $args[3] : null; } else { $school = $args[0]; $campus = null; $term = $args[1]; $ids = isset($args[2]) ? $args[2] : null; } } if (defined('EMERGENCY') && $school) { $this->redirect_to_index(); } if (!$school) { $isbnMode = true; unset($vendors[array_search('Bookstore', $vendors)]); $schoolSlug = $campusSlug = $termSlug = false; } else { $isbnMode = false; $school = School::findOneBySlug($school); if (!$school) { $this->redirect_to_index(); } $vendors[array_search('Bookstore', $vendors)] = $school->getBookstoreType(); $schoolSlug = $school->getSlug(); if ($campus) { $campus = CampusQuery::create()->filterBySchool($school)->filterBySlug($campus)->findOne(); if (!$campus) { $this->redirect_to_index(); } $campusSlug = $campus->getSlug(); } else { $campusSlug = false; } $q = TermQuery::create(); if ($campus) { $q->filterByCampus($campus); } else { $q->useCampusQuery()->filterBySchool($school)->endUse(); } $term = $q->filterBySlug($term)->findOne(); if (!$term) { $this->redirect_to_index(); } $termSlug = $term->getSlug(); $termName = $term->getName(); } $this->setTitle('Your Books'); $this->inlineJS[] = "Globals.SECTION_DELIMITER = '" . SECTION_DELIMITER . "';"; $this->inlineJS[] = "Globals.SCHOOL_SLUG = " . ($schoolSlug ? "'{$schoolSlug}'" : "false") . ";"; $this->inlineJS[] = "Globals.CAMPUS_SLUG = " . ($campusSlug ? "'{$campusSlug}'" : "false") . ";"; $this->inlineJS[] = "Globals.TERM_SLUG = " . ($termSlug ? "'{$termSlug}'" : "false") . ";"; $this->inlineJS[] = "Globals.IDS = '{$ids}';"; $this->inlineJS[] = "Globals.THIS_PAGE_URL = '" . CURRENT_URL . "';"; $this->overrideAnalyticsPageUrl("results"); // If only one section, use its title as a FB Open Graph title (for share functionality) if ($school) { $sections = SectionQuery::create()->filterBySlug($ids)->filterBySchoolSlug($schoolSlug)->filterByTermSlug($termSlug); if ($campusSlug) { $sections->filterByCampusSlug($campusSlug); } $sections = $sections->find(); if ($sections->count() == 1) { $courseName = $sections[0]->getName(); $shortName = $school->getShortName(); $term = $term->getName(); global $siteName; $this->misc[] = "<meta property='og:title' content='{$courseName} › {$shortName} {$siteName} ({$termName})' />"; } } if ($isbnMode) { $hashPrefix = ""; } else { if ($campusSlug) { $hashPrefix = "{$campusSlug}/{$termSlug}/"; } else { $hashPrefix = "{$termSlug}/"; } } $this->renderPage('results', array('isbnMode' => $isbnMode, 'breadcrumbFormat' => 'results', 'schoolSlug' => $schoolSlug, 'ids' => $ids, 'hashPrefix' => $hashPrefix, 'tableClass' => 'vendor' . count($vendors), 'resultsURL' => '')); }
function render() { global $app; $args = func_get_args(); if (count($args) > 0) { $school = $args[0]; } else { $school = null; } if ($school) { if (defined('EMERGENCY')) { $this->redirect_to_index(); } $school = School::findOneBySlug($school); if (!$school) { $this->redirect_to_index(); } // if the school is unspidered, spider it down to departments. // if it fails, continue onwards as long as there is old data, // otherwise rethrow, which will cause the error page to be // displayed try { $school->spider(2); } catch (BookstoreError $e) { $app->getLog()->warn($e->getMessage()); if ($school->getNbCampuses() == 0) { throw $e; } } $multiCampus = $school->getNbCampuses() > 1; $bardHACK = $school->getSlug() == "bard"; if ($multiCampus) { $campusId = null; $campusSlug = null; } else { $campus = CampusQuery::create()->filterBySchool($school)->findOne(); $campusSlug = $campus->getSlug(); $campusId = $campus->getId(); } $schoolSlug = $school->getSlug(); $isbnMode = false; $itemName = "course"; } else { $school = null; $schoolSlug = null; $campusSlug = null; $multiCampus = false; $isbnMode = true; $itemName = "book"; $campusId = null; $bardHACK = false; } $this->inlineJS[] = "var Selection = {};"; $this->inlineJS[] = "Globals.SECTION_DELIMITER = '" . SECTION_DELIMITER . "';"; $this->inlineJS[] = "Globals.MULTICAMPUS = " . ($multiCampus ? "true" : "false") . ";"; $this->inlineJS[] = "Globals.SCHOOL_SLUG = " . ($school ? "'" . addslashes($school->getSlug()) . "'" : "false") . ";"; $this->inlineJS[] = "Globals.SCHOOL_NAME = " . ($school ? "'" . addslashes($school->getShortName()) . "'" : "false") . ";"; $this->inlineJS[] = "Globals.campusId = " . ($campusId ? "'{$campusId}'" : 'null') . ";"; $this->inlineJS[] = "Globals.CAMPUS_SLUG = " . ($campusSlug ? "'{$campusSlug}'" : 'null') . ";"; $this->inlineJS[] = "Globals.termId = null;"; $this->inlineJS[] = "Globals.TYPE = '" . ($isbnMode ? "ISBN" : "course") . "';"; $this->inlineJS[] = "Globals.ITEM_NAME = '" . $itemName . "';"; $this->overrideAnalyticsPageUrl("selection/" . ($isbnMode ? "isbn" : "course")); $this->setTitle($school ? 'Select Courses' : 'Enter Books'); if ($school) { $description = "Just tell us your " . $school->getShortName() . " courses, " . "and we'll look up your books and find the cheapest prices."; } else { $description = "Input your books by ISBN and we'll do " . "the comparison shopping for you."; } $this->addMetaTag('description', "Textbooks made easy. {$description}"); $this->renderPage('selection', array('breadcrumbFormat' => 'selection', 'schoolSlug' => $schoolSlug, 'isbnMode' => $isbnMode, 'multiCampus' => $multiCampus, 'bardHACK' => $bardHACK, 'school' => $school, 'campusWrapperDisplay' => $multiCampus ? 'inline' : 'none', 'topWrapperDisplay' => $multiCampus ? 'none' : 'inline')); }