2009-07-08 23:51:02 +00:00
|
|
|
<?php
|
|
|
|
|
2009-08-23 20:44:54 +00:00
|
|
|
class ComicPressAddonCore extends ComicPressAddon {
|
|
|
|
var $is_addon_manager = true;
|
|
|
|
var $cannot_be_disabled = true;
|
|
|
|
var $name = "ComicPress Core";
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Initialize the addon.
|
|
|
|
* @param ComicPress $comicpress The master ComicPress object.
|
|
|
|
*/
|
2009-11-01 18:15:59 +00:00
|
|
|
function init() {
|
2009-11-01 19:04:15 +00:00
|
|
|
$this->comicpress = &ComicPress::get_instance();
|
2009-11-01 18:15:59 +00:00
|
|
|
|
2009-11-03 12:55:08 +00:00
|
|
|
add_action('admin_menu', array(&$this, 'admin_menu'));
|
2009-07-11 00:27:36 +00:00
|
|
|
add_filter('attachment_fields_to_edit', array(&$this, 'setup_comic_metadata_buttons'), 10, 2);
|
2009-07-11 19:39:05 +00:00
|
|
|
add_action('show_comic', array(&$this, 'show_comic'), 1, 1);
|
2009-07-13 02:31:14 +00:00
|
|
|
add_action('show_archive', array(&$this, 'show_archive'), 1, 1);
|
|
|
|
add_action('show_rss', array(&$this, 'show_rss'), 1, 1);
|
|
|
|
add_filter('the_content', array(&$this, 'insert_comic_feed'));
|
2009-07-08 23:51:02 +00:00
|
|
|
|
2009-07-13 08:30:01 +00:00
|
|
|
if (isset($_GET['randomcomic'])) {
|
|
|
|
add_action('template_redirect', array(&$this, 'go_to_random_comic'));
|
|
|
|
}
|
|
|
|
|
2009-08-04 01:28:59 +00:00
|
|
|
if (current_user_can('edit_posts') && isset($comicpress->comicpress_options['helpers']['show_inline_comic_ordering'])) {
|
|
|
|
add_filter('comicpress_attached_image', array(&$this, 'comicpress_attached_image'), 10, 3);
|
|
|
|
add_filter('comicpress_display_attached_images', array(&$this, 'comicpress_display_attached_images'), 10, 2);
|
|
|
|
}
|
|
|
|
|
2009-11-04 03:46:43 +00:00
|
|
|
$this->comic_image_types = array(
|
2009-07-23 00:55:12 +00:00
|
|
|
'none' => __('Not a comic', 'comicpress'),
|
|
|
|
'comic' => __('Comic', 'comicpress'),
|
|
|
|
'rss' => __('RSS', 'comicpress'),
|
|
|
|
'archive' => __('Archive', 'comicpress')
|
|
|
|
);
|
2009-07-08 23:51:02 +00:00
|
|
|
}
|
2009-07-13 02:31:14 +00:00
|
|
|
|
2009-08-04 01:28:59 +00:00
|
|
|
function comicpress_attached_image($content, $attachment_id, $index) {
|
|
|
|
$content .= '<label class="comic-image-ordering">'
|
|
|
|
. __('Image index:', 'comicpress')
|
|
|
|
. ' '
|
|
|
|
. '<input type="text" name="cp[ordering][comic]['
|
|
|
|
. $attachment_id
|
|
|
|
. ']" value="'
|
|
|
|
. $index
|
|
|
|
. '" /></label>';
|
|
|
|
|
|
|
|
return $content;
|
|
|
|
}
|
|
|
|
|
|
|
|
function comicpress_display_attached_images($content, $post_id) {
|
|
|
|
$content = '<form method="post">'
|
|
|
|
. '<input type="hidden" name="cp[_nonce]" value="'
|
|
|
|
. wp_create_nonce('comicpress')
|
|
|
|
. '" />'
|
|
|
|
. '<input type="hidden" name="post_ID" value="'
|
|
|
|
. $post_id
|
|
|
|
. '" />'
|
|
|
|
. $content
|
|
|
|
. '<input type="submit" value="'
|
|
|
|
. __('Change image ordering', 'comicpress')
|
|
|
|
. '" />'
|
|
|
|
. '</form>';
|
|
|
|
|
|
|
|
return $content;
|
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Callback to send the reader to a random comic.
|
|
|
|
*/
|
2009-07-13 08:30:01 +00:00
|
|
|
function go_to_random_comic() {
|
|
|
|
$random_comic_query = new WP_Query();
|
|
|
|
$random_comic_query->query('showposts=1&orderby=rand&cat=' . $this->comicpress->get_all_comic_categories_as_cat_string());
|
|
|
|
while ($random_comic_query->have_posts()) {
|
|
|
|
$random_comic_query->the_post();
|
|
|
|
$random_comic_id = get_the_ID();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (!empty($random_comic_id)) {
|
|
|
|
wp_redirect(get_permalink( $random_comic_id ));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Markup to insert a comic into the comic feed.
|
|
|
|
*/
|
2009-07-13 02:31:14 +00:00
|
|
|
function comic_feed() { ?>
|
|
|
|
<p><a href="<?php the_permalink() ?>"><?php do_action('show_rss') ?></a></p><?php
|
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Filter to insert the comic into the RSS feed.
|
|
|
|
*/
|
2009-07-13 02:31:14 +00:00
|
|
|
function insert_comic_feed($content) {
|
|
|
|
if (is_feed() && in_comic_category()) {
|
|
|
|
return $this->comic_feed() . $content;
|
|
|
|
} else {
|
|
|
|
return $content;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Set up the admin interface and meta boxes.
|
|
|
|
*/
|
2009-11-03 12:55:08 +00:00
|
|
|
function admin_menu() {
|
2009-11-02 01:20:40 +00:00
|
|
|
global $plugin_page, $pagenow, $post;
|
2009-11-01 18:15:59 +00:00
|
|
|
|
2009-11-04 03:46:43 +00:00
|
|
|
add_theme_page(__("ComicPress", 'comicpress'), __('ComicPress Core', 'comicpress'), 'edit_themes', 'comicpress/render_admin', array(&$this, 'render_admin'));
|
2009-07-10 11:48:20 +00:00
|
|
|
|
2009-11-03 12:55:08 +00:00
|
|
|
if (strpos($pagenow, "post") === 0) {
|
2009-07-10 11:48:20 +00:00
|
|
|
add_meta_box("comic-image-ordering", __("Comic Image Ordering", 'comicpress'), array(&$this, 'render_comic_image_ordering'), "post", "normal", "low");
|
2009-11-04 02:45:56 +00:00
|
|
|
wp_enqueue_script('cp-ordering', get_stylesheet_directory_uri() . '/js/ComicImageOrdering.js', array('scriptaculous', 'scriptaculous-slider'));
|
2009-11-03 12:55:08 +00:00
|
|
|
wp_enqueue_style('cp-admin', get_stylesheet_directory_uri() . '/css/cp-admin.css');
|
|
|
|
add_action('admin_footer', array(&$this, 'admin_footer'));
|
2009-07-10 11:48:20 +00:00
|
|
|
}
|
2009-11-01 18:15:59 +00:00
|
|
|
|
|
|
|
if ($plugin_page == 'comicpress/render_admin') {
|
|
|
|
wp_enqueue_style('cp-admin', get_stylesheet_directory_uri() . '/css/cp-admin.css');
|
2009-11-03 03:21:53 +00:00
|
|
|
wp_enqueue_script('cp-admin', get_stylesheet_directory_uri() . '/js/Storyline.js', array('prototype', 'scriptaculous'));
|
2009-11-01 18:15:59 +00:00
|
|
|
}
|
2009-11-02 01:20:40 +00:00
|
|
|
|
|
|
|
if (strpos($pagenow, "media-upload") === 0) {
|
2009-11-03 03:32:31 +00:00
|
|
|
wp_enqueue_script('cp-media', get_stylesheet_directory_uri() . '/js/MediaUpload.js', array('prototype'));
|
2009-11-02 01:20:40 +00:00
|
|
|
}
|
|
|
|
}
|
2009-11-03 12:55:08 +00:00
|
|
|
|
|
|
|
function admin_footer() {
|
|
|
|
$nonce = wp_create_nonce('comicpress');
|
|
|
|
?><script type="text/javascript">
|
|
|
|
var ComicPressAdmin = {
|
|
|
|
nonce: '<?php echo $nonce ?>',
|
|
|
|
ajax_uri: '<?php echo trailingslashit(get_bloginfo('url')) ?>'
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<?php }
|
2009-07-11 00:27:36 +00:00
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Show comic media.
|
|
|
|
* @param object $override_post If not nul;, the post to use instead of the current Loop post.
|
|
|
|
* @param string $method The method to call on the comic post.
|
|
|
|
*/
|
2009-08-04 01:28:59 +00:00
|
|
|
function show_media($override_post, $method, $format) {
|
2009-07-11 19:39:05 +00:00
|
|
|
global $post;
|
2009-10-21 00:40:16 +00:00
|
|
|
$post_to_use = $post;
|
2009-07-11 19:39:05 +00:00
|
|
|
|
2009-07-16 01:34:34 +00:00
|
|
|
switch ($this->comicpress->comicpress_options['comic_space']) {
|
|
|
|
case "comic_only":
|
|
|
|
$comic_post = new ComicPressComicPost($post_to_use, &$this->comicpress);
|
2009-08-04 01:28:59 +00:00
|
|
|
$comic_post->{$method}($format);
|
2009-07-16 01:34:34 +00:00
|
|
|
break;
|
|
|
|
case "post_content":
|
|
|
|
$t = $post;
|
|
|
|
$post = $post_to_use;
|
|
|
|
include_partial('index-blog-post');
|
|
|
|
$post = $t;
|
|
|
|
break;
|
|
|
|
}
|
2009-07-13 02:31:14 +00:00
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Show a comic.
|
|
|
|
*/
|
2009-08-04 01:28:59 +00:00
|
|
|
function show_comic($override_post = null, $format = "%s<br />") {
|
|
|
|
$this->show_media($override_post, "display_comics", $format);
|
2009-07-11 19:39:05 +00:00
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Show an archive comic.
|
|
|
|
*/
|
2009-08-04 02:47:17 +00:00
|
|
|
function show_archive($override_post = null, $format = "%s<br />") {
|
2009-08-04 01:28:59 +00:00
|
|
|
$this->show_media($override_post, "display_archive", $format);
|
2009-07-13 02:31:14 +00:00
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Show an RSS comic.
|
|
|
|
*/
|
2009-08-04 01:28:59 +00:00
|
|
|
function show_rss($override_post = null, $format = "%s<br />") {
|
|
|
|
$this->show_media($override_post, "display_rss", $format);
|
2009-07-13 02:31:14 +00:00
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Modify the Media Gallery for ComicPress use.
|
|
|
|
*/
|
2009-07-11 00:27:36 +00:00
|
|
|
function setup_comic_metadata_buttons($form_fields, $post) {
|
2009-07-13 08:26:26 +00:00
|
|
|
global $pagenow;
|
2009-11-02 01:20:40 +00:00
|
|
|
|
2009-07-11 00:27:36 +00:00
|
|
|
$current_type = get_post_meta($post->ID, 'comic_image_type', true);
|
2009-11-02 03:32:35 +00:00
|
|
|
if (empty($current_type)) { $current_type = reset(array_keys($this->comic_image_types)); }
|
2009-11-02 01:20:40 +00:00
|
|
|
|
2009-07-11 00:27:36 +00:00
|
|
|
$field_html_lines = array();
|
|
|
|
$field_html_lines[] = '<input type="hidden" name="cp[_nonce]" value="' . wp_create_nonce('comicpress') . '" />';
|
2009-07-22 22:18:57 +00:00
|
|
|
foreach ($this->comic_image_types as $field => $label) {
|
2009-07-11 00:27:36 +00:00
|
|
|
$field_html_lines[] = '<label>'
|
|
|
|
. ' <input type="radio" name="attachments['
|
|
|
|
. $post->ID
|
|
|
|
. '][comic_image_type]" value="'
|
|
|
|
. $field
|
|
|
|
. '"'
|
|
|
|
. (($field == $current_type) ? ' checked="checked"' : '')
|
|
|
|
. ' /> '
|
|
|
|
. $label
|
|
|
|
. '</label>';
|
|
|
|
}
|
|
|
|
|
|
|
|
$form_fields['comic_image_type'] = array(
|
|
|
|
'label' => __("Comic Image Type", 'comicpress'),
|
|
|
|
'input' => 'html',
|
|
|
|
'html' => '<center>' . implode("\n", $field_html_lines) . '</center>'
|
|
|
|
);
|
2009-07-13 08:26:26 +00:00
|
|
|
|
|
|
|
if ($pagenow !== "media.php") {
|
|
|
|
$form_fields['auto_attach'] = array(
|
|
|
|
'label' => __("Auto-attach?", 'comicpress'),
|
|
|
|
'input' => 'html',
|
|
|
|
'html' => '<input type="checkbox" name="attachments[' . $post->ID . '][auto_attach]" value="yes" checked="checked" /> <em>'
|
|
|
|
. __('Attach to this post w/o needing to insert into post', 'comicpress')
|
|
|
|
. '</em>'
|
|
|
|
);
|
|
|
|
}
|
2009-07-12 22:50:55 +00:00
|
|
|
|
2009-07-11 00:27:36 +00:00
|
|
|
return $form_fields;
|
|
|
|
}
|
2009-07-08 23:51:02 +00:00
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Render the admin interface.
|
|
|
|
*/
|
2009-07-08 23:51:02 +00:00
|
|
|
function render_admin() {
|
|
|
|
$nonce = wp_create_nonce('comicpress');
|
|
|
|
$root_categories = $this->get_root_categories();
|
2009-10-31 20:04:29 +00:00
|
|
|
$storyline = new ComicPressStoryline();
|
2009-11-01 19:04:15 +00:00
|
|
|
$storyline->normalize();
|
2009-11-01 18:15:59 +00:00
|
|
|
$storyline->read_from_options();
|
2009-07-08 23:51:02 +00:00
|
|
|
|
|
|
|
include(dirname(__FILE__) . '/partials/options-admin.inc');
|
|
|
|
}
|
2009-11-01 18:15:59 +00:00
|
|
|
|
|
|
|
function _render_admin_storyline_tree($node, $parent_id = "0") {
|
|
|
|
foreach ($node as $category_id => $children) {
|
|
|
|
$category = get_category($category_id);
|
2009-11-03 03:21:53 +00:00
|
|
|
echo '<div id="category_' . $parent_id . '/' . $category_id . '" class="cp-category-info">';
|
2009-11-01 18:15:59 +00:00
|
|
|
echo '<span>' . $category->name . '</span>';
|
|
|
|
if (is_array($children)) {
|
|
|
|
echo '<div class="cp-children">';
|
|
|
|
$this->_render_admin_storyline_tree($children, $parent_id . '/' . $category_id);
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
}
|
2009-08-06 02:29:54 +00:00
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Render the comic image ordering interface.
|
|
|
|
*/
|
2009-11-04 02:45:56 +00:00
|
|
|
function render_comic_image_ordering($is_ajax = false, $override_post = null) {
|
|
|
|
global $post_ID, $temp_ID;
|
|
|
|
|
|
|
|
$uploading_iframe_ID = (int) (0 == $post_ID ? $temp_ID : $post_ID);
|
|
|
|
if (is_numeric($override_post)) { $uploading_iframe_ID = $override_post; }
|
|
|
|
|
|
|
|
$comic_post = new ComicPressComicPost(get_post($uploading_iframe_ID));
|
|
|
|
$ordering = $comic_post->normalize_comic_image_ordering();
|
|
|
|
|
|
|
|
if (is_array($ordering)) {
|
|
|
|
$nonce = wp_create_nonce('comicpress');
|
|
|
|
$zoom_level = 40;
|
|
|
|
$current_user = wp_get_current_user();
|
|
|
|
if (!empty($current_user)) {
|
|
|
|
$comicpress_meta = get_usermeta($current_user->ID, 'comicpress-settings');
|
|
|
|
if (is_array($comicpress_meta)) {
|
|
|
|
if (isset($comicpress_meta['zoom_level'])) {
|
|
|
|
$zoom_level = floor($comicpress_meta['zoom_level']);
|
2009-07-22 22:18:57 +00:00
|
|
|
}
|
|
|
|
}
|
2009-11-04 02:45:56 +00:00
|
|
|
}
|
2009-11-03 12:55:08 +00:00
|
|
|
|
2009-11-04 02:45:56 +00:00
|
|
|
// from wp-admin/includes/media.php O_o
|
|
|
|
$media_upload_iframe_src = "media-upload.php?post_id=$uploading_iframe_ID";
|
|
|
|
$image_upload_iframe_src = apply_filters('image_upload_iframe_src', "$media_upload_iframe_src&type=image&TB_iframe=true");
|
|
|
|
|
|
|
|
if ($is_ajax === true) {
|
|
|
|
include(dirname(__FILE__) . '/partials/_comic-image-ordering-sorters.inc');
|
|
|
|
} else {
|
2009-11-03 12:55:08 +00:00
|
|
|
include(dirname(__FILE__) . '/partials/_comic-image-ordering.inc');
|
|
|
|
}
|
2009-07-22 22:18:57 +00:00
|
|
|
}
|
2009-07-10 11:48:20 +00:00
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Get all categories with a parent ID of 0.
|
|
|
|
* @return array All root categories.
|
|
|
|
*/
|
2009-07-08 23:51:02 +00:00
|
|
|
function get_root_categories() {
|
|
|
|
$root_categories = array();
|
|
|
|
foreach (get_all_category_ids() as $id) {
|
|
|
|
$category = get_category($id);
|
|
|
|
if (!empty($category)) {
|
|
|
|
if ($category->parent == 0) {
|
|
|
|
$root_categories[] = $category;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $root_categories;
|
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Create <option> elements for each of the provided categories.
|
|
|
|
* @param array $categories The categories to display as either IDs or category objects.
|
|
|
|
* @param int $selected_id The category to mark as selected.
|
|
|
|
* @return string The category options as HTML.
|
|
|
|
*/
|
2009-07-08 23:51:02 +00:00
|
|
|
function create_category_options($categories, $selected_id) {
|
|
|
|
$output = array();
|
|
|
|
if (is_array($categories)) {
|
|
|
|
$final_categories = array();
|
|
|
|
foreach ($categories as $category) {
|
|
|
|
if (is_numeric($category)) {
|
|
|
|
$result = get_category($category);
|
|
|
|
if (!(is_a($result, "WP_Error") || empty($result))) {
|
|
|
|
$final_categories[] = $result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (is_object($category)) {
|
|
|
|
$final_categories[] = $category;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($final_categories as $category) {
|
|
|
|
$output[] = '<option value="' . $category->term_id . '"' . (($category->term_id == $selected_id) ? ' selected="selected"' : '') . '>' . $category->name . '</option>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return implode("\n", $output);
|
|
|
|
}
|
|
|
|
|
2009-07-20 22:27:12 +00:00
|
|
|
/**
|
|
|
|
* Create a dimension selector.
|
|
|
|
* @param string $root The field name root.
|
|
|
|
* @param $dimension The dimension to pre-fill into the fields.
|
|
|
|
* @return string The dimension selector as HTML.
|
|
|
|
*/
|
2009-07-08 23:51:02 +00:00
|
|
|
function create_dimension_selector($root, $dimension) {
|
|
|
|
$output = array();
|
|
|
|
|
|
|
|
$parts = explode("x", $dimension);
|
|
|
|
foreach (array(
|
|
|
|
'width' => __('Width', 'comicpress'),
|
|
|
|
'height' => __('Height', 'comicpress')
|
|
|
|
) as $id => $name) {
|
|
|
|
$dim = array_shift($parts);
|
|
|
|
if (!empty($dim) && !is_numeric($dim)) { $dim = ""; }
|
|
|
|
$output[] = '<label>' . $name . ': <input type="text" name="' . $root . '[' . $id . ']" value="' . $dim . '" size="4" />px</label><br />';
|
|
|
|
}
|
|
|
|
return implode("\n", $output);
|
|
|
|
}
|
2009-07-14 01:21:53 +00:00
|
|
|
|
2009-11-04 02:45:56 +00:00
|
|
|
/**
|
|
|
|
* Update attachment information.
|
|
|
|
*/
|
|
|
|
function handle_update_refresh_ordering($info) {
|
|
|
|
$this->render_comic_image_ordering(true, $info['post_id']);
|
|
|
|
exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2009-07-21 17:40:24 +00:00
|
|
|
* Update attachment information.
|
2009-07-20 22:27:12 +00:00
|
|
|
*/
|
2009-07-21 17:40:24 +00:00
|
|
|
function handle_update_attachments() {
|
|
|
|
foreach ($_POST['attachments'] as $post_id => $settings) {
|
|
|
|
if (isset($settings['comic_image_type'])) {
|
|
|
|
update_post_meta($post_id, 'comic_image_type', $settings['comic_image_type']);
|
2009-07-11 00:27:36 +00:00
|
|
|
}
|
2009-07-21 17:40:24 +00:00
|
|
|
if (isset($settings['auto_attach']) && isset($settings['post_parent'])) {
|
|
|
|
$media_post = get_post($post_id);
|
|
|
|
$media_post->post_parent = $settings['post_parent'];
|
|
|
|
wp_update_post($media_post);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Update ComicPress options.
|
|
|
|
*/
|
2009-11-01 18:15:59 +00:00
|
|
|
function handle_update_comicpress_options($info) {
|
2009-08-23 20:44:54 +00:00
|
|
|
foreach (array('helpers', 'options') as $type) {
|
|
|
|
$this->comicpress->comicpress_options[$type] = array();
|
|
|
|
}
|
2009-07-21 17:40:24 +00:00
|
|
|
foreach ($this->comicpress->comicpress_options as $option => $value) {
|
2009-11-01 18:15:59 +00:00
|
|
|
if (isset($info[$option])) {
|
2009-07-21 17:40:24 +00:00
|
|
|
switch ($option) {
|
|
|
|
case 'comic_category_id':
|
2009-11-01 18:15:59 +00:00
|
|
|
if (is_numeric($info[$option])) {
|
|
|
|
$result = get_category($info[$option]);
|
2009-07-21 17:40:24 +00:00
|
|
|
if (!(is_a($result, 'WP_Error') || empty($result))) {
|
2009-11-01 18:15:59 +00:00
|
|
|
$this->comicpress->comicpress_options[$option] = $info[$option];
|
2009-07-21 17:40:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 'comic_dimensions':
|
|
|
|
case 'rss_dimensions':
|
|
|
|
case 'archive_dimensions':
|
|
|
|
case 'mini_dimensions':
|
2009-11-01 18:15:59 +00:00
|
|
|
if (is_array($info[$option])) {
|
2009-07-21 17:40:24 +00:00
|
|
|
$dim_parts = array();
|
|
|
|
$is_valid = true;
|
|
|
|
foreach (array('width', 'height') as $field) {
|
2009-11-01 18:15:59 +00:00
|
|
|
$requested_dim = trim($info[$option][$field]);
|
2009-07-21 17:40:24 +00:00
|
|
|
if ($requested_dim == "") {
|
|
|
|
$dim_parts[] = $requested_dim;
|
|
|
|
} else {
|
|
|
|
if ((int)$requested_dim == $requested_dim) {
|
2009-07-08 23:51:02 +00:00
|
|
|
$dim_parts[] = $requested_dim;
|
|
|
|
} else {
|
2009-07-21 17:40:24 +00:00
|
|
|
$is_valid = false; break;
|
2009-07-08 23:51:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2009-07-21 17:40:24 +00:00
|
|
|
|
|
|
|
if ($is_valid) {
|
|
|
|
$this->comicpress->comicpress_options[$option] = implode("x", $dim_parts);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 'blogpost_count':
|
2009-11-01 18:15:59 +00:00
|
|
|
$this->comicpress->comicpress_options[$option] = (int)$info[$option];
|
2009-07-21 17:40:24 +00:00
|
|
|
break;
|
|
|
|
case 'comic_space':
|
2009-07-29 02:38:20 +00:00
|
|
|
case 'category_usage':
|
2009-07-23 22:25:02 +00:00
|
|
|
case 'layout';
|
2009-11-01 18:15:59 +00:00
|
|
|
$this->comicpress->comicpress_options[$option] = $info[$option];
|
2009-07-28 02:09:20 +00:00
|
|
|
break;
|
|
|
|
case 'helpers':
|
2009-08-23 20:44:54 +00:00
|
|
|
case 'addons':
|
2009-11-01 18:15:59 +00:00
|
|
|
foreach ($info[$option] as $type => $set) {
|
2009-08-23 20:44:54 +00:00
|
|
|
$this->comicpress->comicpress_options[$option][$type] = true;
|
2009-07-28 02:09:20 +00:00
|
|
|
}
|
|
|
|
break;
|
2009-11-01 18:15:59 +00:00
|
|
|
case 'storyline_order':
|
|
|
|
$storyline = new ComicPressStoryline();
|
2009-11-01 19:04:15 +00:00
|
|
|
$storyline->normalize($info[$option]);
|
2009-11-01 18:15:59 +00:00
|
|
|
break;
|
2009-07-08 23:51:02 +00:00
|
|
|
}
|
|
|
|
}
|
2009-07-21 17:40:24 +00:00
|
|
|
}
|
|
|
|
}
|
2009-11-04 02:45:56 +00:00
|
|
|
|
|
|
|
function _json_decode($string) {
|
|
|
|
if (function_exists('json_decode')) {
|
|
|
|
return json_decode($string);
|
|
|
|
} else {
|
|
|
|
require_once(ABSPATH."/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/JSON.php");
|
|
|
|
$j = new Moxiecode_JSON();
|
|
|
|
return $j->decode($string);
|
|
|
|
}
|
|
|
|
}
|
2009-07-21 17:40:24 +00:00
|
|
|
|
2009-08-03 10:51:30 +00:00
|
|
|
function handle_update_comic_ordering() {
|
|
|
|
if (is_numeric($_POST['post_ID'])) {
|
|
|
|
if ($post = get_post($_POST['post_ID'])) {
|
|
|
|
$comic_post = new ComicPressComicPost(&$post);
|
2009-11-04 02:45:56 +00:00
|
|
|
$comic_post->change_comic_image_ordering($this->_json_decode(stripslashes($_POST['cp']['comic_order'])));
|
2009-08-03 10:51:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2009-08-06 02:29:54 +00:00
|
|
|
|
|
|
|
function handle_update_override_partial($info) {
|
|
|
|
switch ($info['action']) {
|
|
|
|
case __('Update partial', 'comicpress'):
|
2009-08-07 19:50:06 +00:00
|
|
|
$this->comicpress->comicpress_options['override_partials'][$info['partial']] = stripslashes($info['code']);
|
2009-08-06 02:29:54 +00:00
|
|
|
break;
|
|
|
|
case __('Delete override partial', 'comicpress'):
|
|
|
|
unset($this->comicpress->comicpress_options['override_partials'][$info['partial']]);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-11-03 12:55:08 +00:00
|
|
|
function handle_update_zoom_slider($info) {
|
|
|
|
$this->is_ajax = true;
|
|
|
|
|
|
|
|
$current_user = wp_get_current_user();
|
|
|
|
if (!empty($current_user)) {
|
|
|
|
$comicpress_meta = get_usermeta($current_user->ID, 'comicpress-settings');
|
|
|
|
if (!is_array($comicpress_meta)) { $comicpress_meta = array(); }
|
|
|
|
$comicpress_meta['zoom_level'] = $info['zoom_level'];
|
|
|
|
update_usermeta($current_user->ID, 'comicpress-settings', $comicpress_meta);
|
|
|
|
exit(0);
|
|
|
|
}
|
|
|
|
header('HTTP/1.1 500 Internal Server Error');
|
|
|
|
exit(0);
|
|
|
|
}
|
|
|
|
|
2009-07-21 17:40:24 +00:00
|
|
|
/**
|
|
|
|
* Handle an update.
|
|
|
|
*/
|
2009-11-01 18:15:59 +00:00
|
|
|
function handle_update($info) {
|
2009-07-21 17:40:24 +00:00
|
|
|
if (isset($_POST['attachments'])) {
|
|
|
|
//coming from media editor
|
|
|
|
$this->handle_update_attachments();
|
2009-11-03 12:55:08 +00:00
|
|
|
} else if (isset($info['action'])) {
|
|
|
|
$method = 'handle_update_' . strtolower(str_replace('-', '_', $info['action']));
|
|
|
|
if (method_exists($this, $method)) {
|
|
|
|
$this->{$method}($info);
|
|
|
|
}
|
2009-07-21 17:40:24 +00:00
|
|
|
} else {
|
|
|
|
//coming from us
|
2009-11-01 18:15:59 +00:00
|
|
|
$this->handle_update_comicpress_options($info);
|
2009-07-21 17:40:24 +00:00
|
|
|
|
2009-07-11 00:27:36 +00:00
|
|
|
$this->comicpress->save();
|
|
|
|
|
2009-08-06 02:29:54 +00:00
|
|
|
$this->info(__("ComicPress configuration updated.", 'comicpress'));
|
2009-07-14 01:21:53 +00:00
|
|
|
|
|
|
|
$this->comicpress->init();
|
2009-07-08 23:51:02 +00:00
|
|
|
}
|
|
|
|
}
|
2009-07-23 00:55:32 +00:00
|
|
|
|
2009-07-23 22:25:02 +00:00
|
|
|
/**
|
|
|
|
* Create the dropdown for choosing a layout.
|
|
|
|
*/
|
2009-07-23 18:43:15 +00:00
|
|
|
function create_layout_options($layouts, $current_layout) {
|
|
|
|
$output = array();
|
2009-07-23 22:25:02 +00:00
|
|
|
foreach ($layouts as $layout_filename => $info) {
|
|
|
|
$output[] = '<option value="' . $layout_filename . '"' . (($layout_filename == $current_layout) ? ' selected="selected"' : '') . '>' . $info['Layout Name'] . '</option>';
|
2009-07-23 18:43:15 +00:00
|
|
|
}
|
|
|
|
return implode("\n", $output);
|
|
|
|
}
|
2009-07-08 23:51:02 +00:00
|
|
|
}
|
|
|
|
|
2009-08-07 19:50:06 +00:00
|
|
|
?>
|