diff --git a/classes/ComicPress.inc b/classes/ComicPress.inc index 30bddf6..20af209 100644 --- a/classes/ComicPress.inc +++ b/classes/ComicPress.inc @@ -237,8 +237,10 @@ class ComicPress { if (isset($this->comicpress_options['image_types'])) { if (is_array($this->comicpress_options['image_types'])) { foreach ($this->comicpress_options['image_types'] as $type => $properties) { - if ($properties['default'] === true) { - return $type; + if (isset($properties['default'])) { + if ($properties['default'] === true) { + return $type; + } } } } diff --git a/classes/ComicPressAdmin.inc b/classes/ComicPressAdmin.inc index 6514178..df323c9 100644 --- a/classes/ComicPressAdmin.inc +++ b/classes/ComicPressAdmin.inc @@ -18,6 +18,7 @@ class ComicPressAdmin { } add_action('edit_form_advanced', array(&$this, 'edit_form_advanced')); + add_action('save_post', array(&$this, 'save_post'), 10, 1); add_filter('comicpress_core_version', array(&$this, 'comicpress_core_version')); @@ -418,16 +419,14 @@ class ComicPressAdmin { } } - function handle_update_comic_ordering() { - if (isset($_POST['post_ID'])) { - if (is_numeric($_POST['post_ID'])) { - if ($post = get_post($_POST['post_ID'])) { - $comic_post = new ComicPressComicPost($post); - $data = $this->_json_decode(stripslashes($_POST['cp']['comic_order'])); - if (!empty($data)) { - if (is_array($data)) { - $comic_post->update_post_media_data($data); - } + function save_post($post_id) { + if (ComicPressAdmin::verify_nonces() === 'handle_update_edit_form_advanced') { + if ($post = get_post($psot_id)) { + $comic_post = new ComicPressComicPost($post); + $data = $this->_json_decode(stripslashes($_POST['cp']['comic_order'])); + if (!empty($data)) { + if (is_array($data)) { + $comic_post->update_post_media_data($data); } } } @@ -477,27 +476,17 @@ class ComicPressAdmin { * Handle an update. */ function handle_update() { - if (isset($_REQUEST['cp'])) { - if (is_array($_REQUEST['cp'])) { - if (isset($_REQUEST['cp']['_nonce'])) { - if (wp_verify_nonce($_REQUEST['cp']['_nonce'], 'comicpress')) { - if (isset($_POST['attachments'])) { - //coming from media editor - $this->handle_update_attachments(); - } else if (isset($_REQUEST['cp']['action'])) { - $action = $_REQUEST['cp']['action']; - if (isset($_REQUEST['cp']['_action_nonce'])) { - if (wp_verify_nonce($_REQUEST['cp']['_action_nonce'], "comicpress-${action}")) { - $method = 'handle_update_' . strtolower(str_replace('-', '_', $action)); - if (method_exists($this, $method)) { - $this->{$method}($_REQUEST['cp']); - } - do_action("comicpress-${method}", $_REQUEST['cp']); - } - } - } + if ($method = ComicPressAdmin::verify_nonces()) { + switch ($method) { + case 'attachments': + $this->handle_update_attachments(); + break; + default: + if (method_exists($this, $method)) { + $this->{$method}($_REQUEST['cp']); } - } + do_action("comicpress-${method}", $_REQUEST['cp']); + break; } } } @@ -525,4 +514,28 @@ class ComicPressAdmin { } } // @codeCoverageIgnoreEnd + + function verify_nonces() { + if (isset($_REQUEST['cp'])) { + if (is_array($_REQUEST['cp'])) { + if (isset($_REQUEST['cp']['_nonce'])) { + if (wp_verify_nonce($_REQUEST['cp']['_nonce'], 'comicpress')) { + if (isset($_POST['attachments'])) { + //coming from media editor + return 'attachments'; + } else if (isset($_REQUEST['cp']['action'])) { + $action = $_REQUEST['cp']['action']; + if (isset($_REQUEST['cp']['_action_nonce'])) { + if (wp_verify_nonce($_REQUEST['cp']['_action_nonce'], "comicpress-${action}")) { + $method = 'handle_update_' . strtolower(str_replace('-', '_', $action)); + return $method; + } + } + } + } + } + } + } + return false; + } } diff --git a/classes/ComicPressBackend.inc b/classes/ComicPressBackend.inc index 3e7658a..9adc790 100644 --- a/classes/ComicPressBackend.inc +++ b/classes/ComicPressBackend.inc @@ -2,6 +2,7 @@ class ComicPressBackend { function _embed_image($size) { + $size = $this->ensure_type($size); $extras = array(); $dims = $this->dims($size); if (!empty($dims)) { @@ -17,7 +18,7 @@ class ComicPressBackend { unset($extras[$field]); } - $output = sprintf('', $this->url(), $this->alt(), $this->title(), implode("", $extras)); + $output = sprintf('', $this->url($size), $this->alt(), $this->title(), implode("", $extras)); return apply_filters('comicpress_embed_image', $output, $this); } @@ -31,4 +32,32 @@ class ComicPressBackend { } return false; } + + function ensure_type($type) { + if (is_null($type)) { + $comicpress = ComicPress::get_instance(); + if (is_null($type)) { + $type = $comicpress->get_default_image_type(); + } + } + return $type; + } + + function embed($type = null) { return $this->_embed_image($this->ensure_type($type)); } + + + function get_info($size = null) { + $size = $this->ensure_type($size); + + $info = array(); + foreach (array('dims', 'url', 'file') as $field) { + $result = $this->{$field}($size); + if (is_array($result)) { + $info = array_merge($info, $result); + } else { + $info[$field] = $result; + } + } + return $info; + } } diff --git a/classes/backends/ComicPressBackendAttachment.inc b/classes/backends/ComicPressBackendAttachment.inc index 88c246e..3fe52db 100644 --- a/classes/backends/ComicPressBackendAttachment.inc +++ b/classes/backends/ComicPressBackendAttachment.inc @@ -12,17 +12,12 @@ class ComicPressBackendAttachment extends ComicPressBackend { $this->type = get_post_meta($this->attachment->ID, 'comic_image_type', true); } - function dims($size = 'comic') { + function dims($size = null) { + $size = $this->ensure_type($size); $comicpress = ComicPress::get_instance(); $dims = array(); if (isset($comicpress->comicpress_options['image_types'])) { - if ($size == 'default') { - foreach ($comicpress->comicpress_options['image_types'] as $type => $info) { - if ($info['default']) { $size = $type; break; } - } - } - if (isset($comicpress->comicpress_options['image_types'][$size])) { if (isset($comicpress->comicpress_options['image_types'][$size]['dimensions'])) { $dims = array_combine(array('width', 'height'), explode("x", $comicpress->comicpress_options['image_types'][$size]['dimensions'])); @@ -44,24 +39,10 @@ class ComicPressBackendAttachment extends ComicPressBackend { } // @codeCoverageIgnoreStart - function embed($size = 'comic') { return $this->_embed_image($size); } - function file($size = 'comic') { return $this->attachment->guid; } + function file($size = null) { return $this->attachment->guid; } function alt() { return $this->attachment->post_title; } function title() { return $this->attachment->post_excerpt; } // @codeCoverageIgnoreEnd - - function get_info($size = 'comic') { - $info = array(); - foreach (array('dims', 'url', 'file') as $field) { - $result = $this->{$field}($size); - if (is_array($result)) { - $info = array_merge($info, $result); - } else { - $info[$field] = $result; - } - } - return $info; - } } class ComicPressBackendAttachmentFactory { diff --git a/classes/backends/ComicPressBackendURL.inc b/classes/backends/ComicPressBackendURL.inc index 47d1aed..2e026ac 100644 --- a/classes/backends/ComicPressBackendURL.inc +++ b/classes/backends/ComicPressBackendURL.inc @@ -21,6 +21,10 @@ class ComicPressBackendURL extends ComicPressBackend { $valid_urls[$type] = $url; if ($type == $default_type) { $key = substr(md5($url), 0, 10); } } + } else { + if (strpos($type, '__') === 0) { + $valid_urls[$type] = $url; + } } } } @@ -30,6 +34,7 @@ class ComicPressBackendURL extends ComicPressBackend { } } } + update_post_meta($post->ID, 'backend_url_image_urls', $valid_url_groups); } } @@ -44,6 +49,8 @@ class ComicPressBackendURL extends ComicPressBackend { return false; } + + function dims($size = null) { return false; } } class ComicPressBackendURLFactory { @@ -57,7 +64,14 @@ class ComicPressBackendURLFactory { if (isset($meta[$key])) { $backend = new ComicPressBackendURL(); $backend->id = $id; - $backend->urls_by_type = $meta[$key]; + $backend->urls_by_type = array(); + foreach ($meta[$key] as $k => $v) { + if (strpos($k, '__') === 0) { + $backend->{substr($k, 2)} = $v; + } else { + $backend->urls_by_type[$k] = $v; + } + } return $backend; } } @@ -119,7 +133,16 @@ class ComicPressBackendURLAdmin { include('partials/backend-url/_editor.inc'); exit(0); } + + function save_post($post_id) { + if (ComicPressAdmin::verify_nonces() === 'handle_update_edit_form_advanced') { + if ($post = get_post($post_id)) { + ComicPressBackendURL::update_post_urls($post_id, $_REQUEST['cp']['url']); + } + } + } } add_action('admin_menu', array('ComicPressBackendURLAdmin', 'admin_menu')); add_action('comicpress-handle_update_backend_url_new_editor', array('ComicPressBackendURLAdmin', 'handle_update_backend_url_new_editor')); +add_action('save_post', array('ComicPressBackendURLAdmin', 'save_post'), 10, 1); diff --git a/classes/backends/partials/backend-url/_editor.inc b/classes/backends/partials/backend-url/_editor.inc index 02836cb..da39bbf 100644 --- a/classes/backends/partials/backend-url/_editor.inc +++ b/classes/backends/partials/backend-url/_editor.inc @@ -1,14 +1,37 @@ -
+ X + | +||
+ | + + + + + + + | |
---|---|---|
+ | + |