/** * Constructor */ public function __construct() { if (!has_filter('msls_blog_collection_description')) { add_filter('msls_blog_collection_description', array($this, 'get_configured_blog_description'), 10, 2); } $this->current_blog_id = get_current_blog_id(); $options = MslsOptions::instance(); $this->current_blog_output = isset($options->output_current_blog); $this->objects_order = $options->get_order(); if (!$options->is_excluded()) { /** * Returns custom filtered blogs of the blogs_collection * @since 0.9.8 * @param array $blogs_collection */ $blogs_collection = (array) apply_filters('msls_blog_collection_construct', $this->get_blogs_of_reference_user($options)); foreach ($blogs_collection as $blog) { $description = false; if ($blog->userblog_id == $this->current_blog_id) { $description = $options->description; } elseif (!$this->is_plugin_active($blog->userblog_id)) { continue; } $description = apply_filters('msls_blog_collection_description', $blog->userblog_id, $description); if (false !== $description) { $this->objects[$blog->userblog_id] = new MslsBlog($blog, $description); } } uasort($this->objects, array('MslsBlog', $this->objects_order)); } }
/** * Table body * @param string $column_name * @param int $item_id */ public function td($column_name, $item_id) { if ('mslscol' == $column_name) { $blogs = MslsBlogCollection::instance()->get(); if ($blogs) { $mydata = MslsOptions::create($item_id); foreach ($blogs as $blog) { switch_to_blog($blog->userblog_id); $language = $blog->get_language(); $icon = MslsAdminIcon::create(); $icon->set_language($language); if ($mydata->has_value($language)) { $flag_url = MslsOptions::instance()->get_url('images/link_edit.png'); $icon->set_href($mydata->{$language})->set_src($flag_url); } else { $flag_url = MslsOptions::instance()->get_url('images/link_add.png'); $icon->set_src($flag_url); } echo $icon; // xss ok restore_current_blog(); } } } }
/** * Set the admin language * Callback for 'locale' hook * @param string $locale * @return string */ public static function set_admin_language($locale) { if (is_admin()) { $code = MslsOptions::instance()->admin_language; if (!empty($code)) { return $code; } } return $locale; }
/** * Set the admin language * Callback for 'locale' hook * @param string $locale * @return string */ public static function set_admin_language($locale) { if (is_admin() && (!defined('DOING_AJAX') || !DOING_AJAX)) { $code = MslsOptions::instance()->admin_language; if (!empty($code)) { return $code; } } return $locale; }
/** * Check if the current user can manage this content type * * Returns name of the content type if the user has access or an empty * string if the user can not access * @return string */ public function acl_request() { if (!MslsOptions::instance()->is_excluded()) { $request = $this->get_request(); $tax = get_taxonomy($request); if ($tax && current_user_can($tax->cap->manage_terms)) { return $request; } } return ''; }
/** * Init * @return MslsCustomFilter */ public static function init() { $obj = new self(); $options = MslsOptions::instance(); if (!$options->is_excluded()) { $post_type = MslsPostType::instance()->get_request(); if (!empty($post_type)) { add_action('restrict_manage_posts', array($obj, 'add_filter')); add_filter('parse_query', array($obj, 'execute_filter')); } } return $obj; }
/** * Init * @return MslsCustomColumnTaxonomy */ public static function init() { $obj = new self(); $options = MslsOptions::instance(); if (!$options->is_excluded()) { $taxonomy = MslsTaxonomy::instance()->get_request(); if (!empty($taxonomy)) { add_filter("manage_edit-{$taxonomy}_columns", array($obj, 'th')); add_action("manage_{$taxonomy}_custom_column", array($obj, 'column_default'), 10, 3); add_action("delete_{$taxonomy}", array($obj, 'delete')); } } return $obj; }
/** * Prints options inputs * @uses selected * @param MslsBlog $blog * @param string $type * @param MslsOptionsTax $mydata * @param string $item_format */ public function print_option(MslsBlog $blog, $type, MslsOptionsTax $mydata, $item_format) { switch_to_blog($blog->userblog_id); $language = $blog->get_language(); $flag_url = MslsOptions::instance()->get_flag_url($language); $icon = MslsAdminIcon::create()->set_language($language)->set_src($flag_url); $options = ''; $terms = get_terms($type, array('hide_empty' => 0)); if ($mydata->has_value($language)) { $icon->set_href($mydata->{$language}); } if (!empty($terms)) { foreach ($terms as $term) { $options .= sprintf('<option value="%s" %s>%s</option>', $term->term_id, selected($term->term_id, $mydata->{$language}, false), $term->name); } } printf($item_format, $language, $icon, $options); restore_current_blog(); }
/** * Filter for the_content() * * @package Msls * @uses MslsOptions * @param string $content * @return string */ function msls_content_filter($content) { if (!is_front_page() && is_singular()) { $options = MslsOptions::instance(); if ($options->is_content_filter()) { $content .= msls_filter_string(); } } return $content; }
/** * Render the suggest input-field */ public function render_input() { $blogs = MslsBlogCollection::instance()->get(); if ($blogs) { global $post; $post_type = get_post_type($post->ID); $my_data = new MslsOptionsPost($post->ID); $temp = $post; $items = ''; wp_nonce_field(MSLS_PLUGIN_PATH, 'msls_noncename'); foreach ($blogs as $blog) { switch_to_blog($blog->userblog_id); $language = $blog->get_language(); $flag_url = MslsOptions::instance()->get_flag_url($language); $icon = MslsAdminIcon::create()->set_language($language)->set_src($flag_url); $value = $title = ''; if ($my_data->has_value($language)) { $icon->set_href($my_data->{$language}); $value = $my_data->{$language}; $title = get_the_title($value); } $items .= sprintf('<li> <label for="msls_title_%1$s">%2$s</label> <input type="hidden" id="msls_id_%1$s" name="msls_input_%3$s" value="%4$s"/> <input class="msls_title" id="msls_title_%1$s" name="msls_title_%1$s" type="text" value="%5$s"/> </li>', $blog->userblog_id, $icon, $language, $value, $title); restore_current_blog(); } printf('<ul>%s</ul> <input type="hidden" name="msls_post_type" id="msls_post_type" value="%s"/> <input type="hidden" name="msls_action" id="msls_action" value="suggest_posts"/> <input type="submit" class="button-secondary clear" value="%s"/>', $items, $post_type, __('Update', 'msls')); $post = $temp; } else { printf('<p>%s</p>', __('You should define at least another blog in a different language in order to have some benefit from this plugin!', 'msls')); } }
/** * Print the input fields * Returns true if the blogcollection is not empty * @param StdClass $tag * @param string $title_format * @param string $item_format * @return boolean */ public function the_input($tag, $title_format, $item_format) { $term_id = is_object($tag) ? $tag->term_id : 0; $blogs = MslsBlogCollection::instance()->get(); if ($blogs) { $my_data = MslsOptionsTax::create($term_id); $type = MslsContentTypes::create()->get_request(); printf($title_format, __('Multisite Language Switcher', 'msls'), $type); foreach ($blogs as $blog) { switch_to_blog($blog->userblog_id); $language = $blog->get_language(); $flag_url = MslsOptions::instance()->get_flag_url($language); $icon = MslsAdminIcon::create()->set_language($language)->set_src($flag_url); $value = $title = ''; if ($my_data->has_value($language)) { $term = get_term($my_data->{$language}, $type); if (is_object($term)) { $icon->set_href($my_data->{$language}); $value = $my_data->{$language}; $title = $term->name; } } printf($item_format, $blog->userblog_id, $icon, $language, $value, $title); restore_current_blog(); } return true; } return false; }
/** * Verify the static instance-method * @covers MslsOptions::instance * @covers MslsOptions::__construct */ function test_instance_method() { $obj = MslsOptions::instance(); $this->assertInstanceOf('MslsOptions', $obj); return $obj; }
/** * Render form-element (text-input) * @param string $key Name and ID of the form-element * @param string $size Size-attribute of the input-field * @return string */ public function render_input($key, $size = '30') { return sprintf('<input id="%1$s" name="msls[%1$s]" value="%2$s" size="%3$s"/>', $key, esc_attr(MslsOptions::instance()->{$key}), $size); }
/** * Gets tags for the output * @return array */ public function get_tags() { if (empty($this->tags)) { $options = MslsOptions::instance(); $this->tags = array('before_item' => $options->before_item, 'after_item' => $options->after_item, 'before_output' => $options->before_output, 'after_output' => $options->after_output); /** * Returns tags array for the output * @since 1.0 * @param array $tags */ $this->tags = (array) apply_filters('msls_output_get_tags', $this->tags); } return $this->tags; }