Пример #1
0
 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} &#8250; {$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'));
 }