#!/usr/bin/env php * * This file is a part of slate_permutate. * * slate_permutate is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * slate_permutate is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with slate_permutate. If not, see . */ /** * \file * * Runs through schools.d grabbing and caching data, such as the * school listing used for the ``choose your school list''. */ $inc_base = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR; require_once($inc_base . 'school.inc'); require_once($inc_base . 'school.crawl.inc'); require_once($inc_base . 'class.semester.inc'); require_once($inc_base . 'admin.inc'); return main($argc, $argv); function main($argc, $argv) { $n = test(); if ($n) { fprintf(STDERR, "%d tests failed; exiting\n", $n); return 1; } $crawl = TRUE; $crawl_semester_year = '2011'; $crawl_semester_season = Semester::SEASON_SPRING; $opts = getopt('hV:', array('no-crawl', 'crawl-only:', 'help', 'verbosity:')); if (isset($opts['help']) || isset($opts['h'])) { usage($argv[0]); return 0; } if (isset($opts['no-crawl'])) $crawl = FALSE; if (isset($opts['crawl-only'])) $crawl_only = split(',', $opts['crawl-only']); $verbosity = 1; if (isset($opts['verbosity'])) $verbosity = (int)$opts['verbosity']; if (isset($opts['V'])) $verbosity = (int)$opts['V']; if ($verbosity < 0 || $verbosity > 10) { fprintf(STDERR, "error: Invalid verbosity level: %d\n", $verbosity); fprintf(STDERR, "\n"); usage(); return 1; } $school_id_list = school_list(); if (!$school_id_list) { fprintf(STDERR, "error: Unable to load schools.\n"); return 1; } $schools = array(); $old_school_cache = _school_cache_load(); foreach ($school_id_list as $school_id) { $school = school_load($school_id, TRUE); if (!$school) { fprintf(STDERR, "Error loading school with school_id=%s\n", $school_id); return 1; } if ($crawl && (!isset($crawl_only) || in_array($school['id'], $crawl_only))) { school_crawl($school, $crawl_semester_year, $crawl_semester_season, $verbosity); } else { /* * try to allow incremental crawling by not wiping out old * data and preserving the cached $school['crawled']. */ if ($old_school_cache && isset($old_school_cache['list'][$school['id']])) { $old_school = $old_school_cache['list'][$school['id']]; $school['crawled'] = FALSE; if (isset($old_school['crawled'])) $school['crawled'] = $old_school['crawled']; if ($school['crawled']) $school['crawled_notreally'] = TRUE; } } $schools[] = $school; } if (school_cache($schools)) { fprintf(STDERR, "Error writing out school cache\n"); return 1; } return 0; } /** * \brief * Display CLI interface usage. */ function usage($progname) { fprintf(STDERR, "Usage: %s [--no-crawl] [--crawl-only=,,...] [--help] [-h]\n" . "\n" . " -h, --help Show this usage information and exit.\n" . "\n" . " --no-crawl Disable crawling during this rehash but preserve\n" . " previous cached crawl data.\n" . " --crawl-only Takes a comma-separated list of school_ids whose\n" . " registration systems should be crawled for autofill\n" . " data. Cached data from schools not listed is preserved\n" . " -v, --verbosity Set the verbosity level. Valid range is from 0\n" . " through 10.", $progname); }