diff options
| author | Steve Clay <steve@mrclay.org> | 2013-03-31 18:18:33 -0400 | 
|---|---|---|
| committer | Steve Clay <steve@mrclay.org> | 2013-03-31 18:18:33 -0400 | 
| commit | 31f5e27f60f3d9e5fcb3b6b9ab01b9d64a244b87 (patch) | |
| tree | 354e8fd0832498345aa2001d610c733394005e94 /views/default/js/languages.php | |
| parent | 574e9aefd04a6ea75f53d20756edb6a04a31ba2b (diff) | |
| download | elgg-31f5e27f60f3d9e5fcb3b6b9ab01b9d64a244b87.tar.gz elgg-31f5e27f60f3d9e5fcb3b6b9ab01b9d64a244b87.tar.bz2  | |
Fixes #3754: Language JS views send cache headers and support conditional get
Diffstat (limited to 'views/default/js/languages.php')
| -rw-r--r-- | views/default/js/languages.php | 24 | 
1 files changed, 21 insertions, 3 deletions
diff --git a/views/default/js/languages.php b/views/default/js/languages.php index c51d7bcb2..fcf903d4b 100644 --- a/views/default/js/languages.php +++ b/views/default/js/languages.php @@ -1,15 +1,33 @@  <?php  /**   * @uses $vars['language'] + * @uses $vars['lc'] if present, client will be sent long expires headers   */ -global $CONFIG;  $language = $vars['language']; +$lastcache = elgg_extract('lc', $vars, 0); -$translations = $CONFIG->translations['en']; +// @todo add server-side caching +if ($lastcache) { +	// we're relying on lastcache changes to predict language changes +	$etag = '"' . md5("$language|$lastcache") .  '"'; + +	header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true); +	header("Pragma: public", true); +	header("Cache-Control: public", true); +	header("ETag: $etag"); + +	if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) === $etag) { +		header("HTTP/1.1 304 Not Modified"); +		exit; +	} +} + +$all_translations = elgg_get_config('translations'); +$translations = $all_translations['en'];  if ($language != 'en') { -	$translations = array_merge($translations, $CONFIG->translations[$language]); +	$translations = array_merge($translations, $all_translations[$language]);  }  echo json_encode($translations);
\ No newline at end of file  | 
