/**
  * Hook for event data
  *
  * @since 1.5.4
  *
  * @param MC4WP_Form object $form
  *
  * @return void
  */
 public static function filter__data($form)
 {
     $matches = array();
     preg_match_all('/{:[a-z]{2}}(.*){:}/m', $form->content, $matches);
     $matches = $matches[0];
     /**
      * @see tab Forms from 'Edit Form' page of MailChimp for WP
      * for example: wp-admin/admin.php?page=mailchimp-for-wp-forms&view=edit-form&form_id=%POST_ID%
      */
     foreach ($matches as $match) {
         $form->content = str_replace($match, WPGlobus_Core::text_filter($match, WPGlobus::Config()->language), $form->content);
         $form->post->post_content = str_replace($match, WPGlobus_Core::text_filter($match, WPGlobus::Config()->language), $form->post->post_content);
     }
     /**
      * @see tab Messages from Edit Form page of MailChimp for WP
      */
     foreach ($form->messages as $type => $attrs) {
         if (is_object($form->messages[$type])) {
             $form->messages[$type]->text = WPGlobus_Core::text_filter($attrs->text, WPGlobus::Config()->language);
         } else {
             if (is_string($form->messages[$type])) {
                 /**
                  * We don't need to filter string because in this case $form->messages array contains keys for meta.
                  * @see $form->post_meta:protected
                  * @see file default-form-messages.php
                  *
                  * @since 1.6.1
                  */
                 //$form->messages[ $type ] = WPGlobus_Core::text_filter( $attrs, WPGlobus::Config()->language );
             }
         }
     }
 }
 /**
  * Filter for event data
  * 
  * @since 1.2.2
  * @param array $json
  * @param WP_Post object $event
  * @param array $additional
  *
  * @return array
  */
 public static function filter__events_data($json, $event, $additional)
 {
     if (!empty($json['title'])) {
         $json['title'] = WPGlobus_Core::text_filter($json['title'], WPGlobus::Config()->language);
     }
     return $json;
 }
 /**
  * @since 1.5.4
  */
 public static function action__add_layer_html($slider, $slide)
 {
     /**
      * @todo find how to translate field "params" from "wp_revslider_slides" table
      * @see output.class.php:620
      * @see db.class.php:130
      */
     $link = $slide->getParam('link', '');
     if (!empty($link)) {
         self::$links[$link] = WPGlobus_Core::text_filter($link, WPGlobus::Config()->language);
     }
 }
 /**
  * Load Customize Preview JS
  * Used by hook: 'customize_preview_init'
  * @see 'customize_preview_init'
  */
 public static function action__customize_preview_init()
 {
     wp_enqueue_script('wpglobus-customize-preview', WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-preview' . WPGlobus::SCRIPT_SUFFIX() . '.js', array('jquery', 'customize-preview'), WPGLOBUS_VERSION, true);
     wp_localize_script('wpglobus-customize-preview', 'WPGlobusCustomize', array('version' => WPGLOBUS_VERSION, 'blogname' => WPGlobus_Core::text_filter(get_option('blogname'), WPGlobus::Config()->language), 'blogdescription' => WPGlobus_Core::text_filter(get_option('blogdescription'), WPGlobus::Config()->language)));
 }
 /**
  * Filter the value of an option.
  * @see filter 'option_' . $option in \wp-includes\option.php
  *
  * @since 1.0.0
  *
  * @param mixed $options Value of the option.
  * @return mixed
  */
 function on_translate_option($options)
 {
     if (is_admin() || is_object($options)) {
         return $options;
     }
     /** @todo for next versions with translation individual fields */
     /**
     			$translating_keys = array();
     			
     			foreach( $this->keys as $opt=>$keys ) {
     				
     				$value = $options;
     				$k = 0;
     				for( $i=1; $i < count($keys); $i++ ) {
     				
     					if ( isset($keys[$i]) ) {
     					
     						$value = $value[$keys[$i]];
     						$k = $i;
     					}	
     					
     				}
     
     				if ( $k > 0 && ! is_array($keys[$k]) ) {	
     					$translating_keys[] = $keys[$k]; 
     				}	
     
     			}	*/
     if (is_array($options)) {
         foreach ($options as $key => $value) {
             if (is_array($value)) {
                 $options[$key] = $this->on_translate_option($value);
             } else {
                 $options[$key] = WPGlobus_Core::text_filter($value, WPGlobus::Config()->language);
             }
             /** @todo for next versions with translation individual fields */
             /*
             if ( !empty($translating_keys) && in_array($key, $translating_keys) ) {
             	$options[$key] = WPGlobus_Core::text_filter($value, WPGlobus::Config()->language);	
             }
             */
         }
     } elseif (is_string($options)) {
         $options = WPGlobus_Core::text_filter($options, WPGlobus::Config()->language);
     }
     return $options;
 }
    /**
     * Add language tabs to wpseo metabox ( .wpseo-metabox-tabs-div )
     */
    public static function action__wpseo_tab_content()
    {
        /** @global WP_Post $post */
        global $post;
        $type = empty($post) ? '' : $post->post_type;
        if (WPGlobus::O()->disabled_entity($type)) {
            return;
        }
        $permalink = array();
        if ('publish' == $post->post_status) {
            $permalink['url'] = get_permalink($post->ID);
            $permalink['action'] = 'complete';
        } else {
            $permalink['url'] = trailingslashit(home_url());
            $permalink['action'] = '';
        }
        ?>

		<div id="wpglobus-wpseo-tabs">    <?php 
        /**
         * Use span with attributes 'data' for send to js script ids, names elements for which needs to be set new ids, names with language code.
         */
        ?>
			<span id="wpglobus-wpseo-attr"
			      data-ids="wpseosnippet,wpseosnippet_title,yoast_wpseo_focuskw,focuskwresults,yoast_wpseo_title,yoast_wpseo_title-length-warning,yoast_wpseo_metadesc,yoast_wpseo_metadesc-length,yoast_wpseo_metadesc_notice"
			      data-names="yoast_wpseo_focuskw,yoast_wpseo_title,yoast_wpseo_metadesc"
			      data-qtip="snippetpreviewhelp,focuskwhelp,titlehelp,metadeschelp">
			</span>
			<ul class="wpglobus-wpseo-tabs-list">    <?php 
        $order = 0;
        foreach (WPGlobus::Config()->open_languages as $language) {
            ?>
					<li id="wpseo-link-tab-<?php 
            echo $language;
            ?>
"
					    data-language="<?php 
            echo $language;
            ?>
"
					    data-order="<?php 
            echo $order;
            ?>
"
					    class="wpglobus-wpseo-tab"><a
							href="#wpseo-tab-<?php 
            echo $language;
            ?>
"><?php 
            echo WPGlobus::Config()->en_language_name[$language];
            ?>
</a>
					</li> <?php 
            $order++;
        }
        ?>
			</ul>    <?php 
        $metadesc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true);
        $wpseotitle = get_post_meta($post->ID, '_yoast_wpseo_title', true);
        $focuskw = get_post_meta($post->ID, '_yoast_wpseo_focuskw', true);
        foreach (WPGlobus::Config()->open_languages as $language) {
            $permalink['url'] = WPGlobus_Utils::localize_url($permalink['url'], $language);
            $url = apply_filters('wpglobus_wpseo_permalink', $permalink['url'], $language);
            if ($url != $permalink['url']) {
                /* We accept that user's filter make complete permalink for draft */
                /* @todo maybe need more investigation */
                $permalink['action'] = 'complete';
            } else {
                if ('publish' != $post->post_status) {
                    /**
                     * We cannot get post-name-full to make correct url here ( for draft & auto-draft ). We do it in JS
                     * @see var wpseosnippet_url in wpglobus-wpseo-**.js
                     */
                    $permalink['action'] = '';
                }
            }
            ?>
				<div id="wpseo-tab-<?php 
            echo $language;
            ?>
" class="wpglobus-wpseo-general"
				     data-language="<?php 
            echo $language;
            ?>
"
				     data-url-<?php 
            echo $language;
            ?>
="<?php 
            echo $url;
            ?>
"
				     data-permalink="<?php 
            echo $permalink['action'];
            ?>
"
				     data-metadesc="<?php 
            echo esc_html(WPGlobus_Core::text_filter($metadesc, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-wpseotitle="<?php 
            echo esc_html(WPGlobus_Core::text_filter($wpseotitle, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-focuskw="<?php 
            echo WPGlobus_Core::text_filter($focuskw, $language, WPGlobus::RETURN_EMPTY);
            ?>
">
				</div> <?php 
        }
        ?>
		</div>
	<?php 
    }
 /**
  * @covers WPGlobus_Core::translate_term
  */
 public function test_translate_term()
 {
     /**
      * Term as a string
      */
     $term = '{:en}term EN{:}{:ru}term RU{:}';
     WPGlobus_Core::translate_term($term, 'en');
     self::assertEquals('term EN', $term, 'term');
     $term = '{:en}term EN{:}{:ru}term RU{:}';
     WPGlobus_Core::translate_term($term, 'ru');
     self::assertEquals('term RU', $term, 'term');
     /**
      * Term as an object
      */
     $term_object = new stdClass();
     $term_object->name = '{:en}term name EN{:}{:ru}term name RU{:}';
     $term_object->description = '{:en}term description EN{:}{:ru}term description RU{:}';
     WPGlobus_Core::translate_term($term_object, 'en');
     self::assertEquals('term name EN', $term_object->name, '$term_object->name');
     self::assertEquals('term description EN', $term_object->description, '$term_object->description');
     $term_object->name = '{:en}term name EN{:}{:ru}term name RU{:}';
     $term_object->description = '{:en}term description EN{:}{:ru}term description RU{:}';
     WPGlobus_Core::translate_term($term_object, 'ru');
     self::assertEquals('term name RU', $term_object->name, '$term_object->name');
     self::assertEquals('term description RU', $term_object->description, '$term_object->description');
 }
Example #8
0
}
$opts = $helper->get_box_options($box->ID);
$css = $opts['css'];
$content = $box->post_content;
$data_attrs = '';
$box_class = '';
$width = !empty($css['width']) ? $css['width'] : '';
// run filters on content
$content = apply_filters('spu/popup/content', $content, $box);
// Qtranslate support
if (function_exists('qtrans_useCurrentLanguageIfNotFoundShowAvailable')) {
    $content = qtrans_useCurrentLanguageIfNotFoundShowAvailable($content);
}
// WPGlobus support
if (class_exists('WPGlobus')) {
    $content = WPGlobus_Core::text_filter($content, WPGlobus::Config()->language);
}
do_action('spu/popup/before_popup', $box, $opts, $css);
?>
<style type="text/css">
#spu-<?php 
echo $box->ID;
?>
 {
	background-color: <?php 
echo !empty($css['background_color']) ? esc_attr($css['background_color']) : 'white';
?>
;
	<?php 
if (!empty($css['color'])) {
    ?>
 /**
  * Convert string to text with default language
  *
  * @param mixed $data
  *
  * @return mixed $data
  */
 public static function convert($data)
 {
     if (empty($data)) {
         return '';
     }
     if (is_null($data)) {
         return $data;
     }
     if (is_bool($data)) {
         return $data;
     }
     if (is_float($data)) {
         return $data;
     }
     if (is_int($data)) {
         return $data;
     }
     if (is_string($data)) {
         $data = WPGlobus_Core::text_filter($data, WPGlobus::Config()->default_language, WPGlobus::RETURN_EMPTY);
         /**
          * Set double apostrophe for mySQL UPDATE
          */
         return str_replace("'", "''", $data);
     }
     foreach ($data as $key => $value) {
         if (is_array($data)) {
             /** @noinspection AlterInForeachInspection */
             $data[$key] = self::convert($value);
         } else {
             if (is_object($data)) {
                 $data->{$key} = self::convert($value);
             }
         }
     }
     return $data;
 }
    /**
     * Add language tabs to wpseo metabox ( .wpseo-metabox-tabs-div )
     */
    public static function action__wpseo_tab_content()
    {
        /** @global WP_Post $post */
        global $post;
        $type = empty($post) ? '' : $post->post_type;
        if (WPGlobus::O()->disabled_entity($type)) {
            return;
        }
        $permalink = array();
        if ('publish' === $post->post_status) {
            $permalink['url'] = get_permalink($post->ID);
            $permalink['action'] = 'complete';
        } else {
            $permalink['url'] = trailingslashit(home_url());
            $permalink['action'] = '';
        }
        // #wpseo-metabox-tabs
        /**
         * Array of id to make multilingual
         */
        $ids = array('wpseo-add-keyword-popup', 'wpseosnippet', 'snippet_preview', 'title_container', 'snippet_title', 'snippet_sitename', 'url_container', 'snippet_citeBase', 'snippet_cite', 'meta_container', 'snippet_meta', 'yoast_wpseo_focuskw_text_input', 'yoast_wpseo_focuskw', 'focuskwresults', 'yoast_wpseo_title', 'yoast_wpseo_metadesc', 'yoast_wpseo_linkdex', 'wpseo-pageanalysis', 'yoast-seo-content-analysis', 'YoastSEO-plugin-loading', 'snippet-editor-title', 'snippet-editor-slug', 'snippet-editor-meta-description');
        $names = array('yoast_wpseo_focuskw_text_input', 'yoast_wpseo_focuskw', 'yoast_wpseo_title', 'yoast_wpseo_metadesc', 'yoast_wpseo_linkdex');
        $qtip = array('snippetpreviewhelp', 'focuskw_text_inputhelp', 'pageanalysishelp', 'snippetpreview-help', 'focuskw_text_input-help', 'pageanalysis-help', 'snippetpreview-help-toggle', 'focuskw_text_input-help-toggle', 'pageanalysis-help-toggle');
        ?>

		<div id="wpglobus-wpseo-tabs" style="width:90%; float:right;">    <?php 
        /**
         * Use span with attributes 'data' for send to js script ids, names elements for which needs to be set new ids, names with language code.
         */
        ?>
			<span id="wpglobus-wpseo-attr"
			      data-ids="<?php 
        echo esc_attr(implode(',', $ids));
        ?>
"
			      data-names="<?php 
        echo esc_attr(implode(',', $names));
        ?>
"
			      data-qtip="<?php 
        echo esc_attr(implode(',', $qtip));
        ?>
">
			</span>
			<ul class="wpglobus-wpseo-tabs-list">    <?php 
        $order = 0;
        foreach (WPGlobus::Config()->open_languages as $language) {
            ?>
					<li id="wpseo-link-tab-<?php 
            echo esc_attr($language);
            ?>
"
					    data-language="<?php 
            echo esc_attr($language);
            ?>
"
					    data-order="<?php 
            echo esc_attr($order);
            ?>
"
					    class="wpglobus-wpseo-tab"><a
							href="#wpseo-tab-<?php 
            echo $language;
            ?>
"><?php 
            echo esc_attr(WPGlobus::Config()->en_language_name[$language]);
            ?>
</a>
					</li> <?php 
            $order++;
        }
        ?>
			</ul> <?php 
        /**
         * Get meta description
         */
        $metadesc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true);
        /**
         * Get title
         */
        $wpseotitle = get_post_meta($post->ID, '_yoast_wpseo_title', true);
        /**
         * From Yoast3 focus keyword key is '_yoast_wpseo_focuskw_text_input'
         */
        $focuskw = get_post_meta($post->ID, '_yoast_wpseo_focuskw_text_input', true);
        /**
         * make yoast cite base
         */
        list($yoast_permalink) = get_sample_permalink($post->ID);
        $yoast_permalink = str_replace(array('%pagename%', '%postname%'), '', urldecode($yoast_permalink));
        /**
         *  Set cite does not editable by default
         */
        $cite_contenteditable = 'false';
        foreach (WPGlobus::Config()->open_languages as $language) {
            $yoast_cite_base = WPGlobus_Utils::localize_url($yoast_permalink, $language);
            $yoast_cite_base = str_replace(array('http://', 'https://'), '', $yoast_cite_base);
            $yoast_cite_base = str_replace('//', '/', $yoast_cite_base);
            $permalink['url'] = WPGlobus_Utils::localize_url($permalink['url'], $language);
            $url = apply_filters('wpglobus_wpseo_permalink', $permalink['url'], $language);
            if ($url !== $permalink['url']) {
                /* We accept that user's filter make complete permalink for draft */
                /* @todo maybe need more investigation */
                $permalink['action'] = 'complete';
            } else {
                if ('publish' !== $post->post_status) {
                    /**
                     * We cannot get post-name-full to make correct url here ( for draft & auto-draft ). We do it in JS
                     * @see var wpseosnippet_url in wpglobus-wpseo-**.js
                     */
                    $permalink['action'] = '';
                }
            }
            ?>
				<div id="wpseo-tab-<?php 
            echo $language;
            ?>
" class="wpglobus-wpseo-general"
				     data-language="<?php 
            echo $language;
            ?>
"
				     data-url-<?php 
            echo $language;
            ?>
="<?php 
            echo esc_attr($url);
            ?>
"
				     data-yoast-cite-base="<?php 
            echo esc_attr($yoast_cite_base);
            ?>
"
				     data-cite-contenteditable="<?php 
            echo esc_attr($cite_contenteditable);
            ?>
"
				     data-permalink="<?php 
            echo esc_attr($permalink['action']);
            ?>
"
				     data-metadesc="<?php 
            echo esc_attr(WPGlobus_Core::text_filter($metadesc, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-wpseotitle="<?php 
            echo esc_attr(WPGlobus_Core::text_filter($wpseotitle, $language, WPGlobus::RETURN_EMPTY));
            ?>
"
				     data-focuskw="<?php 
            echo esc_attr(WPGlobus_Core::text_filter($focuskw, $language, WPGlobus::RETURN_EMPTY));
            ?>
">
				</div> <?php 
        }
        ?>
		</div>
		<?php 
    }
 /**
  * Filter @see wp_trim_words
  * @qa    At the /wp-admin/index.php page is a Quick Draft metabox
  *      which shows 3 last post drafts. This filter lets post content in default language.
  * @since 1.0.14
  *
  * @param string $text          The trimmed text.
  * @param int    $num_words     The number of words to trim the text to.
  * @param string $more          An optional string to append to the end of the trimmed text, e.g. &hellip;.
  * @param string $original_text The text before it was trimmed.
  *
  * @return string
  */
 public static function filter__wp_trim_words($text, $num_words, $more, $original_text)
 {
     $text = WPGlobus_Core::text_filter($original_text, WPGlobus::Config()->language);
     if (null === $more) {
         $more = __('&hellip;');
     }
     $text = wp_strip_all_tags($text);
     /* translators: If your word count is based on single characters (East Asian characters),
        enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
     if ('characters' == _x('words', 'word count: words or characters?') && preg_match('/^utf\\-?8$/i', get_option('blog_charset'))) {
         $text = trim(preg_replace("/[\n\r\t ]+/", ' ', $text), ' ');
         preg_match_all('/./u', $text, $words_array);
         $words_array = array_slice($words_array[0], 0, $num_words + 1);
         $sep = '';
     } else {
         $words_array = preg_split("/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY);
         $sep = ' ';
     }
     if (count($words_array) > $num_words) {
         array_pop($words_array);
         $text = implode($sep, $words_array);
         $text = $text . $more;
     } else {
         $text = implode($sep, $words_array);
     }
     return $text;
 }
Example #12
0
    /**
     * Make correct Site Title in admin bar.
     * Make template for Site Title (option blogname)
     * a Tagline (option blogdescription) at options-general.php page.
     * @return void
     */
    public function on_admin_footer()
    {
        $blogname = get_option('blogname');
        $bn = WPGlobus_Core::text_filter($blogname, WPGlobus::Config()->language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
        ?>
		<script type='text/javascript'>
			/* <![CDATA[ */
			jQuery('#wp-admin-bar-site-name a').eq(0).text("<?php 
        echo $bn;
        ?>
");
			/* ]]> */
		</script>
		<?php 
        /**
         * For dialog form
         * @since 1.2.0
         */
        /** @global string $pagenow */
        global $pagenow;
        $page = empty($_GET['page']) ? '' : $_GET['page'];
        // @todo remove after testing
        //if ( WPGlobus_WP::is_pagenow( array( 'post.php', 'widgets.php' ) ) ) {
        if (in_array($pagenow, $this->enabled_pages) || in_array($page, $this->enabled_pages)) {
            /**
             * Output dialog form for window.WPGlobusDialogApp
             */
            ?>
			<div id="wpglobus-dialog-wrapper" class="hidden wpglobus-dialog-wrapper">
				<form id="wpglobus-dialog-form">
					<div id="wpglobus-dialog-tabs" class="wpglobus-dialog-tabs">
						<ul class="wpglobus-dialog-tabs-list">    <?php 
            $order = 0;
            foreach (WPGlobus::Config()->open_languages as $language) {
                ?>
								<li id="dialog-link-tab-<?php 
                echo $language;
                ?>
"
								    data-language="<?php 
                echo $language;
                ?>
"
								    data-order="<?php 
                echo $order;
                ?>
"
								    class="wpglobus-dialog-tab"><a
										href="#dialog-tab-<?php 
                echo $language;
                ?>
"><?php 
                echo WPGlobus::Config()->en_language_name[$language];
                ?>
</a>
								</li> <?php 
                $order++;
            }
            ?>
						</ul> <?php 
            foreach (WPGlobus::Config()->open_languages as $language) {
                ?>
							<div id="dialog-tab-<?php 
                echo $language;
                ?>
" class="wpglobus-dialog-general">
								<textarea name="wpglobus-dialog-<?php 
                echo $language;
                ?>
"
								          id="wpglobus-dialog-<?php 
                echo $language;
                ?>
"
								          class="wpglobus_dialog_textarea textarea"
								          data-language="<?php 
                echo $language;
                ?>
"
								          data-order="save_dialog"></textarea>
							</div> <?php 
            }
            ?>
					</div>
				</form>
			</div>        <?php 
        }
        if (!WPGlobus_WP::is_pagenow('options-general.php')) {
            return;
        }
        $blogdesc = get_option('blogdescription');
        ?>
		<div id="wpglobus-blogname" class="hidden">        <?php 
        foreach (self::Config()->enabled_languages as $language) {
            $return = $language == self::Config()->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY;
            ?>

				<input type="text" class="regular-text wpglobus-blogname wpglobus-translatable"
				       value="<?php 
            echo WPGlobus_Core::text_filter($blogname, $language, $return);
            ?>
"
				       id="blogname-<?php 
            echo $language;
            ?>
" name="blogname-<?php 
            echo $language;
            ?>
"
				       data-language="<?php 
            echo $language;
            ?>
"
				       placeholder="<?php 
            echo self::Config()->en_language_name[$language];
            ?>
"><br />

				<?php 
        }
        ?>
		</div>

		<div id="wpglobus-blogdescription" class="hidden">        <?php 
        foreach (self::Config()->enabled_languages as $language) {
            $return = $language == self::Config()->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY;
            ?>

				<input type="text" class="regular-text wpglobus-blogdesc wpglobus-translatable"
				       value="<?php 
            echo WPGlobus_Core::text_filter($blogdesc, $language, $return);
            ?>
"
				       id="blogdescription-<?php 
            echo $language;
            ?>
" name="blogdescription-<?php 
            echo $language;
            ?>
"
				       data-language="<?php 
            echo $language;
            ?>
"
				       placeholder="<?php 
            echo self::Config()->en_language_name[$language];
            ?>
"><br />

				<?php 
        }
        ?>
		</div>
		<?php 
    }
 /**
  * Extract title depending on current language
  *
  * @scope front
  * @since 1.4.1		 
  *
  * @param string $text
  *
  * @return string
  */
 public static function extract_title($text)
 {
     $tr = '';
     $title = '';
     foreach (WPGlobus::Config()->enabled_languages as $l) {
         $trans = WPGlobus_Core::text_filter($text, $l, WPGlobus::RETURN_EMPTY);
         if ($l == WPGlobus::Config()->language) {
             $title = $trans;
         }
         if (!empty($trans)) {
             $tr = sprintf(WPGlobus::LOCALE_TAG_START, $l) . $trans . WPGlobus::LOCALE_TAG_END;
             $text = str_replace($tr, '', $text);
         }
     }
     return $title . $text;
 }
    function on_admin_footer()
    {
        global $post;
        $permalink = array();
        $permalink['url'] = get_permalink($post->ID);
        $permalink['action'] = 'complete';
        $fields = array();
        /**
         * Keywords
         */
        $fields['aiosp_keywords']['opts'] = array('name' => __('Keywords (comma separated)', 'all_in_one_seo_pack'), 'type' => 'text', 'label' => '', 'help_text' => __('A comma separated list of your most important keywords for this page that will be written as META keywords.', 'all_in_one_seo_pack'));
        $fields['aiosp_keywords']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>';
        $fields['aiosp_keywords']['args'] = array('name' => 'aiosp_keywords', 'attr' => 'placeholder="{{placeholder}}"', 'data' => '', 'classes' => 'class="wpglobus-aioseop_keywords"', 'value' => '', 'prefix' => '', 'options' => $fields['aiosp_keywords']['opts']);
        /**
         * Description
         */
        $fields['aiosp_description']['opts'] = array('name' => __('Description', 'all_in_one_seo_pack'), 'type' => 'textarea', 'count' => true, 'cols' => 80, 'rows' => 2, 'label' => '', 'help_text' => __('The META description for this page. This will override any autogenerated descriptions.', 'all_in_one_seo_pack'), 'placeholder' => '');
        $fields['aiosp_description']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>';
        $fields['aiosp_description']['args'] = array('name' => 'aiosp_description', 'attr' => 'placeholder="{{placeholder}}"', 'data' => ' data-max-size="160" ', 'classes' => 'class="wpglobus_countable wpglobus-aioseop_description"', 'value' => '', 'prefix' => 'wpglobus_', 'suffix' => '', 'options' => $fields['aiosp_description']['opts']);
        /**
         * Title
         */
        $fields['aiosp_title']['opts'] = array('name' => __('Title', 'all_in_one_seo_pack'), 'type' => 'text', 'count' => true, 'size' => 60, 'help_text' => __('A custom title that shows up in the title tag for this page.', 'all_in_one_seo_pack'), 'default' => '', 'initial_options' => '', 'nowrap' => '', 'label' => '', 'save' => true, 'placeholder' => '');
        $fields['aiosp_title']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>';
        $fields['aiosp_title']['args'] = array('name' => 'aiosp_title_{{language}}', 'attr' => 'size="60"  placeholder="{{placeholder}}"', 'data' => ' data-max-size="60" ', 'classes' => 'class="wpglobus_countable wpglobus-aioseop_title"', 'value' => '', 'prefix' => 'wpglobus_', 'suffix' => '', 'options' => $fields['aiosp_title']['opts']);
        /**
         * Snippet must be last in array
         */
        $fields['aiosp_snippet']['opts'] = array('name' => __('Preview Snippet', 'all_in_one_seo_pack'), 'type' => 'html', 'label' => 'top', 'help_text' => __('A preview of what this page might look like in search engine results.', 'all_in_one_seo_pack'), 'nowrap' => 1, 'save' => true, 'prefix' => '');
        $fields['aiosp_snippet']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>';
        $fields['aiosp_snippet']['args'] = array('name' => 'aiosp_snippet', 'attr' => '', 'classes' => 'wpglobus-aioseop_snippet', 'data' => '', 'value' => '<div class="preview_snippet">
							<div id="aioseop_snippet_{{language}}" data-extra-length="{{extra_length}}">
								<h3{{header_style}}><a{{link_style}}><span id="aioseop_snippet_title_{{language}}">%s</span>%s</a></h3>
								<div>
									<div>
										<cite{{cite_style}} id="aioseop_snippet_link_{{language}}">%s</cite>
									</div>
									<span id="aioseop_snippet_description_{{language}}">%s</span>
								</div>
							</div>
						</div>	', 'prefix' => '', 'options' => $fields['aiosp_snippet']['opts']);
        $aio = new WPGlobus_All_in_One_SEO();
        /**
         * @todo check url
         */
        $permalink = array();
        if ('publish' == $post->post_status) {
            $permalink['url'] = get_permalink($post->ID);
            $permalink['action'] = 'complete';
        } else {
            $permalink['url'] = trailingslashit(home_url());
            $permalink['action'] = '';
        }
        /**
         * get keywords for current post
         * use original function for compatibility
         * 
         * "All In One SEO Pack" may to add keywords in addition to any keywords you specify on the Edit Post screen.
         * @see options in Keyword Settings metabox on General Settings page.
         */
        $keywords = $aio->get_all_keywords();
        $keywords = explode(',', $keywords);
        global $wpdb;
        //$keywords_source = array();
        foreach ($keywords as $keyword) {
            $keyword = trim($keyword);
            if (empty($keyword)) {
                $keywords_source[$keyword] = '';
            } else {
                $name = $wpdb->get_var("SELECT name FROM {$wpdb->terms} WHERE name LIKE '%{$keyword}%'");
                if (empty($name)) {
                    $keywords_source[$keyword] = '';
                } else {
                    $keywords_source[$keyword] = $name;
                }
            }
        }
        $aioseop_options = aioseop_get_options();
        switch ($post->post_type) {
            case 'post':
                $title_format = $aioseop_options['aiosp_post_title_format'];
                $title_format = explode(' ', preg_replace('/\\s+/', ' ', $title_format));
                break;
            default:
                $title_format = '';
        }
        /**
         * Get meta title in current language ( WPGlobus::Config()->language )
         * in $aioseop_options['aiosp_post_title_format'] format, usual as %post_title% | %blog_title%
         * Title will be like to "New Post for All in one Seo Pack | WPGlobus" without language marks
         */
        $aiosp_meta_title = $aio->get_aioseop_title($post);
        if (isset($title_format[1])) {
            $aiosp_meta_title = explode($title_format[1], $aiosp_meta_title);
            $aiosp_meta_title = $aiosp_meta_title[0];
        }
        $aiosp_meta_title_source = get_post_meta($post->ID, "_aioseop_title", true);
        $aiosp_meta_title_source = trim($aiosp_meta_title_source);
        if (!WPGlobus_Core::text_filter($aiosp_meta_title_source, WPGlobus::Config()->default_language)) {
            /**
             * Reset meta title for default language
             */
            $aiosp_meta_title = '';
        }
        /**
         * Get meta description in current language ( WPGlobus::Config()->language ) with $aio->get_post_description($post)
         * @see 'localization' filter in wpglobus-controller.php
         */
        // $aiosp_post_description 		= $aio->get_post_description($post);
        /**
         * but we need description with language marks
         */
        $aiosp_meta_description_source = $aiosp_post_description = get_post_meta($post->ID, "_aioseop_description", true);
        $aiosp_meta_description_source = trim($aiosp_meta_description_source);
        /**
         * Get keywords /// title in current language ( WPGlobus::Config()->language )
         */
        $aiosp_keywords_source = get_post_meta($post->ID, "_aioseop_keywords", true);
        $header_style = ' style="padding:8px 0;"';
        $link_style = ' style="color:#12c;cursor: pointer;text-decoration: -moz-use-text-color none solid;font-size:16px;"';
        $cite_style = ' style="color:#093;font-style:normal;"';
        ?>

		<div id="wpglobus-aioseop-tabs" class="hidden wpglobus-hidden">
			<ul class="wpglobus-aioseop-tabs-list">    <?php 
        $order = 0;
        foreach (WPGlobus::Config()->enabled_languages as $language) {
            ?>
					<li id="aioseop-link-tab-<?php 
            echo $language;
            ?>
"
					    data-language="<?php 
            echo $language;
            ?>
"
					    data-order="<?php 
            echo $order;
            ?>
"
					    class="wpglobus-aioseop-tab"><a
							href="#aioseop-tab-<?php 
            echo $language;
            ?>
"><?php 
            echo WPGlobus::Config()->en_language_name[$language];
            ?>
</a>
					</li> <?php 
            $order++;
        }
        ?>
			</ul>    		<div style="clear:both;margin-bottom:20px;"></div><?php 
        foreach (WPGlobus::Config()->enabled_languages as $language) {
            if ($language == WPGlobus::Config()->default_language) {
                $return = WPGlobus::RETURN_IN_DEFAULT_LANGUAGE;
                if ($language == WPGlobus::Config()->language) {
                    $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE));
                } else {
                    /**
                     * Get title from source ( post meta key '_aioseop_title' )
                     */
                    $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title_source, $language, WPGlobus::RETURN_EMPTY));
                }
            } else {
                $return = WPGlobus::RETURN_EMPTY;
                $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title, $language, WPGlobus::RETURN_EMPTY));
                if (empty($aiosp_title)) {
                    /**
                     * Get title from source ( post meta key '_aioseop_title' )
                     */
                    $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title_source, $language, WPGlobus::RETURN_EMPTY));
                }
            }
            $url = WPGlobus_Utils::localize_url($permalink['url'], $language);
            /**
             * Set snippet title
             */
            $aiosp_placeholder_title = WPGlobus_Core::text_filter($post->post_title, $language, $return);
            $aiosp_snippet_title = empty($aiosp_title) ? $aiosp_placeholder_title : $aiosp_title;
            /**
             * Set meta description
             */
            $aiosp_meta_description = WPGlobus_Core::text_filter($aiosp_meta_description_source, $language, $return);
            if (empty($aiosp_meta_description)) {
                $description = '';
                if (empty($aioseop_options["aiosp_skip_excerpt"])) {
                    $description = $aio->trim_excerpt_without_filters_full_length(WPGlobus_Core::text_filter($post->post_excerpt, $language, WPGlobus::RETURN_EMPTY));
                }
                if (!$description && $aioseop_options["aiosp_generate_descriptions"]) {
                    $content = WPGlobus_Core::text_filter($post->post_content, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
                    if (!empty($aioseop_options["aiosp_run_shortcodes"])) {
                        $content = do_shortcode($content);
                    }
                    $content = wp_strip_all_tags($content);
                    $description = $aio->trim_excerpt_without_filters($content);
                }
                $aiosp_description = '';
                $aiosp_placeholder_description = $description;
                $aiosp_snippet_description = $aiosp_placeholder_description;
            } else {
                $aiosp_description = WPGlobus_Core::text_filter($aiosp_post_description, $language, $return);
                $aiosp_placeholder_description = $aiosp_description;
                $aiosp_snippet_description = $aiosp_description;
            }
            /**
             * Make All in one Seo Pack tabs
             */
            ?>
				<div id="aioseop-tab-<?php 
            echo $language;
            ?>
" class="wpglobus-aioseop-general" data-language="<?php 
            echo $language;
            ?>
"
				     data-url-<?php 
            echo $language;
            ?>
="<?php 
            echo $url;
            ?>
">			<?php 
            $r = '';
            foreach ($fields as $name => $data) {
                if ('aiosp_snippet' == $name) {
                    $snippet_title_2 = '';
                    if (isset($title_format[2]) && false !== strpos($title_format[2], '%blog_title%')) {
                        $snippet_title_2 = ' ' . $title_format[1] . ' ' . WPGlobus_Core::text_filter(get_option('blogname'), $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
                    }
                    $data['args']['value'] = str_replace('{{language}}', $language, $data['args']['value']);
                    $data['args']['value'] = str_replace('{{header_style}}', $header_style, $data['args']['value']);
                    $data['args']['value'] = str_replace('{{link_style}}', $link_style, $data['args']['value']);
                    $data['args']['value'] = str_replace('{{cite_style}}', $cite_style, $data['args']['value']);
                    $data['args']['value'] = sprintf($data['args']['value'], $aiosp_snippet_title, $snippet_title_2, WPGlobus_Utils::localize_url($permalink['url'], $language), $aiosp_snippet_description);
                    $data['args']['value'] = str_replace('{{extra_length}}', mb_strlen($snippet_title_2), $data['args']['value']);
                } else {
                    if ('aiosp_title' == $name) {
                        $data['args']['name'] = str_replace('{{language}}', $language, $data['args']['name']);
                        $data['args']['attr'] = str_replace('{{placeholder}}', $aiosp_placeholder_title, $data['args']['attr']);
                        $data['args']['prefix'] = 'wpglobus_title_';
                        $data['args']['suffix'] = '_' . $language;
                        $data['args']['data'] = $data['args']['data'] . ' data-field-count="wpglobus_title_length_' . $language . '" data-extra-element="aioseop_snippet_' . $language . '" data-language="' . $language . '"';
                        $data['args']['value'] = $aiosp_title;
                    } else {
                        if ('aiosp_description' == $name) {
                            $data['args']['attr'] = str_replace('{{placeholder}}', $aiosp_placeholder_description, $data['args']['attr']);
                            $data['args']['prefix'] = 'wpglobus_description_';
                            $data['args']['suffix'] = '_' . $language;
                            $data['args']['name'] = $data['args']['name'] . '_' . $language;
                            $data['args']['data'] = $data['args']['data'] . ' data-field-count="wpglobus_description_length_' . $language . '" data-language="' . $language . '"';
                            $data['args']['value'] = $aiosp_description;
                        } else {
                            if ('aiosp_keywords' == $name) {
                                $placeholders = array();
                                foreach ($keywords as $keyword) {
                                    if (empty($keywords_source[$keyword])) {
                                        continue;
                                    }
                                    /**
                                     * @todo maybe better use WPGlobus::RETURN_EMPTY, in this case we will be have tags in native language only
                                     */
                                    $placeholders[] = WPGlobus_Core::text_filter($keywords_source[$keyword], $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE);
                                }
                                $placeholder = implode(',', $placeholders);
                                $data['args']['attr'] = str_replace('{{placeholder}}', $placeholder, $data['args']['attr']);
                                $data['args']['data'] = ' data-language="' . $language . '" ';
                                $data['args']['name'] = $data['args']['name'] . '_' . $language;
                                $data['args']['data'] = ' data-language="' . $language . '" ';
                                $data['args']['value'] = WPGlobus_Core::text_filter($aiosp_keywords_source, $language, WPGlobus::RETURN_EMPTY);
                            }
                        }
                    }
                }
                $r = $aio->wpg_get_option_row($name, $data['opts'], $data['args'], $language) . $r;
            }
            echo $r;
            ?>
				</div> <!-- .wpglobus-aioseop-general -->	<?php 
        }
        // end foreach
        ?>
			<!-- <hr /> -->
		</div> <!-- #wpglobus-aioseop-tabs -->

		<?php 
    }