Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * 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;
 }
Ejemplo n.º 4
0
 /**
  * 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;
 }
Ejemplo n.º 7
0
 /**
  * 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();
 }
 /**
  * Help searchengines to index and to serve the localized version with
  * rel="alternate"-links in the html-header
  */
 function msls_head()
 {
     $blogs = MslsBlogCollection::instance();
     $mydata = MslsOptions::create();
     foreach ($blogs->get_objects() as $blog) {
         $language = $blog->get_language();
         $url = $mydata->get_current_link();
         $current = $blog->userblog_id == MslsBlogCollection::instance()->get_current_blog_id();
         $title = $blog->get_description();
         if (!$current) {
             switch_to_blog($blog->userblog_id);
             if ('MslsOptions' != get_class($mydata) && (is_null($mydata) || !$mydata->has_value($language))) {
                 restore_current_blog();
                 continue;
             }
             $url = $mydata->get_permalink($language);
             $title = $blog->get_description();
             restore_current_blog();
         }
         if (has_filter('msls_head_hreflang')) {
             /**
              * Overrides the hreflang value
              * @since 0.9.9
              * @param string $language
              */
             $hreflang = (string) apply_filters('msls_head_hreflang', $language);
         } else {
             $hreflang = $blog->get_alpha2();
         }
         printf('<link rel="alternate" hreflang="%s" href="%s" title="%s" />', $hreflang, $url, esc_attr($title));
         echo "\n";
     }
 }
    /**
     * 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;
 }
 /**
  * Get the list of the blogs of the reference user
  * The first available user of the blog will be used if there is no
  * refrence user configured
  * @param MslsOptions $options
  * @return array
  */
 public function get_blogs_of_reference_user(MslsOptions $options)
 {
     $blogs = get_blogs_of_user($options->has_value('reference_user') ? $options->reference_user : current($this->get_users('ID', 1)));
     /**
      * @todo Check if this is still useful
      */
     if (is_array($blogs)) {
         foreach ($blogs as $key => $blog) {
             $blogs[$key]->blog_id = $blog->userblog_id;
         }
     }
     return $blogs;
 }
 /**
  * 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);
 }
Ejemplo n.º 14
0
 /**
  * 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;
 }