/** * Static function for plugin activation. * * @return void */ public function do_activate() { global $wp_version; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; // Check for capability if (!current_user_can('activate_plugins')) { wp_die(__('Sorry, you do not have suffient permissions to activate this plugin.', MP_DOMAIN)); } // Get the capabilities for the administrator $role = get_role('administrator'); // Must have admin privileges in order to activate. if (empty($role)) { wp_die(__('Sorry, you must be an Administrator in order to use Manga+Press', MP_DOMAIN)); } if (version_compare($wp_version, '3.0', '<=')) { wp_die('Sorry, only WordPress 3.0 and later are supported.' . ' Please upgrade to WordPress 3.0', 'Wrong Version'); } self::$_version = strval(get_option('mangapress_ver')); // version_compare will still evaluate against an empty string // so we have to tell it not to. if (version_compare(self::$_version, MP_VERSION, '<') && !(self::$_version == '')) { add_option('mangapress_upgrade', 'yes', '', 'no'); } elseif (self::$_version == '') { add_option('mangapress_ver', MP_VERSION, '', 'no'); add_option('mangapress_options', serialize(MangaPress_Options::get_default_options()), '', 'no'); } $this->_bootstrap = MangaPress_Bootstrap::get_instance(); $this->_bootstrap->init(); $this->after_plugin_activation(); flush_rewrite_rules(false); }
/** * Create a date-archive permalink for Comics * * @param string $daylink Existing link to be modified or replaced * @param string $year Year * @param string $month Month * @param string $day Day * * @return string */ function mangapress_day_link($daylink, $year = '', $month = '', $day = '') { $posts = MangaPress_Bootstrap::get_instance()->get_helper('posts'); $slug = $posts->get_slug(); $relative = "/{$slug}/{$year}/{$month}/{$day}"; $day_permalink = home_url($relative); return $day_permalink; }
/** * Get instance of MangaPress_Bootstrap * * @return MangaPress_Bootstrap */ public static function get_instance() { if (null == self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
/** * mangapress_comic_navigation() * * Displays navigation for post specified by $post_id. * * @since 0.1b * * @global object $wpdb * * @param array $args Arguments for navigation output * @param bool $echo Specifies whether to echo comic navigation or return it as a string * @return string Returns navigation string if $echo is set to false. */ function mangapress_comic_navigation($args = array(), $echo = true) { global $post; $mp_options = MangaPress_Bootstrap::get_instance()->get_options(); $defaults = array('container' => 'nav', 'container_attr' => array('id' => 'comic-navigation', 'class' => 'comic-nav-hlist-wrapper'), 'items_wrap' => '<ul%1$s>%2$s</ul>', 'items_wrap_attr' => array('class' => 'comic-nav-hlist'), 'link_wrap' => 'li', 'link_before' => '', 'link_after' => ''); $parsed_args = wp_parse_args($args, $defaults); $r = apply_filters('mangapress_comic_navigation_args', $parsed_args); $args = (object) $r; $group = (bool) $mp_options['basic']['group_comics']; $by_parent = (bool) $mp_options['basic']['group_by_parent']; $next_post = mangapress_get_adjacent_comic($group, $by_parent, 'mangapress_series', false, false); $prev_post = mangapress_get_adjacent_comic($group, $by_parent, 'mangapress_series', false, true); add_filter('pre_get_posts', '_mangapress_set_post_type_for_boundary'); $last_post = mangapress_get_boundary_comic($group, $by_parent, 'mangapress_series', false, false); $first_post = mangapress_get_boundary_comic($group, $by_parent, 'mangapress_series', false, true); remove_filter('pre_get_posts', '_mangapress_set_post_type_for_boundary'); $current_page = $post->ID; // use post ID this time. $next_page = !isset($next_post->ID) ? $current_page : $next_post->ID; $prev_page = !isset($prev_post->ID) ? $current_page : $prev_post->ID; $last = !isset($last_post[0]->ID) ? $current_page : $last_post[0]->ID; $first = !isset($first_post[0]->ID) ? $current_page : $first_post[0]->ID; $first_url = get_permalink($first); $last_url = get_permalink($last); $next_url = get_permalink($next_page); $prev_url = get_permalink($prev_page); $show_container = false; $comic_nav = ""; if ($args->container) { $show_container = true; $attr = ""; if (!empty($args->container_attr)) { $attr_arr = array(); foreach ($args->container_attr as $name => $value) { $attr_arr[] = "{$name}=\"" . esc_attr($value) . "\""; } $attr = " " . implode(" ", $attr_arr); } $comic_nav .= "<{$args->container}{$attr}>"; } $items_wrap_attr = ""; if (!empty($args->items_wrap_attr)) { $items_attr_arr = array(); foreach ($args->items_wrap_attr as $name => $value) { $items_attr_arr[] = "{$name}=\"" . esc_attr($value) . "\""; } $items_wrap_attr = " " . implode(" ", $items_attr_arr); } $items = array(); // Here, we start processing the urls. // Let's do first page first. $first_html = "<{$args->link_wrap} class=\"link-first\">" . ($first == $current_page ? '<span class="comic-nav-span">' . __('First', MP_DOMAIN) . '</span>' : '<a href="' . $first_url . '">' . __('First', MP_DOMAIN) . '</a>') . "</{$args->link_wrap}>"; $last_html = "<{$args->link_wrap} class=\"link-last\">" . ($last == $current_page ? '<span class="comic-nav-span">' . __('Last', MP_DOMAIN) . '</span>' : '<a href="' . $last_url . '">' . __('Last', MP_DOMAIN) . '</a>') . "</{$args->link_wrap}>"; $next_html = "<{$args->link_wrap} class=\"link-next\">" . ($next_page == $current_page ? '<span class="comic-nav-span">' . __('Next', MP_DOMAIN) . '</span>' : '<a href="' . $next_url . '">' . __('Next', MP_DOMAIN) . '</a>') . "</{$args->link_wrap}>"; $prev_html = "<{$args->link_wrap} class=\"link-prev\">" . ($prev_page == $current_page ? '<span class="comic-nav-span">' . __('Prev', MP_DOMAIN) . '</span>' : '<a href="' . $prev_url . '">' . __('Prev', MP_DOMAIN) . '</a>') . "</{$args->link_wrap}>"; $items['first'] = apply_filters('mangapress_comic_navigation_first', $first_html, $args); $items['prev'] = apply_filters('mangapress_comic_navigation_prev', $prev_html, $args); $items['next'] = apply_filters('mangapress_comic_navigation_next', $next_html, $args); $items['last'] = apply_filters('mangapress_comic_navigation_last', $last_html, $args); $items_str = implode(" ", apply_filters('mangapress_comic_navigation_items', $items, $args)); $comic_nav .= sprintf($args->items_wrap, $items_wrap_attr, $items_str); if ($show_container) { $comic_nav .= "</{$args->container}>"; } if ($echo) { echo $comic_nav; } else { return $comic_nav; } }
/** * Sanitize options * * @param array $options * @return array */ public function sanitize_options($options) { if (!$options) { return $options; } $mp_options = MangaPress_Bootstrap::get_instance()->get_options(); $section = key($options); $available_options = $this->options_fields(); $new_options = $mp_options; if ($section == 'nav') { $new_options['nav']['insert_nav'] = intval($options['nav']['insert_nav']); // // if the value of the option doesn't match the correct values in the array, then // the value of the option is set to its default. $nav_css_values = array_keys($available_options['nav']['nav_css']['value']); if (in_array($mp_options['nav']['nav_css'], $nav_css_values)) { $new_options['nav']['nav_css'] = strval($options['nav']['nav_css']); } else { $new_options['nav']['nav_css'] = 'default_css'; } } if ($section == 'basic') { // // Converting the values to their correct data-types should be enough for now... $new_options['basic'] = array('group_comics' => $this->_sanitize_integer($options, 'basic', 'group_comics'), 'group_by_parent' => $this->_sanitize_integer($options, 'basic', 'group_by_parent')); if ($options['basic']['latestcomic_page'] !== 'no_val') { $new_options['basic']['latestcomic_page'] = $options['basic']['latestcomic_page']; } else { $new_options['basic']['latestcomic_page'] = 0; } $new_options['basic']['latestcomic_page_template'] = $this->_sanitize_integer($options, 'basic', 'latestcomic_page_template'); if ($options['basic']['comicarchive_page'] !== 'no_val') { $new_options['basic']['comicarchive_page'] = $options['basic']['comicarchive_page']; } else { $new_options['basic']['comicarchive_page'] = 0; } // damned checkboxes...fffuuuu $new_options['basic']['comicarchive_page_template'] = $this->_sanitize_integer($options, 'basic', 'comicarchive_page_template'); flush_rewrite_rules(false); } if ($section == 'comic_page') { $new_options['comic_page'] = array('generate_comic_page' => $this->_sanitize_integer($options, 'comic_page', 'generate_comic_page'), 'comic_page_width' => $this->_sanitize_integer($options, 'comic_page', 'comic_page_width'), 'comic_page_height' => $this->_sanitize_integer($options, 'comic_page', 'comic_page_height')); } return array_merge($mp_options, $new_options); }
/** * Create options page tabs * * @return string */ public function get_current_tab() { $options = MangaPress_Bootstrap::get_instance()->get_helper('options'); $tabs = $options->get_options_sections(); $current_tab = filter_input(INPUT_GET, 'tab'); if (in_array($current_tab, $tabs)) { return $current_tab; } else { return 'basic'; } }
/** * Set MangaPress options. This method should run every time * MangaPress options are updated. * * @uses init() * @see MangaPress_Bootstrap::init() * * @return void */ public static function set_options() { self::$_options = maybe_unserialize(get_option('mangapress_options')); }