function get_cached_image($url) { $file_cache_r = fetch_url_file_cache_r($url, 'ITEM', INCLUDE_EXPIRED); if ($file_cache_r != FALSE) { //$imagefile = file_cache_get_cache_file_thumbnail($file_cache_r); $imagefile = file_cache_get_cache_file($file_cache_r); if ($imagefile != FALSE) { return $imagefile; } } //else return NULL; }
function &fetchURI($URI, $http_cache = TRUE) { @set_time_limit(600); $URI = trim($URI); $this->__debug('fetchURI', "URI: {$URI}"); $this->_file_cache_r = NULL; $overwrite_cache_entry = FALSE; if ($http_cache !== FALSE && $this->_file_cache_enabled) { // see if we can find the cache file. $this->_file_cache_r = fetch_url_file_cache_r($URI, 'HTTP'); if ($this->_file_cache_r !== FALSE) { $file_location = file_cache_get_cache_file($this->_file_cache_r); if ($file_location !== FALSE) { $this->_file_cache_r['content'] = file_get_contents($file_location); if (strlen($this->_file_cache_r['content']) == 0) { $this->__debug('fetchURI', 'URL cache invalid'); $overwrite_cache_entry = TRUE; unset($this->_file_cache_r); } } else { unset($this->_file_cache_r); } } } if (is_not_empty_array($this->_file_cache_r)) { $this->__debug('fetchURI', 'URL cached'); return $this->_file_cache_r['content']; } else { $this->__debug('fetchURI', 'URL NOT cached'); if ($this->fetch($URI) && $this->status >= 200 && $this->status < 300) { opendb_logger(OPENDB_LOG_INFO, __FILE__, __FUNCTION__, NULL, array($URI)); $this->_file_cache_r['url'] = $URI; $this->_file_cache_r['content'] = $this->results; $this->results = NULL; if (strlen($this->_file_cache_r['content']) > 0) { $this->__debug('fetchURI', 'URL fetched (Size=' . strlen($this->_file_cache_r['content']) . ')'); // assume a default. $this->_file_cache_r['content_type'] = 'text/html'; if (is_array($this->headers) && count($this->headers) > 0) { for ($i = 0; $i < count($this->headers); $i++) { if (preg_match("/^([^:]*):([^\$]*)\$/i", $this->headers[$i], $matches)) { if (strcasecmp(trim($matches[1]), 'content-type') === 0) { $this->_file_cache_r['content_type'] = trim($matches[2]); break; } } } } $this->_file_cache_r['location'] = $this->lastredirectaddr; if ($http_cache !== FALSE && $this->_file_cache_enabled) { if (file_cache_insert_file($this->_file_cache_r['url'], $this->_file_cache_r['location'], $this->_file_cache_r['content_type'], $this->_file_cache_r['content'], 'HTTP', $overwrite_cache_entry) !== FALSE) { $this->__debug('fetchURI', "Added {$URI} to file cache"); } else { $this->__debug('fetchURI', "Failed to add {$URI} to file cache"); } } //if($http_cache!==FALSE && $this->_file_cache_enabled) } //if(strlen($_file_cache_r['content'])>0) return $this->_file_cache_r['content']; } else { $this->__debug('fetchURI', "Failed to fetch {$URI}", ifempty($this->error, 'Status ' . $this->status)); opendb_logger(OPENDB_LOG_ERROR, __FILE__, __FUNCTION__, ifempty($this->error, 'Status ' . $this->status), array($URI)); return FALSE; } } }
function file_cache_insert_file($url, $location, $content_type, $content, $cache_type = 'HTTP', $overwrite = FALSE) { $cache_config_r = file_cache_get_config($cache_type); if (is_array($cache_config_r) && $cache_config_r['enable'] !== FALSE) { $directory = $cache_config_r['directory']; if ($directory === FALSE) { return FALSE; } // we need to know whether we are overwriting existing URL or not $file_cache_r = fetch_url_file_cache_r($url, $cache_type, INCLUDE_EXPIRED); if (is_array($file_cache_r)) { if (!file_cache_get_cache_file($file_cache_r)) { opendb_logger(OPENDB_LOG_INFO, __FILE__, __FUNCTION__, 'Cache file record exists, but there is no cache file - will recreate', $file_cache_r); $file_cache_r['cache_file'] = NULL; // delete thumbnail if it exists if (!($thumbnail_file = file_cache_get_cache_file_thumbnail($file_cache_r))) { delete_file($thumbnail_file); } $file_cache_r['cache_file_thumb'] = NULL; } else { if (!$overwrite) { opendb_logger(OPENDB_LOG_ERROR, __FILE__, __FUNCTION__, 'File cache record exists and cannot be overwritten', $file_cache_r); return FALSE; } } } else { $file_cache_r['cache_type'] = $cache_type; } if ($content == NULL && is_url_absolute($url)) { $httpClient = new OpenDbSnoopy(); $content = $httpClient->fetchURI($url, FALSE); if ($content !== FALSE) { $location = $httpClient->getLocation(); $content_type = $httpClient->getContentType(); unset($httpClient); } else { unset($httpClient); // http client logs error return FALSE; } } $file_cache_r['url'] = ifempty($url, $file_cache_r['url']); $file_cache_r['location'] = ifempty($location, $file_cache_r['location']); $file_cache_r['content_type'] = validate_content_type(ifempty($content_type, $file_cache_r['content_type'])); $thumbnail_support = FALSE; if (strlen($file_cache_r['content_type']) > 0) { $file_type_r = fetch_file_type_r($file_cache_r['content_type']); $file_cache_r['extension'] = $file_type_r['extension']; $thumbnail_support = $file_type_r['thumbnail_support_ind'] == 'Y'; } else { $extension = get_file_ext($file_cache_r['url']); if (strlen($extension) > 0 && ($ext_content_type = fetch_file_type_for_extension($extension)) !== FALSE) { $content_type = $ext_content_type; } else { $content_type = validate_content_type($content_type); } $file_type_r = fetch_file_type_r($content_type); if (!is_array($file_type_r)) { opendb_logger(OPENDB_LOG_ERROR, __FILE__, __FUNCTION__, 'Content type not supported', array($url, $location, $content_type, $cache_type, $overwrite)); return FALSE; } $file_cache_r['content_type'] = $content_type; $file_cache_r['extension'] = $file_type_r['extension']; $thumbnail_support = $file_type_r['thumbnail_support_ind'] == 'Y'; } $file_cache_r['content_length'] = 0; if (($uploadFile = get_item_input_file_upload_url($url)) !== FALSE) { $file_cache_r['content_length'] = @filesize($uploadFile); $file_cache_r['cache_file'] = basename($uploadFile); $file_cache_r['upload_file_ind'] = 'Y'; } else { if (strlen($content) > 0) { $file_cache_r['content_length'] = strlen($content); $file_cache_r['upload_file_ind'] = 'N'; } } if ($file_cache_r['content_length'] > 0) { if (!is_numeric($file_cache_r['sequence_number'])) { $file_cache_r['sequence_number'] = insert_file_cache($cache_type, $file_cache_r['upload_file_ind'], $file_cache_r['url'], $file_cache_r['location'], $file_cache_r['content_type']); if ($file_cache_r['sequence_number'] === FALSE) { return FALSE; } } if ($file_cache_r['cache_file'] == NULL) { $file_cache_r['cache_file'] = filecache_generate_cache_filename($file_cache_r); } if ($content != NULL) { $directory = file_cache_get_cache_type_directory($file_cache_r['cache_type']); $cacheFile = $directory . '/' . $file_cache_r['cache_file']; if (!file_put_contents($cacheFile, $content) !== FALSE) { opendb_logger(OPENDB_LOG_ERROR, __FILE__, __FUNCTION__, 'Cache file not written', array($cacheFile)); return FALSE; } } if ($thumbnail_support) { if (strlen($file_cache_r['cache_file_thumb']) == 0) { $file_cache_r['cache_file_thumb'] = filecache_generate_cache_filename($file_cache_r, TRUE); } } if ($file_cache_r['upload_file_ind'] != 'Y') { $expire_date = is_numeric($cache_config_r['lifetime']) ? "NOW()+ INTERVAL " . $cache_config_r['lifetime'] . " SECOND" : NULL; } else { $expire_date = NULL; } // do not expire uploaded file records. if (!update_file_cache($file_cache_r['sequence_number'], $file_cache_r['content_length'], $expire_date, $file_cache_r['cache_file'], $file_cache_r['cache_file_thumb'])) { return FALSE; } if ($thumbnail_support) { file_cache_save_thumbnail_file($file_cache_r, $errors); } return TRUE; } else { opendb_logger(OPENDB_LOG_ERROR, __FILE__, __FUNCTION__, 'File content length is zero', array($url, $location, $content_type, $cache_type, $overwrite)); return FALSE; } } else { if (!is_array($cache_config_r)) { opendb_logger(OPENDB_LOG_ERROR, __FILE__, __FUNCTION__, 'No file cache configuration', array($url, $location, $content_type, $cache_type, $overwrite)); return FALSE; } else { // file cache is disabled return TRUE; } } }