コード例 #1
0
ファイル: amber.php プロジェクト: su/amber_wordpress
 /**
  * When displaying cached content, set the Content-Type header for the 
  * content item or asset
  */
 public static function filter_cached_content_headers($headers)
 {
     global $wp;
     $cache_frame_id = !empty($wp->query_vars['amber_cacheframe']) ? $wp->query_vars['amber_cacheframe'] : "";
     $cache_id = !empty($wp->query_vars['amber_cache']) ? $wp->query_vars['amber_cache'] : "";
     $asset_id = !empty($wp->query_vars['amber_asset']) ? $wp->query_vars['amber_asset'] : "";
     $asset_id = rtrim($asset_id, "/");
     /* Get rid of stray characters on the end */
     if (!empty($cache_frame_id)) {
         if (empty($asset_id)) {
             /* This is the root item */
             $data = Amber::retrieve_cache_item($cache_frame_id);
             if (isset($data['metadata']['type'])) {
                 $headers['Content-Type'] = $data['metadata']['type'];
             }
         } else {
             /* This is an asset */
             $data = Amber::retrieve_cache_asset($cache_frame_id, $asset_id);
             if (isset($data['metadata']['type'])) {
                 $headers['Content-Type'] = $data['metadata']['type'];
             }
         }
     }
     if ((!empty($cache_id) || !empty($cache_frame_id)) && empty($asset_id)) {
         if (!isset($data)) {
             $data = Amber::retrieve_cache_item($cache_id);
         }
         // Add Memento header to cache iframe and cache item
         if (isset($data['metadata']['cache']['amber']['date'])) {
             $memento_date = Amber::format_memento_date($data['metadata']['cache']['amber']['date']);
             $headers['Memento-Datetime'] = $memento_date;
         }
         // PDFs are rendered immediately, not displayed within iframes,
         // so set the content-type appropriately
         if (isset($data['metadata']['type']) && $data['metadata']['type'] == 'application/pdf') {
             $headers['Content-Type'] = $data['metadata']['type'];
         }
     }
     return $headers;
 }