$blobid = @$qa_request_lc_parts[1]; $size = (int) qa_get('s'); $cachetype = 'i_' . $size; qa_base_db_connect('qa_blob_image_db_fail_handler'); $content = qa_db_cache_get($cachetype, $blobid); // see if we've cached the scaled down version header('Cache-Control: max-age=2592000, public'); // allows browsers and proxies to cache images too if (isset($content)) { header('Content-Type: image/jpeg'); echo $content; } else { require_once QA_INCLUDE_DIR . 'qa-app-options.php'; require_once QA_INCLUDE_DIR . 'qa-db-blobs.php'; require_once QA_INCLUDE_DIR . 'qa-util-image.php'; $blob = qa_db_blob_read($blobid); if (isset($blob)) { if ($size > 0) { $content = qa_image_constrain_data($blob['content'], $width, $height, $size); } else { $content = $blob['content']; } if (isset($content)) { header('Content-Type: image/jpeg'); echo $content; if (strlen($content) && $size > 0) { $cachesizes = qa_get_options(array('avatar_profile_size', 'avatar_users_size', 'avatar_q_page_q_size', 'avatar_q_page_a_size', 'avatar_q_page_c_size', 'avatar_q_list_size')); // to prevent cache being filled with inappropriate sizes if (array_search($size, $cachesizes)) { qa_db_cache_set($cachetype, $blobid, $content); }
of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. More about this license: http://www.question2answer.org/license.php */ // Ensure no PHP errors are shown in the Ajax response @ini_set('display_errors', 0); // Load the QA base file which sets up a bunch of crucial functions require 'qa-base.php'; // Output the blob in question require_once QA_INCLUDE_DIR . 'qa-db-blobs.php'; $blob = qa_db_blob_read(qa_get('qa_blobid')); header('Cache-Control: max-age=2592000, public'); // allows browsers and proxies to cache the blob switch ($blob['format']) { case 'jpeg': case 'jpg': header('Content-Type: image/jpeg'); break; case 'gif': header('Content-Type: image/gif'); break; case 'png': header('Content-Type: image/png'); break; case 'swf': header('Content-Type: application/x-shockwave-flash');
function qa_delete_blob($blobid) { if (qa_to_override(__FUNCTION__)) { $args = func_get_args(); return qa_call_override(__FUNCTION__, $args); } require_once QA_INCLUDE_DIR . 'db/blobs.php'; if (defined('QA_BLOBS_DIRECTORY')) { $blob = qa_db_blob_read($blobid); if (isset($blob) && !isset($blob['content'])) { unlink(qa_get_blob_filename($blobid, $blob['format'])); } } qa_db_blob_delete($blobid); }