finalize get comic path changeover
This commit is contained in:
parent
3b0b3a1471
commit
91436b4b51
|
@ -60,7 +60,7 @@ class ComicPressMediaHandling {
|
|||
|
||||
// @codeCoverageIgnoreStart
|
||||
function _abspath() {
|
||||
return ABSPATH;
|
||||
return realpath(ABSPATH);
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
|
@ -94,21 +94,30 @@ class ComicPressMediaHandling {
|
|||
while (($file = readdir($dh)) !== false) {
|
||||
$target = $dirname . '/' . $file;
|
||||
if (is_file($target)) {
|
||||
if (preg_match("#${filename_pattern}#", $file) > 0) {
|
||||
if (preg_match("#^${filename_pattern}$#", $file) > 0) {
|
||||
$results[] = $target;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the comic path.
|
||||
* @param string $type The type to retrieve.
|
||||
* @param object $override_post The post to use in place of the Loop post.
|
||||
* @param string $filter The filter to use.
|
||||
* @param boolean $multi If true, return all matching files.
|
||||
* @return string|array|boolean A single comic URI relative to the WordPress base, multiple comic URIs, or false if an error occurred.
|
||||
*/
|
||||
function get_comic_path($type = 'comic', $override_post = null, $filter = 'default', $multi = false) {
|
||||
global $post;
|
||||
$post_to_use = !is_null($override_post) ? $override_post : $post;
|
||||
|
||||
$filter = $this->get_filter($filter);
|
||||
$filter = $this->_get_filter($filter);
|
||||
$globals = $this->_bundle_global_variables();
|
||||
|
||||
if (isset($globals[$type])) {
|
||||
|
@ -118,7 +127,19 @@ class ComicPressMediaHandling {
|
|||
if (($pre_handle = apply_filters('comicpress_pre_handle_comic_path_results', false, $results, $type, $post_to_use)) !== false) {
|
||||
return $pre_handle;
|
||||
}
|
||||
|
||||
$new_results = array();
|
||||
foreach ($results as $result) {
|
||||
$new_results[] = str_replace($this->_abspath(), '', $result);
|
||||
}
|
||||
|
||||
if ($multi) {
|
||||
return $new_results;
|
||||
} else {
|
||||
return reset($new_results);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ function comicpress_load_options() {
|
|||
global $comicpress_options;
|
||||
$comicpress_options = get_option('comicpress_options');
|
||||
if (empty($comicpress_options)) {
|
||||
$comicpress_options['comicpress_version'] = '2.9.0.4';
|
||||
$comicpress_options['comicpress_version'] = '2.9.0.4';
|
||||
foreach (array(
|
||||
'disable_comic_frontpage' => false,
|
||||
'disable_comic_blog_frontpage' => false,
|
||||
|
@ -181,11 +181,9 @@ if ($comicpress_options['remove_wptexturize']) {
|
|||
// WIDGETS WP 2.8 compatible ONLY, no backwards compatibility here.
|
||||
$dirs_to_search = array_unique(array(get_template_directory(),get_stylesheet_directory()));
|
||||
foreach ($dirs_to_search as $dir) {
|
||||
// Widgets
|
||||
foreach (glob($dir . '/widgets/*.php') as $__file) { require_once($__file); }
|
||||
|
||||
// FUNCTIONS & Extra's
|
||||
foreach (glob($dir . '/functions/*.php') as $__file) { require_once($__file); }
|
||||
foreach (array('widgets' => 'php', 'functions' => 'php', 'classes' => 'inc') as $folder => $extension) {
|
||||
foreach (glob($dir . "/${folder}/*.${extension}") as $__file) { require_once($__file); }
|
||||
}
|
||||
}
|
||||
|
||||
// Dashboard Menu Comicpress Options and ComicPress CSS
|
||||
|
@ -217,7 +215,6 @@ if (defined("CPM_DATE_FORMAT")) {
|
|||
// Note that it's quite possible to slurp up the wrong file if your expressions are too broad.
|
||||
|
||||
$comic_filename_filters = array();
|
||||
$comic_filename_filters['default'] = "{date}*.*";
|
||||
|
||||
// load all of the comic & non-comic category information
|
||||
add_action('init', 'get_all_comic_categories');
|
||||
|
@ -427,61 +424,8 @@ function get_adjacent_storyline_category_id($next = false) {
|
|||
*/
|
||||
|
||||
function get_comic_path($folder = 'comic', $override_post = null, $filter = 'default', $multi = null) {
|
||||
global $post, $comic_filename_filters, $comic_folder, $archive_comic_folder, $rss_comic_folder, $mini_comic_folder, $comic_pathfinding_errors, $wpmu_version;
|
||||
|
||||
if (isset($comic_filename_filters[$filter])) {
|
||||
$filter_to_use = $comic_filename_filters[$filter];
|
||||
} else {
|
||||
$filter_to_use = '{date}*.*';
|
||||
}
|
||||
|
||||
switch ($folder) {
|
||||
case "rss": $folder_to_use = $rss_comic_folder; break;
|
||||
case "archive": $folder_to_use = $archive_comic_folder; break;
|
||||
case "mini": $folder_to_use = $mini_comic_folder; break;
|
||||
case "comic": default: $folder_to_use = $comic_folder; break;
|
||||
}
|
||||
|
||||
if (!empty($wpmu_version)) {
|
||||
if (($wpmu_path = get_option('upload_path')) !== false) {
|
||||
$folder_to_use = $wpmu_path . '/' . $folder_to_use;
|
||||
}
|
||||
}
|
||||
|
||||
$post_to_use = (is_object($override_post)) ? $override_post : $post;
|
||||
$post_date = mysql2date(CP_DATE_FORMAT, $post_to_use->post_date);
|
||||
|
||||
$filter_with_date = str_replace('{date}', $post_date, $filter_to_use);
|
||||
|
||||
$cwd = get_template_directory();
|
||||
if ($cwd !== false) {
|
||||
// Strip the wp-admin part and just get to the root.
|
||||
$root_path = preg_replace('#[\\/]wp-(admin|content).*#', '', $cwd);
|
||||
}
|
||||
|
||||
$results = array();
|
||||
/* have to use root_path to get subdirectory installation directories */
|
||||
if (count($results = glob("${root_path}/${folder_to_use}/${filter_with_date}")) > 0) {
|
||||
|
||||
if (!empty($wpmu_version)) {
|
||||
$comic = reset($results);
|
||||
$comic = $folder_to_use . '/'. basename($comic);
|
||||
if ($wpmu_path !== false) { $comic = str_replace($wpmu_path, "files", $comic); }
|
||||
return $comic;
|
||||
}
|
||||
|
||||
if (!empty($multi)) {
|
||||
return $results;
|
||||
} else {
|
||||
/* clear the root path */
|
||||
$comic = reset($results);
|
||||
$comic = $folder_to_use .'/'. basename($comic);
|
||||
return $comic;
|
||||
}
|
||||
}
|
||||
|
||||
$comic_pathfinding_errors[] = sprintf(__("Unable to find the file in the <strong>%s</strong> folder that matched the pattern <strong>%s</strong>. Check your WordPress and ComicPress settings.", 'comicpress'), $folder_to_use, $filter_with_date);
|
||||
return false;
|
||||
$mh = new ComicPressMediaHandling();
|
||||
return $mh->get_comic_path($folder, $override_post, $filter, $multi);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
function _comicpress_pre_handle_comic_path_results($return, $results, $type, $post_to_use) {
|
||||
global $wpmu_version;
|
||||
|
||||
if (!empty($wpmu_version)) {
|
||||
$globals = ComicPressMediaHandling::_bundle_global_variables();
|
||||
|
||||
$comic = $globals[$type] . '/'. basename(reset($results));
|
||||
|
||||
if (($wpmu_path = get_option('upload_path')) !== false) {
|
||||
$comic = str_replace($wpmu_path, "files", $comic);
|
||||
}
|
||||
return $comic;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function _comicpress_expand_filter_callback($value, $matches) {
|
||||
global $wpmu_version;
|
||||
|
||||
if (!empty($wpmu_version)) {
|
||||
if (strtolower($matches[1]) == 'wordpress') {
|
||||
if ($path = get_option('upload_path')) {
|
||||
return $path;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
add_filter('comicpress_pre_handle_comic_path_results', '_comicpress_pre_handle_comic_path_results', 10, 4);
|
||||
add_filter('comicpress_expand_filter_callback', '_comicpress_expand_filter_callback', 10, 2);
|
|
@ -101,17 +101,21 @@ class ComicPressMediaHandlingTest extends PHPUnit_Framework_TestCase {
|
|||
|
||||
function providerTestExpandFilterWPMUCallback() {
|
||||
return array(
|
||||
array('', 'original'),
|
||||
array('new', 'new')
|
||||
array('', '', 'original'),
|
||||
array('', 'new', 'original'),
|
||||
array('1', 'new', 'new'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestExpandFilterWPMUCallback
|
||||
*/
|
||||
function testExpandFilterWPMUCallback($option_value, $expected_result) {
|
||||
function testExpandFilterWPMUCallback($_wpmu_version, $option_value, $expected_result) {
|
||||
global $wpmu_version;
|
||||
$wpmu_version = $_wpmu_version;
|
||||
|
||||
update_option('upload_path', $option_value);
|
||||
$this->assertEquals($expected_result, _comicpress_expand_filter_callback('original', array()));
|
||||
$this->assertEquals($expected_result, _comicpress_expand_filter_callback('original', array('all', 'wordpress')));
|
||||
}
|
||||
|
||||
function providerTestReadDirectory() {
|
||||
|
|
Loading…
Reference in New Issue