comicpress-core/classes/ComicPress.inc

148 lines
4.0 KiB
PHP
Raw Normal View History

2009-07-08 23:51:02 +00:00
<?php
2009-07-13 23:14:17 +00:00
/**
* The core functions of ComicPress.
*/
2009-07-08 23:51:02 +00:00
class ComicPress {
var $comicpress_options = array(
2009-07-21 17:40:24 +00:00
'comic_category_id' => 1,
'comic_dimensions' => '760x',
'rss_dimensions' => '350x',
'archive_dimensions' => '125x',
'mini_dimensions' => '100x',
'category_order' => false,
'blogpost_count' => 10,
'comic_space' => 'comic_only',
2009-07-29 02:38:20 +00:00
'category_usage' => 'storyline',
'layout' => 'classic.inc',
2009-08-06 02:29:54 +00:00
'helpers' => array(),
2009-11-01 18:15:59 +00:00
'addons' => array(),
'storyline_order' => ''
2009-07-08 23:51:02 +00:00
);
2009-07-09 02:38:43 +00:00
2009-07-13 23:14:13 +00:00
var $additional_stylesheets = array();
2009-07-15 02:24:31 +00:00
var $additional_javascripts = array();
var $comic_post_attachments_cache = array();
2009-07-09 02:38:43 +00:00
var $category_tree = array();
2009-07-16 01:55:28 +00:00
var $partial_paths = array();
2009-07-23 21:13:53 +00:00
var $layouts = null;
2009-07-16 01:55:28 +00:00
2009-11-01 19:04:15 +00:00
function &get_instance() {
2009-11-01 18:15:59 +00:00
static $instance;
2009-11-01 19:04:15 +00:00
if (!$instance) {
$instance = array(new ComicPress());
2009-11-01 18:15:59 +00:00
}
2009-11-01 19:04:15 +00:00
return $instance[0];
2009-11-01 18:15:59 +00:00
}
2009-07-13 23:14:13 +00:00
/**
* Load ComicPress options.
*/
2009-07-08 23:51:02 +00:00
function load() {
$result = get_option('comicpress-options');
if (is_array($result)) {
$this->comicpress_options = array_merge($this->comicpress_options, $result);
2009-07-08 23:51:02 +00:00
}
}
2009-07-13 23:14:13 +00:00
/**
* Save ComicPress options.
*/
2009-07-08 23:51:02 +00:00
function save() {
if (is_array($this->comicpress_options)) {
update_option('comicpress-options', $this->comicpress_options);
}
}
2009-07-13 23:14:13 +00:00
/**
* Initialize the class.
*/
2009-07-08 23:51:02 +00:00
function init() {
$this->load();
2009-07-13 23:06:32 +00:00
if (current_user_can('edit_themes')) {
if (!empty($this->comicpress_options['helpers'])) {
add_action('wp_footer', array(&$this, 'announce_activated_helpers'));
}
}
add_filter('intermediate_image_sizes', array(&$this, 'intermediate_image_sizes'));
foreach (array('comic', 'rss', 'archive', 'mini') as $size) {
list($w, $h) = explode("x", $this->comicpress_options["${size}_dimensions"]);
update_option("${size}_size_w", $w);
update_option("${size}_size_h", $h);
update_option("${size}_crop", 0);
}
}
function intermediate_image_sizes($sizes) {
return array_merge($sizes, array('comic', 'rss', 'archive', 'mini'));
2009-07-13 23:06:32 +00:00
}
function announce_activated_helpers() {
echo "<center>[ <strong>Activated ComicPress helpers:</strong> " . implode(", ", array_keys($this->comicpress_options['helpers'])) . " ]</center>";
}
2009-07-19 23:20:23 +00:00
/**
* Gather blog posts for the given index page.
*/
function get_index_blog_posts_query() {
2009-07-19 23:20:23 +00:00
global $post, $paged;
$t = $post;
$wp_query = new WP_Query();
$wp_query->query(
'showposts=' .
(int)$this->comicpress_options['blogpost_count'] .
'&cat=-' .
$this->comicpress_options['comic_category_id'] .
'&paged=' .
$paged
);
return $wp_query;
2009-07-19 23:20:23 +00:00
}
2009-07-23 19:12:13 +00:00
2009-11-07 18:14:33 +00:00
/**
* See if a file exists in either child or parent theme, and if it does, return the path to that file.
* @param string $path The path to find.
* @param string $force_parent If true, always find the parent.
* @return string|boolean The path to the file, or false if not found.
*/
function cascade_search($path, $force_parent = false) {
$dirs_to_search = array(get_template_directory());
if (!$force_parent) { array_unshift($dirs_to_search, get_stylesheet_directory()); }
foreach ($dirs_to_search as $dir) {
$dir = trailingslashit($dir);
if (file_exists($dir . $path)) { return $dir . $path; }
}
return false;
}
2009-11-07 21:36:57 +00:00
2009-11-07 21:38:22 +00:00
/**
* Search a path for directories named after the slugs provided.
* @param array $categories A list of category slugs going from child -> parent -> root.
* @param string $path The path to search.
* @return array All matching paths.
*/
2009-11-07 21:36:57 +00:00
function category_search($categories, $path) {
$path = trailingslashit($path);
$all_categories = array_reverse($categories);
$all_paths = array();
while (count($all_categories) > 0) {
$target = $path . implode('/', $all_categories);
if (is_dir($target)) { $all_paths[] = $target; }
array_pop($all_categories);
}
return array_reverse($all_paths);
}
2009-07-08 23:51:02 +00:00
}
?>