function directory_data($path, $url_path) { global $CFG_image_valid, $CFG_url_album, $CFG_thumb_width, $CFG_thumb_height, $CFG_image_width, $CFG_image_height, $CFG_path_images, $CFG_cache_outside_docroot; // put CFG_image_valid array into eregi form // $valid_extensions = '(.' . implode('|.', $CFG_image_valid) . ')$'; path_security_check($path, $CFG_path_images); // load raw directory first, sort, and reprocess // $files_raw = array(); $dirs_raw = array(); if ($h_dir = opendir($path)) { // FS READ while (false !== ($filename = readdir($h_dir))) { // FS READ if ($filename != '.' && $filename != '..') { // set complete url // if ($url_path == '') { $url = $filename; } else { $url = "{$url_path}/{$filename}"; } path_security_check("{$path}/{$filename}", $CFG_path_images); if (is_readable("{$path}/{$filename}") && is_file("{$path}/{$filename}") && eregi($valid_extensions, $filename)) { $files_raw[] = array('name' => $filename, 'url' => $url); } else { if (is_readable("{$path}/{$filename}") && is_dir("{$path}/{$filename}") && substr($filename, 0, 1) != '_') { // FS READ $dirs_raw[] = array('name' => $filename, 'url' => $url); } } // if ... else is_file or is_dir } // if } // while closedir($h_dir); // FS READ } // if opendir // sort directory arrays by filename // function cmp($a, $b) { return strcasecmp($a['name'], $b['name']); } // function cmp @usort($dirs_raw, 'cmp'); @usort($files_raw, 'cmp'); // reprocess arrays // $files = array(); $dirs = array(); $file_count = 0; $dir_count = 0; while (list($k, $v) = each($files_raw)) { // set thumbnail cached vs. not // $thumb = cache_test($v['url'], $CFG_thumb_width, $CFG_thumb_height); // FS FUNCTION $image = cache_test($v['url'], $CFG_view_width, $CFG_view_height); // FS FUNCTION if ($CFG_cache_outside_docroot || !$thumb['is_cached']) { $thumb_url = build_url('image', $CFG_thumb_width . 'x' . $CFG_thumb_height, $v['url']); } else { $thumb_url = $thumb['cache_url']; } if ($CFG_cache_outside_docroot || !$image['is_cached']) { $image_url = build_url('image', $CFG_image_width . 'x' . $CFG_image_height, $v['url']); } else { $image_url = $image['cache_url']; } path_security_check("{$path}/{$v['name']}", $CFG_path_images); $files[] = array('name' => $v['name'], 'index' => $file_count, 'path' => "{$path}/{$v['name']}", 'thumb_url' => $thumb_url, 'image_url' => $image_url, 'view_url' => build_url('view', $file_count, $v['url']), 'raw_url' => build_url('image', '0', $v['url'])); // 0 index for raw image $file_count++; } while (list($k, $v) = each($dirs_raw)) { $dirs[] = array('name' => $v['name'], 'index' => $dir_count, 'list_url' => build_url('list', '0', $v['url'])); $dir_count++; } return array('files' => $files, 'directories' => $dirs); }
if ($CFG_images_outside_docroot) { header('Content-Type: image/jpeg'); readfile("{$CFG_path_images}/{$IMAGE_DIR}/{$IMAGE_FILE}"); } else { header("Location: {$CFG_url_images}{$IMAGE_DIR}/{$IMAGE_FILE}"); } // if image outside docroot exit; } // if raw image display // calculate resize, bounded by $INDEX resolution // list($resize_x, $resize_y) = calculate_resize($image_props[0], $image_props[1], $x, $y); // if caching enabled and file exists, redirect // $cache = cache_test("{$IMAGE_DIR}/{$IMAGE_FILE}", $resize_x, $resize_y); // FS SEE FUNCTION if (!$CFG_debug_image) { // redirect to or load image inline if cache hit // if ($cache['is_cached']) { if ($CFG_cache_outside_docroot) { header('Content-Type: image/jpeg'); readfile($cache['path']); // FS READ exit; } else { header('Location: ' . $cache['cache_url']); exit; } } else {