Changeset - 7d2e141f1b01
[Not reviewed]
default
0 2 0
Nathan Brink (binki) - 12 years ago 2013-10-30 01:45:08
ohnobinki@ohnopublishing.net
Fix Cache-Control to actually limit autocomplete caching to 10 minutes instead of 3 hours, reported by Jason VanHorn <jev35@calvin.edu>.
2 files changed with 4 insertions and 4 deletions:
0 comments (0 inline, 0 general)
auto.php
Show inline comments
 
@@ -20,62 +20,60 @@
 

	
 
/**
 
 * \file
 
 *   This file's purpose is to autocomplete class names for supporting
 
 *   the autocomplete JS based off of crawling schools' registration
 
 *   websites. This shall only perform the autocompletion of class
 
 *   names.
 
 *
 
 *   Since we output JSON, no special Page classes and stuff
 
 *   :-p. Except we still call the Page class's session_start()
 
 *   function because we apparently need sessions.... oh yeah, for
 
 *   school profile supports ;-).
 
 */
 

	
 
require_once('inc/school.inc');
 
require_once('inc/class.page.php');
 
require_once('inc/class.course.inc');
 

	
 
/*
 
 * Set the Expires and Cache-Control headers -- only if we're getting
 
 * a request which does not rely on the contents of $_SESSION.
 
 */
 
if (!empty($_GET['school']) && !empty($_GET['semester']))
 
  {
 
    header('Expires: ' . gmdate(DATE_RFC1123, time() + 600));
 
    header('Cache-Control: max-age=600, public');
 
    $cache_limiter = 'public';
 
  }
 
else
 
  {
 
    /*
 
     * Tell the caches that the user's cookies affect the cacheability
 
     * since the user did not specify the current semester/school.
 
     */
 
    header('Vary: Cookie');
 
    $cache_limiter = 'private';
 
  }
 
page::session_start($cache_limiter);
 
page::session_start($cache_limiter, 10);
 

	
 
if (isset($_REQUEST['txt'])) {
 
  header('Content-Type: text/plain; encoding=utf-8');
 
}
 
else {
 
  header('Content-Type: application/json; encoding=utf-8');
 
}
 

	
 
if (!isset($_REQUEST['term'])) {
 
  clean_empty_exit();
 
}
 

	
 
$getsections = FALSE;
 
if (isset($_REQUEST['getsections'])) {
 
  $getsections = TRUE;
 
}
 

	
 
$term = $_REQUEST['term'];
 
$term_parts = Course::parse($term);
 
if (!count($term_parts)) {
 
  clean_empty_exit();
 
}
 

	
 
/*
inc/class.page.php
Show inline comments
 
@@ -630,55 +630,57 @@ class page
 
    $page_404->head();
 

	
 
    echo "<h2>404: Content Not Found</h2>\n"
 
      . "<p>\n"
 
      . '  ' . $message . "\n"
 
      . "</p>\n";
 

	
 
    $page_404->foot();
 

	
 
    exit();
 
  }
 

	
 
  /**
 
   * \brief
 
   *   Start the PHP session by calling session_start().
 
   *
 
   * Used to make sure that different areas of our code don't call
 
   * session_start() multiple times and to make it easier to ensure
 
   * that session_start() is called at least before it's needed.
 
   *
 
   * \param $cache_limiter
 
   *   Specify the sort of session-related cache limitation is used,
 
   *   see session_cache_limiter().
 
   */
 
  public static function session_start($cache_limiter = 'nocache')
 
  public static function session_start($cache_limiter = 'nocache', $cache_expire = NULL)
 
  {
 
    static $session_started = FALSE;
 

	
 
    if (!$session_started)
 
      {
 
	session_cache_limiter($cache_limiter);
 
	if ($cache_expire !== NULL)
 
	  session_cache_expire($cache_expire);
 
	session_name('slate_permutate');
 
	session_start();
 
	$session_started = TRUE;
 
      }
 
  }
 

	
 
  /**
 
   * \brief
 
   *   Perform a redirect.
 
   *
 
   * By consolidating all redirects here, we're hopefully able to do
 
   * it in a somewhat compliant and portablish way ;-).
 
   *
 
   * This function does not return. It calls exit().
 
   *
 
   * \param $dest
 
   *   A URL relative to the slate_permutate root. For example,
 
   *   'input.php' or '44' (for clean urls, for example).
 
   * \param $http_code
 
   *   The redirection code to use, if any. For example, this can be
 
   *   used to implement ``permanent'' redirects if necessary.
 
   */
 
  public static function redirect($dest, $http_code = NULL)
 
  {
0 comments (0 inline, 0 general)