/** * 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; }