From 3b83bcd736962d56e17b4bc76338939882de2a2e Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Fri, 18 Mar 2016 11:27:01 -0700 Subject: [PATCH 01/29] Minor cleanup --- .../transifex-live-integration-settings-page.php | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/includes/admin/transifex-live-integration-settings-page.php b/includes/admin/transifex-live-integration-settings-page.php index 22d73c66..ceff26b2 100644 --- a/includes/admin/transifex-live-integration-settings-page.php +++ b/includes/admin/transifex-live-integration-settings-page.php @@ -53,17 +53,7 @@ static function options_page() { $transifex_settings = self::load_transifex_settings(); $transifex_settings_settings = $transifex_settings['settings']; - /* $transifex_settings_array = [ ]; - $transifex_settings_settings = ''; - foreach ($transifex_settings as $key => $value) { - $arr = [ ]; - $arr['value'] = $value; - $arr['id'] = 'transifex_live_transifex_settings_' . $key; - $arr['name'] = 'transifex_live_transifex_settings[' . $key . ']'; - array_push( $transifex_settings_array, $arr ); - } - */ - Plugin_Debug::logTrace( $settings['language_map'] ); + ob_start(); checked( $settings['rewrite_option_all'], 1 ); $checked_rewrite_option_all = ob_get_clean(); @@ -120,7 +110,7 @@ static function options_page() { echo $content; } - public function admin_init_hook() { + static public function admin_init_hook() { Plugin_Debug::logTrace(); if ( isset( $_POST['transifex_live_nonce'] ) && wp_verify_nonce( $_POST['transifex_live_nonce'], 'transifex_live_settings' ) ) { self::update_settings( self::sanitize_settings( $_POST ) ); @@ -194,7 +184,7 @@ static public function update_settings( $settings ) { /** * Callback function that sets notifications in WP admin pages */ - public function admin_notices_hook() { + static public function admin_notices_hook() { $is_admin_page_notice = false; $is_admin_dashboard_notice = false; From 8755a0390fc185e49bde8880d194743ebb45f6ef Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 23 Mar 2016 14:10:27 -0700 Subject: [PATCH 02/29] Added prerender features --- .../transifex-live-integration-defaults.php | 5 +- .../transifex-live-integration-prerender.php | 67 +++++++++++++++++++ readme.txt | 2 +- tests/unit/PrerenderCheckTest.php | 57 ++++++++++++++++ transifex-live-integration.php | 17 +++-- 5 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 includes/transifex-live-integration-prerender.php create mode 100644 tests/unit/PrerenderCheckTest.php diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index db217a86..61332f97 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -81,7 +81,10 @@ static function settings() { 'languages' => '', 'hreflang' => false, 'url_options' => 1, - 'subdomain_pattern' => '' + 'subdomain_pattern' => '', + 'whitelist_crawlers' => + 'googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0.|developers.google.com\/\+\/web\/snippet|slackbot|vkShare|w3c_validator|redditbot|applebot|whatsapp|flipboard', + 'generic_bot_types' => 'bot|crawl|slurp|spider' ); } diff --git a/includes/transifex-live-integration-prerender.php b/includes/transifex-live-integration-prerender.php new file mode 100644 index 00000000..89234554 --- /dev/null +++ b/includes/transifex-live-integration-prerender.php @@ -0,0 +1,67 @@ + 0) : false; + } + + static public function is_bot_type( $agent, $bot_types ) { + return !empty( $agent ) ? (preg_match( "/{$bot_types}/", $agent ) > 0) : false; + } + + static public function prerender_check( $req_user_agent, $req_escaped_fragment, + $bot_types, $whitelist_names ) { + $bool = self::is_bot_type( $req_user_agent, $bot_types ); + + $bool = ($bool) ? true : self::is_whitelist_name( $req_user_agent, $whitelist_names ); + + $bool = ($bool) ? true : ($req_escaped_fragment) ? true : false; + + $bool = (strpos( strtolower( $req_user_agent ), 'prerender' )) ? false : $bool; + return $bool; + } + + static function create_prerender( $settings ) { + Plugin_Debug::logTrace(); + $req_user_agent = $_SERVER["HTTP_USER_AGENT"]; + $req_escaped_fragment = (isset( $_GET['_escaped_fragment_'] )) ? $_GET['_escaped_fragment_'] : false; + + $check = self::prerender_check( $req_user_agent, $req_escaped_fragment, $settings['generic_bot_types'], $settings['whitelist_crawlers'] ); + return ($check) ? new Transifex_Live_Integration_Prerender( ) : false; + } + + function callback( $buffer ) { + + global $wp; + $output = $buffer; + $page_url = home_url( $wp->request ); + $page_url = rtrim( $page_url, '/' ) . '/'; + + $ch = curl_init(); + curl_setopt( $ch, CURLOPT_URL, 'http://192.168.99.100:32769/' . $page_url ); + curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); + $result = curl_exec( $ch ); + if ( $result === false ) { + $error = curl_error( $ch ); + // write to db?? + } else { + $output = $result; + } + curl_close( $ch ); + return $output; + } + + function after_setup_theme_hook() { + ob_start( [$this, 'callback' ] ); + } + + function shutdown_hook() { + ob_end_flush(); + } + +} diff --git a/readme.txt b/readme.txt index 1e819c2c..de300d02 100755 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Contributors: txmatthew, ThemeBoy, brooksx Tags: transifex, translate, translations, localize, localise, localization, localisation, multilingual, t9n, l10n, i18n, language, switcher, live, translation, translator Requires at least: 3.5.2 Tested up to: 4.4.2 -Stable tag: 1.2.4 +Stable tag: 1.2.5 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php new file mode 100644 index 00000000..b59af59c --- /dev/null +++ b/tests/unit/PrerenderCheckTest.php @@ -0,0 +1,57 @@ +data = [[ + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ], [ + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 Prerender (+https://github.com/prerender/prerender)', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ], [ + 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ], [ + 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Prerender (+https://github.com/prerender/prerender)', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ], [ + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', + 'fragment' => '/some-frament', + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ] + ]; + } + + public function testMe() { + foreach ($this->data as $i) { + $result = Transifex_Live_Integration_Prerender::prerender_check( $i['agent'], $i['fragment'], $i['bot_types'], $i['whitelist'] ); + + //eval(\Psy\sh()); + $this->assertEquals( $i['result'], $result ); + } + } + +} diff --git a/transifex-live-integration.php b/transifex-live-integration.php index 6c87d9fa..c6c199e6 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -5,13 +5,13 @@ * * @link http://docs.transifex.com/developer/integrations/wordpress * @package TransifexLiveIntegration - * @version 1.2.4 + * @version 1.2.5 * * @wordpress-plugin * Plugin Name: Transifex Live Translation Plugin * Plugin URI: http://docs.transifex.com/developer/integrations/wordpress * Description: Translate your WordPress website or blog without the usual complex setups. - * Version: 1.2.4 + * Version: 1.2.5 * License: GNU General Public License * License URI: http://www.gnu.org/licenses/gpl-2.0.txt * Text Domain: transifex-live-integration @@ -63,7 +63,7 @@ define( 'LANG_PARAM', 'lang' ); require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/plugin-debug.php'; -$version = '1.2.4'; +$version = '1.2.5'; $debug = new Plugin_Debug(); /** @@ -92,7 +92,7 @@ static function do_plugin( $is_admin, $version ) { } add_filter( 'query_vars', array( 'Transifex_Live_Integration', 'query_vars_hook' ) ); - + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-subdomain.php'; $subdomain = Transifex_Live_Integration_Subdomain::create_subdomains( $settings ); @@ -198,6 +198,15 @@ static function do_plugin( $is_admin, $version ) { load_plugin_textdomain( TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, false, TRANSIFEX_LIVE_INTEGRATION_LANGUAGES_PATH ); } else { + + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-prerender.php'; + $prerender = Transifex_Live_Integration_Prerender::create_prerender($settings); + ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); + if ( $prerender ) { + add_action( 'wp_head', [ $prerender, 'wp_head_hook' ] ); + add_action('after_setup_theme', [ $prerender, 'after_setup_theme_hook']); + add_action('shutdown', [ $prerender, 'shutdown_hook']); + } include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-hreflang.php'; From e16a0502403f89983e4d1d779b12de380815d6d3 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Thu, 24 Mar 2016 15:57:16 -0700 Subject: [PATCH 03/29] Updating prerender to heroku test site --- includes/transifex-live-integration-prerender.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/transifex-live-integration-prerender.php b/includes/transifex-live-integration-prerender.php index 89234554..a2c111bb 100644 --- a/includes/transifex-live-integration-prerender.php +++ b/includes/transifex-live-integration-prerender.php @@ -43,7 +43,7 @@ function callback( $buffer ) { $page_url = rtrim( $page_url, '/' ) . '/'; $ch = curl_init(); - curl_setopt( $ch, CURLOPT_URL, 'http://192.168.99.100:32769/' . $page_url ); + curl_setopt( $ch, CURLOPT_URL, 'http://secure-refuge-63401.herokuapp.com/' . $page_url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); $result = curl_exec( $ch ); if ( $result === false ) { From bc4b68e047e378aae4e6e56387c3c45ecb5eb747 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Thu, 24 Mar 2016 16:14:30 -0700 Subject: [PATCH 04/29] Updated tests --- tests/unit/PrerenderCheckTest.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php index b59af59c..4d6c7b50 100644 --- a/tests/unit/PrerenderCheckTest.php +++ b/tests/unit/PrerenderCheckTest.php @@ -11,31 +11,37 @@ protected function setUp() { $settings = Transifex_Live_Integration_Defaults::settings(); $whitelist = $settings['whitelist_crawlers']; $bot_types = $settings['generic_bot_types']; - $this->data = [[ + $this->data = [[ // Standard Chrome Agent 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false - ], [ + ],[ // Standard Firefox Agent + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0) Gecko/20100101 Firefox/46.0', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ], [ // Prerender added 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 Prerender (+https://github.com/prerender/prerender)', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false - ], [ + ], [ // Standard Googlebot 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true - ], [ + ], [ // Googlebot with prerender added 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Prerender (+https://github.com/prerender/prerender)', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false - ], [ + ], [ // some fragment 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', 'fragment' => '/some-frament', 'bot_types' => $bot_types, From acb30bd50a92c318ffed321e052d56d1c2628b0e Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Thu, 24 Mar 2016 16:14:30 -0700 Subject: [PATCH 05/29] refactored bot logic --- ...ansifex-live-integration-settings-page.php | 2 +- ...fex-live-integration-settings-template.php | 2 ++ includes/plugin-debug.php | 2 +- .../transifex-live-integration-defaults.php | 2 +- .../transifex-live-integration-prerender.php | 24 ++++++++++++------- tests/unit/PrerenderCheckTest.php | 23 ++++++++++++++---- 6 files changed, 38 insertions(+), 17 deletions(-) diff --git a/includes/admin/transifex-live-integration-settings-page.php b/includes/admin/transifex-live-integration-settings-page.php index ceff26b2..3244edb8 100644 --- a/includes/admin/transifex-live-integration-settings-page.php +++ b/includes/admin/transifex-live-integration-settings-page.php @@ -230,7 +230,7 @@ static public function sanitize_settings( $settings ) { $settings['transifex_live_settings']['subdomain_pattern'] = ( isset( $settings['transifex_live_settings']['subdomain_pattern'] )) ? sanitize_text_field( $settings['transifex_live_settings']['subdomain_pattern'] ) : ''; $settings['transifex_live_settings']['languages_regex'] = ( isset( $settings['transifex_live_settings']['languages_regex'] )) ? sanitize_text_field( $settings['transifex_live_settings']['languages_regex'] ) : ''; $settings['transifex_live_settings']['transifex_languages'] = ( isset( $settings['transifex_live_settings']['transifex_languages'] )) ? sanitize_text_field( stripslashes( $settings['transifex_live_settings']['transifex_languages'] ) ) : ''; - $settings['transifex_live_settings']['subdomain_pattern'] = ( isset( $settings['transifex_live_settings']['language_map'] )) ? sanitize_text_field( $settings['transifex_live_settings']['language_map'] ) : ''; + $settings['transifex_live_settings']['language_map'] = ( isset( $settings['transifex_live_settings']['language_map'] )) ? sanitize_text_field( $settings['transifex_live_settings']['language_map'] ) : ''; $settings['transifex_live_transifex_settings']['settings'] = ( isset( $settings['transifex_live_transifex_settings']['settings'] )) ? sanitize_text_field( stripslashes( $settings['transifex_live_transifex_settings']['settings'] ) ) : ''; diff --git a/includes/admin/transifex-live-integration-settings-template.php b/includes/admin/transifex-live-integration-settings-template.php index 5528ae86..8cffffac 100644 --- a/includes/admin/transifex-live-integration-settings-template.php +++ b/includes/admin/transifex-live-integration-settings-template.php @@ -85,6 +85,8 @@ + +

diff --git a/includes/plugin-debug.php b/includes/plugin-debug.php index eb16b5a8..60729ff0 100644 --- a/includes/plugin-debug.php +++ b/includes/plugin-debug.php @@ -18,7 +18,7 @@ class Plugin_Debug { * Define the core functionality of the plugin. */ public function __construct() { - self::$debug_mode = false; + self::$debug_mode = true; $this->logTrace(); // Check to see if plugin is in debug mode diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index 61332f97..586fb7c4 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -83,7 +83,7 @@ static function settings() { 'url_options' => 1, 'subdomain_pattern' => '', 'whitelist_crawlers' => - 'googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0.|developers.google.com\/\+\/web\/snippet|slackbot|vkShare|w3c_validator|redditbot|applebot|whatsapp|flipboard', + 'googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard', 'generic_bot_types' => 'bot|crawl|slurp|spider' ); } diff --git a/includes/transifex-live-integration-prerender.php b/includes/transifex-live-integration-prerender.php index a2c111bb..ede421f7 100644 --- a/includes/transifex-live-integration-prerender.php +++ b/includes/transifex-live-integration-prerender.php @@ -7,28 +7,34 @@ public function __construct() { } static public function is_whitelist_name( $agent, $whitelist_names ) { - return !empty( $agent ) ? (preg_match( "/{$whitelist_names}/", $agent ) > 0) : false; + Plugin_Debug::logTrace(); + return !empty( $agent ) ? (preg_match( "/{$whitelist_names}/i", $agent ) > 0) : false; } static public function is_bot_type( $agent, $bot_types ) { - return !empty( $agent ) ? (preg_match( "/{$bot_types}/", $agent ) > 0) : false; + Plugin_Debug::logTrace(); + return !empty( $agent ) ? (preg_match( "/{$bot_types}/i", $agent ) > 0) : false; } static public function prerender_check( $req_user_agent, $req_escaped_fragment, $bot_types, $whitelist_names ) { - $bool = self::is_bot_type( $req_user_agent, $bot_types ); - - $bool = ($bool) ? true : self::is_whitelist_name( $req_user_agent, $whitelist_names ); + Plugin_Debug::logTrace(); + if (strpos( $req_user_agent , 'prerender' )) { + return false; + } + $bot_types = addcslashes ($bot_types,'/'); + $whitelist_names = addcslashes ($whitelist_names, '/'); - $bool = ($bool) ? true : ($req_escaped_fragment) ? true : false; + $is_bot = self::is_bot_type( $req_user_agent, $bot_types ); + $is_whitelisted = ($is_bot) ? true : self::is_whitelist_name( $req_user_agent, $whitelist_names ); + $prerender_ok = ($is_whitelisted) ? true : ($req_escaped_fragment) ? true : false; - $bool = (strpos( strtolower( $req_user_agent ), 'prerender' )) ? false : $bool; - return $bool; + return $prerender_ok; } static function create_prerender( $settings ) { Plugin_Debug::logTrace(); - $req_user_agent = $_SERVER["HTTP_USER_AGENT"]; + $req_user_agent = (isset($_SERVER['HTTP_USER_AGENT']))?strtolower( $_SERVER['HTTP_USER_AGENT']):false; $req_escaped_fragment = (isset( $_GET['_escaped_fragment_'] )) ? $_GET['_escaped_fragment_'] : false; $check = self::prerender_check( $req_user_agent, $req_escaped_fragment, $settings['generic_bot_types'], $settings['whitelist_crawlers'] ); diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php index b59af59c..30c78e58 100644 --- a/tests/unit/PrerenderCheckTest.php +++ b/tests/unit/PrerenderCheckTest.php @@ -11,31 +11,44 @@ protected function setUp() { $settings = Transifex_Live_Integration_Defaults::settings(); $whitelist = $settings['whitelist_crawlers']; $bot_types = $settings['generic_bot_types']; - $this->data = [[ + $this->data = [[ // Standard Chrome Agent 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false - ], [ + ],[ // Standard Firefox Agent + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0) Gecko/20100101 Firefox/46.0', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ], [ // Prerender added 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 Prerender (+https://github.com/prerender/prerender)', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false - ], [ + ], [ // Standard Googlebot 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true - ], [ + ], [ // Googlebot with prerender added 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Prerender (+https://github.com/prerender/prerender)', 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false - ], [ + ],[ // Slackbot with + 'agent' => 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ], + [ // some fragment 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', 'fragment' => '/some-frament', 'bot_types' => $bot_types, From dd772227041b342faa188ba6baf6ea3fc063324d Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Fri, 25 Mar 2016 13:00:30 -0700 Subject: [PATCH 06/29] fixed test --- tests/unit/PrerenderCheckTest.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php index 39e8d802..3c786775 100644 --- a/tests/unit/PrerenderCheckTest.php +++ b/tests/unit/PrerenderCheckTest.php @@ -41,9 +41,7 @@ protected function setUp() { 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false - ], [ // some fragment -======= - ],[ // Slackbot with + ], [ // Slackbot with 'agent' => 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)', 'fragment' => NULL, 'bot_types' => $bot_types, From 8a5015ccc59a53bd0c125d3d5b254a243f4ee2f3 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Fri, 25 Mar 2016 16:43:32 -0700 Subject: [PATCH 07/29] Added 'slackbot' --- tests/unit/PrerenderCheckTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php index 3c786775..1736cf62 100644 --- a/tests/unit/PrerenderCheckTest.php +++ b/tests/unit/PrerenderCheckTest.php @@ -47,6 +47,12 @@ protected function setUp() { 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true + ],[ // Slackbot with + 'agent' => 'slackbot', + 'fragment' => NULL, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true ], [ // some fragment 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', From ca96c53063da858519be283ec256b38c3ffb5f13 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Fri, 25 Mar 2016 14:14:19 -0700 Subject: [PATCH 08/29] Added prerender header, and 404 status meta --- curl_and_get_header.php | 34 + includes/plugin-debug.php | 2 +- .../transifex-live-integration-prerender.php | 56 +- test | 737 ++++++++++++++++++ tests/unit/PrerenderCheckTest.php | 2 +- transifex-live-integration.php | 12 +- 6 files changed, 825 insertions(+), 18 deletions(-) create mode 100644 curl_and_get_header.php create mode 100644 test diff --git a/curl_and_get_header.php b/curl_and_get_header.php new file mode 100644 index 00000000..393258d5 --- /dev/null +++ b/curl_and_get_header.php @@ -0,0 +1,34 @@ + \ No newline at end of file diff --git a/includes/plugin-debug.php b/includes/plugin-debug.php index eb16b5a8..60729ff0 100644 --- a/includes/plugin-debug.php +++ b/includes/plugin-debug.php @@ -18,7 +18,7 @@ class Plugin_Debug { * Define the core functionality of the plugin. */ public function __construct() { - self::$debug_mode = false; + self::$debug_mode = true; $this->logTrace(); // Check to see if plugin is in debug mode diff --git a/includes/transifex-live-integration-prerender.php b/includes/transifex-live-integration-prerender.php index ede421f7..e4054240 100644 --- a/includes/transifex-live-integration-prerender.php +++ b/includes/transifex-live-integration-prerender.php @@ -16,25 +16,49 @@ static public function is_bot_type( $agent, $bot_types ) { return !empty( $agent ) ? (preg_match( "/{$bot_types}/i", $agent ) > 0) : false; } + static public function is_prerender_req() { + $req_user_agent = (isset( $_SERVER['HTTP_USER_AGENT'] )) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : false; + $ret = (strpos( $req_user_agent, 'prerender' )) ? true : false; + Plugin_Debug::logTrace( $req_user_agent ); + Plugin_Debug::logTrace( $ret ); + return $ret; + } + + function wp_head_hook() { + Plugin_Debug::logTrace(); + $status = ''; + if ( is_404() ) { + $status .= <<< STATUS +\n +STATUS; + } + echo $status; + } + + function wp_headers_hook( $headers ) { + Plugin_Debug::logTrace(); + $headers['X-PreRender-Req'] = 'TRUE'; + return $headers; + } + static public function prerender_check( $req_user_agent, $req_escaped_fragment, $bot_types, $whitelist_names ) { Plugin_Debug::logTrace(); - if (strpos( $req_user_agent , 'prerender' )) { - return false; - } - $bot_types = addcslashes ($bot_types,'/'); - $whitelist_names = addcslashes ($whitelist_names, '/'); - $is_bot = self::is_bot_type( $req_user_agent, $bot_types ); - $is_whitelisted = ($is_bot) ? true : self::is_whitelist_name( $req_user_agent, $whitelist_names ); - $prerender_ok = ($is_whitelisted) ? true : ($req_escaped_fragment) ? true : false; + $bot_types_escaped = addcslashes( $bot_types, '/' ); + $whitelist_names_escaped = addcslashes( $whitelist_names, '/' ); + + $is_bot = self::is_bot_type( $req_user_agent, $bot_types_escaped ); + $is_whitelisted = ($is_bot) ? true : self::is_whitelist_name( $req_user_agent, $whitelist_names_escaped ); + $has_escaped_fragment = ($is_whitelisted) ? true : ($req_escaped_fragment) ? true : false; + $prerender_ok = ($has_escaped_fragment) ? true : self::is_prerender_req(); return $prerender_ok; } static function create_prerender( $settings ) { Plugin_Debug::logTrace(); - $req_user_agent = (isset($_SERVER['HTTP_USER_AGENT']))?strtolower( $_SERVER['HTTP_USER_AGENT']):false; + $req_user_agent = (isset( $_SERVER['HTTP_USER_AGENT'] )) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : false; $req_escaped_fragment = (isset( $_GET['_escaped_fragment_'] )) ? $_GET['_escaped_fragment_'] : false; $check = self::prerender_check( $req_user_agent, $req_escaped_fragment, $settings['generic_bot_types'], $settings['whitelist_crawlers'] ); @@ -42,7 +66,6 @@ static function create_prerender( $settings ) { } function callback( $buffer ) { - global $wp; $output = $buffer; $page_url = home_url( $wp->request ); @@ -51,12 +74,19 @@ function callback( $buffer ) { $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, 'http://secure-refuge-63401.herokuapp.com/' . $page_url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); - $result = curl_exec( $ch ); - if ( $result === false ) { + curl_setopt( $ch, CURLOPT_VERBOSE, 1 ); + curl_setopt( $ch, CURLOPT_HEADER, 1 ); + $response = curl_exec( $ch ); + $header_size = curl_getinfo( $ch, CURLINFO_HEADER_SIZE ); + $header = substr( $response, 0, $header_size ); + $body = substr( $response, $header_size ); + if ( $response === false ) { $error = curl_error( $ch ); // write to db?? } else { - $output = $result; + if ( strpos( $header, 'X-PreRender-Req: TRUE' ) ) { + $output = $body; + } } curl_close( $ch ); return $output; diff --git a/test b/test new file mode 100644 index 00000000..772c1ad0 --- /dev/null +++ b/test @@ -0,0 +1,737 @@ + + + +Hello world! - Test-WP-PluginTest-WP-Plugin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + +
+ +
+
+ + + + + + + +
+ + +

+ One thought on “Hello world!

+ + +
    +
  1. + + +
  2. +
+ + + + +
+

Leave a Reply

+

Your email address will not be published. Required fields are marked *

+ +

+

+ +

+
+ +
+ + +
+
+ + +
+ + +
+ +
+

Plugin: Plugin Debug Mode Output

+*
File: transifex-live-integration.php - Line #: 67
Class: Plugin_Debug - Function: __construct
Type: method call - Parameters: Array +( +) +

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +

**
File: transifex-live-integration.php - Line #: 98
Class: Transifex_Live_Integration_Subdomain - Function: create_subdomains
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + +) +

**
File: transifex-live-integration.php - Line #: 98
Class: Transifex_Live_Integration_Subdomain - Function: create_subdomains
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + +) +
settings[url_options] not subdomain
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
subdomains skipped
**
File: transifex-live-integration.php - Line #: 107
Class: Transifex_Live_Integration_Rewrite - Function: create_rewrite
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + + [1] => Array + ( + [add_rewrites_post] => 0 + [add_rewrites_page] => 0 + [add_rewrites_author] => 0 + [add_rewrites_date] => 0 + [add_rewrites_tag] => 0 + [add_rewrites_category] => 0 + [add_rewrites_search] => 0 + [add_rewrites_root] => 0 + [add_rewrites_reverse_template_links] => 0 + [add_rewrites_permalink_tag] => 0 + ) + +) +

**
File: transifex-live-integration.php - Line #: 107
Class: Transifex_Live_Integration_Rewrite - Function: create_rewrite
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + + [1] => Array + ( + [add_rewrites_post] => 0 + [add_rewrites_page] => 0 + [add_rewrites_author] => 0 + [add_rewrites_date] => 0 + [add_rewrites_tag] => 0 + [add_rewrites_category] => 0 + [add_rewrites_search] => 0 + [add_rewrites_root] => 0 + [add_rewrites_reverse_template_links] => 0 + [add_rewrites_permalink_tag] => 0 + ) + +) +
settings[languages_regex] not set
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
rewrite skipped
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
adding admin bar actions
**
File: transifex-live-integration.php - Line #: 203
Class: Transifex_Live_Integration_Prerender - Function: create_prerender
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + +) +

**
File: transifex-live-integration.php - Line #: 203
Class: Transifex_Live_Integration_Prerender - Function: create_prerender
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + +) +
user_agent
**
File: transifex-live-integration.php - Line #: 203
Class: Transifex_Live_Integration_Prerender - Function: create_prerender
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + +) +
Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34 Prerender (+https://github.com/prerender/prerender)
**
File: transifex-live-integration-prerender.php - Line #: 55
Class: Transifex_Live_Integration_Prerender - Function: prerender_check
Type: static method call - Parameters: Array +( + [0] => mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender) + [1] => + [2] => bot|crawl|slurp|spider + [3] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard +) +

**
File: transifex-live-integration-prerender.php - Line #: 40
Class: Transifex_Live_Integration_Prerender - Function: is_bot_type
Type: static method call - Parameters: Array +( + [0] => mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender) + [1] => bot|crawl|slurp|spider +) +

**
File: transifex-live-integration-prerender.php - Line #: 41
Class: Transifex_Live_Integration_Prerender - Function: is_whitelist_name
Type: static method call - Parameters: Array +( + [0] => mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender) + [1] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0.|developers.google.com\/+\/web\/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard +) +

**
File: transifex-live-integration-prerender.php - Line #: 43
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array +( +) +
mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender)
**
File: transifex-live-integration-prerender.php - Line #: 43
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array +( +) +
1
**
File: transifex-live-integration-prerender.php - Line #: 56
Class: Transifex_Live_Integration_Prerender - Function: __construct
Type: method call - Parameters: Array +( +) +

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
prerender created
**
File: transifex-live-integration.php - Line #: 206
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array +( +) +
mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender)
**
File: transifex-live-integration.php - Line #: 206
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array +( +) +
1
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
prerender request detected
**
File: transifex-live-integration.php - Line #: 218
Class: Transifex_Live_Integration_Hreflang - Function: __construct
Type: method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + + [1] => 1 +) +

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
Severity: 8 File: transifex-live-integration-hreflang.php Line: 29: Undefined offset: 0
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
Severity: 8 File: transifex-live-integration-hreflang.php Line: 31: Undefined index: tokenized_url
**
File: transifex-live-integration.php - Line #: 219
Class: Transifex_Live_Integration_Hreflang - Function: ok_to_add
Type: method call - Parameters: Array +( +) +
settings[api_key] not set...skipping hreflang
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
skipping hreflang
**
File: transifex-live-integration.php - Line #: 220
Class: Transifex_Live_Integration_Hreflang - Function: ok_to_add
Type: method call - Parameters: Array +( +) +
settings[api_key] not set...skipping hreflang
**
File: transifex-live-integration.php - Line #: 225
Class: Transifex_Live_Integration_Javascript - Function: __construct
Type: method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + + [1] => +) +

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
Severity: 8 File: transifex-live-integration-javascript.php Line: 35: Undefined offset: 0
**
File: transifex-live-integration.php - Line #: 229
Class: Transifex_Live_Integration_Picker - Function: create_picker
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + +) +

**
File: transifex-live-integration.php - Line #: 229
Class: Transifex_Live_Integration_Picker - Function: create_picker
Type: static method call - Parameters: Array +( + [0] => Array + ( + [api_key] => + [previous_api_key] => + [raw_transifex_languages] => + [transifex_languages] => + [language_lookup] => + [language_map] => [] + [languages_regex] => + [rewrite_option_all] => 0 + [enable_custom_urls] => 0 + [urls] => Array + ( + [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform + [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin + ) + + [enable_language_urls] => + [enable_picker] => + [add_language_rewrites] => none selected + [source_language] => + [languages] => + [hreflang] => + [url_options] => 1 + [subdomain_pattern] => + [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard + [generic_bot_types] => bot|crawl|slurp|spider + ) + +) +
settings[enable_picker] not truthy
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array +( + [0] => + [1] => 1.2.5 +) +
picker skipped
**

Class: Transifex_Live_Integration - Function: query_vars_hook
Type: static method call - Parameters: Array +( + [0] => Array + ( + [0] => m + [1] => p + [2] => posts + [3] => w + [4] => cat + [5] => withcomments + [6] => withoutcomments + [7] => s + [8] => search + [9] => exact + [10] => sentence + [11] => calendar + [12] => page + [13] => paged + [14] => more + [15] => tb + [16] => pb + [17] => author + [18] => order + [19] => orderby + [20] => year + [21] => monthnum + [22] => day + [23] => hour + [24] => minute + [25] => second + [26] => name + [27] => category_name + [28] => tag + [29] => feed + [30] => author_name + [31] => static + [32] => pagename + [33] => page_id + [34] => error + [35] => comments_popup + [36] => attachment + [37] => attachment_id + [38] => subpost + [39] => subpost_id + [40] => preview + [41] => robots + [42] => taxonomy + [43] => term + [44] => cpage + [45] => post_type + [46] => embed + [47] => post_format + [48] => sitemap + [49] => sitemap_n + [50] => xsl + [51] => rest_route + ) + +) +

**

Class: Transifex_Live_Integration_Javascript - Function: render
Type: method call - Parameters: Array +( + [0] => +) +

**

Class: Transifex_Live_Integration_Javascript - Function: render
Type: method call - Parameters: Array +( + [0] => +) +
skipped detectlang override
*
+ + + + \ No newline at end of file diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php index 1736cf62..3289bdee 100644 --- a/tests/unit/PrerenderCheckTest.php +++ b/tests/unit/PrerenderCheckTest.php @@ -40,7 +40,7 @@ protected function setUp() { 'fragment' => NULL, 'bot_types' => $bot_types, 'whitelist' => $whitelist, - 'result' => false + 'result' => true ], [ // Slackbot with 'agent' => 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)', 'fragment' => NULL, diff --git a/transifex-live-integration.php b/transifex-live-integration.php index c6c199e6..8b975daf 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -203,9 +203,15 @@ static function do_plugin( $is_admin, $version ) { $prerender = Transifex_Live_Integration_Prerender::create_prerender($settings); ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); if ( $prerender ) { - add_action( 'wp_head', [ $prerender, 'wp_head_hook' ] ); - add_action('after_setup_theme', [ $prerender, 'after_setup_theme_hook']); - add_action('shutdown', [ $prerender, 'shutdown_hook']); + if (Transifex_Live_Integration_Prerender::is_prerender_req() ) { + Plugin_Debug::logTrace( 'prerender request detected' ); + add_filter( 'wp_headers', [$prerender, 'wp_headers_hook'] ); + add_action( 'wp_head', [$prerender, 'wp_head_hook'], 1 ); + } else { + Plugin_Debug::logTrace( 'invoke prerender call' ); + add_action('after_setup_theme', [ $prerender, 'after_setup_theme_hook']); + add_action('shutdown', [ $prerender, 'shutdown_hook']); + } } From 90cd268b3e050c823250f0c01d7ebfc897085765 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Mon, 28 Mar 2016 14:21:51 -0700 Subject: [PATCH 09/29] version 1.3.0 spring cleaning refactor added prerender settings and initial ui --- Gruntfile.js | 314 +++--- curl_and_get_header.php | 34 - hreflang_languages.php | 33 - ...ransifex-live-integration-action-links.php | 15 - ...sifex-live-integration-admin-template.php} | 25 +- ...transifex-live-integration-admin-util.php} | 28 +- ...p => transifex-live-integration-admin.php} | 22 +- includes/common/plugin-debug.php | 124 +++ .../transifex-live-integration-common.php | 132 +++ ...-live-integration-static-files-handler.php | 94 ++ .../transifex-live-integration-validators.php | 81 ++ .../transifex-live-integration-hreflang.php | 31 +- .../transifex-live-integration-javascript.php | 90 ++ .../lib/transifex-live-integration-picker.php | 50 + .../transifex-live-integration-prerender.php | 88 ++ .../transifex-live-integration-rewrite.php | 505 ++++++++++ .../transifex-live-integration-subdomain.php | 82 ++ ...ive-integration-generate-rewrite-rules.php | 334 +++++++ includes/plugin-debug.php | 114 --- .../transifex-live-integration-defaults.php | 157 +-- ...ive-integration-generate-rewrite-rules.php | 324 ------ .../transifex-live-integration-javascript.php | 78 -- includes/transifex-live-integration-lib.php | 114 --- .../transifex-live-integration-picker.php | 76 -- .../transifex-live-integration-prerender.php | 103 -- .../transifex-live-integration-rewrite.php | 480 --------- ...nsifex-live-integration-static-factory.php | 122 +++ ...-live-integration-static-files-handler.php | 87 -- .../transifex-live-integration-subdomain.php | 81 -- includes/transifex-live-integration-util.php | 52 + .../transifex-live-integration-validators.php | 74 -- ...ransifex-live-integration-settings-page.js | 932 +++++++++--------- ...fex-live-integration-transifex-settings.js | 38 +- language_mapper.php | 52 - parse_transifex_languages.php | 46 - readme.md | 10 +- readme.txt | 8 +- regex_string_serial-deserial.php | 19 - reverse_hard_link.php | 41 - ...ansifex-live-integration-settings-page.css | 80 +- test | 737 -------------- tests/_support/AcceptanceTester.php | 3 +- tests/_support/FunctionalTester.php | 3 +- tests/_support/UnitTester.php | 3 +- tests/unit/GenerateLanguageUrlMapTest.php | 67 +- tests/unit/GenerateTokenizedUrlTest.php | 61 +- tests/unit/PrerenderCheckTest.php | 139 +-- tests/unit/ReverseHardLinkTest.php | 16 +- transifex-live-integration.php | 277 +++--- uninstall.php | 14 +- 50 files changed, 2917 insertions(+), 3573 deletions(-) delete mode 100644 curl_and_get_header.php delete mode 100644 hreflang_languages.php delete mode 100644 includes/admin/transifex-live-integration-action-links.php rename includes/admin/{transifex-live-integration-settings-template.php => transifex-live-integration-admin-template.php} (87%) rename includes/admin/{transifex-live-integration-settings-util.php => transifex-live-integration-admin-util.php} (68%) rename includes/admin/{transifex-live-integration-settings-page.php => transifex-live-integration-admin.php} (94%) create mode 100644 includes/common/plugin-debug.php create mode 100644 includes/common/transifex-live-integration-common.php create mode 100644 includes/common/transifex-live-integration-static-files-handler.php create mode 100644 includes/common/transifex-live-integration-validators.php rename includes/{ => lib}/transifex-live-integration-hreflang.php (69%) create mode 100644 includes/lib/transifex-live-integration-javascript.php create mode 100644 includes/lib/transifex-live-integration-picker.php create mode 100644 includes/lib/transifex-live-integration-prerender.php create mode 100644 includes/lib/transifex-live-integration-rewrite.php create mode 100644 includes/lib/transifex-live-integration-subdomain.php create mode 100644 includes/override/transifex-live-integration-generate-rewrite-rules.php delete mode 100644 includes/plugin-debug.php delete mode 100644 includes/transifex-live-integration-generate-rewrite-rules.php delete mode 100644 includes/transifex-live-integration-javascript.php delete mode 100644 includes/transifex-live-integration-lib.php delete mode 100644 includes/transifex-live-integration-picker.php delete mode 100644 includes/transifex-live-integration-prerender.php delete mode 100644 includes/transifex-live-integration-rewrite.php create mode 100644 includes/transifex-live-integration-static-factory.php delete mode 100644 includes/transifex-live-integration-static-files-handler.php delete mode 100644 includes/transifex-live-integration-subdomain.php create mode 100644 includes/transifex-live-integration-util.php delete mode 100644 includes/transifex-live-integration-validators.php delete mode 100644 language_mapper.php delete mode 100644 parse_transifex_languages.php delete mode 100644 regex_string_serial-deserial.php delete mode 100644 reverse_hard_link.php delete mode 100644 test diff --git a/Gruntfile.js b/Gruntfile.js index 4f22aacf..e59445ed 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,173 +1,175 @@ module.exports = function(grunt) { - // Load multiple grunt tasks using globbing patterns - require('load-grunt-tasks')(grunt); + // Load multiple grunt tasks using globbing patterns + require('load-grunt-tasks')(grunt); - // Project configuration. - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), + // Project configuration. + grunt.initConfig( + { + pkg: grunt.file.readJSON('package.json'), - makepot: { - target: { - options: { - domainPath: '/languages', // Where to save the POT file. - exclude: ['build/.*'], - mainFile: 'transifex-live-integration.php', // Main project file. - potFilename: 'transifex-live-integration.pot', // Name of the POT file. - potHeaders: { - poedit: true, // Includes common Poedit headers. - 'x-poedit-keywordslist': true // Include a list of all possible gettext functions. - }, - type: 'wp-plugin', // Type of project (wp-plugin or wp-theme). - updateTimestamp: true, // Whether the POT-Creation-Date should be updated without other changes. - updatePoFiles: true, // Whether to update PO files in the same directory as the POT file. - processPot: function(pot, options) { - pot.headers['report-msgid-bugs-to'] = 'http://wp-translations.org/'; - pot.headers['last-translator'] = 'WP-Translations '; - pot.headers['language-team'] = 'WP-Translations (http://wp-translations.org/)'; - pot.headers['language'] = 'en_US'; - var translation, // Exclude meta data from pot. - excluded_meta = [ - 'Plugin Name of the plugin/theme', - 'Plugin URI of the plugin/theme', - 'Author of the plugin/theme', - 'Author URI of the plugin/theme' - ]; - for (translation in pot.translations['']) { - if ('undefined' !== typeof pot.translations[''][translation].comments.extracted) { - if (excluded_meta.indexOf(pot.translations[''][translation].comments.extracted) >= 0) { - console.log('Excluded meta: ' + pot.translations[''][translation].comments.extracted); - delete pot.translations[''][translation]; - } - } - } - return pot; - } - } - } - }, + makepot: { + target: { + options: { + domainPath: '/languages', // Where to save the POT file. + exclude: ['build/.*'], + mainFile: 'transifex-live-integration.php', // Main project file. + potFilename: 'transifex-live-integration.pot', // Name of the POT file. + potHeaders: { + poedit: true, // Includes common Poedit headers. + 'x-poedit-keywordslist': true // Include a list of all possible gettext functions. + }, + type: 'wp-plugin', // Type of project (wp-plugin or wp-theme). + updateTimestamp: true, // Whether the POT-Creation-Date should be updated without other changes. + updatePoFiles: true, // Whether to update PO files in the same directory as the POT file. + processPot: function(pot, options) { + pot.headers['report-msgid-bugs-to'] = 'http://wp-translations.org/'; + pot.headers['last-translator'] = 'WP-Translations '; + pot.headers['language-team'] = 'WP-Translations (http://wp-translations.org/)'; + pot.headers['language'] = 'en_US'; + var translation, // Exclude meta data from pot. + excluded_meta = [ + 'Plugin Name of the plugin/theme', + 'Plugin URI of the plugin/theme', + 'Author of the plugin/theme', + 'Author URI of the plugin/theme' + ]; + for (translation in pot.translations['']) { + if ('undefined' !== typeof pot.translations[''][translation].comments.extracted) { + if (excluded_meta.indexOf(pot.translations[''][translation].comments.extracted) >= 0) { + console.log('Excluded meta: ' + pot.translations[''][translation].comments.extracted); + delete pot.translations[''][translation]; + } + } + } + return pot; + } + } + } + }, - checktextdomain: { - options:{ - text_domain: 'transifex-live-integration', //Name of Your textdomain - create_report_file: true, - keywords: [ - '__:1,2d', - '_e:1,2d', - '_x:1,2c,3d', - 'esc_html__:1,2d', - 'esc_html_e:1,2d', - 'esc_html_x:1,2c,3d', - 'esc_attr__:1,2d', - 'esc_attr_e:1,2d', - 'esc_attr_x:1,2c,3d', - '_ex:1,2c,3d', - '_n:1,2,4d', - '_nx:1,2,4c,5d', - '_n_noop:1,2,3d', - '_nx_noop:1,2,3c,4d', - ' __ngettext:1,2,3d', - '__ngettext_noop:1,2,3d', - '_c:1,2d', - '_nc:1,2,4c,5d' - ] - }, - files: { - src: [ - '**/*.php', // Include all files - '!node_modules/**', // Exclude node_modules/ - '!build/.*'// Exclude build/ - ], - expand: true - } - }, + checktextdomain: { + options:{ + text_domain: 'transifex-live-integration', //Name of Your textdomain + create_report_file: true, + keywords: [ + '__:1,2d', + '_e:1,2d', + '_x:1,2c,3d', + 'esc_html__:1,2d', + 'esc_html_e:1,2d', + 'esc_html_x:1,2c,3d', + 'esc_attr__:1,2d', + 'esc_attr_e:1,2d', + 'esc_attr_x:1,2c,3d', + '_ex:1,2c,3d', + '_n:1,2,4d', + '_nx:1,2,4c,5d', + '_n_noop:1,2,3d', + '_nx_noop:1,2,3c,4d', + ' __ngettext:1,2,3d', + '__ngettext_noop:1,2,3d', + '_c:1,2d', + '_nc:1,2,4c,5d' + ] + }, + files: { + src: [ + '**/*.php', // Include all files + '!node_modules/**', // Exclude node_modules/ + '!build/.*'// Exclude build/ + ], + expand: true + } + }, - exec: { - npmUpdate: { - command: 'npm update' - }, - txpull: { // Pull Transifex translation - grunt exec:txpull - cmd: 'tx pull -a -f --minimum-perc=100' // Change the percentage with --minimum-perc=yourvalue - }, - txpush_s: { // Push pot to Transifex - grunt exec:txpush_s - cmd: 'tx push -s' - } - }, + exec: { + npmUpdate: { + command: 'npm update' + }, + txpull: { // Pull Transifex translation - grunt exec:txpull + cmd: 'tx pull -a -f --minimum-perc=100' // Change the percentage with --minimum-perc=yourvalue + }, + txpush_s: { // Push pot to Transifex - grunt exec:txpush_s + cmd: 'tx push -s' + } + }, - dirs: { - lang: 'languages' // It should be languages or lang - }, + dirs: { + lang: 'languages' // It should be languages or lang + }, - potomo: { - dist: { - options: { - poDel: false // Set to true if you want to erase the .po - }, - files: [{ - expand: true, - cwd: '<%= dirs.lang %>', - src: ['*.po'], - dest: '<%= dirs.lang %>', - ext: '.mo', - nonull: true - }] - } - }, + potomo: { + dist: { + options: { + poDel: false // Set to true if you want to erase the .po + }, + files: [{ + expand: true, + cwd: '<%= dirs.lang %>', + src: ['*.po'], + dest: '<%= dirs.lang %>', + ext: '.mo', + nonull: true + }] + } + }, - // Clean up build directory - clean: { - main: ['build/<%= pkg.name %>'] - }, + // Clean up build directory + clean: { + main: ['build/<%= pkg.name %>'] + }, - // Copy the theme into the build directory - copy: { - main: { - src: [ - '**', - '!node_modules/**', - '!build/**', - '!.git/**', - '!Gruntfile.js', - '!package.json', - '!.gitignore', - '!.gitmodules', - '!.tx/**', - '!**/Gruntfile.js', - '!**/package.json', - '!**/README.md', - '!**/*~' - ], - dest: 'build/<%= pkg.name %>/' - } - }, + // Copy the theme into the build directory + copy: { + main: { + src: [ + '**', + '!node_modules/**', + '!build/**', + '!.git/**', + '!Gruntfile.js', + '!package.json', + '!.gitignore', + '!.gitmodules', + '!.tx/**', + '!**/Gruntfile.js', + '!**/package.json', + '!**/README.md', + '!**/*~' + ], + dest: 'build/<%= pkg.name %>/' + } + }, - // Compress build directory into .zip and -.zip - compress: { - main: { - options: { - mode: 'zip', - archive: './build/<%= pkg.name %>.zip' - }, - expand: true, - cwd: 'build/<%= pkg.name %>/', - src: ['**/*'], - dest: '<%= pkg.name %>/' - } - } - }); + // Compress build directory into .zip and -.zip + compress: { + main: { + options: { + mode: 'zip', + archive: './build/<%= pkg.name %>.zip' + }, + expand: true, + cwd: 'build/<%= pkg.name %>/', + src: ['**/*'], + dest: '<%= pkg.name %>/' + } + } + } + ); - // Default task. - grunt makepot - grunt.registerTask('default', 'makepot'); + // Default task. - grunt makepot + grunt.registerTask('default', 'makepot'); - // Checktextdomain and makepot task(s) - grunt.registerTask('go-pot', ['checktextdomain', 'makepot', 'potomo']); + // Checktextdomain and makepot task(s) + grunt.registerTask('go-pot', ['checktextdomain', 'makepot', 'potomo']); - // Makepot and push it on Transifex task(s). - grunt.registerTask('tx-push', ['makepot', 'exec:txpush_s']); + // Makepot and push it on Transifex task(s). + grunt.registerTask('tx-push', ['makepot', 'exec:txpush_s']); - // Pull from Transifex and create .mo task(s). - grunt.registerTask('tx-pull', ['exec:txpull', 'potomo']); + // Pull from Transifex and create .mo task(s). + grunt.registerTask('tx-pull', ['exec:txpull', 'potomo']); - // Build task(s). - grunt.registerTask('build', ['clean', 'copy', 'compress']); + // Build task(s). + grunt.registerTask('build', ['clean', 'copy', 'compress']); }; diff --git a/curl_and_get_header.php b/curl_and_get_header.php deleted file mode 100644 index 393258d5..00000000 --- a/curl_and_get_header.php +++ /dev/null @@ -1,34 +0,0 @@ - \ No newline at end of file diff --git a/hreflang_languages.php b/hreflang_languages.php deleted file mode 100644 index 4beb0592..00000000 --- a/hreflang_languages.php +++ /dev/null @@ -1,33 +0,0 @@ - "zh_CN","de_DE" => "de_DE","ko" => "ko"]; - - $ret = []; - $tokenized_url = str_replace( $lang , "%lang%", $raw_url, $count); - if ($count !== 0) { - foreach ($languages as $language) { - $arr = []; - $hreflang_code = $languages_map[$language]; - $language_url = str_replace( '%lang%', $hreflang_code, $tokenized_url ); - $arr['href'] = $language_url; - $arr['hreflang'] = $hreflang_code; - array_push($ret,$arr); - } - } - eval(\Psy\sh()); - // $this->assertEquals($i['expected_source'],$source_string); - // $this->assertEquals(ksort($i['expected_languages']),ksort($language_array)); -} - -} - -?> \ No newline at end of file diff --git a/includes/admin/transifex-live-integration-action-links.php b/includes/admin/transifex-live-integration-action-links.php deleted file mode 100644 index 6b93d16d..00000000 --- a/includes/admin/transifex-live-integration-action-links.php +++ /dev/null @@ -1,15 +0,0 @@ - TRANSIFEX_LIVE_INTEGRATION_NAME ], admin_url( 'options-general.php' ) ); - $settings_text = __( 'Settings', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); - $settings_link = <<$settings_text -SETTINGS; - return array_merge( [ $settings_link ], $links ); - } - -} diff --git a/includes/admin/transifex-live-integration-settings-template.php b/includes/admin/transifex-live-integration-admin-template.php similarity index 87% rename from includes/admin/transifex-live-integration-settings-template.php rename to includes/admin/transifex-live-integration-admin-template.php index 8cffffac..d0203645 100644 --- a/includes/admin/transifex-live-integration-settings-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -25,6 +25,24 @@ +

SEO Prerendering

+ + + + + + + +
+ />Enable Prerender + + +

+ + +

+
+

Advanced SEO Settings

This plugin lets you set unique, language/region-specific URLs for your site and tells search engines what language a page is in. This is done by creating new language subdirectories through the plugin, or by pointing to existing language subdomains. In all cases, the plugin will add the Transifex Live JavaScript snippet to your site.

@@ -70,14 +88,13 @@ - +
>All

Having trouble getting language/region-specific URLs working? Check out our additional troubleshooting tips!

- @@ -85,8 +102,8 @@ - - + +

diff --git a/includes/admin/transifex-live-integration-settings-util.php b/includes/admin/transifex-live-integration-admin-util.php similarity index 68% rename from includes/admin/transifex-live-integration-settings-util.php rename to includes/admin/transifex-live-integration-admin-util.php index 8b419f5f..9e98b4a1 100644 --- a/includes/admin/transifex-live-integration-settings-util.php +++ b/includes/admin/transifex-live-integration-admin-util.php @@ -1,6 +1,6 @@ TRANSIFEX_LIVE_INTEGRATION_NAME ], admin_url( 'options-general.php' ) ); + $settings_text = __( 'Settings', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); + $settings_link = <<$settings_text +SETTINGS; + return array_merge( [ $settings_link ], $links ); + } + + /** + * Callback function for admin_menu action + */ + static function admin_menu_hook() + { + Plugin_Debug::logTrace(); + add_options_page('Transifex Live', 'Transifex Live', 'manage_options', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, [ 'Transifex_Live_Integration_Admin', 'options_page' ] ); + } } diff --git a/includes/admin/transifex-live-integration-settings-page.php b/includes/admin/transifex-live-integration-admin.php similarity index 94% rename from includes/admin/transifex-live-integration-settings-page.php rename to includes/admin/transifex-live-integration-admin.php index 3244edb8..a12b0b3c 100644 --- a/includes/admin/transifex-live-integration-settings-page.php +++ b/includes/admin/transifex-live-integration-admin.php @@ -1,8 +1,8 @@ logTrace(); + + // Check to see if plugin is in debug mode + // If not, skip all display handlers and custom error handling + if (self::$debug_mode ) { + set_error_handler(array( 'Plugin_Debug', 'logError' )); + // Check for admin level if not surpress all debug output hooks + //TODO: Reimplement admin check + if (true ) { + add_action('wp_footer', array( 'Plugin_Debug', 'printLog' )); + add_action('admin_footer', array( 'Plugin_Debug', 'printLog' )); + } // End if Wordpress user admin check + } // End if debug mode check + } + + public static function logTrace( $message = null ) + { + if (self::$debug_mode ) { + if (!is_array(self::$calls) ) { + self::$calls = array(); + } + $call = debug_backtrace(false); + $call = (isset($call[1])) ? $call[1] : $call[0]; + $call['message'] = $message; + array_push(self::$calls, $call); + } + } + + public static function logError( $severity, $message, $filename, $lineno ) + { + if (self::$debug_mode ) { + if (!is_array(self::$calls) ) { + self::$calls = array(); + } + if (strpos($filename, 'transifex-live-integration') ) { + $call = debug_backtrace(false); + $call = (isset($call[2])) ? $call[2] : $call[1]; + $call['message'] = 'Severity: '.$severity. ' File: ' . basename($filename) . ' Line: ' . $lineno . ': ' . $message; + array_push(self::$calls, $call); + } + } + } + + public function printLog() + { + if (self::$debug_mode ) { + echo ('

' . "\n"); + echo ('

Plugin: Plugin Debug Mode Output

' . "\n"); + array_walk(self::$calls, array( 'Plugin_Debug', 'printLogCallback' )); + echo "
"; + } + } + + static function printLogCallback( $value, $key ) + { + if (self::$debug_mode ) { + echo "*
"; + if (array_key_exists('file', $value) ) { + echo ("File: " . basename($value['file']) . " - "); + } + if (array_key_exists('line', $value) ) { + echo ('Line #: ' . $value['line'] . ''); + } + echo "
"; + if (array_key_exists('class', $value) ) { + echo ("Class: " . $value['class'] . " - "); + } + if (array_key_exists('function', $value) ) { + echo ('Function: ' . $value['function'] . ''); + } + echo "
"; + if (array_key_exists('type', $value) ) { + echo ("Type: "); + switch ($value['type']) { + case "::": + echo ("static method call"); + break; + case "->" : + echo ("method call"); + break; + default : + echo ("function call"); + } + echo(" - "); + } + if (array_key_exists('args', $value) ) { + echo ('Parameters: '); + print_r($value['args']); + echo (''); + } + echo "
"; + if (array_key_exists('message', $value) && $value['message'] != null ) { + echo (''); + } + print_r($value['message']); + echo (''); + echo "
*"; + } + } + +} \ No newline at end of file diff --git a/includes/common/transifex-live-integration-common.php b/includes/common/transifex-live-integration-common.php new file mode 100644 index 00000000..dd6a7ba9 --- /dev/null +++ b/includes/common/transifex-live-integration-common.php @@ -0,0 +1,132 @@ + $v) { + $unslashed_url = str_replace('%lang%', $v, $trimmed_tokenized_url) . '/' . $trimmed_url; + $ret[$k] = rtrim($unslashed_url, '/') . '/'; + } + + return $ret; + } + + /** + * This file is part of the array_column library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey (http://benramsey.com) + * @license http://opensource.org/licenses/MIT MIT + */ + + /** + * Returns the values from a single column of the input array, identified by + * the $columnKey. + * + * Optionally, you may provide an $indexKey to index the values in the returned + * array by the values from the $indexKey column in the input array. + * + * @param array $input A multi-dimensional array (record set) from which to pull a column of values. + * a column of values. + * @param mixed $columnKey The column of values to return. This value may be the + * integer key of the column you wish to retrieve, or it + * may be the string key name for an associative array. + * @param mixed $indexKey (Optional.) The column to use as the index/keys for the returned array. This value may be the integer key of the column, or it may be the string key name. + * the returned array. This value may be the integer key + * of the column, or it may be the string key name. + * @return array + */ + static public function array_column( $input = null, $columnKey = null, + $indexKey = null + ) { + // Using func_get_args() in order to check for proper number of + // parameters and trigger errors exactly as the built-in array_column() + // does in PHP 5.5. + $argc = func_num_args(); + $params = func_get_args(); + + if ($argc < 2 ) { + trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING); + return null; + } + + if (!is_array($params[0]) ) { + trigger_error( + 'array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given', E_USER_WARNING + ); + return null; + } + + if (!is_int($params[1]) && !is_float($params[1]) && !is_string($params[1]) && $params[1] !== null && !(is_object($params[1]) && method_exists($params[1], '__toString')) + ) { + trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING); + return false; + } + + if (isset($params[2]) && !is_int($params[2]) && !is_float($params[2]) && !is_string($params[2]) && !(is_object($params[2]) && method_exists($params[2], '__toString')) + ) { + trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING); + return false; + } + + $paramsInput = $params[0]; + $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null; + + $paramsIndexKey = null; + if (isset($params[2]) ) { + if (is_float($params[2]) || is_int($params[2]) ) { + $paramsIndexKey = (int) $params[2]; + } else { + $paramsIndexKey = (string) $params[2]; + } + } + + $resultArray = array(); + + foreach ($paramsInput as $row) { + $key = $value = null; + $keySet = $valueSet = false; + + if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row) ) { + $keySet = true; + $key = (string) $row[$paramsIndexKey]; + } + + if ($paramsColumnKey === null ) { + $valueSet = true; + $value = $row; + } elseif (is_array($row) && array_key_exists($paramsColumnKey, $row) ) { + $valueSet = true; + $value = $row[$paramsColumnKey]; + } + + if ($valueSet ) { + if ($keySet ) { + $resultArray[$key] = $value; + } else { + $resultArray[] = $value; + } + } + } + + return $resultArray; + } + +} diff --git a/includes/common/transifex-live-integration-static-files-handler.php b/includes/common/transifex-live-integration-static-files-handler.php new file mode 100644 index 00000000..4b14c8f1 --- /dev/null +++ b/includes/common/transifex-live-integration-static-files-handler.php @@ -0,0 +1,94 @@ +css_files = array(); + $this->js_files = array(); + } + + /** + * Adds a single css file to plugin + * @param string $version Current plugin version. + * @param string $url Url to static file (can be external). + * @param string $handle Identifier if it might be used previously, otherwise generate a random one. + * @return array Associatative array in a format that can be enqueued. + */ + public function add_css_file( $version, $url, $handle = null ) + { + if (null === $handle ) { + $length = 4; + $randomString = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $length); + $handle = TRANSIFEX_LIVE_INTEGRATION_NAME . $randomString; + } + $arr = [ 'version' => $version, 'url' => $url, 'handle' => $handle ]; + return array_push($this->css_files, $arr); + } + + /** + * Adds a single js file to plugin + * @param string $version Current plugin version. + * @param string $url Url to static file (can be external). + * @param string $handle Identifier if it might be used previously, otherwise generate a random one. + * @return array Associatative array in a format that can be enqueued. + */ + public function add_js_file( $version, $url, $handle = null ) + { + if (null === $handle ) { + $length = 4; + $randomString = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $length); + $handle = TRANSIFEX_LIVE_INTEGRATION_NAME . $randomString; + } + $arr = [ 'version' => $version, 'url' => $url, 'handle' => $handle ]; + return array_push($this->js_files, $arr); + } + + /** + * Renders css through enqueue + */ + public function render_css() + { + Plugin_Debug::logTrace(); + foreach ($this->css_files as $file) { + wp_enqueue_style($file['handle'], $file['url'], false, $file['version'], 'all'); + } + } + + /** + * Renders js through enqueue + */ + public function render_js() + { + Plugin_Debug::logTrace(); + foreach ($this->js_files as $file) { + wp_enqueue_script($file['handle'], $file['url'], false, $file['version'], 'all'); + } + } + +} diff --git a/includes/common/transifex-live-integration-validators.php b/includes/common/transifex-live-integration-validators.php new file mode 100644 index 00000000..4064e878 --- /dev/null +++ b/includes/common/transifex-live-integration-validators.php @@ -0,0 +1,81 @@ + substr_count($link, '/') ) { //Note: this will return for home urls wo the trailing slash + Plugin_Debug::logTrace('failed validator slash count'); + return false; + } + return true; + } + + static function is_rules_ok( $rules ) + { + if (!self::is_ok($rules) ) { + Plugin_Debug::logTrace('failed validator'); + return false; + } + if (!is_array($rules) ) { + Plugin_Debug::logTrace('failed validator is_array'); + return false; + } + return true; + } + + static function is_permalink_ok( $permalink ) + { + return self::is_ok($permalink); + } + + static function is_query_ok( $query ) + { + if (!self::is_ok($query) ) { + Plugin_Debug::logTrace('failed validator'); + return false; + } + $query_vars = (isset($query->query_vars)) ? $query->query_vars : false; + if (!self::is_query_vars_ok($query_vars) ) { + Plugin_Debug::logTrace('failed validator query vars'); + return false; + } + return true; + } + + static function is_query_vars_ok( $query_vars ) + { + return self::is_ok($query_vars); + } + + static function is_ok( $o ) + { + if (!$o ) { + Plugin_Debug::logTrace('failed validator is_ok false'); + return false; + } + if (!isset($o) ) { + Plugin_Debug::logTrace('failed validator is_ok not isset'); + return false; + } + if (empty($o) ) { + Plugin_Debug::logTrace('failed validator is_ok empty'); + return false; + } + return true; + } + +} diff --git a/includes/transifex-live-integration-hreflang.php b/includes/lib/transifex-live-integration-hreflang.php similarity index 69% rename from includes/transifex-live-integration-hreflang.php rename to includes/lib/transifex-live-integration-hreflang.php index abee77c8..585255a3 100644 --- a/includes/transifex-live-integration-hreflang.php +++ b/includes/lib/transifex-live-integration-hreflang.php @@ -1,5 +1,5 @@ tokenized_url = $settings['tokenized_url']; } - public function ok_to_add() { - if ( !isset( $this->settings['api_key'] ) ) { - Plugin_Debug::logTrace( 'settings[api_key] not set...skipping hreflang' ); - return false; - } - if ( !isset( $this->settings['languages'] ) ) { - Plugin_Debug::logTrace( 'settings[languages] not set...skipping hreflang' ); - return false; - } - if ( $this->settings['url_options'] === '1' ) { - Plugin_Debug::logTrace( 'settings[url_options] set to none...skipping hreflang' ); - return false; - } - if ( !isset( $this->settings['tokenized_url'] ) ) { - Plugin_Debug::logTrace( 'settings[tokenized_url] not set...skipping hreflang' ); - return false; - } - return true; - } - private function generate_languages_hreflang( $raw_url, $languages, - $language_map ) { + $language_map + ) { Plugin_Debug::logTrace(); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-picker.php'; - $url_map = Transifex_Live_Integration_Picker::generate_language_url_map( $raw_url, $this->tokenized_url, $language_map ); + $url_map = Transifex_Live_Integration_Common::generate_language_url_map( $raw_url, $this->tokenized_url, $language_map ); $ret = [ ]; foreach ($languages as $language) { $arr = [ ]; @@ -74,12 +54,11 @@ public function render_hreflang() { Plugin_Debug::logTrace(); global $wp; $lang = get_query_var( 'lang' ); - $raw_url = home_url( $wp->request ); $url_path = add_query_arg( array(), $wp->request ); $source_url_path = (substr( $url_path, 0, strlen( $lang ) ) === $lang) ? substr( $url_path, strlen( $lang ), strlen( $url_path ) ) : $url_path; $source = $this->settings['source_language']; $unslashed_source_url = site_url() . $source_url_path; - $source_url = rtrim($unslashed_source_url, '/') . '/'; + $source_url = rtrim( $unslashed_source_url, '/' ) . '/'; $hreflang_out = ''; $hreflang_out .= <<\n diff --git a/includes/lib/transifex-live-integration-javascript.php b/includes/lib/transifex-live-integration-javascript.php new file mode 100644 index 00000000..2a5fed97 --- /dev/null +++ b/includes/lib/transifex-live-integration-javascript.php @@ -0,0 +1,90 @@ +live_settings['api_key'] = $settings['api_key']; + $this->lang = false; + $this->source_language = $settings['source_language']; + $this->language_map = $settings['language_map']; + } + + function wp_hook() { + Plugin_Debug::logTrace(); + $this->lang = self::lang_check( + get_query_var( 'lang' ), $this->source_language, $this->language_map + ); + } + + static function lang_check( $query_var, $source_language, $language_map ) { + Plugin_Debug::logTrace(); + if ( !isset( $query_var ) || !isset( $source_language ) || !isset( $language_map ) ) { + Plugin_Debug::logTrace( 'lang_check params not set, defaulting to native lang detection' ); + return false; + } + + $lm = json_decode( $language_map, true )[0]; + $lang = false; + if ( $query_var == $source_language ) { + $lang = $source_language; + Plugin_Debug::logTrace( 'lang is source, overriding live with source' ); + } else { + $lang = array_search( $query_var, $lm ); + if ( $lang ){ + Plugin_Debug::logTrace( 'lang is set, overriding live detection' ); + } else { + Plugin_Debug::logTrace( 'lang missing, defaulting to native detection' ); + $lang = false; + } + } + return $lang; + } + + /** + * Renders javascript includes in the page + */ + function wp_head_hook() { + Plugin_Debug::logTrace(); + $lang = $this->lang; + $live_settings = $this->live_settings; + if ( $lang ) { + $detectlang = << '%function%' ] ); + $live_settings_json = json_encode( $live_settings ); + $live_settings_string = str_replace( '"%function%"', $detectlang, $live_settings_json ); + } else { + $live_settings_string = json_encode( $live_settings ); + } + + $snippet = <<window.liveSettings=$live_settings_string; +\n +SNIPPET; + echo $snippet; + } + +} diff --git a/includes/lib/transifex-live-integration-picker.php b/includes/lib/transifex-live-integration-picker.php new file mode 100644 index 00000000..9d0ca992 --- /dev/null +++ b/includes/lib/transifex-live-integration-picker.php @@ -0,0 +1,50 @@ +language_map = json_decode($language_map, true)[0]; + $this->tokenized_url = $tokenized_url; + $this->enable_picker = $enable_picker; + $this->source_language = $source_language; + } + + + function render() + { + Plugin_Debug::logTrace(); + global $wp; + $lang = get_query_var('lang'); + $home_url = home_url($wp->request); + $url_path = add_query_arg(array(), $wp->request); + $source_url_path = (substr($url_path, 0, strlen($lang)) === $lang) ? substr($url_path, strlen($lang), strlen($url_path)) : $url_path; + $url_map = Transifex_Live_Integration_Common::generate_language_url_map($source_url_path, $this->tokenized_url, $this->language_map); + $unslashed_source_url = site_url() . $source_url_path; + $url_map[$this->source_language] = rtrim($unslashed_source_url, '/') . '/'; + $string_url_map = json_encode($url_map, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); + + $include = << + Transifex.live.onBeforeTranslatePage(function(params) { + var locale_urls = $string_url_map; + if(Transifex.live.ready === true && Transifex.live.getSelectedLanguageCode() !== params.lang_code){ + params.noop = true; + window.location.href = locale_urls[params.lang_code]; + } + }); + +JSONP; + echo $include; + } + +} diff --git a/includes/lib/transifex-live-integration-prerender.php b/includes/lib/transifex-live-integration-prerender.php new file mode 100644 index 00000000..4ab33383 --- /dev/null +++ b/includes/lib/transifex-live-integration-prerender.php @@ -0,0 +1,88 @@ +prerender_url = $prerender_url; + } + + function wp_head_hook() + { + Plugin_Debug::logTrace(); + $status = ''; + if (is_404() ) { + $status .= <<< STATUS +\n +STATUS; + } + echo $status; + } + + function wp_headers_hook( $headers ) + { + Plugin_Debug::logTrace(); + $headers['X-PreRender-Req'] = 'TRUE'; + return $headers; + } + + static public function prerender_check( $req_user_agent, $req_escaped_fragment, + $bot_types, $whitelist_names + ) { + Plugin_Debug::logTrace(); + + $bot_types_escaped = addcslashes($bot_types, '/'); + $whitelist_names_escaped = addcslashes($whitelist_names, '/'); + + $is_bot = self::is_bot_type($req_user_agent, $bot_types_escaped); + $is_whitelisted = ($is_bot) ? true : self::is_whitelist_name($req_user_agent, $whitelist_names_escaped); + $has_escaped_fragment = ($is_whitelisted) ? true : ($req_escaped_fragment) ? true : false; + $prerender_ok = ($has_escaped_fragment) ? true : self::is_prerender_req(); + + return $prerender_ok; + } + + + function callback( $buffer ) + { + global $wp; + $output = $buffer; + $page_url = home_url($wp->request); + $page_url = rtrim($page_url, '/') . '/'; + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $this->prerender_url . $page_url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_VERBOSE, 1); + curl_setopt($ch, CURLOPT_HEADER, 1); + $response = curl_exec($ch); + $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); + $header = substr($response, 0, $header_size); + $body = substr($response, $header_size); + if ($response === false ) { + $error = curl_error($ch); + // write to db?? + } else { + if (strpos($header, 'X-PreRender-Req: TRUE') ) { + $output = $body; + } + } + curl_close($ch); + return $output; + } + + function after_setup_theme_hook() + { + ob_start([$this, 'callback' ]); + } + + function shutdown_hook() + { + ob_end_flush(); + } + +} diff --git a/includes/lib/transifex-live-integration-rewrite.php b/includes/lib/transifex-live-integration-rewrite.php new file mode 100644 index 00000000..150e1388 --- /dev/null +++ b/includes/lib/transifex-live-integration-rewrite.php @@ -0,0 +1,505 @@ +rewrite_options = [ ]; + $this->languages_regex = $settings['languages_regex']; + $this->source_language = $settings['source_language']; + $this->languages_map = json_decode($settings['language_map'], true)[0]; + $this->lang = false; + if (isset($rewrite_options['add_rewrites_post']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_post']) ? 'post' : ''; + } + if (isset($rewrite_options['add_rewrites_root']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_root']) ? 'root' : ''; + } + if (isset($rewrite_options['add_rewrites_date']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_date']) ? 'date' : ''; + } + if (isset($rewrite_options['add_rewrites_page']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_page']) ? 'page' : ''; + } + if (isset($rewrite_options['add_rewrites_author']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_author']) ? 'author' : ''; + } + if (isset($rewrite_options['add_rewrites_tag']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_tag']) ? 'tag' : ''; + } + if (isset($rewrite_options['add_rewrites_category']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_category']) ? 'category' : ''; + } + if (isset($rewrite_options['add_rewrites_search']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_search']) ? 'search' : ''; + } + if (isset($rewrite_options['add_rewrites_feed']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_feed']) ? 'feed' : ''; + } + if (isset($rewrite_options['add_rewrites_feed']) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_permalink_tag']) ? 'permalink_tag' : ''; + } + if (!empty($settings['languages']) ) { + $b = strpos(',', $settings['languages']); + if (false === $b ) { + $this->language_codes = array( $settings['languages'] ); + } else { + $this->language_codes = explode(',', $settings['languages']); + } + } + } + + function wp_hook() { + Plugin_Debug::logTrace(); + $this->lang = get_query_var( 'lang' ); + Plugin_Debug::logTrace($this->lang); + } + + /** + * Callback function to the WP init hook + */ + function init_hook() + { + Plugin_Debug::logTrace(); + add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + } + + /** + * Callback function to the WP parse_query hook + * @param array $query WP query object. + */ + function parse_query_hook( $query ) + { + if (!Transifex_Live_Integration_Validators::is_query_ok($query) ) { + return $query; + } + $qv = &$query->query_vars; + $qv['lang'] = isset($query->query_vars['lang']) ? $query->query_vars['lang'] : $this->source_language; + if ($query->is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') ) { + $query->is_page = true; + $query->is_home = false; + $qv['page_id'] = get_option('page_on_front'); + // Correct for page_on_front + if (!empty($qv['paged']) ) { + $qv['page'] = $qv['paged']; + unset($qv['paged']); + } + } + return $query; + } + + + static function reverse_hard_link( $lang, $link, $languages_map, $source_lang ) + { + Plugin_Debug::logTrace(); + if (empty($lang) ) { + return $link; + } + if (empty($languages_map) ) { + return $link; + } + $modified_link = $link; + $reverse_url = true; + + $reverse_url = ($reverse_url) ? (isset($lang)) : false; + + if (!empty($lang) ) { + $reverse_url = ($reverse_url) ? (!strpos($modified_link, $lang)) : false; + } + $reverse_url = ($reverse_url) ? (in_array($lang, $languages_map)) : false; + $reverse_url = ($reverse_url) ? (!($source_lang == $lang)) : false; + + //TODO This can be dep'd + if ($reverse_url && (3 <= substr_count($link, '/')) ) { + $array_url = explode('/', $link); + $array_url[3] = $lang . '/' . $array_url[3]; + $modified_link = implode('/', $array_url); + } + return $modified_link; + } + function pre_post_link_hook( $permalink, $post, $leavename ) + { + if (!Transifex_Live_Integration_Validators::is_permalink_ok($permalink) ) { + return $permalink; + } + $lang = $this->lang; + $p = $permalink; + if ( $lang ) { + $p = ($this->source_language !== $lang) ? $lang . $permalink : $permalink; + } + return $p; + } + + + function term_link_hook( $termlink, $term, $taxonomy ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($termlink) ) { + return $termlink; + } + $retlink = $this->reverse_hard_link($this->lang, $termlink, $this->languages_map, $this->source_language); + return $retlink; + } + + function post_link_hook( $permalink, $post, $leavename ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($permalink) ) { + return $permalink; + } + $retlink = $this->reverse_hard_link($this->lang, $permalink, $this->languages_map, $this->source_language); + return $retlink; + } + + function post_type_archive_link_hook( $link, $post_type ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($link) ) { + return $link; + } + $retlink = $this->reverse_hard_link($this->lang, $link, $this->languages_map, $this->source_language); + return $retlink; + } + + function day_link_hook( $daylink, $year, $month, $day ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($daylink) ) { + return $daylink; + } + $retlink = $this->reverse_hard_link($this->lang, $daylink, $this->languages_map, $this->source_language); + return $retlink; + } + + function month_link_hook( $monthlink, $year, $month ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($monthlink) ) { + return $monthlink; + } + $retlink = $this->reverse_hard_link($this->lang, $monthlink, $this->languages_map, $this->source_language); + return $retlink; + } + + function year_link_hook( $yearlink, $year ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($yearlink) ) { + return $yearlink; + } + $retlink = $this->reverse_hard_link($this->lang, $yearlink, $this->languages_map, $this->source_language); + return $retlink; + } + + function page_link_hook( $link, $id, $sample ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($link) ) { + return $link; + } + $retlink = $this->reverse_hard_link($this->lang, $link, $this->languages_map, $this->source_language); + return $retlink; + } + + function home_url_hook( $url ) + { + if (!Transifex_Live_Integration_Validators::is_hard_link_ok($url) ) { + return $url; + } + $retlink = $this->reverse_hard_link($this->lang, $url, $this->languages_map, $this->source_language); + return $retlink; + } + + /** + * Function to build page permastructs + */ + function generate_post_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->permalink_structure; + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function post_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_post_permastruct(); + $this->post_permastruct = $pp; + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_PERMALINK, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_date_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_date_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function date_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_date_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_DATE, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_page_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_page_permastruct(); + $pp = '%lang%/' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function page_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%pagename%', '(.?.+?)', 'pagename='); + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_page_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_PAGES, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_author_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_author_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function author_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_author_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_AUTHORS, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_tag_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_tag_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function tag_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_tag_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_TAGS, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_category_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_category_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function category_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_category_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_CATEGORIES, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_search_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_search_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function search_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_page_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_SEARCH, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_feed_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_feed_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function feed_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_feed_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_NONE, true, false, false, false); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + + /** + * Function to build 'all' = root permastructs + */ + function generate_root_permastruct() + { + Plugin_Debug::logTrace(); + global $wp_rewrite; + return '%lang%' . $wp_rewrite->root . '/'; + } + + /** + * Callback function to the WP root_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function root_rewrite_rules_hook( $rules ) + { + if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); + $pp = $this->generate_root_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_ROOT); + Plugin_Debug::logTrace($rr); + $rewrite = array_merge($rr, $rules); + return $rewrite; + } + +} diff --git a/includes/lib/transifex-live-integration-subdomain.php b/includes/lib/transifex-live-integration-subdomain.php new file mode 100644 index 00000000..198302b0 --- /dev/null +++ b/includes/lib/transifex-live-integration-subdomain.php @@ -0,0 +1,82 @@ +subdomain_pattern = '/' . html_entity_decode(str_replace('/', '\/', $settings['subdomain_pattern'])) . '/'; + Plugin_Debug::logTrace($this->subdomain_pattern); + $this->source_language = $settings['source_language']; + if (!empty($settings['languages']) ) { + $b = strpos(',', $settings['languages']); + if (false === $b ) { + $this->language_codes = array( $settings['languages'] ); + } else { + $this->language_codes = explode(',', $settings['languages']); + } + } + } + + /** + * Factory function to create a rewrite object + * @param array $settings Associative array used to store plugin settings. + */ + static function create_subdomains( $settings ) + { + Plugin_Debug::logTrace(); + if (!isset($settings['languages']) ) { + Plugin_Debug::logTrace('settings[languages] not set'); + return false; + } + + if ($settings['url_options'] != '2' ) { + Plugin_Debug::logTrace('settings[url_options] not subdomain'); + return false; + } + + return new Transifex_Live_Integration_Subdomain($settings); + } + + /** + * Callback function to the WP parse_query hook + * @param array $query WP query object. + */ + function parse_query_hook( $query ) + { + $m = array(); + if (preg_match($this->subdomain_pattern, site_url(), $m) ) { + $query->query_vars['lang'] = $m[1]; + } else { + $query->query_vars['lang'] = $this->source_language; + } + return $query; + } + +} diff --git a/includes/override/transifex-live-integration-generate-rewrite-rules.php b/includes/override/transifex-live-integration-generate-rewrite-rules.php new file mode 100644 index 00000000..8a579b5c --- /dev/null +++ b/includes/override/transifex-live-integration-generate-rewrite-rules.php @@ -0,0 +1,334 @@ +feeds as $feed_name) { + $feedregex2 .= $feed_name . '|'; + } + $feedregex2 = '(' . trim($feedregex2, '|') . ')/?$'; + /* + * $feedregex is identical but with /feed/ added on as well, so URLs like /feed/atom + * and /atom are both possible + */ + $feedregex = $wp_rewrite->feed_base . '/' . $feedregex2; + // Build a regex to match the trackback and page/xx parts of URLs. + $trackbackregex = 'trackback/?$'; + $pageregex = $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$'; + $commentregex = $wp_rewrite->comments_pagination_base . '-([0-9]{1,})/?$'; + $embedregex = 'embed/?$'; + // Build up an array of endpoint regexes to append => queries to append. + if ($endpoints ) { + $ep_query_append = array(); + foreach ((array) $wp_rewrite->endpoints as $endpoint) { + // Match everything after the endpoint name, but allow for nothing to appear there. + $epmatch = $endpoint[1] . '(/(.*))?/?$'; + // This will be appended on to the rest of the query for each dir. + $epquery = '&' . $endpoint[2] . '='; + $ep_query_append[$epmatch] = array( $endpoint[0], $epquery ); + } + } + // Get everything up to the first rewrite tag. + $front = substr($permalink_structure, 0, strpos($permalink_structure, '%')); + // Build an array of the tags (note that said array ends up being in $tokens[0]). + preg_match_all('/%.+?%/', $permalink_structure, $tokens); + $num_tokens = count($tokens[0]); + $index = $wp_rewrite->index; //probably 'index.php' + $feedindex = $index; + $trackbackindex = $index; + $embedindex = $index; + /* + * Build a list from the rewritecode and queryreplace arrays, that will look something + * like tagname=$matches[i] where i is the current $i. + */ + $queries = array(); + for ($i = 0; $i < $num_tokens; ++$i) { + if (0 < $i ) { + $queries[$i] = $queries[$i - 1] . '&'; + } + else { + $queries[$i] = ''; + } + $query_token = str_replace($wp_rewrite->rewritecode, $wp_rewrite->queryreplace, $tokens[0][$i]) . $wp_rewrite->preg_index($i + 1); + $queries[$i] .= $query_token; + } + // Get the structure, minus any cruft (stuff that isn't tags) at the front. + $structure = $permalink_structure; + if ($front != '/' ) { + $structure = str_replace($front, '', $structure); + } + /* + * Create a list of dirs to walk over, making rewrite rules for each level + * so for example, a $structure of /%year%/%monthnum%/%postname% would create + * rewrite rules for /%year%/, /%year%/%monthnum%/ and /%year%/%monthnum%/%postname% + */ + $structure = trim($structure, '/'); + $dirs = $walk_dirs ? explode('/', $structure) : array( $structure ); + $num_dirs = count($dirs); + // Strip slashes from the front of $front. + $front = preg_replace('|^/+|', '', $front); + // The main workhorse loop. + $post_rewrite = array(); + $struct = $front; + for ($j = 0; $j < $num_dirs; ++$j) { + // Get the struct for this dir, and trim slashes off the front. + $struct .= $dirs[$j] . '/'; // Accumulate. see comment near explode('/', $structure) above. + $struct = ltrim($struct, '/'); + // Replace tags with regexes. + $match = str_replace($wp_rewrite->rewritecode, $wp_rewrite->rewritereplace, $struct); + Plugin_Debug::logTrace($match); + // Make a list of tags, and store how many there are in $num_toks. + $num_toks = preg_match_all('/%.+?%/', $struct, $toks); + Plugin_Debug::logTrace($num_toks); + // Get the 'tagname=$matches[i]'. + $query = (!empty($num_toks) && isset($queries[$num_toks - 1]) ) ? $queries[$num_toks - 1] : ''; + Plugin_Debug::logTrace($query); + // Set up $ep_mask_specific which is used to match more specific URL types. + switch ($dirs[$j]) { + case '%year%': + $ep_mask_specific = EP_YEAR; + break; + case '%monthnum%': + $ep_mask_specific = EP_MONTH; + break; + case '%day%': + $ep_mask_specific = EP_DAY; + break; + default: + $ep_mask_specific = EP_NONE; + } + // Create query for /page/xx. + $pagematch = $match . $pageregex; + $pagequery = $index . '?' . $query . '&paged=' . $wp_rewrite->preg_index($num_toks + 1); + // Create query for /comment-page-xx. + $commentmatch = $match . $commentregex; + $commentquery = $index . '?' . $query . '&cpage=' . $wp_rewrite->preg_index($num_toks + 1); + if (get_option('page_on_front') ) { + // Create query for Root /comment-page-xx. + $rootcommentmatch = $match . $commentregex; + $rootcommentquery = $index . '?' . $query . '&page_id=' . get_option('page_on_front') . '&cpage=' . $wp_rewrite->preg_index($num_toks + 1); + } + // Create query for /feed/(feed|atom|rss|rss2|rdf). + $feedmatch = $match . $feedregex; + $feedquery = $feedindex . '?' . $query . '&feed=' . $wp_rewrite->preg_index($num_toks + 1); + // Create query for /(feed|atom|rss|rss2|rdf) (see comment near creation of $feedregex). + $feedmatch2 = $match . $feedregex2; + $feedquery2 = $feedindex . '?' . $query . '&feed=' . $wp_rewrite->preg_index($num_toks + 1); + // If asked to, turn the feed queries into comment feed ones. + if ($forcomments ) { + $feedquery .= '&withcomments=1'; + $feedquery2 .= '&withcomments=1'; + } + // Start creating the array of rewrites for this dir. + $rewrite = array(); + // ...adding on /feed/ regexes => queries + if ($feed ) { + $rewrite = array( $feedmatch => $feedquery, $feedmatch2 => $feedquery2 ); + } + //...and /page/xx ones + if ($paged ) { + $rewrite = array_merge($rewrite, array( $pagematch => $pagequery )); + } + // Only on pages with comments add ../comment-page-xx/. + if (EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask ) { + $rewrite = array_merge($rewrite, array( $commentmatch => $commentquery )); + } elseif (EP_ROOT & $ep_mask && get_option('page_on_front') ) { + $rewrite = array_merge($rewrite, array( $rootcommentmatch => $rootcommentquery )); + } + // Do endpoints. + if ($endpoints ) { + foreach ((array) $ep_query_append as $regex => $ep) { + // Add the endpoints on if the mask fits. + if ($ep[0] & $ep_mask || $ep[0] & $ep_mask_specific ) { + $rewrite[$match . $regex] = $index . '?' . $query . $ep[1] . $wp_rewrite->preg_index($num_toks + 2); + } + } + } + // If we've got some tags in this dir. + if ($num_toks ) { + $post = false; + $page = false; + /* + * Check to see if this dir is permalink-level: i.e. the structure specifies an + * individual post. Do this by checking it contains at least one of 1) post name, + * 2) post ID, 3) page name, 4) timestamp (year, month, day, hour, second and + * minute all present). Set these flags now as we need them for the endpoints. + */ + if (strpos($struct, '%postname%') !== false || strpos($struct, '%post_id%') !== false || strpos($struct, '%pagename%') !== false || (strpos($struct, '%year%') !== false && strpos($struct, '%monthnum%') !== false && strpos($struct, '%day%') !== false && strpos($struct, '%hour%') !== false && strpos($struct, '%minute%') !== false && strpos($struct, '%second%') !== false) + ) { + $post = true; + if (strpos($struct, '%pagename%') !== false ) { + $page = true; + } + } + if (!$post ) { + // For custom post types, we need to add on endpoints as well. + foreach (get_post_types(array( '_builtin' => false )) as $ptype) { + if (strpos($struct, "%$ptype%") !== false ) { + $post = true; + // This is for page style attachment URLs. + $page = is_post_type_hierarchical($ptype); + break; + } + } + } + Plugin_Debug::logTrace('post check'); + Plugin_Debug::logTrace($post); + // If creating rules for a permalink, do all the endpoints like attachments etc. + if ($post ) { + // Create query and regex for trackback. + $trackbackmatch = $match . $trackbackregex; + $trackbackquery = $trackbackindex . '?' . $query . '&tb=1'; + // Create query and regex for embeds. + $embedmatch = $match . $embedregex; + $embedquery = $embedindex . '?' . $query . '&embed=true'; + // Trim slashes from the end of the regex for this dir. + $match = rtrim($match, '/'); + // Get rid of brackets. + $submatchbase_org = str_replace(array( '(', ')' ), '', $match); + $submatchbase = str_replace('(', '(?:', $match); // Replace with non capturing group + Plugin_Debug::logTrace($submatchbase_org); + Plugin_Debug::logTrace($submatchbase); + // Add a rule for at attachments, which take the form of /some-text. + $sub1 = $submatchbase . '/([^/]+)/'; + // Add trackback regex /trackback/... + $sub1tb = $sub1 . $trackbackregex; + // And /feed/(atom|...) + $sub1feed = $sub1 . $feedregex; + // And /(feed|atom...) + $sub1feed2 = $sub1 . $feedregex2; + // And /comment-page-xx + $sub1comment = $sub1 . $commentregex; + // And /embed/... + $sub1embed = $sub1 . $embedregex; + /* + * Add another rule to match attachments in the explicit form: + * /attachment/some-text + */ + $sub2 = $submatchbase . '/attachment/([^/]+)/'; + // And add trackbacks /attachment/trackback. + $sub2tb = $sub2 . $trackbackregex; + // Feeds, /attachment/feed/(atom|...) + $sub2feed = $sub2 . $feedregex; + // And feeds again on to this /attachment/(feed|atom...) + $sub2feed2 = $sub2 . $feedregex2; + // And /comment-page-xx + $sub2comment = $sub2 . $commentregex; + // And /embed/... + $sub2embed = $sub2 . $embedregex; + // Create queries for these extra tag-ons we've just dealt with. + $subquery = $index . '?attachment=' . $wp_rewrite->preg_index(1); + $subtbquery = $subquery . '&tb=1'; + $subfeedquery = $subquery . '&feed=' . $wp_rewrite->preg_index(2); + $subcommentquery = $subquery . '&cpage=' . $wp_rewrite->preg_index(2); + $subembedquery = $subquery . '&embed=true'; + // Do endpoints for attachments. + if (!empty($endpoints) ) { + foreach ((array) $ep_query_append as $regex => $ep) { + if ($ep[0] & EP_ATTACHMENT ) { + $rewrite[$sub1 . $regex] = $subquery . $ep[1] . $wp_rewrite->preg_index(3); + $rewrite[$sub2 . $regex] = $subquery . $ep[1] . $wp_rewrite->preg_index(3); + } + } + } + /* + * Now we've finished with endpoints, finish off the $sub1 and $sub2 matches + * add a ? as we don't have to match that last slash, and finally a $ so we + * match to the end of the URL + */ + $sub1 .= '?$'; + $sub2 .= '?$'; + /* + * Post pagination, e.g. /2/ + * Previously: '(/[0-9]+)?/?$', which produced '/2' for page. + * When cast to int, returned 0. + */ + $match = $match . '(?:/([0-9]+))?/?$'; + $query = $index . '?' . $query . '&page=' . $wp_rewrite->preg_index($num_toks + 1); + // Not matching a permalink so this is a lot simpler. + } else { + // Close the match and finalise the query. + $match .= '?$'; + $query = $index . '?' . $query; + } + /* + * Create the final array for this dir by joining the $rewrite array (which currently + * only contains rules/queries for trackback, pages etc) to the main regex/query for + * this dir + */ + $rewrite = array_merge($rewrite, array( $match => $query )); + // If we're matching a permalink, add those extras (attachments etc) on. + if ($post ) { + // Add trackback. + $rewrite = array_merge(array( $trackbackmatch => $trackbackquery ), $rewrite); + // Add embed. + $rewrite = array_merge(array( $embedmatch => $embedquery ), $rewrite); + // Add regexes/queries for attachments, attachment trackbacks and so on. + if (!$page ) { + // Require /attachment/stuff form for pages because of confusion with subpages. + $rewrite = array_merge( + $rewrite, array( + $sub1 => $subquery, + $sub1tb => $subtbquery, + $sub1feed => $subfeedquery, + $sub1feed2 => $subfeedquery, + $sub1comment => $subcommentquery, + $sub1embed => $subembedquery + ) + ); + } + $rewrite = array_merge(array( $sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery, $sub2comment => $subcommentquery, $sub2embed => $subembedquery ), $rewrite); + } + } + // Add the rules for this dir to the accumulating $post_rewrite. + $post_rewrite = array_merge($rewrite, $post_rewrite); + } + // The finished rules. phew! + return $post_rewrite; + } + +} diff --git a/includes/plugin-debug.php b/includes/plugin-debug.php deleted file mode 100644 index 60729ff0..00000000 --- a/includes/plugin-debug.php +++ /dev/null @@ -1,114 +0,0 @@ -logTrace(); - - // Check to see if plugin is in debug mode - // If not, skip all display handlers and custom error handling - if ( self::$debug_mode ) { - set_error_handler( array( 'Plugin_Debug', 'logError' ) ); - // Check for admin level if not surpress all debug output hooks - //TODO: Reimplement admin check - if ( true ) { - add_action( 'wp_footer', array( 'Plugin_Debug', 'printLog' ) ); - add_action( 'admin_footer', array( 'Plugin_Debug', 'printLog' ) ); - } // End if Wordpress user admin check - } // End if debug mode check - } - - public static function logTrace( $message = null ) { - if ( self::$debug_mode ) { - if ( !is_array( self::$calls ) ){ - self::$calls = array(); - } - $call = debug_backtrace( false ); - $call = (isset( $call[1] )) ? $call[1] : $call[0]; - $call['message'] = $message; - array_push( self::$calls, $call ); - } - } - - public static function logError( $severity, $message, $filename, $lineno ) { - if ( self::$debug_mode ) { - if ( !is_array( self::$calls ) ){ - self::$calls = array(); - } - if ( strpos( $filename, 'transifex-live-integration' ) ) { - $call = debug_backtrace( false ); - $call = (isset( $call[2] )) ? $call[2] : $call[1]; - $call['message'] = 'Severity: '.$severity. ' File: ' . basename( $filename ) . ' Line: ' . $lineno . ': ' . $message; - array_push( self::$calls, $call ); - } - } - } - - public function printLog() { - if ( self::$debug_mode ) { - echo ('
' . "\n"); - echo ('

Plugin: Plugin Debug Mode Output

' . "\n"); - array_walk( self::$calls, array( 'Plugin_Debug', 'printLogCallback' ) ); - echo "
"; - } - } - - static function printLogCallback( $value, $key ) { - if ( self::$debug_mode ) { - echo "*
"; - if ( array_key_exists( 'file', $value ) ) - echo ("File: " . basename( $value['file'] ) . " - "); - if ( array_key_exists( 'line', $value ) ) - echo ('Line #: ' . $value['line'] . ''); - echo "
"; - if ( array_key_exists( 'class', $value ) ) - echo ("Class: " . $value['class'] . " - "); - if ( array_key_exists( 'function', $value ) ) - echo ('Function: ' . $value['function'] . ''); - echo "
"; - if ( array_key_exists( 'type', $value ) ) { - echo ("Type: "); - switch ($value['type']) { - case "::": - echo ("static method call"); - break; - case "->" : - echo ("method call"); - break; - default : - echo ("function call"); - } - echo(" - "); - } - if ( array_key_exists( 'args', $value ) ) { - echo ('Parameters: '); - print_r( $value['args'] ); - echo (''); - } - echo "
"; - if ( array_key_exists( 'message', $value ) && $value['message'] != null ){ - echo (''); - } - print_r( $value['message'] ); - echo (''); - echo "
*"; - } - } - -} \ No newline at end of file diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index 586fb7c4..c67efd56 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -8,84 +8,91 @@ /** * Static class for settings defaults */ -class Transifex_Live_Integration_Defaults { +class Transifex_Live_Integration_Defaults +{ - static function options_values() { - return [ - 'add_rewrites_post' => 0, - 'add_rewrites_page' => 0, - 'add_rewrites_author' => 0, - 'add_rewrites_date' => 0, - 'add_rewrites_tag' => 0, - 'add_rewrites_category' => 0, - 'add_rewrites_search' => 0, - 'add_rewrites_root' => 0, - 'add_rewrites_reverse_template_links' => 0, - 'add_rewrites_permalink_tag' => 0 - ]; - } + static function options_values() + { + return [ + 'add_rewrites_post' => 0, + 'add_rewrites_page' => 0, + 'add_rewrites_author' => 0, + 'add_rewrites_date' => 0, + 'add_rewrites_tag' => 0, + 'add_rewrites_category' => 0, + 'add_rewrites_search' => 0, + 'add_rewrites_root' => 0, + 'add_rewrites_reverse_template_links' => 0, + 'add_rewrites_permalink_tag' => 0 + ]; + } - static function get_options_text( $key ) { - $arr = [ - 'add_rewrites_post' => 'Posts', - 'add_rewrites_page' => 'Pages', - 'add_rewrites_author' => 'Authors', - 'add_rewrites_date' => 'Date', - 'add_rewrites_tag' => 'Tags', - 'add_rewrites_category' => 'Categories', - 'add_rewrites_search' => 'Search', - 'add_rewrites_root' => 'Root', - 'add_rewrites_reverse_template_links' => 'Reverse Template Links', - 'add_rewrites_permalink_tag' => 'Permalink Tag' - ]; - return $arr[$key]; - } + static function get_options_text( $key ) + { + $arr = [ + 'add_rewrites_post' => 'Posts', + 'add_rewrites_page' => 'Pages', + 'add_rewrites_author' => 'Authors', + 'add_rewrites_date' => 'Date', + 'add_rewrites_tag' => 'Tags', + 'add_rewrites_category' => 'Categories', + 'add_rewrites_search' => 'Search', + 'add_rewrites_root' => 'Root', + 'add_rewrites_reverse_template_links' => 'Reverse Template Links', + 'add_rewrites_permalink_tag' => 'Permalink Tag' + ]; + return $arr[$key]; + } - static function transifex_settings() { - return [ - 'settings' => null, - 'picker' => 'no-picker', - 'domain' => 'wpliveplugin.onpressidium.com', - 'ignore_tags' => [ ], - 'autocollect' => false, - 'parse_attr' => [ ], - 'dynamic' => false, - 'detectlang' => false, - 'ignore_class' => [ ] - ]; - } + static function transifex_settings() + { + return [ + 'settings' => null, + 'picker' => 'no-picker', + 'domain' => 'wpliveplugin.onpressidium.com', + 'ignore_tags' => [ ], + 'autocollect' => false, + 'parse_attr' => [ ], + 'dynamic' => false, + 'detectlang' => false, + 'ignore_class' => [ ] + ]; + } - /** - * Static function for settings defaults - * @return array Returns the settings array - */ - static function settings() { - return array( - 'api_key' => null, // This is the only required field and needs to be copied from Live - 'previous_api_key' => null, - 'raw_transifex_languages' => null, - 'transifex_languages' => null, - 'language_lookup' => null, - 'language_map' => '[]', - 'languages_regex' => null, - 'rewrite_option_all' => 0, - 'enable_custom_urls' => 0, - 'urls' => [ - 'rate_us' => 'https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform', - 'api_key_landing_page' => 'https://www.transifex.com/signup/?utm_source=liveplugin', - ], - 'enable_language_urls' => false, - 'enable_picker' => false, - 'add_language_rewrites' => 'none selected', - 'source_language' => '', - 'languages' => '', - 'hreflang' => false, - 'url_options' => 1, - 'subdomain_pattern' => '', - 'whitelist_crawlers' => - 'googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard', - 'generic_bot_types' => 'bot|crawl|slurp|spider' - ); - } + /** + * Static function for settings defaults + * @return array Returns the settings array + */ + static function settings() + { + return array( + 'api_key' => null, // This is the only required field and needs to be copied from Live + 'previous_api_key' => null, + 'raw_transifex_languages' => null, + 'transifex_languages' => null, + 'language_lookup' => null, + 'language_map' => '[]', + 'languages_regex' => null, + 'rewrite_option_all' => 0, + 'enable_custom_urls' => 0, + 'urls' => [ + 'rate_us' => 'https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform', + 'api_key_landing_page' => 'https://www.transifex.com/signup/?utm_source=liveplugin', + ], + 'enable_language_urls' => false, + 'enable_picker' => false, + 'add_language_rewrites' => 'none selected', + 'source_language' => '', + 'languages' => '', + 'hreflang' => false, + 'url_options' => 1, + 'subdomain_pattern' => '', + 'enable_prerender' => false, + 'prerender_url' => '', + 'whitelist_crawlers' => + 'googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard', + 'generic_bot_types' => 'bot|crawl|slurp|spider' + ); + } } diff --git a/includes/transifex-live-integration-generate-rewrite-rules.php b/includes/transifex-live-integration-generate-rewrite-rules.php deleted file mode 100644 index e6773c7f..00000000 --- a/includes/transifex-live-integration-generate-rewrite-rules.php +++ /dev/null @@ -1,324 +0,0 @@ -feeds as $feed_name) - $feedregex2 .= $feed_name . '|'; - $feedregex2 = '(' . trim( $feedregex2, '|' ) . ')/?$'; - /* - * $feedregex is identical but with /feed/ added on as well, so URLs like /feed/atom - * and /atom are both possible - */ - $feedregex = $wp_rewrite->feed_base . '/' . $feedregex2; - // Build a regex to match the trackback and page/xx parts of URLs. - $trackbackregex = 'trackback/?$'; - $pageregex = $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$'; - $commentregex = $wp_rewrite->comments_pagination_base . '-([0-9]{1,})/?$'; - $embedregex = 'embed/?$'; - // Build up an array of endpoint regexes to append => queries to append. - if ( $endpoints ) { - $ep_query_append = array(); - foreach ((array) $wp_rewrite->endpoints as $endpoint) { - // Match everything after the endpoint name, but allow for nothing to appear there. - $epmatch = $endpoint[1] . '(/(.*))?/?$'; - // This will be appended on to the rest of the query for each dir. - $epquery = '&' . $endpoint[2] . '='; - $ep_query_append[$epmatch] = array( $endpoint[0], $epquery ); - } - } - // Get everything up to the first rewrite tag. - $front = substr( $permalink_structure, 0, strpos( $permalink_structure, '%' ) ); - // Build an array of the tags (note that said array ends up being in $tokens[0]). - preg_match_all( '/%.+?%/', $permalink_structure, $tokens ); - $num_tokens = count( $tokens[0] ); - $index = $wp_rewrite->index; //probably 'index.php' - $feedindex = $index; - $trackbackindex = $index; - $embedindex = $index; - /* - * Build a list from the rewritecode and queryreplace arrays, that will look something - * like tagname=$matches[i] where i is the current $i. - */ - $queries = array(); - for ($i = 0; $i < $num_tokens; ++$i) { - if ( 0 < $i ) - $queries[$i] = $queries[$i - 1] . '&'; - else - $queries[$i] = ''; - $query_token = str_replace( $wp_rewrite->rewritecode, $wp_rewrite->queryreplace, $tokens[0][$i] ) . $wp_rewrite->preg_index( $i + 1 ); - $queries[$i] .= $query_token; - } - // Get the structure, minus any cruft (stuff that isn't tags) at the front. - $structure = $permalink_structure; - if ( $front != '/' ) - $structure = str_replace( $front, '', $structure ); - /* - * Create a list of dirs to walk over, making rewrite rules for each level - * so for example, a $structure of /%year%/%monthnum%/%postname% would create - * rewrite rules for /%year%/, /%year%/%monthnum%/ and /%year%/%monthnum%/%postname% - */ - $structure = trim( $structure, '/' ); - $dirs = $walk_dirs ? explode( '/', $structure ) : array( $structure ); - $num_dirs = count( $dirs ); - // Strip slashes from the front of $front. - $front = preg_replace( '|^/+|', '', $front ); - // The main workhorse loop. - $post_rewrite = array(); - $struct = $front; - for ($j = 0; $j < $num_dirs; ++$j) { - // Get the struct for this dir, and trim slashes off the front. - $struct .= $dirs[$j] . '/'; // Accumulate. see comment near explode('/', $structure) above. - $struct = ltrim( $struct, '/' ); - // Replace tags with regexes. - $match = str_replace( $wp_rewrite->rewritecode, $wp_rewrite->rewritereplace, $struct ); - Plugin_Debug::logTrace( $match ); - // Make a list of tags, and store how many there are in $num_toks. - $num_toks = preg_match_all( '/%.+?%/', $struct, $toks ); - Plugin_Debug::logTrace( $num_toks ); - // Get the 'tagname=$matches[i]'. - $query = (!empty( $num_toks ) && isset( $queries[$num_toks - 1] ) ) ? $queries[$num_toks - 1] : ''; - Plugin_Debug::logTrace( $query ); - // Set up $ep_mask_specific which is used to match more specific URL types. - switch ($dirs[$j]) { - case '%year%': - $ep_mask_specific = EP_YEAR; - break; - case '%monthnum%': - $ep_mask_specific = EP_MONTH; - break; - case '%day%': - $ep_mask_specific = EP_DAY; - break; - default: - $ep_mask_specific = EP_NONE; - } - // Create query for /page/xx. - $pagematch = $match . $pageregex; - $pagequery = $index . '?' . $query . '&paged=' . $wp_rewrite->preg_index( $num_toks + 1 ); - // Create query for /comment-page-xx. - $commentmatch = $match . $commentregex; - $commentquery = $index . '?' . $query . '&cpage=' . $wp_rewrite->preg_index( $num_toks + 1 ); - if ( get_option( 'page_on_front' ) ) { - // Create query for Root /comment-page-xx. - $rootcommentmatch = $match . $commentregex; - $rootcommentquery = $index . '?' . $query . '&page_id=' . get_option( 'page_on_front' ) . '&cpage=' . $wp_rewrite->preg_index( $num_toks + 1 ); - } - // Create query for /feed/(feed|atom|rss|rss2|rdf). - $feedmatch = $match . $feedregex; - $feedquery = $feedindex . '?' . $query . '&feed=' . $wp_rewrite->preg_index( $num_toks + 1 ); - // Create query for /(feed|atom|rss|rss2|rdf) (see comment near creation of $feedregex). - $feedmatch2 = $match . $feedregex2; - $feedquery2 = $feedindex . '?' . $query . '&feed=' . $wp_rewrite->preg_index( $num_toks + 1 ); - // If asked to, turn the feed queries into comment feed ones. - if ( $forcomments ) { - $feedquery .= '&withcomments=1'; - $feedquery2 .= '&withcomments=1'; - } - // Start creating the array of rewrites for this dir. - $rewrite = array(); - // ...adding on /feed/ regexes => queries - if ( $feed ) { - $rewrite = array( $feedmatch => $feedquery, $feedmatch2 => $feedquery2 ); - } - //...and /page/xx ones - if ( $paged ) { - $rewrite = array_merge( $rewrite, array( $pagematch => $pagequery ) ); - } - // Only on pages with comments add ../comment-page-xx/. - if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask ) { - $rewrite = array_merge( $rewrite, array( $commentmatch => $commentquery ) ); - } elseif ( EP_ROOT & $ep_mask && get_option( 'page_on_front' ) ) { - $rewrite = array_merge( $rewrite, array( $rootcommentmatch => $rootcommentquery ) ); - } - // Do endpoints. - if ( $endpoints ) { - foreach ((array) $ep_query_append as $regex => $ep) { - // Add the endpoints on if the mask fits. - if ( $ep[0] & $ep_mask || $ep[0] & $ep_mask_specific ) - $rewrite[$match . $regex] = $index . '?' . $query . $ep[1] . $wp_rewrite->preg_index( $num_toks + 2 ); - } - } - // If we've got some tags in this dir. - if ( $num_toks ) { - $post = false; - $page = false; - /* - * Check to see if this dir is permalink-level: i.e. the structure specifies an - * individual post. Do this by checking it contains at least one of 1) post name, - * 2) post ID, 3) page name, 4) timestamp (year, month, day, hour, second and - * minute all present). Set these flags now as we need them for the endpoints. - */ - if ( strpos( $struct, '%postname%' ) !== false || strpos( $struct, '%post_id%' ) !== false || strpos( $struct, '%pagename%' ) !== false || (strpos( $struct, '%year%' ) !== false && strpos( $struct, '%monthnum%' ) !== false && strpos( $struct, '%day%' ) !== false && strpos( $struct, '%hour%' ) !== false && strpos( $struct, '%minute%' ) !== false && strpos( $struct, '%second%' ) !== false) - ) { - $post = true; - if ( strpos( $struct, '%pagename%' ) !== false ) - $page = true; - } - if ( !$post ) { - // For custom post types, we need to add on endpoints as well. - foreach (get_post_types( array( '_builtin' => false ) ) as $ptype) { - if ( strpos( $struct, "%$ptype%" ) !== false ) { - $post = true; - // This is for page style attachment URLs. - $page = is_post_type_hierarchical( $ptype ); - break; - } - } - } - Plugin_Debug::logTrace( 'post check' ); - Plugin_Debug::logTrace( $post ); - // If creating rules for a permalink, do all the endpoints like attachments etc. - if ( $post ) { - // Create query and regex for trackback. - $trackbackmatch = $match . $trackbackregex; - $trackbackquery = $trackbackindex . '?' . $query . '&tb=1'; - // Create query and regex for embeds. - $embedmatch = $match . $embedregex; - $embedquery = $embedindex . '?' . $query . '&embed=true'; - // Trim slashes from the end of the regex for this dir. - $match = rtrim( $match, '/' ); - // Get rid of brackets. - $submatchbase_org = str_replace( array( '(', ')' ), '', $match ); - $submatchbase = str_replace( '(', '(?:', $match ); // Replace with non capturing group - Plugin_Debug::logTrace( $submatchbase_org ); - Plugin_Debug::logTrace( $submatchbase ); - // Add a rule for at attachments, which take the form of /some-text. - $sub1 = $submatchbase . '/([^/]+)/'; - // Add trackback regex /trackback/... - $sub1tb = $sub1 . $trackbackregex; - // And /feed/(atom|...) - $sub1feed = $sub1 . $feedregex; - // And /(feed|atom...) - $sub1feed2 = $sub1 . $feedregex2; - // And /comment-page-xx - $sub1comment = $sub1 . $commentregex; - // And /embed/... - $sub1embed = $sub1 . $embedregex; - /* - * Add another rule to match attachments in the explicit form: - * /attachment/some-text - */ - $sub2 = $submatchbase . '/attachment/([^/]+)/'; - // And add trackbacks /attachment/trackback. - $sub2tb = $sub2 . $trackbackregex; - // Feeds, /attachment/feed/(atom|...) - $sub2feed = $sub2 . $feedregex; - // And feeds again on to this /attachment/(feed|atom...) - $sub2feed2 = $sub2 . $feedregex2; - // And /comment-page-xx - $sub2comment = $sub2 . $commentregex; - // And /embed/... - $sub2embed = $sub2 . $embedregex; - // Create queries for these extra tag-ons we've just dealt with. - $subquery = $index . '?attachment=' . $wp_rewrite->preg_index( 1 ); - $subtbquery = $subquery . '&tb=1'; - $subfeedquery = $subquery . '&feed=' . $wp_rewrite->preg_index( 2 ); - $subcommentquery = $subquery . '&cpage=' . $wp_rewrite->preg_index( 2 ); - $subembedquery = $subquery . '&embed=true'; - // Do endpoints for attachments. - if ( !empty( $endpoints ) ) { - foreach ((array) $ep_query_append as $regex => $ep) { - if ( $ep[0] & EP_ATTACHMENT ) { - $rewrite[$sub1 . $regex] = $subquery . $ep[1] . $wp_rewrite->preg_index( 3 ); - $rewrite[$sub2 . $regex] = $subquery . $ep[1] . $wp_rewrite->preg_index( 3 ); - } - } - } - /* - * Now we've finished with endpoints, finish off the $sub1 and $sub2 matches - * add a ? as we don't have to match that last slash, and finally a $ so we - * match to the end of the URL - */ - $sub1 .= '?$'; - $sub2 .= '?$'; - /* - * Post pagination, e.g. /2/ - * Previously: '(/[0-9]+)?/?$', which produced '/2' for page. - * When cast to int, returned 0. - */ - $match = $match . '(?:/([0-9]+))?/?$'; - $query = $index . '?' . $query . '&page=' . $wp_rewrite->preg_index( $num_toks + 1 ); - // Not matching a permalink so this is a lot simpler. - } else { - // Close the match and finalise the query. - $match .= '?$'; - $query = $index . '?' . $query; - } - /* - * Create the final array for this dir by joining the $rewrite array (which currently - * only contains rules/queries for trackback, pages etc) to the main regex/query for - * this dir - */ - $rewrite = array_merge( $rewrite, array( $match => $query ) ); - // If we're matching a permalink, add those extras (attachments etc) on. - if ( $post ) { - // Add trackback. - $rewrite = array_merge( array( $trackbackmatch => $trackbackquery ), $rewrite ); - // Add embed. - $rewrite = array_merge( array( $embedmatch => $embedquery ), $rewrite ); - // Add regexes/queries for attachments, attachment trackbacks and so on. - if ( !$page ) { - // Require /attachment/stuff form for pages because of confusion with subpages. - $rewrite = array_merge( $rewrite, array( - $sub1 => $subquery, - $sub1tb => $subtbquery, - $sub1feed => $subfeedquery, - $sub1feed2 => $subfeedquery, - $sub1comment => $subcommentquery, - $sub1embed => $subembedquery - ) ); - } - $rewrite = array_merge( array( $sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery, $sub2comment => $subcommentquery, $sub2embed => $subembedquery ), $rewrite ); - } - } - // Add the rules for this dir to the accumulating $post_rewrite. - $post_rewrite = array_merge( $rewrite, $post_rewrite ); - } - // The finished rules. phew! - return $post_rewrite; - } - -} diff --git a/includes/transifex-live-integration-javascript.php b/includes/transifex-live-integration-javascript.php deleted file mode 100644 index 3e634457..00000000 --- a/includes/transifex-live-integration-javascript.php +++ /dev/null @@ -1,78 +0,0 @@ -live_settings_keys as $k) { - $this->live_settings[$k] = $settings[$k]; - } - $this->tx_langs = $settings['transifex_languages']; - $this->is_detectlang = $is_detectlang; - $this->language_map = json_decode( $settings['language_map'], true )[0]; - $this->source_language = $settings['source_language']; - } - - /** - * Renders javascript includes in the page - */ - function render() { - Plugin_Debug::logTrace(); - $this->is_detectlang ? Plugin_Debug::logTrace( "overriding detectlang" ) : Plugin_Debug::logTrace( "skipped detectlang override" ); - if ( $this->is_detectlang ) { - $query_lang = get_query_var( 'lang' ); - if ( $query_lang == $this->source_language ) { - $lang = $this->source_language; - } else { - $lang = array_search( $query_lang, $this->language_map ); - if ( !$lang ) { - Plugin_Debug::logTrace( 'javascript render failed could not find key' ); - return false; - } - } - $check_for_standard_lang = in_array( $lang, explode( ",", $this->tx_langs ) ); - Plugin_Debug::logTrace( $check_for_standard_lang ? "standard lang detected, skipping override" : "not standard lang, overriding" ); - if ( !$check_for_standard_lang ) { - Plugin_Debug::logTrace( "Not a standard lang override" ); - $detectlang = <<live_settings = array_merge( $this->live_settings, array( 'detectlang' => '%function%' ) ); - } - } - $live_settings_string = json_encode( $this->live_settings ); - if ( isset( $detectlang ) ) { - $live_settings_string = str_replace( '"%function%"', $detectlang, $live_settings_string ); - } - - $include = <<window.liveSettings=$live_settings_string; -\n -LIVE; - echo $include; - } - -} diff --git a/includes/transifex-live-integration-lib.php b/includes/transifex-live-integration-lib.php deleted file mode 100644 index 9f8d420b..00000000 --- a/includes/transifex-live-integration-lib.php +++ /dev/null @@ -1,114 +0,0 @@ -language_map = json_decode( $language_map, true )[0]; - $this->tokenized_url = $tokenized_url; - $this->enable_picker = $enable_picker; - $this->source_language = $source_language; - } - - static function create_picker( $settings ) { - Plugin_Debug::logTrace(); - if ( !isset( $settings['enable_picker'] ) ) { - Plugin_Debug::logTrace( 'settings[enable_picker] not set' ); - return false; - } - if ( !($settings['enable_picker']) ) { - Plugin_Debug::logTrace( 'settings[enable_picker] not truthy' ); - return false; - } - if ( !isset( $settings['tokenized_url'] ) || !( $settings['tokenized_url'] ) ) { - Plugin_Debug::logTrace( 'settings[tokenized_url] not set and not truthy' ); - return false; - } - return new Transifex_Live_Integration_Picker( $settings['language_map'], $settings['tokenized_url'], $settings['enable_picker'], $settings['source_language'] ); - } - - static function generate_language_url_map( $raw_url, $tokenized_url, - $language_map ) { - Plugin_Debug::logTrace(); - $trimmed_tokenized_url = rtrim( $tokenized_url, '/' ); - $trimmed_url = ltrim( $raw_url, '/' ); - $ret = [ ]; - foreach ($language_map as $k => $v) { - $unslashed_url = str_replace( '%lang%', $v, $trimmed_tokenized_url ) . '/' . $trimmed_url; - $ret[$k] = rtrim($unslashed_url, '/') . '/'; - } - - return $ret; - } - - function render() { - Plugin_Debug::logTrace(); - global $wp; - $lang = get_query_var( 'lang' ); - $home_url = home_url( $wp->request ); - $url_path = add_query_arg( array(), $wp->request ); - $source_url_path = (substr( $url_path, 0, strlen( $lang ) ) === $lang) ? substr( $url_path, strlen( $lang ), strlen( $url_path ) ) : $url_path; - $url_map = $this->generate_language_url_map( $source_url_path, $this->tokenized_url, $this->language_map ); - $unslashed_source_url = site_url() . $source_url_path; - $url_map[$this->source_language] = rtrim($unslashed_source_url, '/') . '/'; - $string_url_map = json_encode( $url_map, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ); - - $include = << - Transifex.live.onBeforeTranslatePage(function(params) { - var locale_urls = $string_url_map; - if(Transifex.live.ready === true && Transifex.live.getSelectedLanguageCode() !== params.lang_code){ - params.noop = true; - window.location.href = locale_urls[params.lang_code]; - } - }); - -JSONP; - echo $include; - } - -} diff --git a/includes/transifex-live-integration-prerender.php b/includes/transifex-live-integration-prerender.php deleted file mode 100644 index e4054240..00000000 --- a/includes/transifex-live-integration-prerender.php +++ /dev/null @@ -1,103 +0,0 @@ - 0) : false; - } - - static public function is_bot_type( $agent, $bot_types ) { - Plugin_Debug::logTrace(); - return !empty( $agent ) ? (preg_match( "/{$bot_types}/i", $agent ) > 0) : false; - } - - static public function is_prerender_req() { - $req_user_agent = (isset( $_SERVER['HTTP_USER_AGENT'] )) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : false; - $ret = (strpos( $req_user_agent, 'prerender' )) ? true : false; - Plugin_Debug::logTrace( $req_user_agent ); - Plugin_Debug::logTrace( $ret ); - return $ret; - } - - function wp_head_hook() { - Plugin_Debug::logTrace(); - $status = ''; - if ( is_404() ) { - $status .= <<< STATUS -\n -STATUS; - } - echo $status; - } - - function wp_headers_hook( $headers ) { - Plugin_Debug::logTrace(); - $headers['X-PreRender-Req'] = 'TRUE'; - return $headers; - } - - static public function prerender_check( $req_user_agent, $req_escaped_fragment, - $bot_types, $whitelist_names ) { - Plugin_Debug::logTrace(); - - $bot_types_escaped = addcslashes( $bot_types, '/' ); - $whitelist_names_escaped = addcslashes( $whitelist_names, '/' ); - - $is_bot = self::is_bot_type( $req_user_agent, $bot_types_escaped ); - $is_whitelisted = ($is_bot) ? true : self::is_whitelist_name( $req_user_agent, $whitelist_names_escaped ); - $has_escaped_fragment = ($is_whitelisted) ? true : ($req_escaped_fragment) ? true : false; - $prerender_ok = ($has_escaped_fragment) ? true : self::is_prerender_req(); - - return $prerender_ok; - } - - static function create_prerender( $settings ) { - Plugin_Debug::logTrace(); - $req_user_agent = (isset( $_SERVER['HTTP_USER_AGENT'] )) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : false; - $req_escaped_fragment = (isset( $_GET['_escaped_fragment_'] )) ? $_GET['_escaped_fragment_'] : false; - - $check = self::prerender_check( $req_user_agent, $req_escaped_fragment, $settings['generic_bot_types'], $settings['whitelist_crawlers'] ); - return ($check) ? new Transifex_Live_Integration_Prerender( ) : false; - } - - function callback( $buffer ) { - global $wp; - $output = $buffer; - $page_url = home_url( $wp->request ); - $page_url = rtrim( $page_url, '/' ) . '/'; - - $ch = curl_init(); - curl_setopt( $ch, CURLOPT_URL, 'http://secure-refuge-63401.herokuapp.com/' . $page_url ); - curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); - curl_setopt( $ch, CURLOPT_VERBOSE, 1 ); - curl_setopt( $ch, CURLOPT_HEADER, 1 ); - $response = curl_exec( $ch ); - $header_size = curl_getinfo( $ch, CURLINFO_HEADER_SIZE ); - $header = substr( $response, 0, $header_size ); - $body = substr( $response, $header_size ); - if ( $response === false ) { - $error = curl_error( $ch ); - // write to db?? - } else { - if ( strpos( $header, 'X-PreRender-Req: TRUE' ) ) { - $output = $body; - } - } - curl_close( $ch ); - return $output; - } - - function after_setup_theme_hook() { - ob_start( [$this, 'callback' ] ); - } - - function shutdown_hook() { - ob_end_flush(); - } - -} diff --git a/includes/transifex-live-integration-rewrite.php b/includes/transifex-live-integration-rewrite.php deleted file mode 100644 index f85dbba0..00000000 --- a/includes/transifex-live-integration-rewrite.php +++ /dev/null @@ -1,480 +0,0 @@ -rewrite_options = [ ]; - $this->languages_regex = $settings['languages_regex']; - $this->source_language = $settings['source_language']; - $this->languages_map = json_decode( $settings['language_map'], true )[0]; - if ( isset( $rewrite_options['add_rewrites_post'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_post']) ? 'post' : ''; - if ( isset( $rewrite_options['add_rewrites_root'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_root']) ? 'root' : ''; - if ( isset( $rewrite_options['add_rewrites_date'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_date']) ? 'date' : ''; - if ( isset( $rewrite_options['add_rewrites_page'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_page']) ? 'page' : ''; - if ( isset( $rewrite_options['add_rewrites_author'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_author']) ? 'author' : ''; - if ( isset( $rewrite_options['add_rewrites_tag'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_tag']) ? 'tag' : ''; - if ( isset( $rewrite_options['add_rewrites_category'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_category']) ? 'category' : ''; - if ( isset( $rewrite_options['add_rewrites_search'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_search']) ? 'search' : ''; - if ( isset( $rewrite_options['add_rewrites_feed'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_feed']) ? 'feed' : ''; - if ( isset( $rewrite_options['add_rewrites_feed'] ) ) - $this->rewrite_options[] = ($rewrite_options['add_rewrites_permalink_tag']) ? 'permalink_tag' : ''; - if ( !empty( $settings['languages'] ) ) { - $b = strpos( ',', $settings['languages'] ); - if ( false === $b ) { - $this->language_codes = array( $settings['languages'] ); - } else { - $this->language_codes = explode( ',', $settings['languages'] ); - } - } - } - - /** - * Factory function to create a rewrite object - * @param array $settings Associative array used to store plugin settings. - */ - static function create_rewrite( $settings, $rewrite_options ) { - Plugin_Debug::logTrace(); - if ( !isset( $settings['languages'] ) ) { - Plugin_Debug::logTrace( 'settings[languages] not set' ); - return false; - } - if ( !isset( $settings['languages_regex'] ) ) { - Plugin_Debug::logTrace( 'settings[languages_regex] not set' ); - return false; - } - - if ( $settings['url_options'] != '3' ) { - Plugin_Debug::logTrace( 'settings[url_options] not subdirectory' ); - return false; - } - - if ( !preg_match( self::REGEX_PATTERN_CHECK_PATTERN, $settings['languages_regex'] ) ) { - Plugin_Debug::logTrace( 'settings[languages_regex] failed pattern check' ); - return false; - } - return new Transifex_Live_Integration_Rewrite( $settings, $rewrite_options ); - } - - /** - * Callback function to the WP init hook - */ - function init_hook() { - Plugin_Debug::logTrace(); - add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - } - - /** - * Callback function to the WP parse_query hook - * @param array $query WP query object. - */ - function parse_query_hook( $query ) { - if ( !Transifex_Live_Integration_Validators::is_query_ok( $query ) ) { - return $query; - } - $qv = &$query->query_vars; - $qv['lang'] = isset( $query->query_vars['lang'] ) ? $query->query_vars['lang'] : $this->source_language; - if ( $query->is_home && 'page' == get_option( 'show_on_front' ) && get_option( 'page_on_front' ) ) { - $query->is_page = true; - $query->is_home = false; - $qv['page_id'] = get_option( 'page_on_front' ); - // Correct for page_on_front - if ( !empty( $qv['paged'] ) ) { - $qv['page'] = $qv['paged']; - unset( $qv['paged'] ); - } - } - return $query; - } - - function pre_post_link_hook( $permalink, $post, $leavename ) { - if ( !Transifex_Live_Integration_Validators::is_permalink_ok( $permalink ) ) { - return $permalink; - } - $p = $permalink; - if ( get_query_var( 'lang', false ) ) { - $p = ($this->source_language !== get_query_var( 'lang' )) ? get_query_var( 'lang' ) . $permalink : $permalink; - } - return $p; - } - - static function reverse_hard_link( $lang, $link, $languages_map, $source_lang ) { - Plugin_Debug::logTrace(); - if (empty($lang)) { - return $link; - } - if (empty($languages_map)) { - return $link; - } - $modified_link = $link; - $reverse_url = true; - - $reverse_url = ($reverse_url) ? (isset( $lang )) : false; - - if ( !empty( $lang ) ) { - $reverse_url = ($reverse_url) ? (!strpos( $modified_link, $lang )) : false; - } - $reverse_url = ($reverse_url) ? (in_array( $lang, $languages_map )) : false; - $reverse_url = ($reverse_url) ? (!($source_lang == $lang)) : false; - - //TODO This can be dep'd - if ( $reverse_url && (3 <= substr_count( $link, '/' )) ) { - $array_url = explode( '/', $link ); - $array_url[3] = $lang . '/' . $array_url[3]; - $modified_link = implode( '/', $array_url ); - } - return $modified_link; - } - - function term_link_hook( $termlink, $term, $taxonomy ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $termlink ) ) { - return $termlink; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $termlink, $this->languages_map, $this->source_language ); - return $retlink; - } - - function post_link_hook( $permalink, $post, $leavename ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $permalink ) ) { - return $permalink; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $permalink, $this->languages_map, $this->source_language ); - return $retlink; - } - - function post_type_archive_link_hook( $link, $post_type ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $link ) ) { - return $link; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $link, $this->languages_map, $this->source_language ); - return $retlink; - } - - function day_link_hook( $daylink, $year, $month, $day ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $daylink ) ) { - return $daylink; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $daylink, $this->languages_map, $this->source_language ); - return $retlink; - } - - function month_link_hook( $monthlink, $year, $month ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $monthlink ) ) { - return $monthlink; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $monthlink, $this->languages_map, $this->source_language ); - return $retlink; - } - - function year_link_hook( $yearlink, $year ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $yearlink ) ) { - return $yearlink; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $yearlink, $this->languages_map, $this->source_language ); - return $retlink; - } - - function page_link_hook( $link, $id, $sample ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $link ) ) { - return $link; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $link, $this->languages_map, $this->source_language ); - return $retlink; - } - - function home_url_hook( $url ) { - if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $url ) ) { - return $url; - } - $retlink = $this->reverse_hard_link( get_query_var( 'lang' ), $url, $this->languages_map, $this->source_language ); - return $retlink; - } - - /** - * Function to build page permastructs - */ - function generate_post_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->permalink_structure; - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function post_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_post_permastruct(); - $this->post_permastruct = $pp; - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_PERMALINK, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_date_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_date_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function date_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_date_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_DATE, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_page_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_page_permastruct(); - $pp = '%lang%/' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function page_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%pagename%', '(.?.+?)', 'pagename=' ); - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_page_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_PAGES, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_author_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_author_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function author_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_author_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_AUTHORS, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_tag_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_tag_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function tag_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_tag_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_TAGS, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_category_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_category_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function category_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_category_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_CATEGORIES, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_search_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_search_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function search_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_page_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_SEARCH, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_feed_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_feed_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function feed_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_feed_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_NONE, true, false, false, false ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - - /** - * Function to build 'all' = root permastructs - */ - function generate_root_permastruct() { - Plugin_Debug::logTrace(); - global $wp_rewrite; - return '%lang%' . $wp_rewrite->root . '/'; - } - - /** - * Callback function to the WP root_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function root_rewrite_rules_hook( $rules ) { - if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); - $pp = $this->generate_root_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_ROOT ); - Plugin_Debug::logTrace( $rr ); - $rewrite = array_merge( $rr, $rules ); - return $rewrite; - } - -} diff --git a/includes/transifex-live-integration-static-factory.php b/includes/transifex-live-integration-static-factory.php new file mode 100644 index 00000000..1efef5e4 --- /dev/null +++ b/includes/transifex-live-integration-static-factory.php @@ -0,0 +1,122 @@ +css_files = array(); - $this->js_files = array(); - } - - /** - * Adds a single css file to plugin - * @param string $version Current plugin version. - * @param string $url Url to static file (can be external). - * @param string $handle Identifier if it might be used previously, otherwise generate a random one. - * @return array Associatative array in a format that can be enqueued. - */ - public function add_css_file( $version, $url, $handle = null ) { - if ( null === $handle ) { - $length = 4; - $randomString = substr( str_shuffle( '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ), 0, $length ); - $handle = TRANSIFEX_LIVE_INTEGRATION_NAME . $randomString; - } - $arr = [ 'version' => $version, 'url' => $url, 'handle' => $handle ]; - return array_push( $this->css_files, $arr ); - } - - /** - * Adds a single js file to plugin - * @param string $version Current plugin version. - * @param string $url Url to static file (can be external). - * @param string $handle Identifier if it might be used previously, otherwise generate a random one. - * @return array Associatative array in a format that can be enqueued. - */ - public function add_js_file( $version, $url, $handle = null ) { - if ( null === $handle ) { - $length = 4; - $randomString = substr( str_shuffle( '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ), 0, $length ); - $handle = TRANSIFEX_LIVE_INTEGRATION_NAME . $randomString; - } - $arr = [ 'version' => $version, 'url' => $url, 'handle' => $handle ]; - return array_push( $this->js_files, $arr ); - } - - /** - * Renders css through enqueue - */ - public function render_css() { - Plugin_Debug::logTrace(); - foreach ( $this->css_files as $file ) { - wp_enqueue_style( $file['handle'], $file['url'], false, $file['version'], 'all' ); - } - } - - /** - * Renders js through enqueue - */ - public function render_js() { - Plugin_Debug::logTrace(); - foreach ( $this->js_files as $file ) { - wp_enqueue_script( $file['handle'], $file['url'], false, $file['version'], 'all' ); - } - } - -} diff --git a/includes/transifex-live-integration-subdomain.php b/includes/transifex-live-integration-subdomain.php deleted file mode 100644 index 136ffb27..00000000 --- a/includes/transifex-live-integration-subdomain.php +++ /dev/null @@ -1,81 +0,0 @@ -subdomain_pattern = '/'.html_entity_decode(str_replace('/','\/',$settings['subdomain_pattern'])) . '/'; - Plugin_Debug::logTrace($this->subdomain_pattern); - $this->source_language = $settings['source_language']; - if ( ! empty($settings['languages'] )) { - $b = strpos( ',', $settings['languages'] ); - if ( false === $b ) { - $this->language_codes = array( $settings['languages'] ); - } else { - $this->language_codes = explode( ',', $settings['languages'] ); - } - } - } - - /** - * Factory function to create a rewrite object - * @param array $settings Associative array used to store plugin settings. - */ - static function create_subdomains( $settings ) { - Plugin_Debug::logTrace(); - if ( !isset( $settings['languages'] ) ) { - Plugin_Debug::logTrace( 'settings[languages] not set' ); - return false; - } - - if ( $settings['url_options'] != '2' ) { - Plugin_Debug::logTrace( 'settings[url_options] not subdomain' ); - return false; - } - - return new Transifex_Live_Integration_Subdomain( $settings ); - } - - /** - * Callback function to the WP parse_query hook - * @param array $query WP query object. - */ - function parse_query_hook( $query ) { - Plugin_Debug::logTrace(); - $m = array(); - if (preg_match($this->subdomain_pattern,site_url(),$m)){ - $query->query_vars['lang'] = $m[1]; - } else { - $query->query_vars['lang'] = $this->source_language; - } - return $query; - } - - -} diff --git a/includes/transifex-live-integration-util.php b/includes/transifex-live-integration-util.php new file mode 100644 index 00000000..0138f945 --- /dev/null +++ b/includes/transifex-live-integration-util.php @@ -0,0 +1,52 @@ + 0) : false; + } + + static function get_user_agent() { + Plugin_Debug::logTrace(); + return (isset( $_SERVER['HTTP_USER_AGENT'] )) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : false; + } + + static function is_bot_type( $agent, $bot_types ) { + Plugin_Debug::logTrace(); + return !empty( $agent ) ? (preg_match( "/{$bot_types}/i", $agent ) > 0) : false; + } + + static function is_prerender_req( $agent ) { + Plugin_Debug::logTrace(); + $ret = (strpos( $agent, 'prerender' )) ? true : false; + return $ret; + } + + static function prerender_check( $req_user_agent, $req_escaped_fragment, + $bot_types, $whitelist_names + ) { + Plugin_Debug::logTrace(); + + $bot_types_escaped = addcslashes( $bot_types, '/' ); + $whitelist_names_escaped = addcslashes( $whitelist_names, '/' ); + + $is_bot = self::is_bot_type( $req_user_agent, $bot_types_escaped ); + $is_whitelisted = ($is_bot) ? true : self::is_whitelist_name( $req_user_agent, $whitelist_names_escaped ); + $has_escaped_fragment = ($is_whitelisted) ? true : ($req_escaped_fragment) ? true : false; + $prerender_ok = ($has_escaped_fragment) ? true : self::is_prerender_req( self::get_user_agent() ); + + return $prerender_ok; + } + +} diff --git a/includes/transifex-live-integration-validators.php b/includes/transifex-live-integration-validators.php deleted file mode 100644 index 69fab45c..00000000 --- a/includes/transifex-live-integration-validators.php +++ /dev/null @@ -1,74 +0,0 @@ - substr_count( $link, '/' ) ) { //Note: this will return for home urls wo the trailing slash - Plugin_Debug::logTrace( 'failed validator slash count' ); - return false; - } - return true; - } - - static function is_rules_ok( $rules ) { - if ( !self::is_ok( $rules ) ) { - Plugin_Debug::logTrace( 'failed validator' ); - return false; - } - if ( !is_array( $rules ) ) { - Plugin_Debug::logTrace( 'failed validator is_array' ); - return false; - } - return true; - } - - static function is_permalink_ok( $permalink ) { - return self::is_ok( $permalink ); - } - - static function is_query_ok( $query ) { - if ( !self::is_ok( $query ) ) { - Plugin_Debug::logTrace( 'failed validator' ); - return false; - } - $query_vars = (isset( $query->query_vars )) ? $query->query_vars : false; - if ( !self::is_query_vars_ok( $query_vars ) ) { - Plugin_Debug::logTrace( 'failed validator query vars' ); - return false; - } - return true; - } - - static function is_query_vars_ok( $query_vars ) { - return self::is_ok( $query_vars ); - } - - static function is_ok( $o ) { - if ( !$o ) { - Plugin_Debug::logTrace( 'failed validator is_ok false' ); - return false; - } - if ( !isset( $o ) ) { - Plugin_Debug::logTrace( 'failed validator is_ok not isset' ); - return false; - } - if ( empty( $o ) ) { - Plugin_Debug::logTrace( 'failed validator is_ok empty' ); - return false; - } - return true; - } - -} diff --git a/javascript/transifex-live-integration-settings-page.js b/javascript/transifex-live-integration-settings-page.js index 1f3b8101..b9cf7e1f 100755 --- a/javascript/transifex-live-integration-settings-page.js +++ b/javascript/transifex-live-integration-settings-page.js @@ -19,10 +19,12 @@ function transifex_live_integration_map_update(tl) { var local_lm = []; var arr = {}; // loop through transifex languages - jQuery.each(t, function (i, s) { - var l = jQuery('#transifex-integration-live-' + s).val(); - arr[s] = l; - }); + jQuery.each( + t, function (i, s) { + var l = jQuery('#transifex-integration-live-' + s).val(); + arr[s] = l; + } + ); local_lm.push(arr); jQuery('#transifex_live_settings_language_map').val(JSON.stringify(local_lm)); return true; @@ -38,15 +40,17 @@ function transifex_live_integration_convert(l) { language_lookup = []; language_map = []; var arrr = {}; - jQuery.each(t, function (i, o) { - h.push(transifex_live_integration_mapper(o)); - transifex_languages.push(o['code']); - var arr = {}; - arr['tx_name'] = o['tx_name']; - arr['code'] = o['code']; - language_lookup.push(arr); - arrr[o['code']] = o['code']; - }); + jQuery.each( + t, function (i, o) { + h.push(transifex_live_integration_mapper(o)); + transifex_languages.push(o['code']); + var arr = {}; + arr['tx_name'] = o['tx_name']; + arr['code'] = o['code']; + language_lookup.push(arr); + arrr[o['code']] = o['code']; + } + ); language_map.push(arrr); var s = { caption: 'Source:' + l['source']['tx_name'], @@ -65,23 +69,29 @@ function transifex_live_integration_convert(l) { function transifexLanguages() { var apikey = jQuery('#transifex_live_settings_api_key').val(); if (apikey != '') { - jQuery.ajax({ - url: "https://cdn.transifex.com/" + apikey + "/latest/languages.jsonp", - jsonpCallback: "transifex_languages", - jsonp: true, - dataType: "jsonp", - timeout: 3000 - }).done(function (data) { - if (data['translation'] != undefined && data['translation'].length > 0) { - globaldata = data; - transifex_language_fields = transifex_live_integration_convert(data); - jQuery('#transifex_live_settings_api_key').trigger('success'); - } else { - jQuery('#transifex_live_settings_api_key').trigger('notranslation'); + jQuery.ajax( + { + url: "https://cdn.transifex.com/" + apikey + "/latest/languages.jsonp", + jsonpCallback: "transifex_languages", + jsonp: true, + dataType: "jsonp", + timeout: 3000 } - }).fail(function () { - jQuery('#transifex_live_settings_api_key').trigger('error'); - }); + ).done( + function (data) { + if (data['translation'] != undefined && data['translation'].length > 0) { + globaldata = data; + transifex_language_fields = transifex_live_integration_convert(data); + jQuery('#transifex_live_settings_api_key').trigger('success'); + } else { + jQuery('#transifex_live_settings_api_key').trigger('notranslation'); + } + } + ).fail( + function () { + jQuery('#transifex_live_settings_api_key').trigger('error'); + } + ); } else { jQuery('#transifex_live_settings_api_key').trigger('blank'); } @@ -95,43 +105,61 @@ function addTransifexLanguages(obj) { var myName = ''; var myId = ''; var tl = JSON.parse(jQuery('#transifex_live_settings_transifex_languages').val()); - jQuery.each(obj, function (i, o) { - myName = 'transifex-integration-live-' + o.code; - myId = 'transifex-integration-live-' + o.code; - jQuery('#transifex_live_language_map_table').append(jQuery('#transifex_live_language_map_template').clone().show().addClass('cloned-language-map').each(function (ii, oo) { - jQuery(oo).find('span.tx-language').text(o.tx_name); - jQuery(oo).find('input.tx-code').attr('id', myId).attr('name', myName).val(lm[0][o.code]); - })); - }); + jQuery.each( + obj, function (i, o) { + myName = 'transifex-integration-live-' + o.code; + myId = 'transifex-integration-live-' + o.code; + jQuery('#transifex_live_language_map_table').append( + jQuery('#transifex_live_language_map_template').clone().show().addClass('cloned-language-map').each( + function (ii, oo) { + jQuery(oo).find('span.tx-language').text(o.tx_name); + jQuery(oo).find('input.tx-code').attr('id', myId).attr('name', myName).val(lm[0][o.code]); + } + ) + ); + } + ); - jQuery.each(obj, function (i, o) { - jQuery('#transifex-integration-live-' + o.code).machine({defaultState: {onEnter: function () { + jQuery.each( + obj, function (i, o) { + jQuery('#transifex-integration-live-' + o.code).machine( + {defaultState: {onEnter: function () { transifex_live_integration_map_update(tl); }, - events: {change: 'defaultState'}}, }); - }); + events: {change: 'defaultState'}}, } + ); + } + ); } else { var tlslm = JSON.parse(jQuery('#transifex_live_settings_language_map').val()); language_map = (tlslm.length < 1) ? language_map : []; - jQuery.each(transifex_language_fields['html'], function (i, o) { - jQuery('#transifex_live_language_map_table').append(jQuery('#transifex_live_language_map_template').clone().show().addClass('cloned-language-map').each(function () { - jQuery(this).find('span.tx-language').text(o.caption); - if (tlslm.length < 1) { - jQuery(this).find('input.tx-code').attr('id', o.id).attr('name', o.name).val(o.value); - } else { - jQuery(this).find('input.tx-code').attr('id', o.id).attr('name', o.name).val(tlslm[0][o.value]); - var e = {}; - e[o.value] = tlslm[0][o.value]; - language_map.push(e); - } - jQuery(this).machine({defaultState: {onEnter: function () { - transifex_live_integration_map_update(); - }, - events: {change: 'defaultState'}}, }); - })); - }); + jQuery.each( + transifex_language_fields['html'], function (i, o) { + jQuery('#transifex_live_language_map_table').append( + jQuery('#transifex_live_language_map_template').clone().show().addClass('cloned-language-map').each( + function () { + jQuery(this).find('span.tx-language').text(o.caption); + if (tlslm.length < 1) { + jQuery(this).find('input.tx-code').attr('id', o.id).attr('name', o.name).val(o.value); + } else { + jQuery(this).find('input.tx-code').attr('id', o.id).attr('name', o.name).val(tlslm[0][o.value]); + var e = {}; + e[o.value] = tlslm[0][o.value]; + language_map.push(e); + } + jQuery(this).machine( + {defaultState: {onEnter: function () { + transifex_live_integration_map_update(); + }, + events: {change: 'defaultState'}}, } + ); + } + ) + ); + } + ); jQuery('#transifex_live_settings_source_language').val(source_language); jQuery('#transifex_live_settings_transifex_languages').val(JSON.stringify(transifex_languages)); jQuery('#transifex_live_settings_language_lookup').val(JSON.stringify(language_lookup)); @@ -145,429 +173,453 @@ function updateTransifexSettingsFields(obj) { } (function ($) { - $('#transifex_live_languages').machine({ - defaultState: { - onEnter: function () { - $.log.debug('#transifex_live_languages:defaultState:onEnter'); - ($('#transifex_live_settings_language_lookup').val() !== '') ? this.trigger('render') : this.trigger('wait'); + $('#transifex_live_languages').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('#transifex_live_languages:defaultState:onEnter'); + ($('#transifex_live_settings_language_lookup').val() !== '') ? this.trigger('render') : this.trigger('wait'); - }, - events: {render: 'render', wait: 'wait'} - }, - wait: { - onEnter: function () { - $.log.debug('#transifex_live_languages:wait:onEnter'); - }, - events: {load: 'loadnew'} - }, - loadnew: { - onEnter: function () { - $.log.debug('#transifex_live_languages:load:onEnter'); - $("#transifex_live_languages_message").toggleClass('hide-if-js', true); - $(".cloned-language-map").remove(); - addTransifexLanguages(); - }, - events: {load: 'loadnew'} - }, - render: { - onEnter: function () { - $.log.debug('#transifex_live_languages:render:onEnter'); - $("#transifex_live_languages_message").toggleClass('hide-if-js', true); - var obj = jQuery.parseJSON(jQuery('#transifex_live_settings_language_lookup').val()); - myobj = obj; - addTransifexLanguages(obj); - }, - events: {load: 'loadnew'} - } - }, {setClass: true}); + }, + events: {render: 'render', wait: 'wait'} + }, + wait: { + onEnter: function () { + $.log.debug('#transifex_live_languages:wait:onEnter'); + }, + events: {load: 'loadnew'} + }, + loadnew: { + onEnter: function () { + $.log.debug('#transifex_live_languages:load:onEnter'); + $("#transifex_live_languages_message").toggleClass('hide-if-js', true); + $(".cloned-language-map").remove(); + addTransifexLanguages(); + }, + events: {load: 'loadnew'} + }, + render: { + onEnter: function () { + $.log.debug('#transifex_live_languages:render:onEnter'); + $("#transifex_live_languages_message").toggleClass('hide-if-js', true); + var obj = jQuery.parseJSON(jQuery('#transifex_live_settings_language_lookup').val()); + myobj = obj; + addTransifexLanguages(obj); + }, + events: {load: 'loadnew'} + } + }, {setClass: true} + ); })(jQuery); (function ($) { - $('#transifex_live_settings_api_key_button').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key_button::defaultState::onEnter'); - ($('#transifex_live_settings_api_key').val() !== '') ? this.trigger('hidden') : this.trigger('wait'); - }, - events: {wait: 'wait', hidden: 'hidden'} - }, - wait: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key_button::wait::onEnter'); - this.show(); - this.attr('disabled', false); - }, - events: {click: 'checking'} - }, - checking: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key_button::checking::onEnter'); - $('#transifex_live_settings_api_key').trigger('validating'); - this.attr('disabled', true); - }, - events: {wait: 'wait', hidden: 'hidden'} - }, - hidden: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key_button::hidden::onEnter'); - this.hide(); - }, - events: {wait: 'wait'} - } - }, {setClass: true}); + $('#transifex_live_settings_api_key_button').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key_button::defaultState::onEnter'); + ($('#transifex_live_settings_api_key').val() !== '') ? this.trigger('hidden') : this.trigger('wait'); + }, + events: {wait: 'wait', hidden: 'hidden'} + }, + wait: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key_button::wait::onEnter'); + this.show(); + this.attr('disabled', false); + }, + events: {click: 'checking'} + }, + checking: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key_button::checking::onEnter'); + $('#transifex_live_settings_api_key').trigger('validating'); + this.attr('disabled', true); + }, + events: {wait: 'wait', hidden: 'hidden'} + }, + hidden: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key_button::hidden::onEnter'); + this.hide(); + }, + events: {wait: 'wait'} + } + }, {setClass: true} + ); })(jQuery); (function (Transifex, $) { - $('#transifex_live_settings_api_key').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key:defaultState:onEnter'); - languages_override = false; - this.trigger('validating'); - }, - events: {validating: 'validating'} - }, - validating: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key:validating:onEnter'); + $('#transifex_live_settings_api_key').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key:defaultState:onEnter'); + languages_override = false; + this.trigger('validating'); + }, + events: {validating: 'validating'} + }, + validating: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key:validating:onEnter'); - $('#transifex_live_settings_url_options_none').attr('disabled', true); - $('#transifex_live_settings_url_options_subdirectory').attr('disabled', true); - $('#transifex_live_settings_url_options_subdomain').attr('disabled', true); - $('input#transifex_live_submit').trigger('disable'); - $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', false); - $('#transifex_live_settings_api_key_message_valid').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_error').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_missing').toggleClass('hide-if-js', true); - transifexLanguages(); - transifex_settings_params = { - url: "https://cdn.transifex.com/" + this.val() + "/latest/settings.all.jsonp", - done: function (data) { - if (data) { - updateTransifexSettingsFields(data); - $('#transifex_live_settings_api_key').trigger('success'); - } else { + $('#transifex_live_settings_url_options_none').attr('disabled', true); + $('#transifex_live_settings_url_options_subdirectory').attr('disabled', true); + $('#transifex_live_settings_url_options_subdomain').attr('disabled', true); + $('input#transifex_live_submit').trigger('disable'); + $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', false); + $('#transifex_live_settings_api_key_message_valid').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_error').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_missing').toggleClass('hide-if-js', true); + transifexLanguages(); + transifex_settings_params = { + url: "https://cdn.transifex.com/" + this.val() + "/latest/settings.all.jsonp", + done: function (data) { + if (data) { + updateTransifexSettingsFields(data); + $('#transifex_live_settings_api_key').trigger('success'); + } else { + $('#transifex_live_settings_api_key').trigger('error'); + } + }, + fail: function () { $('#transifex_live_settings_api_key').trigger('error'); } - }, - fail: function () { - $('#transifex_live_settings_api_key').trigger('error'); - } - }; + }; - Transifex.httpGet(transifex_settings_params); - }, - events: {success: 'validating2', blank: 'blank', error: 'error', notranslation: 'missing', change: 'validating'} - }, - validating2: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key:validating2:onEnter'); - }, - events: {success: 'valid', blank: 'blank', error: 'error', notranslation: 'missing', change: 'validating'} - }, - valid: { - onEnter: function () { - $.log.debug('#transifex_live_settings_api_key:valid:onEnter'); - $('#transifex_live_settings_api_key_button').trigger('hidden'); - $('#transifex_live_settings_url_options_none').attr('disabled', false); - $('#transifex_live_settings_url_options_subdirectory').attr('disabled', false); - $('#transifex_live_settings_url_options_subdomain').attr('disabled', false); - if (jQuery('#transifex_live_settings_language_map').val() == '[]' || languages_override) { - $('#transifex_live_languages').trigger('load'); - languages_override = false; - } - $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_valid').toggleClass('hide-if-js', false); - $('input#transifex_live_submit').trigger('enable'); - }, - events: {success: 'valid', change: 'validating', validating: 'validating'} - }, - error: { - onEnter: function () { - $.log.debug('error:onEnter'); - $('#transifex_live_settings_api_key_button').trigger('wait'); - $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_error').toggleClass('hide-if-js', false); - }, - events: {change: 'validating', validating: 'validating'} - }, - blank: { - onEnter: function () { - $.log.debug('transifex_live_settings_api_key:blank:onEnter'); - $('#transifex_live_settings_api_key_button').trigger('wait'); - $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_valid').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_error').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_missing').toggleClass('hide-if-js', true); - }, - events: {change: 'validating', validating: 'validating'} - }, - missing: { - onEnter: function () { - $.log.debug('#transifex_live_settings_api_key:missing:onEnter'); - $('#transifex_live_settings_api_key_button').trigger('wait'); - $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); - $('#transifex_live_settings_api_key_message_missing').toggleClass('hide-if-js', false); - }, - events: {validating: 'validating'} - } - }, {setClass: true}); + Transifex.httpGet(transifex_settings_params); + }, + events: {success: 'validating2', blank: 'blank', error: 'error', notranslation: 'missing', change: 'validating'} + }, + validating2: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key:validating2:onEnter'); + }, + events: {success: 'valid', blank: 'blank', error: 'error', notranslation: 'missing', change: 'validating'} + }, + valid: { + onEnter: function () { + $.log.debug('#transifex_live_settings_api_key:valid:onEnter'); + $('#transifex_live_settings_api_key_button').trigger('hidden'); + $('#transifex_live_settings_url_options_none').attr('disabled', false); + $('#transifex_live_settings_url_options_subdirectory').attr('disabled', false); + $('#transifex_live_settings_url_options_subdomain').attr('disabled', false); + if (jQuery('#transifex_live_settings_language_map').val() == '[]' || languages_override) { + $('#transifex_live_languages').trigger('load'); + languages_override = false; + } + $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_valid').toggleClass('hide-if-js', false); + $('input#transifex_live_submit').trigger('enable'); + }, + events: {success: 'valid', change: 'validating', validating: 'validating'} + }, + error: { + onEnter: function () { + $.log.debug('error:onEnter'); + $('#transifex_live_settings_api_key_button').trigger('wait'); + $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_error').toggleClass('hide-if-js', false); + }, + events: {change: 'validating', validating: 'validating'} + }, + blank: { + onEnter: function () { + $.log.debug('transifex_live_settings_api_key:blank:onEnter'); + $('#transifex_live_settings_api_key_button').trigger('wait'); + $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_valid').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_error').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_missing').toggleClass('hide-if-js', true); + }, + events: {change: 'validating', validating: 'validating'} + }, + missing: { + onEnter: function () { + $.log.debug('#transifex_live_settings_api_key:missing:onEnter'); + $('#transifex_live_settings_api_key_button').trigger('wait'); + $('#transifex_live_settings_api_key_message_validating').toggleClass('hide-if-js', true); + $('#transifex_live_settings_api_key_message_missing').toggleClass('hide-if-js', false); + }, + events: {validating: 'validating'} + } + }, {setClass: true} + ); })(window.Transifex, jQuery); (function ($) { - $('#transifex_live_settings_url_options_none').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_none::defaultState::onEnter'); - }, - events: {click: 'on'} - }, - on: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_none::on::onEnter'); - $('#transifex_live_settings_url_options').trigger('none'); - }, - events: {click: 'on'} - }, - }, {setClass: true}); + $('#transifex_live_settings_url_options_none').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_none::defaultState::onEnter'); + }, + events: {click: 'on'} + }, + on: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_none::on::onEnter'); + $('#transifex_live_settings_url_options').trigger('none'); + }, + events: {click: 'on'} + }, + }, {setClass: true} + ); })(jQuery); (function ($) { - $('#transifex_live_settings_url_options_subdirectory').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_subdirectory::defaultState::onEnter'); - }, - events: {click: 'on'} - }, - on: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_subdirectory::on::onEnter'); - $('#transifex_live_settings_url_options').trigger('subdirectory'); - }, - events: {click: 'on'} - }, - }, {setClass: true}); + $('#transifex_live_settings_url_options_subdirectory').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_subdirectory::defaultState::onEnter'); + }, + events: {click: 'on'} + }, + on: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_subdirectory::on::onEnter'); + $('#transifex_live_settings_url_options').trigger('subdirectory'); + }, + events: {click: 'on'} + }, + }, {setClass: true} + ); })(jQuery); (function ($) { - $('#transifex_live_settings_url_options_subdomain').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_subdomain::defaultState::onEnter'); - }, - events: {click: 'on'} - }, - on: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_subdomain::on::onEnter'); - $('#transifex_live_settings_url_options').trigger('subdomain'); - }, - events: {click: 'on'} - }, - }, {setClass: true}); + $('#transifex_live_settings_url_options_subdomain').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_subdomain::defaultState::onEnter'); + }, + events: {click: 'on'} + }, + on: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_subdomain::on::onEnter'); + $('#transifex_live_settings_url_options').trigger('subdomain'); + }, + events: {click: 'on'} + }, + }, {setClass: true} + ); })(jQuery); (function ($) { - $('#transifex_live_settings_url_options').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options::defaultState::onEnter'); - (this.val() === "1") ? this.trigger('none') : (this.val() === "2") ? this.trigger('subdomain') : this.trigger('subdirectory'); - }, - events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} - }, - none: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options::none::onEnter'); - $('.url-structure-subdirectory').toggleClass('hide-if-js', true); - $('.url-structure-subdomain').toggleClass('hide-if-js', true); - $('.custom-urls-settings').toggleClass('hide-if-js', true); - $('#transifex_live_settings_url_options_subdirectory').prop("checked", false); - $('#transifex_live_settings_url_options_subdomain').prop("checked", false); - this.val('1'); - $('input#transifex_live_submit').trigger('enable'); - }, - events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} - }, - subdirectory: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options::subdirectory::onEnter'); - $('#transifex_live_settings_custom_urls').val("1"); - $('.url-structure-subdirectory').toggleClass('hide-if-js', false); - $('.url-structure-subdomain').toggleClass('hide-if-js', true); - $('.custom-urls-settings').toggleClass('hide-if-js', false); - $('#transifex_live_options_all').trigger('activate'); - $('#transifex_live_settings_url_options_none').prop("checked", false); - $('#transifex_live_settings_url_options_subdomain').prop("checked", false); - this.val('3'); - $('input#transifex_live_submit').trigger('enable'); - }, - events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} - }, - subdomain: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options::subdomain::onEnter'); - $('#transifex_live_settings_custom_urls').val("1"); - $('.url-structure-subdirectory').toggleClass('hide-if-js', true); - $('.url-structure-subdomain').toggleClass('hide-if-js', false); - $('.custom-urls-settings').toggleClass('hide-if-js', false); - $('#transifex_live_options_all').trigger('activate'); - $('#transifex_live_settings_url_options_subdirectory').prop("checked", false); - $('#transifex_live_settings_url_options_none').prop("checked", false); - this.val('2'); - $('input#transifex_live_submit').trigger('enable'); - }, - events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} - } - }, {setClass: true}); + $('#transifex_live_settings_url_options').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options::defaultState::onEnter'); + (this.val() === "1") ? this.trigger('none') : (this.val() === "2") ? this.trigger('subdomain') : this.trigger('subdirectory'); + }, + events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} + }, + none: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options::none::onEnter'); + $('.url-structure-subdirectory').toggleClass('hide-if-js', true); + $('.url-structure-subdomain').toggleClass('hide-if-js', true); + $('.custom-urls-settings').toggleClass('hide-if-js', true); + $('#transifex_live_settings_url_options_subdirectory').prop("checked", false); + $('#transifex_live_settings_url_options_subdomain').prop("checked", false); + this.val('1'); + $('input#transifex_live_submit').trigger('enable'); + }, + events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} + }, + subdirectory: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options::subdirectory::onEnter'); + $('#transifex_live_settings_custom_urls').val("1"); + $('.url-structure-subdirectory').toggleClass('hide-if-js', false); + $('.url-structure-subdomain').toggleClass('hide-if-js', true); + $('.custom-urls-settings').toggleClass('hide-if-js', false); + $('#transifex_live_options_all').trigger('activate'); + $('#transifex_live_settings_url_options_none').prop("checked", false); + $('#transifex_live_settings_url_options_subdomain').prop("checked", false); + this.val('3'); + $('input#transifex_live_submit').trigger('enable'); + }, + events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} + }, + subdomain: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options::subdomain::onEnter'); + $('#transifex_live_settings_custom_urls').val("1"); + $('.url-structure-subdirectory').toggleClass('hide-if-js', true); + $('.url-structure-subdomain').toggleClass('hide-if-js', false); + $('.custom-urls-settings').toggleClass('hide-if-js', false); + $('#transifex_live_options_all').trigger('activate'); + $('#transifex_live_settings_url_options_subdirectory').prop("checked", false); + $('#transifex_live_settings_url_options_none').prop("checked", false); + this.val('2'); + $('input#transifex_live_submit').trigger('enable'); + }, + events: {none: 'none', subdomain: 'subdomain', subdirectory: 'subdirectory'} + } + }, {setClass: true} + ); })(jQuery); (function ($) { - $('#transifex_live_settings_rewrite_option_all').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_rewrite_option_all::defaultState::onEnter'); - if (this.prop('checked')) { - this.trigger('seton'); - } else { - this.trigger('setoff'); - } - }, - events: {seton: 'on', setoff: 'off'} - }, - on: { - onEnter: function () { - $.log.debug('transifex_live_settings_rewrite_option_all::on::onEnter'); - this.prop('checked', true); - $('.all_selector').trigger('on'); - }, - events: {click: 'off', off: 'off', singleoff: 'singleoff'} - }, - off: { - onEnter: function () { - $.log.debug('transifex_live_settings_rewrite_option_all::off::onEnter'); - this.prop('checked', false); - $('.all_selector').trigger('off'); - $('input#transifex_live_submit').trigger('disable'); - }, - events: {click: 'on'} - }, - singleoff: { - onEnter: function () { - $.log.debug('transifex_live_settings_rewrite_option_all::singleoff::onEnter'); - this.prop("checked", false); - }, - events: {click: 'on'} - } - }, {setClass: true}); + $('#transifex_live_settings_rewrite_option_all').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_rewrite_option_all::defaultState::onEnter'); + if (this.prop('checked')) { + this.trigger('seton'); + } else { + this.trigger('setoff'); + } + }, + events: {seton: 'on', setoff: 'off'} + }, + on: { + onEnter: function () { + $.log.debug('transifex_live_settings_rewrite_option_all::on::onEnter'); + this.prop('checked', true); + $('.all_selector').trigger('on'); + }, + events: {click: 'off', off: 'off', singleoff: 'singleoff'} + }, + off: { + onEnter: function () { + $.log.debug('transifex_live_settings_rewrite_option_all::off::onEnter'); + this.prop('checked', false); + $('.all_selector').trigger('off'); + $('input#transifex_live_submit').trigger('disable'); + }, + events: {click: 'on'} + }, + singleoff: { + onEnter: function () { + $.log.debug('transifex_live_settings_rewrite_option_all::singleoff::onEnter'); + this.prop("checked", false); + }, + events: {click: 'on'} + } + }, {setClass: true} + ); })(jQuery); (function ($) { - $('.all_selector').machine({ - defaultState: { - onEnter: function () { - $.log.debug('all_selector::defaultState::onEnter'); - if (this.prop('checked')) { - this.trigger('seton'); - } else { - this.trigger('setoff'); - } - }, - events: {seton: 'on', setoff: 'off'} - }, - on: { - onEnter: function () { - $.log.debug('all_selector::on::onEnter'); - this.prop("checked", true); - $('input#transifex_live_submit').trigger('enable'); - }, - events: {click: 'off', off: 'off'} - }, - off: { - onEnter: function () { - $.log.debug('all_selector::off::onEnter'); - this.prop("checked", false); - $('#transifex_live_settings_rewrite_option_all').trigger('singleoff'); - $('input#transifex_live_submit').trigger('enable'); - }, - events: {click: 'on', on: 'on'} - } - }, {setClass: true}); + $('.all_selector').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('all_selector::defaultState::onEnter'); + if (this.prop('checked')) { + this.trigger('seton'); + } else { + this.trigger('setoff'); + } + }, + events: {seton: 'on', setoff: 'off'} + }, + on: { + onEnter: function () { + $.log.debug('all_selector::on::onEnter'); + this.prop("checked", true); + $('input#transifex_live_submit').trigger('enable'); + }, + events: {click: 'off', off: 'off'} + }, + off: { + onEnter: function () { + $.log.debug('all_selector::off::onEnter'); + this.prop("checked", false); + $('#transifex_live_settings_rewrite_option_all').trigger('singleoff'); + $('input#transifex_live_submit').trigger('enable'); + }, + events: {click: 'on', on: 'on'} + } + }, {setClass: true} + ); })(jQuery); (function ($) { - $('input#transifex_live_submit').machine({ - defaultState: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_subdomain::input#transifex_live_submit::onEnter'); - this.trigger('disable'); - }, - events: {disable: 'disable'} - }, - enable: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_subdomain::enable::onEnter'); - this.attr('disabled', false); - if (jQuery('#transifex_live_settings_url_options').data('state') == 'subdirectory') { - var checkOptions = false; - $.each($('.all_selector'), function (i, o) { + $('input#transifex_live_submit').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_subdomain::input#transifex_live_submit::onEnter'); + this.trigger('disable'); + }, + events: {disable: 'disable'} + }, + enable: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_subdomain::enable::onEnter'); + this.attr('disabled', false); + if (jQuery('#transifex_live_settings_url_options').data('state') == 'subdirectory') { + var checkOptions = false; + $.each( + $('.all_selector'), function (i, o) { + if (!checkOptions) { + checkOptions = ($(o).prop('checked')) ? true : false; + } + } + ); if (!checkOptions) { - checkOptions = ($(o).prop('checked')) ? true : false; + this.trigger('disable'); } - }); - if (!checkOptions) { - this.trigger('disable'); } - } - }, - events: {disable: 'disable', enable: 'enable'} - }, - disable: { - onEnter: function () { - $.log.debug('transifex_live_settings_url_options_subdomain::enable::onEnter'); - this.attr('disabled', true); - }, - events: {enable: 'enable'} - }, - }, {setClass: true}); + }, + events: {disable: 'disable', enable: 'enable'} + }, + disable: { + onEnter: function () { + $.log.debug('transifex_live_settings_url_options_subdomain::enable::onEnter'); + this.attr('disabled', true); + }, + events: {enable: 'enable'} + }, + }, {setClass: true} + ); })(jQuery); (function ($) { - $('input#transifex_live_sync').machine({ - defaultState: { - onEnter: function () { - $.log.debug('input#transifex_live_sync::defaultState::onEnter'); - this.trigger('wait'); - }, - events: {wait: 'wait'} - }, - wait: { - onEnter: function () { - $.log.debug('input#transifex_live_sync::wait::onEnter'); - }, - events: {click: 'confirm'} - }, - confirm: { - onEnter: function () { - $.log.debug('input#transifex_live_sync::confirm::onEnter'); - this.trigger('refresh'); - //this.trigger('wait'); - }, - events: {refresh: 'refresh', wait: 'wait'} - }, - refresh: { - onEnter: function () { - $.log.debug('input#transifex_live_sync::refresh::onEnter'); - languages_override = true; - jQuery('#transifex_live_settings_api_key').trigger('validating'); + $('input#transifex_live_sync').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('input#transifex_live_sync::defaultState::onEnter'); + this.trigger('wait'); + }, + events: {wait: 'wait'} + }, + wait: { + onEnter: function () { + $.log.debug('input#transifex_live_sync::wait::onEnter'); + }, + events: {click: 'confirm'} + }, + confirm: { + onEnter: function () { + $.log.debug('input#transifex_live_sync::confirm::onEnter'); + this.trigger('refresh'); + //this.trigger('wait'); + }, + events: {refresh: 'refresh', wait: 'wait'} + }, + refresh: { + onEnter: function () { + $.log.debug('input#transifex_live_sync::refresh::onEnter'); + languages_override = true; + jQuery('#transifex_live_settings_api_key').trigger('validating'); - this.trigger('wait'); + this.trigger('wait'); + }, + events: {wait: 'wait'} }, - events: {wait: 'wait'} - }, - }, {setClass: true}); + }, {setClass: true} + ); })(jQuery); \ No newline at end of file diff --git a/javascript/transifex-live-integration-transifex-settings.js b/javascript/transifex-live-integration-transifex-settings.js index 71353be3..a5074ca4 100755 --- a/javascript/transifex-live-integration-transifex-settings.js +++ b/javascript/transifex-live-integration-transifex-settings.js @@ -5,17 +5,23 @@ window.Transifex = window.Transifex || {}; } exports.httpGet = function (params) { - $.ajax({ - url: params.url || "BADURL", - jsonpCallback: params.jsonpCallback || "transifex_settings", - jsonp: params.jsonp || true, - dataType: params.dataType || "jsonp", - timeout: params.timeout || 3000 - }).done(function (data) { - params.done(self.validate(data)); - }).fail(function () { - params.fail(); - }); + $.ajax( + { + url: params.url || "BADURL", + jsonpCallback: params.jsonpCallback || "transifex_settings", + jsonp: params.jsonp || true, + dataType: params.dataType || "jsonp", + timeout: params.timeout || 3000 + } + ).done( + function (data) { + params.done(self.validate(data)); + } + ).fail( + function () { + params.fail(); + } + ); }; @@ -24,10 +30,12 @@ window.Transifex = window.Transifex || {}; var expected_keys = ['picker', 'domain']; var keys = Object.keys(obj['production']); var diff = []; - $.grep(expected_keys, function (e) { - if ($.inArray(e, keys) === -1) - diff.push(e); - }); + $.grep( + expected_keys, function (e) { + if ($.inArray(e, keys) === -1) { + diff.push(e); } + } + ); if (diff.length === 0) { ret = obj; diff --git a/language_mapper.php b/language_mapper.php deleted file mode 100644 index e8f71b7a..00000000 --- a/language_mapper.php +++ /dev/null @@ -1,52 +0,0 @@ - "fr","name" => "French"]]; - $test_data['expected_source'] = 'en'; - array_push($arr,$test_data); - - $test_data['input'] = 'transifex_languages({"timestamp": "1450373800.92", "translation": [{"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/zh_CN.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "Chinese (China)", "code": "zh_CN", "name": "\u4e2d\u6587 (\u4e2d\u56fd)", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/fr.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "French", "code": "fr", "name": "Fran\u00e7ais", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/de_DE.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "German (Germany)", "code": "de_DE", "name": "Deutsch", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/ko.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "Korean", "code": "ko", "name": "\ud55c\uad6d\uc5b4", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/es.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "Spanish", "code": "es", "name": "Espa\u00f1ol", "rtl": false}], "source": {"tx_name": "English", "code": "en", "name": "English", "rtl": false}});'; - $test_data['expected_languages'] = [["code" => "fr","name" => "French"],["tx_name"=> "Chinese (China)", "code"=> "zh_CN"],["tx_name"=> "German (Germany)", "code"=> "de_DE"],["tx_name"=> "Spanish", "code"=> "es"],["tx_name"=> "Korean", "code"=> "ko"]]; - $test_data['expected_source'] = 'en'; - array_push($arr,$test_data); - - $reg = '/\s*transifex_languages\(\s*(.+?)\s*\);/'; - - foreach ($arr as $i) { - preg_match($reg,$i['input'],$m); - $tl_array = json_decode($m[1],true); - - $tl_t_array = $tl_array['translation']; - - $language_array = array_map( - function($x) { - $arr = ["code" => $x['code'],"name" => $x['tx_name']]; - return $arr; }, - $tl_t_array - ); - } - $mapper = ""; - foreach ($language_array as $item) { - $name = $item['name']; - $code = $item['code']; - $mapper .= << - -
-MAPPER; -} -eval(\Psy\sh()); -} - - -} - - - -?> \ No newline at end of file diff --git a/parse_transifex_languages.php b/parse_transifex_languages.php deleted file mode 100644 index eeba40c3..00000000 --- a/parse_transifex_languages.php +++ /dev/null @@ -1,46 +0,0 @@ - "fr","name" => "French"]]; - $test_data['expected_source'] = 'en'; - array_push($arr,$test_data); - - $test_data['input'] = 'transifex_languages({"timestamp": "1450373800.92", "translation": [{"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/zh_CN.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "Chinese (China)", "code": "zh_CN", "name": "\u4e2d\u6587 (\u4e2d\u56fd)", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/fr.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "French", "code": "fr", "name": "Fran\u00e7ais", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/de_DE.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "German (Germany)", "code": "de_DE", "name": "Deutsch", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/ko.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "Korean", "code": "ko", "name": "\ud55c\uad6d\uc5b4", "rtl": false}, {"url": "//cdn.transifex.com/2699bc66df6546008d0a14acf26732a1/latest/es.f5a69719038448b9926a8950554ab9f4.jsonp", "tx_name": "Spanish", "code": "es", "name": "Espa\u00f1ol", "rtl": false}], "source": {"tx_name": "English", "code": "en", "name": "English", "rtl": false}});'; - $test_data['expected_languages'] = [["code" => "fr","name" => "French"],["tx_name"=> "Chinese (China)", "code"=> "zh_CN"],["tx_name"=> "German (Germany)", "code"=> "de_DE"],["tx_name"=> "Spanish", "code"=> "es"],["tx_name"=> "Korean", "code"=> "ko"]]; - $test_data['expected_source'] = 'en'; - array_push($arr,$test_data); - - $reg = '/\s*transifex_languages\(\s*(.+?)\s*\);/'; - - foreach ($arr as $i) { - preg_match($reg,$i['input'],$m); - $tl_array = json_decode($m[1],true); - - $tl_s_array = $tl_array['source']; - $source_string = $tl_s_array['code']; - - $tl_t_array = $tl_array['translation']; - - $language_array = array_map( - function($x) { - $arr = ["code" => $x['code'],"name" => $x['tx_name']]; - return $arr; }, - $tl_t_array - ); - eval(\Psy\sh()); - $this->assertEquals($i['expected_source'],$source_string); - $this->assertEquals(ksort($i['expected_languages']),ksort($language_array)); -} - eval(\Psy\sh()); -} -} - - - -?> \ No newline at end of file diff --git a/readme.md b/readme.md index c3b12551..4bf607e5 100755 --- a/readme.md +++ b/readme.md @@ -19,8 +19,10 @@ In order to use Transifex Live, you will need to [sign up here for an account](h * Simple installation of Transifex Live. * Automatically identify new or changed content on your site. * Translate your website in context. -* Easily set unique language or region-specific URLs. +* Easily set unique language or region-specific URLs either by subdomain or subdirectory. +* Integrated language picker * Add hreflang tags to your pages and tell search engines what language a page is in. +* Supports using a prerendered server for SEO purposes == Get Involved == @@ -100,4 +102,8 @@ Improved admin UI = 1.2.4 = Added picker support that respects locale -Additional admin API key validation \ No newline at end of file +Additional admin API key validation + += 1.3.0 = +Added Prerendering capability +Fixed some timing issues with the WP loop \ No newline at end of file diff --git a/readme.txt b/readme.txt index de300d02..f9faa577 100755 --- a/readme.txt +++ b/readme.txt @@ -23,8 +23,10 @@ Features: * Simple installation of Transifex Live. * Automatically identify new or changed content on your site. * Translate your website in context. -* Easily set unique language or region-specific URLs. +* Easily set unique language or region-specific URLs either by subdomain or subdirectory. +* Integrated language picker * Add hreflang tags to your pages and tell search engines what language a page is in. +* Supports using a prerendered server for SEO purposes Learn more about the [Transifex Live Translation Plugin](https://www.transifex.com/integrations/wordpress-multilingual-plugin/?utm_source=wp-directory&utm_campaign=int-wp). @@ -109,3 +111,7 @@ Improved admin UI = 1.2.4 = Added picker support that respects locale Additional admin API key validation + += 1.3.0 = +Added Prerendering capability +Fixed some timing issues with the WP loop \ No newline at end of file diff --git a/regex_string_serial-deserial.php b/regex_string_serial-deserial.php deleted file mode 100644 index 49b8d8af..00000000 --- a/regex_string_serial-deserial.php +++ /dev/null @@ -1,19 +0,0 @@ - \ No newline at end of file diff --git a/reverse_hard_link.php b/reverse_hard_link.php deleted file mode 100644 index 71389cc0..00000000 --- a/reverse_hard_link.php +++ /dev/null @@ -1,41 +0,0 @@ - "zh_CN","de_DE" => "de_DE","ko" => "ko"]; - - $modified_link = $link; - $reverse_url = true; - $condition = ""; - $reverse_url = ($reverse_url)?(isset($lang)):false; - $condition .= ($reverse_url)?"A OK":"A Failed"; - $reverse_url = ($reverse_url)?(!strpos($modified_link,$lang)):false; - $condition .= ($reverse_url)?"B OK":"B Failed"; - $reverse_url = ($reverse_url)?(array_key_exists($lang,$languages_map)):false; - $condition .= ($reverse_url)?"C OK":"C Failed"; - $reverse_url = ($reverse_url)?(!($source == $lang)):false; - $condition .= ($reverse_url)?"D OK":"D Failed"; - - if ($reverse_url) { - $array_url = explode( '/', $link ); - $array_url[3] = $languages_map[$lang]. '/' . $array_url[3]; - $modified_link = implode( '/', $array_url ); - } - - - eval(\Psy\sh()); - // $this->assertEquals($i['expected_source'],$source_string); - // $this->assertEquals(ksort($i['expected_languages']),ksort($language_array)); -} - -} - -?> \ No newline at end of file diff --git a/stylesheets/transifex-live-integration-settings-page.css b/stylesheets/transifex-live-integration-settings-page.css index d369f159..6a2f9e4d 100755 --- a/stylesheets/transifex-live-integration-settings-page.css +++ b/stylesheets/transifex-live-integration-settings-page.css @@ -1,13 +1,13 @@ .transifex-live-settings table.form-table fieldset:first-child { - margin-top: 0; + margin-top: 0; } .transifex-live-settings table.form-table, .transifex-live-settings table.form-table .forminp-radio ul { - margin: 0; + margin: 0; } .transifex-live-settings table.form-table .forminp-radio ul li { - display: inline; - margin-right: 20px; - text-transform: uppercase; + display: inline; + margin-right: 20px; + text-transform: uppercase; } .transifex-live-settings table.form-table .enable_checkbox { @@ -16,56 +16,56 @@ } .transifex-live-settings table.form-table .color-box { - border: 1px solid #ccc; - box-shadow: 1px 1px 3px rgba(0,0,0,.2); - -webkit-box-shadow: 1px 1px 3px rgba(0,0,0,.2); - -moz-box-shadow: 1px 1px 3px rgba(0,0,0,.2); - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - padding: 4px 6px; - float: left; - width: 90px; - margin: 0 10px 10px 0; + border: 1px solid #ccc; + box-shadow: 1px 1px 3px rgba(0,0,0,.2); + -webkit-box-shadow: 1px 1px 3px rgba(0,0,0,.2); + -moz-box-shadow: 1px 1px 3px rgba(0,0,0,.2); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + padding: 4px 6px; + float: left; + width: 90px; + margin: 0 10px 10px 0; } .transifex-live-settings table.form-table .color-box strong { - text-align: left; - display: block; - padding: 0 0 2px; - font-size: .92em; - word-wrap: break-word; + text-align: left; + display: block; + padding: 0 0 2px; + font-size: .92em; + word-wrap: break-word; } .transifex-live-settings table.form-table .color-box input.colorpick { - width: 100%; - margin: 0; - font-family: monospace; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + width: 100%; + margin: 0; + font-family: monospace; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } .transifex-live-settings table.form-table .color-box .iris-picker { - z-index: 100; - position: absolute; - display: none; - border: 1px solid #ccc; - box-shadow: 1px 1px 3px rgba(0,0,0,.2); - -webkit-box-shadow: 1px 1px 3px rgba(0,0,0,.2); - -moz-box-shadow: 1px 1px 3px rgba(0,0,0,.2); - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - margin: 15px 0 0 -7px; + z-index: 100; + position: absolute; + display: none; + border: 1px solid #ccc; + box-shadow: 1px 1px 3px rgba(0,0,0,.2); + -webkit-box-shadow: 1px 1px 3px rgba(0,0,0,.2); + -moz-box-shadow: 1px 1px 3px rgba(0,0,0,.2); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + margin: 15px 0 0 -7px; } .text_field_fix { - width: 120px; + width: 120px; } .language_picker_fix { - width: 200px; + width: 200px; } #transifex_live_settings_api_key_button.hidden { diff --git a/test b/test deleted file mode 100644 index 772c1ad0..00000000 --- a/test +++ /dev/null @@ -1,737 +0,0 @@ - - - -Hello world! - Test-WP-PluginTest-WP-Plugin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- -
-
- - - - - - - -
- - -

- One thought on “Hello world!

- - -
    -
  1. - - -
  2. -
- - - - -
-

Leave a Reply

-

Your email address will not be published. Required fields are marked *

- -

-

- -

-
- -
- - -
-
- - -
- - -
- -
-

Plugin: Plugin Debug Mode Output

-*
File: transifex-live-integration.php - Line #: 67
Class: Plugin_Debug - Function: __construct
Type: method call - Parameters: Array -( -) -

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -

**
File: transifex-live-integration.php - Line #: 98
Class: Transifex_Live_Integration_Subdomain - Function: create_subdomains
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - -) -

**
File: transifex-live-integration.php - Line #: 98
Class: Transifex_Live_Integration_Subdomain - Function: create_subdomains
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - -) -
settings[url_options] not subdomain
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
subdomains skipped
**
File: transifex-live-integration.php - Line #: 107
Class: Transifex_Live_Integration_Rewrite - Function: create_rewrite
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - - [1] => Array - ( - [add_rewrites_post] => 0 - [add_rewrites_page] => 0 - [add_rewrites_author] => 0 - [add_rewrites_date] => 0 - [add_rewrites_tag] => 0 - [add_rewrites_category] => 0 - [add_rewrites_search] => 0 - [add_rewrites_root] => 0 - [add_rewrites_reverse_template_links] => 0 - [add_rewrites_permalink_tag] => 0 - ) - -) -

**
File: transifex-live-integration.php - Line #: 107
Class: Transifex_Live_Integration_Rewrite - Function: create_rewrite
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - - [1] => Array - ( - [add_rewrites_post] => 0 - [add_rewrites_page] => 0 - [add_rewrites_author] => 0 - [add_rewrites_date] => 0 - [add_rewrites_tag] => 0 - [add_rewrites_category] => 0 - [add_rewrites_search] => 0 - [add_rewrites_root] => 0 - [add_rewrites_reverse_template_links] => 0 - [add_rewrites_permalink_tag] => 0 - ) - -) -
settings[languages_regex] not set
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
rewrite skipped
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
adding admin bar actions
**
File: transifex-live-integration.php - Line #: 203
Class: Transifex_Live_Integration_Prerender - Function: create_prerender
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - -) -

**
File: transifex-live-integration.php - Line #: 203
Class: Transifex_Live_Integration_Prerender - Function: create_prerender
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - -) -
user_agent
**
File: transifex-live-integration.php - Line #: 203
Class: Transifex_Live_Integration_Prerender - Function: create_prerender
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - -) -
Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34 Prerender (+https://github.com/prerender/prerender)
**
File: transifex-live-integration-prerender.php - Line #: 55
Class: Transifex_Live_Integration_Prerender - Function: prerender_check
Type: static method call - Parameters: Array -( - [0] => mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender) - [1] => - [2] => bot|crawl|slurp|spider - [3] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard -) -

**
File: transifex-live-integration-prerender.php - Line #: 40
Class: Transifex_Live_Integration_Prerender - Function: is_bot_type
Type: static method call - Parameters: Array -( - [0] => mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender) - [1] => bot|crawl|slurp|spider -) -

**
File: transifex-live-integration-prerender.php - Line #: 41
Class: Transifex_Live_Integration_Prerender - Function: is_whitelist_name
Type: static method call - Parameters: Array -( - [0] => mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender) - [1] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0.|developers.google.com\/+\/web\/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard -) -

**
File: transifex-live-integration-prerender.php - Line #: 43
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array -( -) -
mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender)
**
File: transifex-live-integration-prerender.php - Line #: 43
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array -( -) -
1
**
File: transifex-live-integration-prerender.php - Line #: 56
Class: Transifex_Live_Integration_Prerender - Function: __construct
Type: method call - Parameters: Array -( -) -

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
prerender created
**
File: transifex-live-integration.php - Line #: 206
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array -( -) -
mozilla/5.0 (unknown; linux x86_64) applewebkit/534.34 (khtml, like gecko) phantomjs/1.9.8 safari/534.34 prerender (+https://github.com/prerender/prerender)
**
File: transifex-live-integration.php - Line #: 206
Class: Transifex_Live_Integration_Prerender - Function: is_prerender_req
Type: static method call - Parameters: Array -( -) -
1
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
prerender request detected
**
File: transifex-live-integration.php - Line #: 218
Class: Transifex_Live_Integration_Hreflang - Function: __construct
Type: method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - - [1] => 1 -) -

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
Severity: 8 File: transifex-live-integration-hreflang.php Line: 29: Undefined offset: 0
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
Severity: 8 File: transifex-live-integration-hreflang.php Line: 31: Undefined index: tokenized_url
**
File: transifex-live-integration.php - Line #: 219
Class: Transifex_Live_Integration_Hreflang - Function: ok_to_add
Type: method call - Parameters: Array -( -) -
settings[api_key] not set...skipping hreflang
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
skipping hreflang
**
File: transifex-live-integration.php - Line #: 220
Class: Transifex_Live_Integration_Hreflang - Function: ok_to_add
Type: method call - Parameters: Array -( -) -
settings[api_key] not set...skipping hreflang
**
File: transifex-live-integration.php - Line #: 225
Class: Transifex_Live_Integration_Javascript - Function: __construct
Type: method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - - [1] => -) -

**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
Severity: 8 File: transifex-live-integration-javascript.php Line: 35: Undefined offset: 0
**
File: transifex-live-integration.php - Line #: 229
Class: Transifex_Live_Integration_Picker - Function: create_picker
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - -) -

**
File: transifex-live-integration.php - Line #: 229
Class: Transifex_Live_Integration_Picker - Function: create_picker
Type: static method call - Parameters: Array -( - [0] => Array - ( - [api_key] => - [previous_api_key] => - [raw_transifex_languages] => - [transifex_languages] => - [language_lookup] => - [language_map] => [] - [languages_regex] => - [rewrite_option_all] => 0 - [enable_custom_urls] => 0 - [urls] => Array - ( - [rate_us] => https://wordpress.org/support/view/plugin-reviews/transifex-live-integration?rate=5#postform - [api_key_landing_page] => https://www.transifex.com/signup/?utm_source=liveplugin - ) - - [enable_language_urls] => - [enable_picker] => - [add_language_rewrites] => none selected - [source_language] => - [languages] => - [hreflang] => - [url_options] => 1 - [subdomain_pattern] => - [whitelist_crawlers] => googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard - [generic_bot_types] => bot|crawl|slurp|spider - ) - -) -
settings[enable_picker] not truthy
**
File: transifex-live-integration.php - Line #: 271
Class: Transifex_Live_Integration - Function: do_plugin
Type: static method call - Parameters: Array -( - [0] => - [1] => 1.2.5 -) -
picker skipped
**

Class: Transifex_Live_Integration - Function: query_vars_hook
Type: static method call - Parameters: Array -( - [0] => Array - ( - [0] => m - [1] => p - [2] => posts - [3] => w - [4] => cat - [5] => withcomments - [6] => withoutcomments - [7] => s - [8] => search - [9] => exact - [10] => sentence - [11] => calendar - [12] => page - [13] => paged - [14] => more - [15] => tb - [16] => pb - [17] => author - [18] => order - [19] => orderby - [20] => year - [21] => monthnum - [22] => day - [23] => hour - [24] => minute - [25] => second - [26] => name - [27] => category_name - [28] => tag - [29] => feed - [30] => author_name - [31] => static - [32] => pagename - [33] => page_id - [34] => error - [35] => comments_popup - [36] => attachment - [37] => attachment_id - [38] => subpost - [39] => subpost_id - [40] => preview - [41] => robots - [42] => taxonomy - [43] => term - [44] => cpage - [45] => post_type - [46] => embed - [47] => post_format - [48] => sitemap - [49] => sitemap_n - [50] => xsl - [51] => rest_route - ) - -) -

**

Class: Transifex_Live_Integration_Javascript - Function: render
Type: method call - Parameters: Array -( - [0] => -) -

**

Class: Transifex_Live_Integration_Javascript - Function: render
Type: method call - Parameters: Array -( - [0] => -) -
skipped detectlang override
*
- - - - \ No newline at end of file diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php index bfa59cbb..36dcbba3 100644 --- a/tests/_support/AcceptanceTester.php +++ b/tests/_support/AcceptanceTester.php @@ -3,6 +3,7 @@ /** * Inherited Methods + * * @method void wantToTest($text) * @method void wantTo($text) * @method void execute($callable) @@ -20,7 +21,7 @@ class AcceptanceTester extends \Codeception\Actor { use _generated\AcceptanceTesterActions; - /** + /** * Define custom actions here */ } diff --git a/tests/_support/FunctionalTester.php b/tests/_support/FunctionalTester.php index 8f9d5f23..f9fb51eb 100644 --- a/tests/_support/FunctionalTester.php +++ b/tests/_support/FunctionalTester.php @@ -3,6 +3,7 @@ /** * Inherited Methods + * * @method void wantToTest($text) * @method void wantTo($text) * @method void execute($callable) @@ -20,7 +21,7 @@ class FunctionalTester extends \Codeception\Actor { use _generated\FunctionalTesterActions; - /** + /** * Define custom actions here */ } diff --git a/tests/_support/UnitTester.php b/tests/_support/UnitTester.php index 68c09cf8..3f0aab8c 100644 --- a/tests/_support/UnitTester.php +++ b/tests/_support/UnitTester.php @@ -3,6 +3,7 @@ /** * Inherited Methods + * * @method void wantToTest($text) * @method void wantTo($text) * @method void execute($callable) @@ -20,7 +21,7 @@ class UnitTester extends \Codeception\Actor { use _generated\UnitTesterActions; - /** + /** * Define custom actions here */ } diff --git a/tests/unit/GenerateLanguageUrlMapTest.php b/tests/unit/GenerateLanguageUrlMapTest.php index 0bad0b95..73c92a57 100644 --- a/tests/unit/GenerateLanguageUrlMapTest.php +++ b/tests/unit/GenerateLanguageUrlMapTest.php @@ -1,41 +1,44 @@ data = [ - [ - 'raw_url' => '/about/', - 'tokenized_url' => 'http://192.168.99.100:32777/%lang%/', - 'language_map' => [ 'zh_CN' => 'cn'], - 'result' => ['zh_CN' => 'http://192.168.99.100:32777/cn/about/'] - ], [ - 'raw_url' => '2015/12/17/hello-world/', - 'tokenized_url' => 'http://192.168.99.100:32777/%lang%/', - 'language_map' => [ 'zh_CN' => 'cn'], - 'result' => ['zh_CN' => 'http://192.168.99.100:32777/cn/2015/12/17/hello-world/'] - ],[ - 'raw_url' => '2015/12/17/hello-world', - 'tokenized_url' => 'http://192.168.99.100:32777/%lang%/', - 'language_map' => [ 'zh_CN' => 'cn'], - 'result' => ['zh_CN' => 'http://192.168.99.100:32777/cn/2015/12/17/hello-world/'] - ] - ]; - // negative options go here + protected function setUp() + { + include_once './includes/common/plugin-debug.php'; + include_once './includes/common/transifex-live-integration-common.php'; + $this->data = [ + [ + 'raw_url' => '/about/', + 'tokenized_url' => 'http://192.168.99.100:32777/%lang%/', + 'language_map' => [ 'zh_CN' => 'cn'], + 'result' => ['zh_CN' => 'http://192.168.99.100:32777/cn/about/'] + ], [ + 'raw_url' => '2015/12/17/hello-world/', + 'tokenized_url' => 'http://192.168.99.100:32777/%lang%/', + 'language_map' => [ 'zh_CN' => 'cn'], + 'result' => ['zh_CN' => 'http://192.168.99.100:32777/cn/2015/12/17/hello-world/'] + ],[ + 'raw_url' => '2015/12/17/hello-world', + 'tokenized_url' => 'http://192.168.99.100:32777/%lang%/', + 'language_map' => [ 'zh_CN' => 'cn'], + 'result' => ['zh_CN' => 'http://192.168.99.100:32777/cn/2015/12/17/hello-world/'] + ] + ]; + // negative options go here - } + } - public function testMe() { - foreach ($this->data as $d) { - $result = Transifex_Live_Integration_Picker::generate_language_url_map( $d['raw_url'], $d['tokenized_url'], $d['language_map'] ); + public function testMe() + { + foreach ($this->data as $d) { + $result = Transifex_Live_Integration_Common::generate_language_url_map($d['raw_url'], $d['tokenized_url'], $d['language_map']); - // eval(\Psy\sh()); - $this->assertEquals( $d['result'], $result ); - } - } + // eval(\Psy\sh()); + $this->assertEquals($d['result'], $result); + } + } } diff --git a/tests/unit/GenerateTokenizedUrlTest.php b/tests/unit/GenerateTokenizedUrlTest.php index 4df940dc..ff6323c0 100644 --- a/tests/unit/GenerateTokenizedUrlTest.php +++ b/tests/unit/GenerateTokenizedUrlTest.php @@ -1,37 +1,40 @@ data = [[ - 'site_url' => 'http://192.168.99.100:32777', - 'url_option_setting' => '2', // Subdomain option - 'result' => 'http://%lang%.168.99.100:32777/' - ], - [ - 'site_url' => 'http://192.168.99.100:32777', - 'url_option_setting' => '3', // Subdirectory option - 'result' => 'http://192.168.99.100:32777/%lang%/' - ], - ]; - // negative options tests - $neg_options = [1, '1', '', ' ', null ]; - foreach ($neg_options as $o) { - array_push( $this->data, ['site_url' => 'http://192.168.99.100:32777', 'url_option_setting' => $o, 'result' => false ] ); - } - } + protected function setUp() + { + include_once './includes/common/plugin-debug.php'; + include_once './includes/admin/transifex-live-integration-admin-util.php'; + $this->data = [[ + 'site_url' => 'http://192.168.99.100:32777', + 'url_option_setting' => '2', // Subdomain option + 'result' => 'http://%lang%.168.99.100:32777/' + ], + [ + 'site_url' => 'http://192.168.99.100:32777', + 'url_option_setting' => '3', // Subdirectory option + 'result' => 'http://192.168.99.100:32777/%lang%/' + ], + ]; + // negative options tests + $neg_options = [1, '1', '', ' ', null ]; + foreach ($neg_options as $o) { + array_push($this->data, ['site_url' => 'http://192.168.99.100:32777', 'url_option_setting' => $o, 'result' => false ]); + } + } - public function testMe() { - foreach ($this->data as $d) { - $result = Transifex_Live_Integration_Settings_Util::generate_tokenized_url( $d['site_url'], $d['url_option_setting'] ); + public function testMe() + { + foreach ($this->data as $d) { + $result = Transifex_Live_Integration_Admin_Util::generate_tokenized_url($d['site_url'], $d['url_option_setting']); - // eval(\Psy\sh()); - $this->assertEquals( $d['result'], $result ); - } - } + // eval(\Psy\sh()); + $this->assertEquals($d['result'], $result); + } + } } diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php index 3289bdee..389e55c4 100644 --- a/tests/unit/PrerenderCheckTest.php +++ b/tests/unit/PrerenderCheckTest.php @@ -1,76 +1,79 @@ data = [[ // Standard Chrome Agent - 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', - 'fragment' => NULL, - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => false - ],[ // Standard Firefox Agent - 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0) Gecko/20100101 Firefox/46.0', - 'fragment' => NULL, - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => false - ], [ // Prerender added - 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 Prerender (+https://github.com/prerender/prerender)', - 'fragment' => NULL, - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => false - ], [ // Standard Googlebot - 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', - 'fragment' => NULL, - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => true - ], [ // Googlebot with prerender added - 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Prerender (+https://github.com/prerender/prerender)', - 'fragment' => NULL, - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => true - ], [ // Slackbot with - 'agent' => 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)', - 'fragment' => NULL, - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => true - ],[ // Slackbot with - 'agent' => 'slackbot', - 'fragment' => NULL, - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => true - ], - [ // some fragment - 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', - 'fragment' => '/some-frament', - 'bot_types' => $bot_types, - 'whitelist' => $whitelist, - 'result' => true - ] - ]; - } + protected function setUp() + { + include_once './includes/common/plugin-debug.php'; + include_once './includes/transifex-live-integration-util.php'; + include_once './includes/transifex-live-integration-defaults.php'; + $settings = Transifex_Live_Integration_Defaults::settings(); + $whitelist = $settings['whitelist_crawlers']; + $bot_types = $settings['generic_bot_types']; + $this->data = [[ // Standard Chrome Agent + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', + 'fragment' => null, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ],[ // Standard Firefox Agent + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0) Gecko/20100101 Firefox/46.0', + 'fragment' => null, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ], [ // Prerender added + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 Prerender (+https://github.com/prerender/prerender)', + 'fragment' => null, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => false + ], [ // Standard Googlebot + 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', + 'fragment' => null, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ], [ // Googlebot with prerender added + 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Prerender (+https://github.com/prerender/prerender)', + 'fragment' => null, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ], [ // Slackbot with + 'agent' => 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)', + 'fragment' => null, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ],[ // Slackbot with + 'agent' => 'slackbot', + 'fragment' => null, + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ], + [ // some fragment + 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', + 'fragment' => '/some-frament', + 'bot_types' => $bot_types, + 'whitelist' => $whitelist, + 'result' => true + ] + ]; + } - public function testMe() { - foreach ($this->data as $i) { - $result = Transifex_Live_Integration_Prerender::prerender_check( $i['agent'], $i['fragment'], $i['bot_types'], $i['whitelist'] ); + public function testMe() + { + foreach ($this->data as $i) { + $result = Transifex_Live_Integration_Util::prerender_check($i['agent'], $i['fragment'], $i['bot_types'], $i['whitelist']); - //eval(\Psy\sh()); - $this->assertEquals( $i['result'], $result ); - } - } + //eval(\Psy\sh()); + $this->assertEquals($i['result'], $result); + } + } } diff --git a/tests/unit/ReverseHardLinkTest.php b/tests/unit/ReverseHardLinkTest.php index 02cf1ef9..4b19ee7b 100644 --- a/tests/unit/ReverseHardLinkTest.php +++ b/tests/unit/ReverseHardLinkTest.php @@ -6,8 +6,8 @@ class ReverseHardLinkTest extends \PHPUnit_Framework_TestCase private $data; protected function setUp() { - require_once './includes/plugin-debug.php'; - include_once './includes/transifex-live-integration-rewrite.php'; + include_once './includes/common/plugin-debug.php'; + include_once './includes/lib/transifex-live-integration-rewrite.php'; $this->data = [[ 'lang' => 'zh_CN', 'link' => 'http://192.168.99.100:32777/page-markup-and-formatting', @@ -56,12 +56,14 @@ protected function setUp() public function testMe() { foreach ($this->data as $i) { - $result = Transifex_Live_Integration_Rewrite::reverse_hard_link($i['lang'], $i['link'], - $i['languages_map'], $i['souce_lang']); + $result = Transifex_Live_Integration_Rewrite::reverse_hard_link( + $i['lang'], $i['link'], + $i['languages_map'], $i['souce_lang'] + ); - //eval(\Psy\sh()); - $this->assertEquals($i['result'], $result); - } + //eval(\Psy\sh()); + $this->assertEquals($i['result'], $result); + } } } diff --git a/transifex-live-integration.php b/transifex-live-integration.php index 8b975daf..22a4d1aa 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -5,13 +5,13 @@ * * @link http://docs.transifex.com/developer/integrations/wordpress * @package TransifexLiveIntegration - * @version 1.2.5 + * @version 1.3.0 * * @wordpress-plugin * Plugin Name: Transifex Live Translation Plugin * Plugin URI: http://docs.transifex.com/developer/integrations/wordpress * Description: Translate your WordPress website or blog without the usual complex setups. - * Version: 1.2.5 + * Version: 1.3.0 * License: GNU General Public License * License URI: http://www.gnu.org/licenses/gpl-2.0.txt * Text Domain: transifex-live-integration @@ -31,7 +31,11 @@ if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_NAME' ) ) { define( 'TRANSIFEX_LIVE_INTEGRATION_NAME', 'transifex-live-integration' ); } - + +if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_BASENAME' ) ) { + define( 'TRANSIFEX_LIVE_INTEGRATION_BASENAME', plugin_basename( __FILE__ ) ); +} + if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE' ) ) { define( 'TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE', dirname( __FILE__ ) ); } @@ -41,7 +45,7 @@ } if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS' ) ) { - define( 'TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS', 'plugin_action_links_transifex_live_integration' ); + define( 'TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS', 'plugin_action_links_'.TRANSIFEX_LIVE_INTEGRATION_BASENAME ); } if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN' ) ) { @@ -60,11 +64,12 @@ define( 'TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT', TRANSIFEX_LIVE_INTEGRATION_URL . 'javascript' ); } -define( 'LANG_PARAM', 'lang' ); +if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_REGEX_PATTERN_CHECK_PATTERN' ) ) { + define( 'TRANSIFEX_LIVE_INTEGRATION_REGEX_PATTERN_CHECK_PATTERN', "/\(.*\?|.*\)/" ); +} -require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/plugin-debug.php'; -$version = '1.2.5'; -$debug = new Plugin_Debug(); +define( 'LANG_PARAM', 'lang' ); +$version = '1.3.0'; /** * Main Plugin Class @@ -77,114 +82,45 @@ class Transifex_Live_Integration { * @param string $version Stores current version number. */ static function do_plugin( $is_admin, $version ) { - Plugin_Debug::logTrace(); + // Plugin 'global' functions + require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; + new Plugin_Debug(true); + Plugin_Debug::logTrace( 'debug initialized' ); include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; + +// Load general settings $settings = get_option( 'transifex_live_settings', array() ); if ( !$settings ) { $settings = Transifex_Live_Integration_Defaults::settings(); } +// Load rewrite settings $rewrite_options = get_option( 'transifex_live_options', array() ); if ( !$rewrite_options ) { $rewrite_options = Transifex_Live_Integration_Defaults::options_values(); } - add_filter( 'query_vars', array( 'Transifex_Live_Integration', 'query_vars_hook' ) ); - - - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-subdomain.php'; - $subdomain = Transifex_Live_Integration_Subdomain::create_subdomains( $settings ); - ($subdomain) ? Plugin_Debug::logTrace( 'subdomains created' ) : Plugin_Debug::logTrace( 'subdomains skipped' ); - if ( $subdomain ) { - add_action( 'parse_query', [ $subdomain, 'parse_query_hook' ] ); - } - - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-rewrite.php'; - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-generate-rewrite-rules.php'; - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-validators.php'; - $rewrite = Transifex_Live_Integration_Rewrite::create_rewrite( $settings, $rewrite_options ); - ($rewrite) ? Plugin_Debug::logTrace( 'rewrite created' ) : Plugin_Debug::logTrace( 'rewrite skipped' ); - if ( $rewrite ) { - if ( isset( $rewrite_options['add_rewrites_reverse_template_links'] ) ) { - Plugin_Debug::logTrace( 'adding reverse template links' ); - add_filter( 'pre_post_link', [$rewrite, 'pre_post_link_hook' ], 10, 3 ); - add_filter( 'term_link', [$rewrite, 'term_link_hook' ], 10, 3 ); - add_filter( 'post_link', [$rewrite, 'term_link_hook' ], 10, 3 ); - add_filter( 'post_type_archive_link', [$rewrite, 'post_type_archive_link_hook' ], 10, 2 ); - add_filter( 'page_link', [$rewrite, 'page_link_hook' ], 10, 3 ); - add_filter( 'day_link', [$rewrite, 'day_link_hook' ], 10, 4 ); - add_filter( 'month_link', [$rewrite, 'month_link_hook' ], 10, 3 ); - add_filter( 'year_link', [$rewrite, 'year_link_hook' ], 10, 2 ); -/* Turned off for compatibility with Yoast SEO - Mjj 3-7 - * add_filter( 'home_url', [$rewrite, 'home_url_hook' ] ); - */ - } - foreach ($rewrite->rewrite_options as $option) { - Plugin_Debug::logTrace( $option ); - switch ($option) { - case 'date'; - add_filter( 'date_rewrite_rules', [ $rewrite, 'date_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'page'; - add_filter( 'page_rewrite_rules', [ $rewrite, 'page_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'author'; - add_filter( 'author_rewrite_rules', [ $rewrite, 'author_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'tag'; - add_filter( 'tag_rewrite_rules', [ $rewrite, 'tag_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'category'; - add_filter( 'category_rewrite_rules', [ $rewrite, 'category_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'search'; - add_filter( 'search_rewrite_rules', [ $rewrite, 'search_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'feed'; - add_filter( 'feed_rewrite_rules', [ $rewrite, 'feed_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'post'; - add_filter( 'post_rewrite_rules', [ $rewrite, 'post_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'root'; - add_filter( 'root_rewrite_rules', [ $rewrite, 'root_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - case 'permalink_tag'; - add_action( 'init', [ $rewrite, 'init_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - break; - } - } - } +// Add notranslate to admin bar + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin-util.php'; + add_action( 'wp_before_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_before_admin_bar_render_hook' ] ); + add_action( 'wp_after_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_after_admin_bar_render_hook' ] ); - Plugin_Debug::logTrace( 'adding admin bar actions' ); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-settings-util.php'; - add_action( 'wp_before_admin_bar_render', [ 'Transifex_Live_Integration_Settings_Util', 'wp_before_admin_bar_render_hook' ] ); - add_action( 'wp_after_admin_bar_render', [ 'Transifex_Live_Integration_Settings_Util', 'wp_after_admin_bar_render_hook' ] ); - - - if ( $is_admin ) { - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-action-links.php'; - add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( 'Transifex_Live_Integration_Action_Links', 'action_links' ) ); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-settings-page.php'; - add_action( 'admin_menu', [ 'Transifex_Live_Integration', 'admin_menu_hook' ] ); - add_action( 'admin_init', [ 'Transifex_Live_Integration_Settings_Page', 'admin_init_hook' ] ); + if ( $is_admin ) { // If user is on admin pages + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin.php'; + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin-util.php'; + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/transifex-live-integration-static-files-handler.php'; - add_action( 'admin_notices', [ 'Transifex_Live_Integration_Settings_Page', 'admin_notices_hook' ] ); +// Setup admin dashboard backend + add_filter( TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS, [ 'Transifex_Live_Integration_Admin_Util', 'action_links' ] ); + add_action( 'admin_menu', [ 'Transifex_Live_Integration_Admin_Util', 'admin_menu_hook' ] ); + add_action( 'admin_init', [ 'Transifex_Live_Integration_Admin', 'admin_init_hook' ] ); + add_action( 'admin_notices', [ 'Transifex_Live_Integration_Admin', 'admin_notices_hook' ] ); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-files-handler.php'; +// Setup admin dashboard frontend $handler = new Transifex_Live_Integration_Static_Files_Handler(); $handler->add_css_file( $version, TRANSIFEX_LIVE_INTEGRATION_STYLESHEETS . '/transifex-live-integration-settings-page.css' ); @@ -192,65 +128,121 @@ static function do_plugin( $is_admin, $version ) { $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/jquery-machine.1.0.1.min.js', 'jquery-machine' ); $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/transifex-live-integration-transifex-settings.js' ); $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/transifex-live-integration-settings-page.js' ); - + add_action( 'admin_enqueue_scripts', [ $handler, 'render_css' ] ); add_action( 'admin_enqueue_scripts', [ $handler, 'render_js' ] ); load_plugin_textdomain( TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, false, TRANSIFEX_LIVE_INTEGRATION_LANGUAGES_PATH ); - } else { + } + + if ( !($is_admin) ) { // If user is on regular page + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; +// Set lang parameter in query var + add_filter( 'query_vars', [ 'Transifex_Live_Integration_Util', 'query_vars_hook' ] ); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-prerender.php'; - $prerender = Transifex_Live_Integration_Prerender::create_prerender($settings); - ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); - if ( $prerender ) { - if (Transifex_Live_Integration_Prerender::is_prerender_req() ) { - Plugin_Debug::logTrace( 'prerender request detected' ); - add_filter( 'wp_headers', [$prerender, 'wp_headers_hook'] ); - add_action( 'wp_head', [$prerender, 'wp_head_hook'], 1 ); - } else { - Plugin_Debug::logTrace( 'invoke prerender call' ); - add_action('after_setup_theme', [ $prerender, 'after_setup_theme_hook']); - add_action('shutdown', [ $prerender, 'shutdown_hook']); +// Load snippet + $live_snippet = Transifex_Live_Integration_Static_Factory::create_live_snippet( $settings ); + if ( $live_snippet ) { + // We need to wait until wp is setup to retrieve query var + add_action( 'wp', [ $live_snippet, 'wp_hook' ]); + add_action( 'wp_head', [ $live_snippet, 'wp_head_hook' ], 1 ); + } + + +// Load prerender feature + $prerender = Transifex_Live_Integration_Static_Factory::create_prerender( $settings ); + ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); + if ( $prerender ) { + if ( Transifex_Live_Integration_Util::is_prerender_req(Transifex_Live_Integration_Util::get_user_agent()) ) { + Plugin_Debug::logTrace( 'prerender request detected' ); + add_filter( 'wp_headers', [$prerender, 'wp_headers_hook' ] ); + add_action( 'wp_head', [$prerender, 'wp_head_hook' ], 1 ); + } else { + Plugin_Debug::logTrace( 'invoke prerender call' ); + add_action( 'after_setup_theme', [ $prerender, 'after_setup_theme_hook' ] ); + add_action( 'shutdown', [ $prerender, 'shutdown_hook' ] ); + } } - } - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-hreflang.php'; - $hreflang = new Transifex_Live_Integration_Hreflang( $settings, true ); - ($hreflang->ok_to_add()) ? Plugin_Debug::logTrace( 'adding hreflang' ) : Plugin_Debug::logTrace( 'skipping hreflang' ); - if ( $hreflang->ok_to_add() ) { +// Load hreflang feature + $hreflang = Transifex_Live_Integration_Static_Factory::create_hreflang( $settings ); + ($hreflang) ? Plugin_Debug::logTrace( 'adding hreflang' ) : Plugin_Debug::logTrace( 'skipping hreflang' ); + if ( $hreflang ) { add_action( 'wp_head', [ $hreflang, 'render_hreflang' ], 1 ); } - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-javascript.php'; - $javascript = new Transifex_Live_Integration_Javascript( $settings, $rewrite ? true : false ); - add_action( 'wp_head', [ $javascript, 'render' ], 1 ); - - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-picker.php'; - $picker = Transifex_Live_Integration_Picker::create_picker($settings); +// Load language picker feature + $picker = Transifex_Live_Integration_Static_Factory::create_picker( $settings ); ($picker) ? Plugin_Debug::logTrace( 'picker created' ) : Plugin_Debug::logTrace( 'picker skipped' ); if ( $picker ) { add_action( 'wp_head', [ $picker, 'render' ], 1 ); } - } - } - /** - * Callback function for query_vars action - * @param array $vars list of vars passed from WP. - */ - static function query_vars_hook( $vars ) { - Plugin_Debug::logTrace(); - $vars[] = 'lang'; - return $vars; - } +// Load subdomain feature + $subdomain = Transifex_Live_Integration_Static_Factory::create_subdomains( $settings ); + ($subdomain) ? Plugin_Debug::logTrace( 'subdomains created' ) : Plugin_Debug::logTrace( 'subdomains skipped' ); + if ( $subdomain ) { + add_action( 'parse_query', [ $subdomain, 'parse_query_hook' ] ); + } - /** - * Callback function for admin_menu action - */ - static function admin_menu_hook() { - Plugin_Debug::logTrace(); - add_options_page( 'Transifex Live', 'Transifex Live', 'manage_options', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, array( 'Transifex_Live_Integration_Settings_Page', 'options_page' ) ); +// Load subdirectory feature + $rewrite = Transifex_Live_Integration_Static_Factory::create_rewrite( $settings, $rewrite_options ); + ($rewrite) ? Plugin_Debug::logTrace( 'rewrite created' ) : Plugin_Debug::logTrace( 'rewrite skipped' ); + if ( $rewrite ) { + if ( isset( $rewrite_options['add_rewrites_reverse_template_links'] ) ) { + Plugin_Debug::logTrace( 'adding reverse template links' ); + add_action( 'wp', [ $rewrite, 'wp_hook' ]); + add_filter( 'pre_post_link', [$rewrite, 'pre_post_link_hook' ], 10, 3 ); + add_filter( 'term_link', [$rewrite, 'term_link_hook' ], 10, 3 ); + add_filter( 'post_link', [$rewrite, 'term_link_hook' ], 10, 3 ); + add_filter( 'post_type_archive_link', [$rewrite, 'post_type_archive_link_hook' ], 10, 2 ); + add_filter( 'page_link', [$rewrite, 'page_link_hook' ], 10, 3 ); + add_filter( 'day_link', [$rewrite, 'day_link_hook' ], 10, 4 ); + add_filter( 'month_link', [$rewrite, 'month_link_hook' ], 10, 3 ); + add_filter( 'year_link', [$rewrite, 'year_link_hook' ], 10, 2 ); + add_filter( 'home_url', [$rewrite, 'home_url_hook' ] ); + + } + add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); + + foreach ($rewrite->rewrite_options as $option) { + switch ($option) { + case 'date'; + add_filter( 'date_rewrite_rules', [ $rewrite, 'date_rewrite_rules_hook' ] ); + break; + case 'page'; + add_filter( 'page_rewrite_rules', [ $rewrite, 'page_rewrite_rules_hook' ] ); + break; + case 'author'; + add_filter( 'author_rewrite_rules', [ $rewrite, 'author_rewrite_rules_hook' ] ); + break; + case 'tag'; + add_filter( 'tag_rewrite_rules', [ $rewrite, 'tag_rewrite_rules_hook' ] ); + break; + case 'category'; + add_filter( 'category_rewrite_rules', [ $rewrite, 'category_rewrite_rules_hook' ] ); + break; + case 'search'; + add_filter( 'search_rewrite_rules', [ $rewrite, 'search_rewrite_rules_hook' ] ); + break; + case 'feed'; + add_filter( 'feed_rewrite_rules', [ $rewrite, 'feed_rewrite_rules_hook' ] ); + break; + case 'post'; + add_filter( 'post_rewrite_rules', [ $rewrite, 'post_rewrite_rules_hook' ] ); + break; + case 'root'; + add_filter( 'root_rewrite_rules', [ $rewrite, 'root_rewrite_rules_hook' ] ); + break; + case 'permalink_tag'; + add_action( 'init', [ $rewrite, 'init_hook' ] ); + break; + } + } + } + } } /** @@ -268,5 +260,4 @@ static function activation_hook() { } } - -Transifex_Live_Integration::do_plugin( is_admin(), $version ); +Transifex_Live_Integration::do_plugin( is_admin(), $version ); \ No newline at end of file diff --git a/uninstall.php b/uninstall.php index 878d32e7..c1793fe4 100755 --- a/uninstall.php +++ b/uninstall.php @@ -19,26 +19,26 @@ * For more information, see the following discussion: * https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate/pull/123#issuecomment-28541913 * - * @package Transifex_Live_Integration + * @package Transifex_Live_Integration */ // If uninstall not called from WordPress, then exit. -if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) { - exit; +if (! defined('WP_UNINSTALL_PLUGIN') ) { + exit; } $settings_option_name = 'transifex_live_settings'; -delete_option( $settings_option_name ); +delete_option($settings_option_name); $colors_option_name = 'transifex_live_colors'; -delete_option( $colors_option_name ); +delete_option($colors_option_name); $options_option_name = 'transifex_live_options'; -delete_option( $options_option_name ); +delete_option($options_option_name); $transifex_settings_option_name = 'transifex_live_transifex_settings'; -delete_option( $transifex_settings_option_name ); +delete_option($transifex_settings_option_name); From 5b3bb0af9e128ae95b364875c1236263075b4fc5 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Tue, 29 Mar 2016 16:43:15 -0700 Subject: [PATCH 10/29] turn off debug --- transifex-live-integration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transifex-live-integration.php b/transifex-live-integration.php index 22a4d1aa..36334f4c 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -84,7 +84,7 @@ class Transifex_Live_Integration { static function do_plugin( $is_admin, $version ) { // Plugin 'global' functions require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; - new Plugin_Debug(true); + new Plugin_Debug(false); Plugin_Debug::logTrace( 'debug initialized' ); include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; From cdb76d5d5879d4df0d1380742c0d1bdd9498caa8 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 30 Mar 2016 11:53:21 -0700 Subject: [PATCH 11/29] refactored parse query and rewrite --- .../transifex-live-integration-rewrite.php | 11 +- transifex-live-integration.php | 130 +++++++++--------- 2 files changed, 75 insertions(+), 66 deletions(-) diff --git a/includes/lib/transifex-live-integration-rewrite.php b/includes/lib/transifex-live-integration-rewrite.php index 150e1388..9d48e449 100644 --- a/includes/lib/transifex-live-integration-rewrite.php +++ b/includes/lib/transifex-live-integration-rewrite.php @@ -112,10 +112,19 @@ function parse_query_hook( $query ) } $qv = &$query->query_vars; $qv['lang'] = isset($query->query_vars['lang']) ? $query->query_vars['lang'] : $this->source_language; + return $query; + } + + function parse_query_root_hook( $query ) + { + if (!Transifex_Live_Integration_Validators::is_query_ok($query) ) { + return $query; + } + $qv = &$query->query_vars; if ($query->is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') ) { $query->is_page = true; $query->is_home = false; - $qv['page_id'] = get_option('page_on_front'); +// Dep'd 3/30/2016 Mjj $qv['page_id'] = get_option('page_on_front'); // Correct for page_on_front if (!empty($qv['paged']) ) { $qv['page'] = $qv['paged']; diff --git a/transifex-live-integration.php b/transifex-live-integration.php index 36334f4c..bdf02d11 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -31,11 +31,11 @@ if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_NAME' ) ) { define( 'TRANSIFEX_LIVE_INTEGRATION_NAME', 'transifex-live-integration' ); } - + if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_BASENAME' ) ) { define( 'TRANSIFEX_LIVE_INTEGRATION_BASENAME', plugin_basename( __FILE__ ) ); -} - +} + if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE' ) ) { define( 'TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE', dirname( __FILE__ ) ); } @@ -45,7 +45,7 @@ } if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS' ) ) { - define( 'TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS', 'plugin_action_links_'.TRANSIFEX_LIVE_INTEGRATION_BASENAME ); + define( 'TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS', 'plugin_action_links_' . TRANSIFEX_LIVE_INTEGRATION_BASENAME ); } if ( !defined( 'TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN' ) ) { @@ -84,7 +84,7 @@ class Transifex_Live_Integration { static function do_plugin( $is_admin, $version ) { // Plugin 'global' functions require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; - new Plugin_Debug(false); + new Plugin_Debug( true ); Plugin_Debug::logTrace( 'debug initialized' ); include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; @@ -107,7 +107,7 @@ static function do_plugin( $is_admin, $version ) { include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin-util.php'; add_action( 'wp_before_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_before_admin_bar_render_hook' ] ); add_action( 'wp_after_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_after_admin_bar_render_hook' ] ); - + if ( $is_admin ) { // If user is on admin pages include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin.php'; @@ -140,21 +140,21 @@ static function do_plugin( $is_admin, $version ) { include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; // Set lang parameter in query var add_filter( 'query_vars', [ 'Transifex_Live_Integration_Util', 'query_vars_hook' ] ); - + // Load snippet $live_snippet = Transifex_Live_Integration_Static_Factory::create_live_snippet( $settings ); if ( $live_snippet ) { // We need to wait until wp is setup to retrieve query var - add_action( 'wp', [ $live_snippet, 'wp_hook' ]); + add_action( 'wp', [ $live_snippet, 'wp_hook' ] ); add_action( 'wp_head', [ $live_snippet, 'wp_head_hook' ], 1 ); } - + // Load prerender feature $prerender = Transifex_Live_Integration_Static_Factory::create_prerender( $settings ); ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); if ( $prerender ) { - if ( Transifex_Live_Integration_Util::is_prerender_req(Transifex_Live_Integration_Util::get_user_agent()) ) { + if ( Transifex_Live_Integration_Util::is_prerender_req( Transifex_Live_Integration_Util::get_user_agent() ) ) { Plugin_Debug::logTrace( 'prerender request detected' ); add_filter( 'wp_headers', [$prerender, 'wp_headers_hook' ] ); add_action( 'wp_head', [$prerender, 'wp_head_hook' ], 1 ); @@ -186,60 +186,59 @@ static function do_plugin( $is_admin, $version ) { if ( $subdomain ) { add_action( 'parse_query', [ $subdomain, 'parse_query_hook' ] ); } - -// Load subdirectory feature - $rewrite = Transifex_Live_Integration_Static_Factory::create_rewrite( $settings, $rewrite_options ); - ($rewrite) ? Plugin_Debug::logTrace( 'rewrite created' ) : Plugin_Debug::logTrace( 'rewrite skipped' ); - if ( $rewrite ) { - if ( isset( $rewrite_options['add_rewrites_reverse_template_links'] ) ) { - Plugin_Debug::logTrace( 'adding reverse template links' ); - add_action( 'wp', [ $rewrite, 'wp_hook' ]); - add_filter( 'pre_post_link', [$rewrite, 'pre_post_link_hook' ], 10, 3 ); - add_filter( 'term_link', [$rewrite, 'term_link_hook' ], 10, 3 ); - add_filter( 'post_link', [$rewrite, 'term_link_hook' ], 10, 3 ); - add_filter( 'post_type_archive_link', [$rewrite, 'post_type_archive_link_hook' ], 10, 2 ); - add_filter( 'page_link', [$rewrite, 'page_link_hook' ], 10, 3 ); - add_filter( 'day_link', [$rewrite, 'day_link_hook' ], 10, 4 ); - add_filter( 'month_link', [$rewrite, 'month_link_hook' ], 10, 3 ); - add_filter( 'year_link', [$rewrite, 'year_link_hook' ], 10, 2 ); - add_filter( 'home_url', [$rewrite, 'home_url_hook' ] ); - - } - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - - foreach ($rewrite->rewrite_options as $option) { - switch ($option) { - case 'date'; - add_filter( 'date_rewrite_rules', [ $rewrite, 'date_rewrite_rules_hook' ] ); - break; - case 'page'; - add_filter( 'page_rewrite_rules', [ $rewrite, 'page_rewrite_rules_hook' ] ); - break; - case 'author'; - add_filter( 'author_rewrite_rules', [ $rewrite, 'author_rewrite_rules_hook' ] ); - break; - case 'tag'; - add_filter( 'tag_rewrite_rules', [ $rewrite, 'tag_rewrite_rules_hook' ] ); - break; - case 'category'; - add_filter( 'category_rewrite_rules', [ $rewrite, 'category_rewrite_rules_hook' ] ); - break; - case 'search'; - add_filter( 'search_rewrite_rules', [ $rewrite, 'search_rewrite_rules_hook' ] ); - break; - case 'feed'; - add_filter( 'feed_rewrite_rules', [ $rewrite, 'feed_rewrite_rules_hook' ] ); - break; - case 'post'; - add_filter( 'post_rewrite_rules', [ $rewrite, 'post_rewrite_rules_hook' ] ); - break; - case 'root'; - add_filter( 'root_rewrite_rules', [ $rewrite, 'root_rewrite_rules_hook' ] ); - break; - case 'permalink_tag'; - add_action( 'init', [ $rewrite, 'init_hook' ] ); - break; - } + } + // Load subdirectory feature + $rewrite = Transifex_Live_Integration_Static_Factory::create_rewrite( $settings, $rewrite_options ); + ($rewrite) ? Plugin_Debug::logTrace( 'rewrite created' ) : Plugin_Debug::logTrace( 'rewrite skipped' ); + if ( $rewrite ) { + if ( isset( $rewrite_options['add_rewrites_reverse_template_links'] ) ) { + Plugin_Debug::logTrace( 'adding reverse template links' ); + add_action( 'wp', [ $rewrite, 'wp_hook' ] ); + add_filter( 'pre_post_link', [$rewrite, 'pre_post_link_hook' ], 10, 3 ); + add_filter( 'term_link', [$rewrite, 'term_link_hook' ], 10, 3 ); + add_filter( 'post_link', [$rewrite, 'term_link_hook' ], 10, 3 ); + add_filter( 'post_type_archive_link', [$rewrite, 'post_type_archive_link_hook' ], 10, 2 ); + add_filter( 'page_link', [$rewrite, 'page_link_hook' ], 10, 3 ); + add_filter( 'day_link', [$rewrite, 'day_link_hook' ], 10, 4 ); + add_filter( 'month_link', [$rewrite, 'month_link_hook' ], 10, 3 ); + add_filter( 'year_link', [$rewrite, 'year_link_hook' ], 10, 2 ); + add_filter( 'home_url', [$rewrite, 'home_url_hook' ] ); + } + add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); + + foreach ($rewrite->rewrite_options as $option) { + switch ($option) { + case 'date'; + add_filter( 'date_rewrite_rules', [ $rewrite, 'date_rewrite_rules_hook' ] ); + break; + case 'page'; + add_filter( 'page_rewrite_rules', [ $rewrite, 'page_rewrite_rules_hook' ] ); + break; + case 'author'; + add_filter( 'author_rewrite_rules', [ $rewrite, 'author_rewrite_rules_hook' ] ); + break; + case 'tag'; + add_filter( 'tag_rewrite_rules', [ $rewrite, 'tag_rewrite_rules_hook' ] ); + break; + case 'category'; + add_filter( 'category_rewrite_rules', [ $rewrite, 'category_rewrite_rules_hook' ] ); + break; + case 'search'; + add_filter( 'search_rewrite_rules', [ $rewrite, 'search_rewrite_rules_hook' ] ); + break; + case 'feed'; + add_filter( 'feed_rewrite_rules', [ $rewrite, 'feed_rewrite_rules_hook' ] ); + break; + case 'post'; + add_filter( 'post_rewrite_rules', [ $rewrite, 'post_rewrite_rules_hook' ] ); + break; + case 'root'; + add_filter( 'root_rewrite_rules', [ $rewrite, 'root_rewrite_rules_hook' ] ); + add_action( 'parse_query', [ $rewrite, 'parse_query_root_hook' ] ); + break; + case 'permalink_tag'; + add_action( 'init', [ $rewrite, 'init_hook' ] ); + break; } } } @@ -260,4 +259,5 @@ static function activation_hook() { } } -Transifex_Live_Integration::do_plugin( is_admin(), $version ); \ No newline at end of file + +Transifex_Live_Integration::do_plugin( is_admin(), $version ); From f803499f4fbe753f856bd44d9c1e19a7bb65bdfa Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 30 Mar 2016 13:07:37 -0700 Subject: [PATCH 12/29] debug off --- transifex-live-integration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transifex-live-integration.php b/transifex-live-integration.php index bdf02d11..83930dcc 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -84,7 +84,7 @@ class Transifex_Live_Integration { static function do_plugin( $is_admin, $version ) { // Plugin 'global' functions require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; - new Plugin_Debug( true ); + new Plugin_Debug( false ); Plugin_Debug::logTrace( 'debug initialized' ); include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; From 0017172164360094f5158155ae7d7adefc8f07d3 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 30 Mar 2016 14:39:10 -0700 Subject: [PATCH 13/29] Added prerender header override This is for cases when servers are managing our custom header --- .../admin/transifex-live-integration-admin-template.php | 1 + includes/admin/transifex-live-integration-admin.php | 5 ++++- includes/lib/transifex-live-integration-prerender.php | 6 ++++-- includes/transifex-live-integration-defaults.php | 1 + includes/transifex-live-integration-static-factory.php | 2 +- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index d0203645..4e34a9f5 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -38,6 +38,7 @@

+

/>Override Prerender Header Check

diff --git a/includes/admin/transifex-live-integration-admin.php b/includes/admin/transifex-live-integration-admin.php index a12b0b3c..9d701e71 100644 --- a/includes/admin/transifex-live-integration-admin.php +++ b/includes/admin/transifex-live-integration-admin.php @@ -62,7 +62,10 @@ static function options_page() { checked( $settings['enable_prerender'], 1 ); $checked_enable_prerender = ob_get_clean(); - + ob_start(); + checked( $settings['override_prerender_check'], 1 ); + $checked_override_prerender_check = ob_get_clean(); + // These are used by the template: DO NOT REMOVE - Mjj 2/22/2016 $languages = [ ]; if ( $settings['transifex_languages'] !== '' ) { diff --git a/includes/lib/transifex-live-integration-prerender.php b/includes/lib/transifex-live-integration-prerender.php index 4ab33383..4b69f89a 100644 --- a/includes/lib/transifex-live-integration-prerender.php +++ b/includes/lib/transifex-live-integration-prerender.php @@ -4,11 +4,13 @@ class Transifex_Live_Integration_Prerender { private $prerender_url; + private $override_prerender_check; - public function __construct($prerender_url) + public function __construct($prerender_url, $override_prerender_check) { Plugin_Debug::logTrace(); $this->prerender_url = $prerender_url; + $this->override_prerender_check = ($override_prerender_check)?true:false; } function wp_head_hook() @@ -67,7 +69,7 @@ function callback( $buffer ) $error = curl_error($ch); // write to db?? } else { - if (strpos($header, 'X-PreRender-Req: TRUE') ) { + if (strpos($header, 'X-PreRender-Req: TRUE') || $this->override_prerender_check ) { $output = $body; } } diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index c67efd56..40104430 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -89,6 +89,7 @@ static function settings() 'subdomain_pattern' => '', 'enable_prerender' => false, 'prerender_url' => '', + 'override_prerender_check' => false, 'whitelist_crawlers' => 'googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard', 'generic_bot_types' => 'bot|crawl|slurp|spider' diff --git a/includes/transifex-live-integration-static-factory.php b/includes/transifex-live-integration-static-factory.php index 1efef5e4..a64c9354 100644 --- a/includes/transifex-live-integration-static-factory.php +++ b/includes/transifex-live-integration-static-factory.php @@ -116,7 +116,7 @@ static function create_prerender( $settings ) { include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/lib/transifex-live-integration-prerender.php'; $check = Transifex_Live_Integration_Util::prerender_check( $agent, $req_escaped_fragment, $settings['generic_bot_types'], $settings['whitelist_crawlers'] ); - return ($check) ? new Transifex_Live_Integration_Prerender($settings['prerender_url']) : false; + return ($check) ? new Transifex_Live_Integration_Prerender($settings['prerender_url'], $settings['override_prerender_check']) : false; } } From 003d9e2b391281ecf740d920076d567b10f21350 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 30 Mar 2016 16:38:23 -0700 Subject: [PATCH 14/29] Added additional options in admin page --- ...nsifex-live-integration-admin-template.php | 4 ++ .../transifex-live-integration-admin.php | 4 ++ includes/common/plugin-debug.php | 2 +- .../transifex-live-integration-defaults.php | 2 + transifex-live-integration.php | 40 ++++++++----------- 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index 4e34a9f5..4b67a7fe 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -92,6 +92,9 @@

+

+

/>Static Frontpage Support

+

Having trouble getting language/region-specific URLs working? Check out our additional troubleshooting tips!

@@ -105,6 +108,7 @@ +

diff --git a/includes/admin/transifex-live-integration-admin.php b/includes/admin/transifex-live-integration-admin.php index 9d701e71..2e8c8c87 100644 --- a/includes/admin/transifex-live-integration-admin.php +++ b/includes/admin/transifex-live-integration-admin.php @@ -66,6 +66,10 @@ static function options_page() { checked( $settings['override_prerender_check'], 1 ); $checked_override_prerender_check = ob_get_clean(); + ob_start(); + checked( $settings['static_frontpage_support'], 1 ); + $checked_static_frontpage_support = ob_get_clean(); + // These are used by the template: DO NOT REMOVE - Mjj 2/22/2016 $languages = [ ]; if ( $settings['transifex_languages'] !== '' ) { diff --git a/includes/common/plugin-debug.php b/includes/common/plugin-debug.php index 68955c24..2cfc1e16 100644 --- a/includes/common/plugin-debug.php +++ b/includes/common/plugin-debug.php @@ -35,7 +35,7 @@ public function __construct($mode) } // End if Wordpress user admin check } // End if debug mode check } - + public static function logTrace( $message = null ) { if (self::$debug_mode ) { diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index 40104430..43cebe41 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -66,6 +66,7 @@ static function transifex_settings() static function settings() { return array( + 'debug' => '0', 'api_key' => null, // This is the only required field and needs to be copied from Live 'previous_api_key' => null, 'raw_transifex_languages' => null, @@ -87,6 +88,7 @@ static function settings() 'hreflang' => false, 'url_options' => 1, 'subdomain_pattern' => '', + 'static_frontpage_support' => false, 'enable_prerender' => false, 'prerender_url' => '', 'override_prerender_check' => false, diff --git a/transifex-live-integration.php b/transifex-live-integration.php index 83930dcc..d542f000 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -82,45 +82,40 @@ class Transifex_Live_Integration { * @param string $version Stores current version number. */ static function do_plugin( $is_admin, $version ) { - // Plugin 'global' functions - require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; - new Plugin_Debug( false ); - Plugin_Debug::logTrace( 'debug initialized' ); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; - -// Load general settings $settings = get_option( 'transifex_live_settings', array() ); if ( !$settings ) { $settings = Transifex_Live_Integration_Defaults::settings(); } + $debug_mode = ($settings['debug'])?true:false; + + require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; + new Plugin_Debug( $debug_mode ); + Plugin_Debug::logTrace( 'debug initialized' ); + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; -// Load rewrite settings $rewrite_options = get_option( 'transifex_live_options', array() ); if ( !$rewrite_options ) { $rewrite_options = Transifex_Live_Integration_Defaults::options_values(); } -// Add notranslate to admin bar include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin-util.php'; add_action( 'wp_before_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_before_admin_bar_render_hook' ] ); add_action( 'wp_after_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_after_admin_bar_render_hook' ] ); - if ( $is_admin ) { // If user is on admin pages + if ( $is_admin ) { include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin.php'; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin-util.php'; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/transifex-live-integration-static-files-handler.php'; -// Setup admin dashboard backend add_filter( TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS, [ 'Transifex_Live_Integration_Admin_Util', 'action_links' ] ); add_action( 'admin_menu', [ 'Transifex_Live_Integration_Admin_Util', 'admin_menu_hook' ] ); add_action( 'admin_init', [ 'Transifex_Live_Integration_Admin', 'admin_init_hook' ] ); add_action( 'admin_notices', [ 'Transifex_Live_Integration_Admin', 'admin_notices_hook' ] ); -// Setup admin dashboard frontend $handler = new Transifex_Live_Integration_Static_Files_Handler(); $handler->add_css_file( $version, TRANSIFEX_LIVE_INTEGRATION_STYLESHEETS . '/transifex-live-integration-settings-page.css' ); @@ -135,13 +130,12 @@ static function do_plugin( $is_admin, $version ) { load_plugin_textdomain( TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, false, TRANSIFEX_LIVE_INTEGRATION_LANGUAGES_PATH ); } - if ( !($is_admin) ) { // If user is on regular page + if ( !($is_admin) ) { include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; -// Set lang parameter in query var + add_filter( 'query_vars', [ 'Transifex_Live_Integration_Util', 'query_vars_hook' ] ); -// Load snippet $live_snippet = Transifex_Live_Integration_Static_Factory::create_live_snippet( $settings ); if ( $live_snippet ) { // We need to wait until wp is setup to retrieve query var @@ -150,7 +144,6 @@ static function do_plugin( $is_admin, $version ) { } -// Load prerender feature $prerender = Transifex_Live_Integration_Static_Factory::create_prerender( $settings ); ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); if ( $prerender ) { @@ -166,28 +159,24 @@ static function do_plugin( $is_admin, $version ) { } -// Load hreflang feature $hreflang = Transifex_Live_Integration_Static_Factory::create_hreflang( $settings ); ($hreflang) ? Plugin_Debug::logTrace( 'adding hreflang' ) : Plugin_Debug::logTrace( 'skipping hreflang' ); if ( $hreflang ) { add_action( 'wp_head', [ $hreflang, 'render_hreflang' ], 1 ); } -// Load language picker feature $picker = Transifex_Live_Integration_Static_Factory::create_picker( $settings ); ($picker) ? Plugin_Debug::logTrace( 'picker created' ) : Plugin_Debug::logTrace( 'picker skipped' ); if ( $picker ) { add_action( 'wp_head', [ $picker, 'render' ], 1 ); } - -// Load subdomain feature + $subdomain = Transifex_Live_Integration_Static_Factory::create_subdomains( $settings ); ($subdomain) ? Plugin_Debug::logTrace( 'subdomains created' ) : Plugin_Debug::logTrace( 'subdomains skipped' ); if ( $subdomain ) { add_action( 'parse_query', [ $subdomain, 'parse_query_hook' ] ); } } - // Load subdirectory feature $rewrite = Transifex_Live_Integration_Static_Factory::create_rewrite( $settings, $rewrite_options ); ($rewrite) ? Plugin_Debug::logTrace( 'rewrite created' ) : Plugin_Debug::logTrace( 'rewrite skipped' ); if ( $rewrite ) { @@ -205,7 +194,10 @@ static function do_plugin( $is_admin, $version ) { add_filter( 'home_url', [$rewrite, 'home_url_hook' ] ); } add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - + $static_frontpage_support = (isset($settings['static_frontpage_support']))?true:false; + if ($static_frontpage_support) { + add_action( 'parse_query', [ $rewrite, 'parse_query_root_hook' ] ); + } foreach ($rewrite->rewrite_options as $option) { switch ($option) { case 'date'; @@ -234,7 +226,7 @@ static function do_plugin( $is_admin, $version ) { break; case 'root'; add_filter( 'root_rewrite_rules', [ $rewrite, 'root_rewrite_rules_hook' ] ); - add_action( 'parse_query', [ $rewrite, 'parse_query_root_hook' ] ); + break; case 'permalink_tag'; add_action( 'init', [ $rewrite, 'init_hook' ] ); From 59d5e969ddc874c9ddfe48e9c0b2239c1b178f1a Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Thu, 31 Mar 2016 13:56:58 -0700 Subject: [PATCH 15/29] fixed dep issue --- transifex-live-integration.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/transifex-live-integration.php b/transifex-live-integration.php index d542f000..a705bc49 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -83,6 +83,7 @@ class Transifex_Live_Integration { */ static function do_plugin( $is_admin, $version ) { $settings = get_option( 'transifex_live_settings', array() ); + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; if ( !$settings ) { $settings = Transifex_Live_Integration_Defaults::settings(); @@ -92,7 +93,7 @@ static function do_plugin( $is_admin, $version ) { require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; new Plugin_Debug( $debug_mode ); Plugin_Debug::logTrace( 'debug initialized' ); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; $rewrite_options = get_option( 'transifex_live_options', array() ); From ee00eff0b71f4e808c0067a923570234ccddd03b Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Mon, 4 Apr 2016 11:23:23 -0700 Subject: [PATCH 16/29] Updated admin page html --- ...nsifex-live-integration-admin-template.php | 76 +++++++++---------- ...ransifex-live-integration-settings-page.js | 28 +++++++ 2 files changed, 65 insertions(+), 39 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index 4b67a7fe..d49c5388 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -16,74 +16,57 @@

- Validating your key! - Success! Advanced SEO settings enabled. - Oops! Please make sure you’ve entered a valid API key. - D’oh! No languages have been published from Transifex Live yet. + + + +

-

SEO Prerendering

- - - - - - - -
- />Enable Prerender - - -

- - -

-

/>Override Prerender Header Check

-
- -

Advanced SEO Settings

-

This plugin lets you set unique, language/region-specific URLs for your site and tells search engines what language a page is in. This is done by creating new language subdirectories through the plugin, or by pointing to existing language subdomains. In all cases, the plugin will add the Transifex Live JavaScript snippet to your site.

+

+

-

Note: When you choose the Subdirectory or Subdomain options, the plugin will automatically add hreflang tags to the header of your site.

+

Note: When you choose the Subdirectory or Subdomain options, the plugin will automatically add hreflang tags to the header of your site.', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?>

- + - + + + +
Published Languages -

Below is a list of languages published from Transifex Live. For each language, you can set the name of the subdirectory. Your URLs will follow the pattern of www.example.com/%lang%/, with the language code always appearing immediately after your domain.

-

Below is a list of languages published from Transifex Live. If you’ve set up language subdomains for your site, enter the language subdomain names below. So if fr.example.com is the subdomain for your French site, put in fr. If you don’t have language subdomains set up yet, be sure they match what’s below when you set them up.

+

www.example.com/%lang%/, with the language code always appearing immediately after your domain.', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?> +

+

fr.example.com is the subdomain for your French site, put in fr. If you don’t have language subdomains set up yet, be sure they match what’s below when you set them up.', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?> +


- +
LanguageCode
- Your languages can't be loaded. Please re-check your API key. - Refreshing languages will replace your current codes with those from Transifex Live. Continue? + +

-

-

Tweak your localized urls.

+

+

Subdirectory Options -

Choose which WordPress content types you want to enable language subdirectories for.

+

@@ -95,7 +78,22 @@

/>Static Frontpage Support

-

Having trouble getting language/region-specific URLs working? Check out our additional troubleshooting tips!

+

Check out our additional troubleshooting tips!', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?>

+ + + +
+

/> +

+

+ /> +

+

+ + +

+

Check out our docs for details.', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?>

+
diff --git a/javascript/transifex-live-integration-settings-page.js b/javascript/transifex-live-integration-settings-page.js index b9cf7e1f..c71c20bc 100755 --- a/javascript/transifex-live-integration-settings-page.js +++ b/javascript/transifex-live-integration-settings-page.js @@ -622,4 +622,32 @@ function updateTransifexSettingsFields(obj) { }, }, {setClass: true} ); +})(jQuery); + +(function ($) { + $('#transifex_live_settings_enable_prerender').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_enable_prerender::defaultState::onEnter'); + this.trigger('disable'); + }, + events: {disable: 'disable'} + }, + enable: { + onEnter: function () { + $.log.debug('transifex_live_settings_enable_prerender::enable::onEnter'); + $('.prerender-options').toggleClass('hide-if-js', false); + }, + events: {click: 'disable'} + }, + disable: { + onEnter: function () { + $.log.debug('transifex_live_settings_enable_prerender::diable::onEnter'); + $('.prerender-options').toggleClass('hide-if-js', true); + }, + events: {click: 'enable'} + }, + }, {setClass: true} + ); })(jQuery); \ No newline at end of file From 9d73db910d1532b80663bf98a653ce361ce80ec5 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Mon, 4 Apr 2016 17:06:27 -0700 Subject: [PATCH 17/29] documentation updates and light refactoring --- .../transifex-live-integration-admin-util.php | 53 +- .../transifex-live-integration-admin.php | 42 +- .../transifex-live-integration-common.php | 249 ++-- .../transifex-live-integration-validators.php | 166 +-- .../transifex-live-integration-hreflang.php | 26 +- .../transifex-live-integration-javascript.php | 30 +- .../lib/transifex-live-integration-picker.php | 107 +- .../transifex-live-integration-prerender.php | 183 +-- .../transifex-live-integration-rewrite.php | 1044 +++++++++-------- .../transifex-live-integration-subdomain.php | 113 +- .../transifex-live-integration-defaults.php | 34 +- ...nsifex-live-integration-static-factory.php | 46 +- includes/transifex-live-integration-util.php | 43 + transifex-live-integration-main.php | 187 +++ transifex-live-integration.php | 189 +-- 15 files changed, 1435 insertions(+), 1077 deletions(-) create mode 100755 transifex-live-integration-main.php diff --git a/includes/admin/transifex-live-integration-admin-util.php b/includes/admin/transifex-live-integration-admin-util.php index 9e98b4a1..46d9471b 100644 --- a/includes/admin/transifex-live-integration-admin-util.php +++ b/includes/admin/transifex-live-integration-admin-util.php @@ -1,17 +1,39 @@ '); } + /** + * Function to add end tag for 'notranslate' div to the WP admin bar + */ static function wp_after_admin_bar_render_hook() { Plugin_Debug::logTrace(); echo (''); } + /** + * Returns the site_url in a tokenized form for use by other libraries + * @param string $site_url Generally should be site_url() + * @param string $url_option_setting The plugin option setting for special urls + * @return string/false Returns the tokenized string or false + * [ 3 = Subdirectory, 2 = Subdomain, * = Skip ] + */ static function generate_tokenized_url( $site_url, $url_option_setting ) { Plugin_Debug::logTrace(); @@ -40,6 +62,10 @@ static function generate_tokenized_url( $site_url, $url_option_setting ) { return ($tokenized_url) ? $tokenized_url : false; } + /** + * Renders subdirectory rewrite options + * @param array $options Array of options...usually these will be loaded from defaults + */ static function render_url_options( $options ) { $html = ''; $row = ''; @@ -63,6 +89,10 @@ static function render_url_options( $options ) { echo $html; } + /** + * Renders Transifex Live settings for the admin form + * @param array $settings Usually these will be loaded from the defaults + */ static function render_transifex_settings( $settings ) { $html = ''; foreach ($settings as $setting) { @@ -75,7 +105,12 @@ static function render_transifex_settings( $settings ) { } echo $html; } - static function action_links( $links ) { + + /** + * Builds plugin links displayed on the WP Plugin section, WP filter + * @param array $links Existing list of WP plugin links + */ + static function action_links_hook( $links ) { Plugin_Debug::logTrace(); $settings_href = add_query_arg( [ 'page' => TRANSIFEX_LIVE_INTEGRATION_NAME ], admin_url( 'options-general.php' ) ); $settings_text = __( 'Settings', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); @@ -84,13 +119,13 @@ static function action_links( $links ) { SETTINGS; return array_merge( [ $settings_link ], $links ); } - + /** - * Callback function for admin_menu action - */ - static function admin_menu_hook() - { - Plugin_Debug::logTrace(); - add_options_page('Transifex Live', 'Transifex Live', 'manage_options', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, [ 'Transifex_Live_Integration_Admin', 'options_page' ] ); - } + * Adds admin page to WP menu, WP action + */ + static function admin_menu_hook() { + Plugin_Debug::logTrace(); + add_options_page( 'Transifex Live', 'Transifex Live', 'manage_options', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, [ 'Transifex_Live_Integration_Admin', 'options_page' ] ); + } + } diff --git a/includes/admin/transifex-live-integration-admin.php b/includes/admin/transifex-live-integration-admin.php index 2e8c8c87..15b2f850 100644 --- a/includes/admin/transifex-live-integration-admin.php +++ b/includes/admin/transifex-live-integration-admin.php @@ -1,9 +1,20 @@ value settings + */ static function load_settings() { Plugin_Debug::logTrace(); $db_settings = get_option( 'transifex_live_settings', array() ); @@ -14,6 +25,10 @@ static function load_settings() { return array_merge( Transifex_Live_Integration_Defaults::settings(), $db_settings ); } + /** + * Loads subdirectory options from db, merges with default if any are missing + * @return array List of all key->value settings + */ static function load_rewrite_options() { Plugin_Debug::logTrace(); $db_opt_settings = get_option( 'transifex_live_options', array() ); @@ -25,6 +40,10 @@ static function load_rewrite_options() { return array_merge( Transifex_Live_Integration_Defaults::options_values(), $db_opt_settings ); } + /** + * Loads Transifex Live Javascript settings from the db, merges with default if any are missing + * @return array List of all key->value settings + */ static function load_transifex_settings() { Plugin_Debug::logTrace(); $db_settings = get_option( 'transifex_live_transifex_settings', array() ); @@ -36,8 +55,12 @@ static function load_transifex_settings() { return array_merge( Transifex_Live_Integration_Defaults::transifex_settings(), $db_settings ); } + /** + * Renders admin page + */ static function options_page() { Plugin_Debug::logTrace(); + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; $settings = self::load_settings(); $rewrite_options = self::load_rewrite_options(); @@ -65,11 +88,11 @@ static function options_page() { ob_start(); checked( $settings['override_prerender_check'], 1 ); $checked_override_prerender_check = ob_get_clean(); - + ob_start(); checked( $settings['static_frontpage_support'], 1 ); $checked_static_frontpage_support = ob_get_clean(); - + // These are used by the template: DO NOT REMOVE - Mjj 2/22/2016 $languages = [ ]; if ( $settings['transifex_languages'] !== '' ) { @@ -120,6 +143,9 @@ static function options_page() { echo $content; } + /** + * A WP action hook to get the POSTd page, and call santitation for security and update + */ static public function admin_init_hook() { Plugin_Debug::logTrace(); if ( isset( $_POST['transifex_live_nonce'] ) && wp_verify_nonce( $_POST['transifex_live_nonce'], 'transifex_live_settings' ) ) { @@ -128,7 +154,11 @@ static public function admin_init_hook() { } /** - * Function that handles saving the setting data and sanitization. + * Updates db with settings information + * @param array $settings A List of all settings key->value arrays + * 'transifex_live_transifex_settings' = Settings for Javascript + * 'transifex_live_settings' = General plugin settings + * 'transifex_live_options' = Subdirectory options */ static public function update_settings( $settings ) { Plugin_Debug::logTrace(); @@ -246,4 +276,4 @@ static public function sanitize_settings( $settings ) { return $settings; } -} +} \ No newline at end of file diff --git a/includes/common/transifex-live-integration-common.php b/includes/common/transifex-live-integration-common.php index dd6a7ba9..7bf2bd56 100644 --- a/includes/common/transifex-live-integration-common.php +++ b/includes/common/transifex-live-integration-common.php @@ -6,127 +6,136 @@ */ /** - * Common PHP Libraries from other sources + * Common Libraries, including PHP polyfills */ -class Transifex_Live_Integration_Common -{ - +class Transifex_Live_Integration_Common { + + /** + * A static function that generates a map by locale for each language + * + * @param string $raw_url The url to generate the map for + * @param string $tokenized_url The site_url that includes a language placeholder, + * generally this should be from settings + * @param type $language_map This gives a map of Transifex Locale -> custom code, + * generally this should be from settings + * @return array A list of key value where Locale->localized url + */ static function generate_language_url_map( $raw_url, $tokenized_url, - $language_map - ) { - Plugin_Debug::logTrace(); - $trimmed_tokenized_url = rtrim($tokenized_url, '/'); - $trimmed_url = ltrim($raw_url, '/'); - $ret = [ ]; - foreach ($language_map as $k => $v) { - $unslashed_url = str_replace('%lang%', $v, $trimmed_tokenized_url) . '/' . $trimmed_url; - $ret[$k] = rtrim($unslashed_url, '/') . '/'; - } - - return $ret; - } - - /** - * This file is part of the array_column library - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Copyright (c) Ben Ramsey (http://benramsey.com) - * @license http://opensource.org/licenses/MIT MIT - */ - - /** - * Returns the values from a single column of the input array, identified by - * the $columnKey. - * - * Optionally, you may provide an $indexKey to index the values in the returned - * array by the values from the $indexKey column in the input array. - * - * @param array $input A multi-dimensional array (record set) from which to pull a column of values. - * a column of values. - * @param mixed $columnKey The column of values to return. This value may be the - * integer key of the column you wish to retrieve, or it - * may be the string key name for an associative array. - * @param mixed $indexKey (Optional.) The column to use as the index/keys for the returned array. This value may be the integer key of the column, or it may be the string key name. - * the returned array. This value may be the integer key - * of the column, or it may be the string key name. - * @return array - */ - static public function array_column( $input = null, $columnKey = null, - $indexKey = null - ) { - // Using func_get_args() in order to check for proper number of - // parameters and trigger errors exactly as the built-in array_column() - // does in PHP 5.5. - $argc = func_num_args(); - $params = func_get_args(); - - if ($argc < 2 ) { - trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING); - return null; - } - - if (!is_array($params[0]) ) { - trigger_error( - 'array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given', E_USER_WARNING - ); - return null; - } - - if (!is_int($params[1]) && !is_float($params[1]) && !is_string($params[1]) && $params[1] !== null && !(is_object($params[1]) && method_exists($params[1], '__toString')) - ) { - trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING); - return false; - } - - if (isset($params[2]) && !is_int($params[2]) && !is_float($params[2]) && !is_string($params[2]) && !(is_object($params[2]) && method_exists($params[2], '__toString')) - ) { - trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING); - return false; - } - - $paramsInput = $params[0]; - $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null; - - $paramsIndexKey = null; - if (isset($params[2]) ) { - if (is_float($params[2]) || is_int($params[2]) ) { - $paramsIndexKey = (int) $params[2]; - } else { - $paramsIndexKey = (string) $params[2]; - } - } - - $resultArray = array(); - - foreach ($paramsInput as $row) { - $key = $value = null; - $keySet = $valueSet = false; - - if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row) ) { - $keySet = true; - $key = (string) $row[$paramsIndexKey]; - } - - if ($paramsColumnKey === null ) { - $valueSet = true; - $value = $row; - } elseif (is_array($row) && array_key_exists($paramsColumnKey, $row) ) { - $valueSet = true; - $value = $row[$paramsColumnKey]; - } - - if ($valueSet ) { - if ($keySet ) { - $resultArray[$key] = $value; - } else { - $resultArray[] = $value; - } - } - } - - return $resultArray; - } + $language_map + ) { + Plugin_Debug::logTrace(); + $trimmed_tokenized_url = rtrim( $tokenized_url, '/' ); + $trimmed_url = ltrim( $raw_url, '/' ); + $ret = [ ]; + foreach ($language_map as $k => $v) { + $unslashed_url = str_replace( '%lang%', $v, $trimmed_tokenized_url ) . '/' . $trimmed_url; + $ret[$k] = rtrim( $unslashed_url, '/' ) . '/'; + } + + return $ret; + } + + /** + * This file is part of the array_column library + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @copyright Copyright (c) Ben Ramsey (http://benramsey.com) + * @license http://opensource.org/licenses/MIT MIT + */ + + /** + * Returns the values from a single column of the input array, identified by + * the $columnKey. + * + * Optionally, you may provide an $indexKey to index the values in the returned + * array by the values from the $indexKey column in the input array. + * + * @param array $input A multi-dimensional array (record set) from which to pull a column of values. + * a column of values. + * @param mixed $columnKey The column of values to return. This value may be the + * integer key of the column you wish to retrieve, or it + * may be the string key name for an associative array. + * @param mixed $indexKey (Optional.) The column to use as the index/keys for the returned array. This value may be the integer key of the column, or it may be the string key name. + * the returned array. This value may be the integer key + * of the column, or it may be the string key name. + * @return array + */ + static public function array_column( $input = null, $columnKey = null, + $indexKey = null + ) { + // Using func_get_args() in order to check for proper number of + // parameters and trigger errors exactly as the built-in array_column() + // does in PHP 5.5. + $argc = func_num_args(); + $params = func_get_args(); + + if ( $argc < 2 ) { + trigger_error( "array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING ); + return null; + } + + if ( !is_array( $params[0] ) ) { + trigger_error( + 'array_column() expects parameter 1 to be array, ' . gettype( $params[0] ) . ' given', E_USER_WARNING + ); + return null; + } + + if ( !is_int( $params[1] ) && !is_float( $params[1] ) && !is_string( $params[1] ) && $params[1] !== null && !(is_object( $params[1] ) && method_exists( $params[1], '__toString' )) + ) { + trigger_error( 'array_column(): The column key should be either a string or an integer', E_USER_WARNING ); + return false; + } + + if ( isset( $params[2] ) && !is_int( $params[2] ) && !is_float( $params[2] ) && !is_string( $params[2] ) && !(is_object( $params[2] ) && method_exists( $params[2], '__toString' )) + ) { + trigger_error( 'array_column(): The index key should be either a string or an integer', E_USER_WARNING ); + return false; + } + + $paramsInput = $params[0]; + $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null; + + $paramsIndexKey = null; + if ( isset( $params[2] ) ) { + if ( is_float( $params[2] ) || is_int( $params[2] ) ) { + $paramsIndexKey = (int) $params[2]; + } else { + $paramsIndexKey = (string) $params[2]; + } + } + + $resultArray = array(); + + foreach ($paramsInput as $row) { + $key = $value = null; + $keySet = $valueSet = false; + + if ( $paramsIndexKey !== null && array_key_exists( $paramsIndexKey, $row ) ) { + $keySet = true; + $key = (string) $row[$paramsIndexKey]; + } + + if ( $paramsColumnKey === null ) { + $valueSet = true; + $value = $row; + } elseif ( is_array( $row ) && array_key_exists( $paramsColumnKey, $row ) ) { + $valueSet = true; + $value = $row[$paramsColumnKey]; + } + + if ( $valueSet ) { + if ( $keySet ) { + $resultArray[$key] = $value; + } else { + $resultArray[] = $value; + } + } + } + + return $resultArray; + } } diff --git a/includes/common/transifex-live-integration-validators.php b/includes/common/transifex-live-integration-validators.php index 4064e878..4a3ef6ad 100644 --- a/includes/common/transifex-live-integration-validators.php +++ b/includes/common/transifex-live-integration-validators.php @@ -4,78 +4,110 @@ * Common type validators for rewrite object * @package TransifexLiveIntegration */ -class Transifex_Live_Integration_Validators -{ +/* + * Validator class, which has a series of boolean static functions + * these functions are used primarily to check params coming from WP filter hooks + */ +class Transifex_Live_Integration_Validators { + /* + * Checks urls coming from WP filter, assumes that it is path url + * @param string $link The url + * @return bool Returns true if $link is as expected, false if not + */ + + static function is_hard_link_ok( $link ) { + if ( !self::is_ok( $link ) ) { + Plugin_Debug::logTrace( 'failed validator' ); + return false; + } + if ( false === stripos( $link, 'http' ) ) { + Plugin_Debug::logTrace( 'failed validator contains http' ); + return false; + } + if ( 3 > substr_count( $link, '/' ) ) { //Note: this will return for home urls wo the trailing slash + Plugin_Debug::logTrace( 'failed validator slash count' ); + return false; + } + return true; + } + + /* + * Checks rewrite rules coming from WP filter + * @param array $rules The list of rules + * @return bool Returns true if $rules is as expected, false if not + */ + + static function is_rules_ok( $rules ) { + if ( !self::is_ok( $rules ) ) { + Plugin_Debug::logTrace( 'failed validator' ); + return false; + } + if ( !is_array( $rules ) ) { + Plugin_Debug::logTrace( 'failed validator is_array' ); + return false; + } + return true; + } + + /* + * Checks a permalink coming from WP filter + * @param string $permalink The permalink + * @return bool Returns true if $permalink is as expected, false if not + */ + + static function is_permalink_ok( $permalink ) { + return self::is_ok( $permalink ); + } - static function is_hard_link_ok( $link ) - { - if (!self::is_ok($link) ) { - Plugin_Debug::logTrace('failed validator'); - return false; - } - if (false === stripos($link, 'http') ) { - Plugin_Debug::logTrace('failed validator contains http'); - return false; - } - if (3 > substr_count($link, '/') ) { //Note: this will return for home urls wo the trailing slash - Plugin_Debug::logTrace('failed validator slash count'); - return false; - } - return true; - } + /* + * Checks WP query object coming from WP filter + * @param object $query The query object + * @return bool Returns true if $query is as expected, false if not + */ - static function is_rules_ok( $rules ) - { - if (!self::is_ok($rules) ) { - Plugin_Debug::logTrace('failed validator'); - return false; - } - if (!is_array($rules) ) { - Plugin_Debug::logTrace('failed validator is_array'); - return false; - } - return true; - } + static function is_query_ok( $query ) { + if ( !self::is_ok( $query ) ) { + Plugin_Debug::logTrace( 'failed validator' ); + return false; + } + $query_vars = (isset( $query->query_vars )) ? $query->query_vars : false; + if ( !self::is_query_vars_ok( $query_vars ) ) { + Plugin_Debug::logTrace( 'failed validator query vars' ); + return false; + } + return true; + } - static function is_permalink_ok( $permalink ) - { - return self::is_ok($permalink); - } + /* + * Checks WP query vars object coming from WP filter + * @param object $query_vars The query vars object + * @return bool Returns true if $query_vars is as expected, false if not + */ - static function is_query_ok( $query ) - { - if (!self::is_ok($query) ) { - Plugin_Debug::logTrace('failed validator'); - return false; - } - $query_vars = (isset($query->query_vars)) ? $query->query_vars : false; - if (!self::is_query_vars_ok($query_vars) ) { - Plugin_Debug::logTrace('failed validator query vars'); - return false; - } - return true; - } + static function is_query_vars_ok( $query_vars ) { + return self::is_ok( $query_vars ); + } - static function is_query_vars_ok( $query_vars ) - { - return self::is_ok($query_vars); - } + /* + * Checks a general object for null/empty cases + * @param object $o + * @return bool Returns true if $o is as expected, false if not + */ - static function is_ok( $o ) - { - if (!$o ) { - Plugin_Debug::logTrace('failed validator is_ok false'); - return false; - } - if (!isset($o) ) { - Plugin_Debug::logTrace('failed validator is_ok not isset'); - return false; - } - if (empty($o) ) { - Plugin_Debug::logTrace('failed validator is_ok empty'); - return false; - } - return true; - } + static function is_ok( $o ) { + if ( !$o ) { + Plugin_Debug::logTrace( 'failed validator is_ok false' ); + return false; + } + if ( !isset( $o ) ) { + Plugin_Debug::logTrace( 'failed validator is_ok not isset' ); + return false; + } + if ( empty( $o ) ) { + Plugin_Debug::logTrace( 'failed validator is_ok empty' ); + return false; + } + return true; + } } diff --git a/includes/lib/transifex-live-integration-hreflang.php b/includes/lib/transifex-live-integration-hreflang.php index 585255a3..2bb414a7 100644 --- a/includes/lib/transifex-live-integration-hreflang.php +++ b/includes/lib/transifex-live-integration-hreflang.php @@ -1,7 +1,7 @@ plugin code + * @var language_map array + */ private $language_map; + + /* + * A list of Transifex locales, for enabled languages + * @var languages array + */ private $languages; + + /* + * The site_url with a placeholder for language + * @var tokenized_url string + */ private $tokenized_url; /** @@ -31,6 +46,13 @@ public function __construct( $settings ) { $this->tokenized_url = $settings['tokenized_url']; } + /* + * Builds array with hreflang attributes as keys + * @param string $raw_url The current url + * @param array $languages The list of enabled languages + * @param array $language_map The key/value list of Transifex locale->plugin code + * @return array A list of attributes for HREFLANG tags + */ private function generate_languages_hreflang( $raw_url, $languages, $language_map ) { @@ -48,7 +70,7 @@ private function generate_languages_hreflang( $raw_url, $languages, } /** - * Renders HREFLANG list + * Renders HREFLANG tags into the template */ public function render_hreflang() { Plugin_Debug::logTrace(); diff --git a/includes/lib/transifex-live-integration-javascript.php b/includes/lib/transifex-live-integration-javascript.php index 2a5fed97..54eabfb2 100644 --- a/includes/lib/transifex-live-integration-javascript.php +++ b/includes/lib/transifex-live-integration-javascript.php @@ -15,8 +15,23 @@ class Transifex_Live_Integration_Javascript { * @var array */ private $live_settings; + + /** + * Current language + * @var string + */ private $lang; + + /** + * Current source language + * @var string + */ private $source_language; + + /** + * A key/value array that maps Transifex locale->plugin code + * @var array + */ private $language_map; /** @@ -31,6 +46,9 @@ public function __construct( $settings ) { $this->language_map = $settings['language_map']; } + /** + * Hook for wp action, initializes language value + */ function wp_hook() { Plugin_Debug::logTrace(); $this->lang = self::lang_check( @@ -38,6 +56,16 @@ function wp_hook() { ); } + /* + * Checks the language against our language map and source language in order to determine + * what to render as far as our javascript include + * + * @param string $query_var The current language code passed from the url + * @param string $source_language The current source language, generally set by settings + * @param array $language_map A key/value array that maps Transifex locale->plugin code + * @return string/false Returns the locale or false + */ + static function lang_check( $query_var, $source_language, $language_map ) { Plugin_Debug::logTrace(); if ( !isset( $query_var ) || !isset( $source_language ) || !isset( $language_map ) ) { @@ -52,7 +80,7 @@ static function lang_check( $query_var, $source_language, $language_map ) { Plugin_Debug::logTrace( 'lang is source, overriding live with source' ); } else { $lang = array_search( $query_var, $lm ); - if ( $lang ){ + if ( $lang ) { Plugin_Debug::logTrace( 'lang is set, overriding live detection' ); } else { Plugin_Debug::logTrace( 'lang missing, defaulting to native detection' ); diff --git a/includes/lib/transifex-live-integration-picker.php b/includes/lib/transifex-live-integration-picker.php index 9d0ca992..6e5cd834 100644 --- a/includes/lib/transifex-live-integration-picker.php +++ b/includes/lib/transifex-live-integration-picker.php @@ -1,39 +1,76 @@ language_map = json_decode($language_map, true)[0]; - $this->tokenized_url = $tokenized_url; - $this->enable_picker = $enable_picker; - $this->source_language = $source_language; - } - - - function render() - { - Plugin_Debug::logTrace(); - global $wp; - $lang = get_query_var('lang'); - $home_url = home_url($wp->request); - $url_path = add_query_arg(array(), $wp->request); - $source_url_path = (substr($url_path, 0, strlen($lang)) === $lang) ? substr($url_path, strlen($lang), strlen($url_path)) : $url_path; - $url_map = Transifex_Live_Integration_Common::generate_language_url_map($source_url_path, $this->tokenized_url, $this->language_map); - $unslashed_source_url = site_url() . $source_url_path; - $url_map[$this->source_language] = rtrim($unslashed_source_url, '/') . '/'; - $string_url_map = json_encode($url_map, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - - $include = <<plugin code + * @var array + */ + private $language_map; + + /** + * Site_url with language pattern for substitution + * @var string + */ + private $tokenized_url; + + /** + * Should picker be enabled? + * @var bool + */ + private $enable_picker; + + /** + * Current source language + * @var string + */ + private $source_language; + + /** + * Constructor + * + * @param array $language_map A key/value array that maps Transifex locale->plugin code + * @param string $tokenized_url Site_url with language pattern for substitution + * @param bool $enable_picker Should picker be enabled? + * @param string $source_language Current source language + */ + public function __construct( $language_map, $tokenized_url, $enable_picker, + $source_language + ) { + Plugin_Debug::logTrace(); + $this->language_map = json_decode( $language_map, true )[0]; + $this->tokenized_url = $tokenized_url; + $this->enable_picker = $enable_picker; + $this->source_language = $source_language; + } + + /* + * Render picker Javascript in the template + */ + + function render() { + Plugin_Debug::logTrace(); + global $wp; + $lang = get_query_var( 'lang' ); + $home_url = home_url( $wp->request ); + $url_path = add_query_arg( array(), $wp->request ); + $source_url_path = (substr( $url_path, 0, strlen( $lang ) ) === $lang) ? substr( $url_path, strlen( $lang ), strlen( $url_path ) ) : $url_path; + $url_map = Transifex_Live_Integration_Common::generate_language_url_map( $source_url_path, $this->tokenized_url, $this->language_map ); + $unslashed_source_url = site_url() . $source_url_path; + $url_map[$this->source_language] = rtrim( $unslashed_source_url, '/' ) . '/'; + $string_url_map = json_encode( $url_map, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ); + + $include = << Transifex.live.onBeforeTranslatePage(function(params) { var locale_urls = $string_url_map; @@ -44,7 +81,7 @@ function render() }); JSONP; - echo $include; - } + echo $include; + } } diff --git a/includes/lib/transifex-live-integration-prerender.php b/includes/lib/transifex-live-integration-prerender.php index 4b69f89a..261cc4ee 100644 --- a/includes/lib/transifex-live-integration-prerender.php +++ b/includes/lib/transifex-live-integration-prerender.php @@ -1,90 +1,113 @@ prerender_url = $prerender_url; - $this->override_prerender_check = ($override_prerender_check)?true:false; - } - - function wp_head_hook() - { - Plugin_Debug::logTrace(); - $status = ''; - if (is_404() ) { - $status .= <<< STATUS + $this->override_prerender_check = ($override_prerender_check) ? true : false; + } + + /* + * WP wp_head action, adds a 404 meta for prerender service + */ + + function wp_head_hook() { + Plugin_Debug::logTrace(); + $status = ''; + if ( is_404() ) { + $status .= <<< STATUS \n STATUS; - } - echo $status; - } - - function wp_headers_hook( $headers ) - { - Plugin_Debug::logTrace(); - $headers['X-PreRender-Req'] = 'TRUE'; - return $headers; - } - - static public function prerender_check( $req_user_agent, $req_escaped_fragment, - $bot_types, $whitelist_names - ) { - Plugin_Debug::logTrace(); - - $bot_types_escaped = addcslashes($bot_types, '/'); - $whitelist_names_escaped = addcslashes($whitelist_names, '/'); - - $is_bot = self::is_bot_type($req_user_agent, $bot_types_escaped); - $is_whitelisted = ($is_bot) ? true : self::is_whitelist_name($req_user_agent, $whitelist_names_escaped); - $has_escaped_fragment = ($is_whitelisted) ? true : ($req_escaped_fragment) ? true : false; - $prerender_ok = ($has_escaped_fragment) ? true : self::is_prerender_req(); - - return $prerender_ok; - } - - - function callback( $buffer ) - { - global $wp; - $output = $buffer; - $page_url = home_url($wp->request); - $page_url = rtrim($page_url, '/') . '/'; - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $this->prerender_url . $page_url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_VERBOSE, 1); - curl_setopt($ch, CURLOPT_HEADER, 1); - $response = curl_exec($ch); - $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); - $header = substr($response, 0, $header_size); - $body = substr($response, $header_size); - if ($response === false ) { - $error = curl_error($ch); - // write to db?? - } else { - if (strpos($header, 'X-PreRender-Req: TRUE') || $this->override_prerender_check ) { - $output = $body; - } - } - curl_close($ch); - return $output; - } - - function after_setup_theme_hook() - { - ob_start([$this, 'callback' ]); - } - - function shutdown_hook() - { - ob_end_flush(); - } + } + echo $status; + } + + /* + * WP wp_headers filter, adds a prerender header + */ + + function wp_headers_hook( $headers ) { + Plugin_Debug::logTrace(); + $headers['X-PreRender-Req'] = 'TRUE'; + return $headers; + } + + + /* + * This aptly named filter function is used to make the prerender call, + * ideally it should be executed after the template render is finished but before sending to the browser + * @param string $buffer This is a very large string containing the entire page out + * @return string Returns the page buffer back to the browser + */ + + function callback( $buffer ) { + global $wp; + $output = $buffer; + $page_url = home_url( $wp->request ); + $page_url = rtrim( $page_url, '/' ) . '/'; + + $ch = curl_init(); + curl_setopt( $ch, CURLOPT_URL, $this->prerender_url . $page_url ); + curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); + curl_setopt( $ch, CURLOPT_VERBOSE, 1 ); + curl_setopt( $ch, CURLOPT_HEADER, 1 ); + $response = curl_exec( $ch ); + $header_size = curl_getinfo( $ch, CURLINFO_HEADER_SIZE ); + $header = substr( $response, 0, $header_size ); + $body = substr( $response, $header_size ); + if ( $response === false ) { + $error = curl_error( $ch ); + // write to db?? + } else { + if ( strpos( $header, 'X-PreRender-Req: TRUE' ) || $this->override_prerender_check ) { + $output = $body; + } + } + curl_close( $ch ); + return $output; + } + + /* + * WP action hook that triggers the callback function + */ + + function after_setup_theme_hook() { + ob_start( [$this, 'callback' ] ); + } + + /* + * WP action hook that flushes the buffer and sends the page to the browser + */ + + function shutdown_hook() { + ob_end_flush(); + } } diff --git a/includes/lib/transifex-live-integration-rewrite.php b/includes/lib/transifex-live-integration-rewrite.php index 9d48e449..493dbdb7 100644 --- a/includes/lib/transifex-live-integration-rewrite.php +++ b/includes/lib/transifex-live-integration-rewrite.php @@ -6,509 +6,567 @@ */ /** - * Static class for settings defaults + * Static class for subdirectory rewrite functions */ -class Transifex_Live_Integration_Rewrite -{ - - /** - * Source language used by rewrite - * @var string - */ - private $source_language; - - /** - * List of languages used by rewrite - * @var array - */ - private $language_codes; - - /** - * Regex used by rewrite for languages - * @var string - */ - private $languages_regex; - private $languages_map; +class Transifex_Live_Integration_Rewrite { + + /** + * Source language used by rewrite + * @var string + */ + private $source_language; + + /** + * List of languages used by rewrite + * @var array + */ + private $language_codes; + + /** + * Regex used by rewrite for languages + * @var string + */ + private $languages_regex; + private $languages_map; private $lang; - public $rewrite_options; - - /** - * Private constructor, initializes local vars based on settings - * @param array $settings Associative array used to store plugin settings. - */ - public function __construct( $settings, $rewrite_options ) - { - Plugin_Debug::logTrace(); + public $rewrite_options; + + /** + * Private constructor, initializes local vars based on settings + * @param array $settings Associative array used to store plugin settings. + */ + public function __construct( $settings, $rewrite_options ) { + Plugin_Debug::logTrace(); include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/transifex-live-integration-validators.php'; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/override/transifex-live-integration-generate-rewrite-rules.php'; - $this->rewrite_options = [ ]; - $this->languages_regex = $settings['languages_regex']; - $this->source_language = $settings['source_language']; - $this->languages_map = json_decode($settings['language_map'], true)[0]; + $this->rewrite_options = [ ]; + $this->languages_regex = $settings['languages_regex']; + $this->source_language = $settings['source_language']; + $this->languages_map = json_decode( $settings['language_map'], true )[0]; $this->lang = false; - if (isset($rewrite_options['add_rewrites_post']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_post']) ? 'post' : ''; - } - if (isset($rewrite_options['add_rewrites_root']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_root']) ? 'root' : ''; - } - if (isset($rewrite_options['add_rewrites_date']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_date']) ? 'date' : ''; - } - if (isset($rewrite_options['add_rewrites_page']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_page']) ? 'page' : ''; - } - if (isset($rewrite_options['add_rewrites_author']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_author']) ? 'author' : ''; - } - if (isset($rewrite_options['add_rewrites_tag']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_tag']) ? 'tag' : ''; - } - if (isset($rewrite_options['add_rewrites_category']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_category']) ? 'category' : ''; - } - if (isset($rewrite_options['add_rewrites_search']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_search']) ? 'search' : ''; - } - if (isset($rewrite_options['add_rewrites_feed']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_feed']) ? 'feed' : ''; - } - if (isset($rewrite_options['add_rewrites_feed']) ) { - $this->rewrite_options[] = ($rewrite_options['add_rewrites_permalink_tag']) ? 'permalink_tag' : ''; - } - if (!empty($settings['languages']) ) { - $b = strpos(',', $settings['languages']); - if (false === $b ) { - $this->language_codes = array( $settings['languages'] ); - } else { - $this->language_codes = explode(',', $settings['languages']); - } - } - } + if ( isset( $rewrite_options['add_rewrites_post'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_post']) ? 'post' : ''; + } + if ( isset( $rewrite_options['add_rewrites_root'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_root']) ? 'root' : ''; + } + if ( isset( $rewrite_options['add_rewrites_date'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_date']) ? 'date' : ''; + } + if ( isset( $rewrite_options['add_rewrites_page'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_page']) ? 'page' : ''; + } + if ( isset( $rewrite_options['add_rewrites_author'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_author']) ? 'author' : ''; + } + if ( isset( $rewrite_options['add_rewrites_tag'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_tag']) ? 'tag' : ''; + } + if ( isset( $rewrite_options['add_rewrites_category'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_category']) ? 'category' : ''; + } + if ( isset( $rewrite_options['add_rewrites_search'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_search']) ? 'search' : ''; + } + if ( isset( $rewrite_options['add_rewrites_feed'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_feed']) ? 'feed' : ''; + } + if ( isset( $rewrite_options['add_rewrites_feed'] ) ) { + $this->rewrite_options[] = ($rewrite_options['add_rewrites_permalink_tag']) ? 'permalink_tag' : ''; + } + if ( !empty( $settings['languages'] ) ) { + $b = strpos( ',', $settings['languages'] ); + if ( false === $b ) { + $this->language_codes = array( $settings['languages'] ); + } else { + $this->language_codes = explode( ',', $settings['languages'] ); + } + } + } + + /* + * WP wp action hook, initializes language from query + */ function wp_hook() { Plugin_Debug::logTrace(); $this->lang = get_query_var( 'lang' ); - Plugin_Debug::logTrace($this->lang); - } - - /** - * Callback function to the WP init hook - */ - function init_hook() - { - Plugin_Debug::logTrace(); - add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - } - - /** - * Callback function to the WP parse_query hook - * @param array $query WP query object. - */ - function parse_query_hook( $query ) - { - if (!Transifex_Live_Integration_Validators::is_query_ok($query) ) { - return $query; - } - $qv = &$query->query_vars; - $qv['lang'] = isset($query->query_vars['lang']) ? $query->query_vars['lang'] : $this->source_language; - return $query; - } - - function parse_query_root_hook( $query ) - { - if (!Transifex_Live_Integration_Validators::is_query_ok($query) ) { - return $query; - } - $qv = &$query->query_vars; - if ($query->is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') ) { - $query->is_page = true; - $query->is_home = false; + } + + /** + * WP init action hook, adds lang as a query parameter + */ + function init_hook() { + Plugin_Debug::logTrace(); + add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + } + + /** + * Callback function to the WP parse_query hook + * @param array $query WP query object. + */ + function parse_query_hook( $query ) { + if ( !Transifex_Live_Integration_Validators::is_query_ok( $query ) ) { + return $query; + } + $qv = &$query->query_vars; + $qv['lang'] = isset( $query->query_vars['lang'] ) ? $query->query_vars['lang'] : $this->source_language; + return $query; + } + + /* + * WP parse_query filter,additional logic to support localized static frontpages + * @param array $query WP query object. + * @return array Returns the filtered query object + */ + + function parse_query_root_hook( $query ) { + if ( !Transifex_Live_Integration_Validators::is_query_ok( $query ) ) { + return $query; + } + $qv = &$query->query_vars; + if ( $query->is_home && 'page' == get_option( 'show_on_front' ) && get_option( 'page_on_front' ) ) { + $query->is_page = true; + $query->is_home = false; // Dep'd 3/30/2016 Mjj $qv['page_id'] = get_option('page_on_front'); - // Correct for page_on_front - if (!empty($qv['paged']) ) { - $qv['page'] = $qv['paged']; - unset($qv['paged']); - } - } - return $query; - } - - - static function reverse_hard_link( $lang, $link, $languages_map, $source_lang ) - { - Plugin_Debug::logTrace(); - if (empty($lang) ) { - return $link; - } - if (empty($languages_map) ) { - return $link; - } - $modified_link = $link; - $reverse_url = true; - - $reverse_url = ($reverse_url) ? (isset($lang)) : false; - - if (!empty($lang) ) { - $reverse_url = ($reverse_url) ? (!strpos($modified_link, $lang)) : false; - } - $reverse_url = ($reverse_url) ? (in_array($lang, $languages_map)) : false; - $reverse_url = ($reverse_url) ? (!($source_lang == $lang)) : false; - - //TODO This can be dep'd - if ($reverse_url && (3 <= substr_count($link, '/')) ) { - $array_url = explode('/', $link); - $array_url[3] = $lang . '/' . $array_url[3]; - $modified_link = implode('/', $array_url); - } - return $modified_link; - } - function pre_post_link_hook( $permalink, $post, $leavename ) - { - if (!Transifex_Live_Integration_Validators::is_permalink_ok($permalink) ) { - return $permalink; - } + // Correct for page_on_front + if ( !empty( $qv['paged'] ) ) { + $qv['page'] = $qv['paged']; + unset( $qv['paged'] ); + } + } + return $query; + } + + /* + * This function takes any WP link and associated language configuration and returns a localized url + * + * @param string $lang Current language + * @param string $link The url to localize + * @param array $languages_map A key/value array that maps Transifex locale->plugin code + * @param string $source_lang The current source language + * @return string Returns modified link + */ + + static function reverse_hard_link( $lang, $link, $languages_map, $source_lang ) { + Plugin_Debug::logTrace(); + if ( empty( $lang ) ) { + return $link; + } + if ( empty( $languages_map ) ) { + return $link; + } + $modified_link = $link; + $reverse_url = true; + + $reverse_url = ($reverse_url) ? (isset( $lang )) : false; + + if ( !empty( $lang ) ) { + $reverse_url = ($reverse_url) ? (!strpos( $modified_link, $lang )) : false; + } + $reverse_url = ($reverse_url) ? (in_array( $lang, $languages_map )) : false; + $reverse_url = ($reverse_url) ? (!($source_lang == $lang)) : false; + + //TODO This can be dep'd + if ( $reverse_url && (3 <= substr_count( $link, '/' )) ) { + $array_url = explode( '/', $link ); + $array_url[3] = $lang . '/' . $array_url[3]; + $modified_link = implode( '/', $array_url ); + } + return $modified_link; + } + + /* + * WP pre_post_link filter, adds lang to permalink + * @param string $permalink The permalink to filter + * @param object $post The post object + * @param ??? $leavename what this is I dont even know + * @return string filtered permalink + */ + + function pre_post_link_hook( $permalink, $post, $leavename ) { + if ( !Transifex_Live_Integration_Validators::is_permalink_ok( $permalink ) ) { + return $permalink; + } $lang = $this->lang; - $p = $permalink; - if ( $lang ) { - $p = ($this->source_language !== $lang) ? $lang . $permalink : $permalink; - } - return $p; - } - - - function term_link_hook( $termlink, $term, $taxonomy ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($termlink) ) { - return $termlink; - } - $retlink = $this->reverse_hard_link($this->lang, $termlink, $this->languages_map, $this->source_language); - return $retlink; - } - - function post_link_hook( $permalink, $post, $leavename ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($permalink) ) { - return $permalink; - } - $retlink = $this->reverse_hard_link($this->lang, $permalink, $this->languages_map, $this->source_language); - return $retlink; - } - - function post_type_archive_link_hook( $link, $post_type ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($link) ) { - return $link; - } - $retlink = $this->reverse_hard_link($this->lang, $link, $this->languages_map, $this->source_language); - return $retlink; - } - - function day_link_hook( $daylink, $year, $month, $day ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($daylink) ) { - return $daylink; - } - $retlink = $this->reverse_hard_link($this->lang, $daylink, $this->languages_map, $this->source_language); - return $retlink; - } - - function month_link_hook( $monthlink, $year, $month ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($monthlink) ) { - return $monthlink; - } - $retlink = $this->reverse_hard_link($this->lang, $monthlink, $this->languages_map, $this->source_language); - return $retlink; - } - - function year_link_hook( $yearlink, $year ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($yearlink) ) { - return $yearlink; - } - $retlink = $this->reverse_hard_link($this->lang, $yearlink, $this->languages_map, $this->source_language); - return $retlink; - } - - function page_link_hook( $link, $id, $sample ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($link) ) { - return $link; - } - $retlink = $this->reverse_hard_link($this->lang, $link, $this->languages_map, $this->source_language); - return $retlink; - } - - function home_url_hook( $url ) - { - if (!Transifex_Live_Integration_Validators::is_hard_link_ok($url) ) { - return $url; - } - $retlink = $this->reverse_hard_link($this->lang, $url, $this->languages_map, $this->source_language); - return $retlink; - } - - /** - * Function to build page permastructs - */ - function generate_post_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->permalink_structure; - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function post_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_post_permastruct(); - $this->post_permastruct = $pp; - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_PERMALINK, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_date_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_date_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function date_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_date_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_DATE, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_page_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_page_permastruct(); - $pp = '%lang%/' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function page_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%pagename%', '(.?.+?)', 'pagename='); - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_page_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_PAGES, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_author_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_author_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function author_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_author_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_AUTHORS, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_tag_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_tag_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function tag_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_tag_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_TAGS, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_category_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_category_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function category_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_category_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_CATEGORIES, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_search_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_search_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function search_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_page_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_SEARCH, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build page permastructs - */ - function generate_feed_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - $p = $wp_rewrite->get_feed_permastruct(); - $pp = '%lang%' . $p; - return $pp; - } - - /** - * Callback function to the WP page_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function feed_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_feed_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_NONE, true, false, false, false); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } - - /** - * Function to build 'all' = root permastructs - */ - function generate_root_permastruct() - { - Plugin_Debug::logTrace(); - global $wp_rewrite; - return '%lang%' . $wp_rewrite->root . '/'; - } - - /** - * Callback function to the WP root_rewrite_rules - * @param array $rules Associative array of rewrite rules in WP. - */ - function root_rewrite_rules_hook( $rules ) - { - if (!Transifex_Live_Integration_Validators::is_rules_ok($rules) ) { - return $rules; - } - global $wp_rewrite; - $wp_rewrite->add_rewrite_tag('%lang%', $this->languages_regex, 'lang='); - $pp = $this->generate_root_permastruct(); - $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules($pp, EP_ROOT); - Plugin_Debug::logTrace($rr); - $rewrite = array_merge($rr, $rules); - return $rewrite; - } + $p = $permalink; + if ( $lang ) { + $p = ($this->source_language !== $lang) ? $lang . $permalink : $permalink; + } + return $p; + } + + /* + * WP term_link filter, filters term (ie tag and category) link + * @param string $termlink The link to filter + * @param object $term The term object + * @param object $taxonomy The taxonomy object + * @return string The filtered link + */ + + function term_link_hook( $termlink, $term, $taxonomy ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $termlink ) ) { + return $termlink; + } + $retlink = $this->reverse_hard_link( $this->lang, $termlink, $this->languages_map, $this->source_language ); + return $retlink; + } + + /* + * WP post_link filter, filters post link + * @param string $permalink The link to filter + * @param object $post The term object + * @param ??? $leavename What this is I don't even + * @return string The filtered link + */ + + function post_link_hook( $permalink, $post, $leavename ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $permalink ) ) { + return $permalink; + } + $retlink = $this->reverse_hard_link( $this->lang, $permalink, $this->languages_map, $this->source_language ); + return $retlink; + } + + /* + * WP post_type_archive_link filter, filters archive links + * @param string $link The link to filter + * @param string $post_type The post type + * @return string The filtered link + */ + + function post_type_archive_link_hook( $link, $post_type ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $link ) ) { + return $link; + } + $retlink = $this->reverse_hard_link( $this->lang, $link, $this->languages_map, $this->source_language ); + return $retlink; + } + + /* + * WP day_link filter, filters day link + * @param string $daylink The link to filter + * @param number $year The year + * @param number $month The month + * @param number $day The day + * @return string The filtered link + */ + + function day_link_hook( $daylink, $year, $month, $day ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $daylink ) ) { + return $daylink; + } + $retlink = $this->reverse_hard_link( $this->lang, $daylink, $this->languages_map, $this->source_language ); + return $retlink; + } + + /* + * WP month_link filter, filters month link + * @param string $monthlink The link to filter + * @param number $year The year + * @param number $month The month + * @return string The filtered link + */ + + function month_link_hook( $monthlink, $year, $month ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $monthlink ) ) { + return $monthlink; + } + $retlink = $this->reverse_hard_link( $this->lang, $monthlink, $this->languages_map, $this->source_language ); + return $retlink; + } + + /* + * WP year_link filter, filters term link + * @param string $yearlink The link to filter + * @param number $year The year + * @return string The filtered link + */ + + function year_link_hook( $yearlink, $year ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $yearlink ) ) { + return $yearlink; + } + $retlink = $this->reverse_hard_link( $this->lang, $yearlink, $this->languages_map, $this->source_language ); + return $retlink; + } + + /* + * WP page_link filter, filters page link + * @param string $link The link to filter + * @param number $id The page id + * @param ??? $sample I don't even know + * @return string The filtered link + */ + + function page_link_hook( $link, $id, $sample ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $link ) ) { + return $link; + } + $retlink = $this->reverse_hard_link( $this->lang, $link, $this->languages_map, $this->source_language ); + return $retlink; + } + + /* + * WP home_url hook, filters links using the home_url function + * @param string $url The link to filter + * @return string The filtered link + */ + + function home_url_hook( $url ) { + if ( !Transifex_Live_Integration_Validators::is_hard_link_ok( $url ) ) { + return $url; + } + $retlink = $this->reverse_hard_link( $this->lang, $url, $this->languages_map, $this->source_language ); + return $retlink; + } + + /** + * Function to build page permastructs + * @return string permastruct + */ + function generate_post_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->permalink_structure; + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + * @return array Returns filtered rules array + */ + function post_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_post_permastruct(); + $this->post_permastruct = $pp; + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_PERMALINK, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_date_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_date_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function date_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_date_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_DATE, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_page_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_page_permastruct(); + $pp = '%lang%/' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + * @return array Returns filtered rules + */ + function page_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%pagename%', '(.?.+?)', 'pagename=' ); + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_page_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_PAGES, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build author permastructs + * @return string Returns updated permastruct + */ + function generate_author_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_author_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function author_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_author_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_AUTHORS, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_tag_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_tag_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function tag_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_tag_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_TAGS, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_category_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_category_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function category_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_category_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_CATEGORIES, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_search_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_search_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function search_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_page_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_SEARCH, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build page permastructs + */ + function generate_feed_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + $p = $wp_rewrite->get_feed_permastruct(); + $pp = '%lang%' . $p; + return $pp; + } + + /** + * Callback function to the WP page_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function feed_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_feed_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_NONE, true, false, false, false ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } + + /** + * Function to build 'all' = root permastructs + */ + function generate_root_permastruct() { + Plugin_Debug::logTrace(); + global $wp_rewrite; + return '%lang%' . $wp_rewrite->root . '/'; + } + + /** + * Callback function to the WP root_rewrite_rules + * @param array $rules Associative array of rewrite rules in WP. + */ + function root_rewrite_rules_hook( $rules ) { + if ( !Transifex_Live_Integration_Validators::is_rules_ok( $rules ) ) { + return $rules; + } + global $wp_rewrite; + $wp_rewrite->add_rewrite_tag( '%lang%', $this->languages_regex, 'lang=' ); + $pp = $this->generate_root_permastruct(); + $rr = Transifex_Live_Integration_Generate_Rewrite_Rules::generate_rewrite_rules( $pp, EP_ROOT ); + Plugin_Debug::logTrace( $rr ); + $rewrite = array_merge( $rr, $rules ); + return $rewrite; + } } diff --git a/includes/lib/transifex-live-integration-subdomain.php b/includes/lib/transifex-live-integration-subdomain.php index 198302b0..bc88e2cd 100644 --- a/includes/lib/transifex-live-integration-subdomain.php +++ b/includes/lib/transifex-live-integration-subdomain.php @@ -8,75 +8,58 @@ /** * Module for settings subdomain */ -class Transifex_Live_Integration_Subdomain -{ +class Transifex_Live_Integration_Subdomain { - /** - * Source language used by rewrite - * @var string - */ - private $source_language; + /** + * Source language used by rewrite + * @var string + */ + private $source_language; - /** - * List of languages used by rewrite - * @var array - */ - private $language_codes; - private $subdomain_pattern; + /** + * List of languages used by rewrite + * @var array + */ + private $language_codes; - /** - * Private constructor, initializes local vars based on settings - * @param array $settings Associative array used to store plugin settings. - */ - public function __construct( $settings ) - { - Plugin_Debug::logTrace(); - $this->subdomain_pattern = '/' . html_entity_decode(str_replace('/', '\/', $settings['subdomain_pattern'])) . '/'; - Plugin_Debug::logTrace($this->subdomain_pattern); - $this->source_language = $settings['source_language']; - if (!empty($settings['languages']) ) { - $b = strpos(',', $settings['languages']); - if (false === $b ) { - $this->language_codes = array( $settings['languages'] ); - } else { - $this->language_codes = explode(',', $settings['languages']); - } - } - } + /* + * Specifies regex language pattern for subdomain + * @var string + */ + private $subdomain_pattern; - /** - * Factory function to create a rewrite object - * @param array $settings Associative array used to store plugin settings. - */ - static function create_subdomains( $settings ) - { - Plugin_Debug::logTrace(); - if (!isset($settings['languages']) ) { - Plugin_Debug::logTrace('settings[languages] not set'); - return false; - } + /** + * Private constructor, initializes local vars based on settings + * @param array $settings Associative array used to store plugin settings. + */ + public function __construct( $settings ) { + Plugin_Debug::logTrace(); + $this->subdomain_pattern = '/' . html_entity_decode( str_replace( '/', '\/', $settings['subdomain_pattern'] ) ) . '/'; + Plugin_Debug::logTrace( $this->subdomain_pattern ); + $this->source_language = $settings['source_language']; + if ( !empty( $settings['languages'] ) ) { + $b = strpos( ',', $settings['languages'] ); + if ( false === $b ) { + $this->language_codes = array( $settings['languages'] ); + } else { + $this->language_codes = explode( ',', $settings['languages'] ); + } + } + } - if ($settings['url_options'] != '2' ) { - Plugin_Debug::logTrace('settings[url_options] not subdomain'); - return false; - } - - return new Transifex_Live_Integration_Subdomain($settings); - } - - /** - * Callback function to the WP parse_query hook - * @param array $query WP query object. - */ - function parse_query_hook( $query ) - { - $m = array(); - if (preg_match($this->subdomain_pattern, site_url(), $m) ) { - $query->query_vars['lang'] = $m[1]; - } else { - $query->query_vars['lang'] = $this->source_language; - } - return $query; - } + /** + * Callback function to the WP parse_query hook + * @param array $query WP query object. + * @return object filtered query + */ + function parse_query_hook( $query ) { + $m = array(); + if ( preg_match( $this->subdomain_pattern, site_url(), $m ) ) { + $query->query_vars['lang'] = $m[1]; + } else { + $query->query_vars['lang'] = $this->source_language; + } + return $query; + } } diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index 43cebe41..0236f5e0 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -10,7 +10,10 @@ */ class Transifex_Live_Integration_Defaults { - + /** + * Returns default option values for subdirectory rewrites + * @return array Returns the options value array + */ static function options_values() { return [ @@ -27,23 +30,32 @@ static function options_values() ]; } + /** + * Returns default option text display for subdirectory rewrites + * @param string $key The option key value stored to the database + * @return string Returns the text string + */ static function get_options_text( $key ) { $arr = [ - 'add_rewrites_post' => 'Posts', - 'add_rewrites_page' => 'Pages', - 'add_rewrites_author' => 'Authors', - 'add_rewrites_date' => 'Date', - 'add_rewrites_tag' => 'Tags', - 'add_rewrites_category' => 'Categories', - 'add_rewrites_search' => 'Search', - 'add_rewrites_root' => 'Root', - 'add_rewrites_reverse_template_links' => 'Reverse Template Links', - 'add_rewrites_permalink_tag' => 'Permalink Tag' + 'add_rewrites_post' => __( 'Posts', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_page' => __( 'Pages', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_author' => __( 'Authors', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_date' => __( 'Date', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_tag' => __( 'Tags', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_category' => __( 'Categories', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_search' => __( 'Search', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_root' => __( 'Root', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_reverse_template_links' => __( 'Reverse Template Links', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), + 'add_rewrites_permalink_tag' => __( 'Permalink Tag', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ), ]; return $arr[$key]; } + /** + * Returns default values for Transifex settings Javascript include + * @return array Returns the settings array + */ static function transifex_settings() { return [ diff --git a/includes/transifex-live-integration-static-factory.php b/includes/transifex-live-integration-static-factory.php index a64c9354..7e9666a4 100644 --- a/includes/transifex-live-integration-static-factory.php +++ b/includes/transifex-live-integration-static-factory.php @@ -1,6 +1,20 @@ 0) : false; } + /* + * Gets the user agent from PHP Server object + * @return string/false Returns the user agent string or false if not set + */ + static function get_user_agent() { Plugin_Debug::logTrace(); return (isset( $_SERVER['HTTP_USER_AGENT'] )) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : false; } + /* + * Checks if an agent is on the bot type list + * @param string $agent User agent to search against + * @param string $bot_types A regex list of bot types + * @return bool Returns true if there is a match, false otherwise + */ + static function is_bot_type( $agent, $bot_types ) { Plugin_Debug::logTrace(); return !empty( $agent ) ? (preg_match( "/{$bot_types}/i", $agent ) > 0) : false; } + /* + * Checks to see if the request is from prerender + * @param string $agent user agent string + * @return bool If the user agent contains prerender + */ + static function is_prerender_req( $agent ) { Plugin_Debug::logTrace(); $ret = (strpos( $agent, 'prerender' )) ? true : false; return $ret; } + /* + * This function is the core backend check to determine if user agent should be prerender'd + * + * @param string $req_user_agent User agent string, generally from browser + * @param string $req_escaped_fragment Escaped fragment string, generally from browser + * @param string $bot_types A regex string list of bot keywords for quick matching + * @param string $whitelist_names A regex string list of whitelisted bots + * @return bool Checks a given user agent for bot-ability + */ + static function prerender_check( $req_user_agent, $req_escaped_fragment, $bot_types, $whitelist_names ) { diff --git a/transifex-live-integration-main.php b/transifex-live-integration-main.php new file mode 100755 index 00000000..7899b789 --- /dev/null +++ b/transifex-live-integration-main.php @@ -0,0 +1,187 @@ +add_css_file( $version, TRANSIFEX_LIVE_INTEGRATION_STYLESHEETS . '/transifex-live-integration-settings-page.css' ); + + $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/jquery.jloggins.1.0.1.js', 'jloggins' ); + $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/jquery-machine.1.0.1.min.js', 'jquery-machine' ); + $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/transifex-live-integration-transifex-settings.js' ); + $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/transifex-live-integration-settings-page.js' ); + + add_action( 'admin_enqueue_scripts', [ $handler, 'render_css' ] ); + add_action( 'admin_enqueue_scripts', [ $handler, 'render_js' ] ); + + load_plugin_textdomain( TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, false, TRANSIFEX_LIVE_INTEGRATION_LANGUAGES_PATH ); + } + + if ( !($is_admin) ) { + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; + include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; + + add_filter( 'query_vars', [ 'Transifex_Live_Integration_Util', 'query_vars_hook' ] ); + + $live_snippet = Transifex_Live_Integration_Static_Factory::create_live_snippet( $settings ); + if ( $live_snippet ) { + // We need to wait until wp is setup to retrieve query var + add_action( 'wp', [ $live_snippet, 'wp_hook' ] ); + add_action( 'wp_head', [ $live_snippet, 'wp_head_hook' ], 1 ); + } + + + $prerender = Transifex_Live_Integration_Static_Factory::create_prerender( $settings ); + ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); + if ( $prerender ) { + if ( Transifex_Live_Integration_Util::is_prerender_req( Transifex_Live_Integration_Util::get_user_agent() ) ) { + Plugin_Debug::logTrace( 'prerender request detected' ); + add_filter( 'wp_headers', [$prerender, 'wp_headers_hook' ] ); + add_action( 'wp_head', [$prerender, 'wp_head_hook' ], 1 ); + } else { + Plugin_Debug::logTrace( 'invoke prerender call' ); + add_action( 'after_setup_theme', [ $prerender, 'after_setup_theme_hook' ] ); + add_action( 'shutdown', [ $prerender, 'shutdown_hook' ] ); + } + } + + + $hreflang = Transifex_Live_Integration_Static_Factory::create_hreflang( $settings ); + ($hreflang) ? Plugin_Debug::logTrace( 'adding hreflang' ) : Plugin_Debug::logTrace( 'skipping hreflang' ); + if ( $hreflang ) { + add_action( 'wp_head', [ $hreflang, 'render_hreflang' ], 1 ); + } + + $picker = Transifex_Live_Integration_Static_Factory::create_picker( $settings ); + ($picker) ? Plugin_Debug::logTrace( 'picker created' ) : Plugin_Debug::logTrace( 'picker skipped' ); + if ( $picker ) { + add_action( 'wp_head', [ $picker, 'render' ], 1 ); + } + + $subdomain = Transifex_Live_Integration_Static_Factory::create_subdomains( $settings ); + ($subdomain) ? Plugin_Debug::logTrace( 'subdomains created' ) : Plugin_Debug::logTrace( 'subdomains skipped' ); + if ( $subdomain ) { + add_action( 'parse_query', [ $subdomain, 'parse_query_hook' ] ); + } + } + $rewrite = Transifex_Live_Integration_Static_Factory::create_rewrite( $settings, $rewrite_options ); + ($rewrite) ? Plugin_Debug::logTrace( 'rewrite created' ) : Plugin_Debug::logTrace( 'rewrite skipped' ); + if ( $rewrite ) { + if ( isset( $rewrite_options['add_rewrites_reverse_template_links'] ) ) { + Plugin_Debug::logTrace( 'adding reverse template links' ); + add_action( 'wp', [ $rewrite, 'wp_hook' ] ); + add_filter( 'pre_post_link', [$rewrite, 'pre_post_link_hook' ], 10, 3 ); + add_filter( 'term_link', [$rewrite, 'term_link_hook' ], 10, 3 ); + add_filter( 'post_link', [$rewrite, 'term_link_hook' ], 10, 3 ); + add_filter( 'post_type_archive_link', [$rewrite, 'post_type_archive_link_hook' ], 10, 2 ); + add_filter( 'page_link', [$rewrite, 'page_link_hook' ], 10, 3 ); + add_filter( 'day_link', [$rewrite, 'day_link_hook' ], 10, 4 ); + add_filter( 'month_link', [$rewrite, 'month_link_hook' ], 10, 3 ); + add_filter( 'year_link', [$rewrite, 'year_link_hook' ], 10, 2 ); + add_filter( 'home_url', [$rewrite, 'home_url_hook' ] ); + } + add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); + $static_frontpage_support = (isset($settings['static_frontpage_support']))?true:false; + if ($static_frontpage_support) { + add_action( 'parse_query', [ $rewrite, 'parse_query_root_hook' ] ); + } + foreach ($rewrite->rewrite_options as $option) { + switch ($option) { + case 'date'; + add_filter( 'date_rewrite_rules', [ $rewrite, 'date_rewrite_rules_hook' ] ); + break; + case 'page'; + add_filter( 'page_rewrite_rules', [ $rewrite, 'page_rewrite_rules_hook' ] ); + break; + case 'author'; + add_filter( 'author_rewrite_rules', [ $rewrite, 'author_rewrite_rules_hook' ] ); + break; + case 'tag'; + add_filter( 'tag_rewrite_rules', [ $rewrite, 'tag_rewrite_rules_hook' ] ); + break; + case 'category'; + add_filter( 'category_rewrite_rules', [ $rewrite, 'category_rewrite_rules_hook' ] ); + break; + case 'search'; + add_filter( 'search_rewrite_rules', [ $rewrite, 'search_rewrite_rules_hook' ] ); + break; + case 'feed'; + add_filter( 'feed_rewrite_rules', [ $rewrite, 'feed_rewrite_rules_hook' ] ); + break; + case 'post'; + add_filter( 'post_rewrite_rules', [ $rewrite, 'post_rewrite_rules_hook' ] ); + break; + case 'root'; + add_filter( 'root_rewrite_rules', [ $rewrite, 'root_rewrite_rules_hook' ] ); + + break; + case 'permalink_tag'; + add_action( 'init', [ $rewrite, 'init_hook' ] ); + break; + } + } + } + } + + /** + * Plugin deactivation stub + */ + static function deactivation_hook() { + // Placeholder function. + } + + /** + * Plugin activation stub + */ + static function activation_hook() { + // Placeholder function. + } + +} \ No newline at end of file diff --git a/transifex-live-integration.php b/transifex-live-integration.php index a705bc49..2497ff6d 100755 --- a/transifex-live-integration.php +++ b/transifex-live-integration.php @@ -18,9 +18,15 @@ * Domain Path: /languages */ if ( !defined( 'ABSPATH' ) ) { + header( 'Status: 403 Forbidden' ); + header( 'HTTP/1.1 403 Forbidden' ); exit; } +/** + * Plugin activation hooks + * These are stubbed functions, as we avoid changing system state on activation/deactivation + */ register_activation_hook( __FILE__, [ 'Transifex_Live_Integration', 'activation_hook' ] ); register_deactivation_hook( __FILE__, [ 'Transifex_Live_Integration', 'deactivation_hook' ] ); @@ -71,186 +77,5 @@ define( 'LANG_PARAM', 'lang' ); $version = '1.3.0'; -/** - * Main Plugin Class - */ -class Transifex_Live_Integration { - - /** - * Main Plugin Function - * @param boolean $is_admin Stores if the plugin is in admin screens. - * @param string $version Stores current version number. - */ - static function do_plugin( $is_admin, $version ) { - $settings = get_option( 'transifex_live_settings', array() ); - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-defaults.php'; - if ( !$settings ) { - - $settings = Transifex_Live_Integration_Defaults::settings(); - } - $debug_mode = ($settings['debug'])?true:false; - - require_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/plugin-debug.php'; - new Plugin_Debug( $debug_mode ); - Plugin_Debug::logTrace( 'debug initialized' ); - - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; - - $rewrite_options = get_option( 'transifex_live_options', array() ); - if ( !$rewrite_options ) { - - $rewrite_options = Transifex_Live_Integration_Defaults::options_values(); - } - - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin-util.php'; - add_action( 'wp_before_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_before_admin_bar_render_hook' ] ); - add_action( 'wp_after_admin_bar_render', [ 'Transifex_Live_Integration_Admin_Util', 'wp_after_admin_bar_render_hook' ] ); - - - if ( $is_admin ) { - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin.php'; - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/admin/transifex-live-integration-admin-util.php'; - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/common/transifex-live-integration-static-files-handler.php'; - - add_filter( TRANSIFEX_LIVE_INTEGRATION_ACTION_LINKS, [ 'Transifex_Live_Integration_Admin_Util', 'action_links' ] ); - add_action( 'admin_menu', [ 'Transifex_Live_Integration_Admin_Util', 'admin_menu_hook' ] ); - add_action( 'admin_init', [ 'Transifex_Live_Integration_Admin', 'admin_init_hook' ] ); - add_action( 'admin_notices', [ 'Transifex_Live_Integration_Admin', 'admin_notices_hook' ] ); - - $handler = new Transifex_Live_Integration_Static_Files_Handler(); - $handler->add_css_file( $version, TRANSIFEX_LIVE_INTEGRATION_STYLESHEETS . '/transifex-live-integration-settings-page.css' ); - - $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/jquery.jloggins.1.0.1.js', 'jloggins' ); - $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/jquery-machine.1.0.1.min.js', 'jquery-machine' ); - $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/transifex-live-integration-transifex-settings.js' ); - $handler->add_js_file( $version, TRANSIFEX_LIVE_INTEGRATION_JAVASCRIPT . '/transifex-live-integration-settings-page.js' ); - - add_action( 'admin_enqueue_scripts', [ $handler, 'render_css' ] ); - add_action( 'admin_enqueue_scripts', [ $handler, 'render_js' ] ); - - load_plugin_textdomain( TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN, false, TRANSIFEX_LIVE_INTEGRATION_LANGUAGES_PATH ); - } - - if ( !($is_admin) ) { - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-static-factory.php'; - include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; - - add_filter( 'query_vars', [ 'Transifex_Live_Integration_Util', 'query_vars_hook' ] ); - - $live_snippet = Transifex_Live_Integration_Static_Factory::create_live_snippet( $settings ); - if ( $live_snippet ) { - // We need to wait until wp is setup to retrieve query var - add_action( 'wp', [ $live_snippet, 'wp_hook' ] ); - add_action( 'wp_head', [ $live_snippet, 'wp_head_hook' ], 1 ); - } - - - $prerender = Transifex_Live_Integration_Static_Factory::create_prerender( $settings ); - ($prerender) ? Plugin_Debug::logTrace( 'prerender created' ) : Plugin_Debug::logTrace( 'prerender skipped' ); - if ( $prerender ) { - if ( Transifex_Live_Integration_Util::is_prerender_req( Transifex_Live_Integration_Util::get_user_agent() ) ) { - Plugin_Debug::logTrace( 'prerender request detected' ); - add_filter( 'wp_headers', [$prerender, 'wp_headers_hook' ] ); - add_action( 'wp_head', [$prerender, 'wp_head_hook' ], 1 ); - } else { - Plugin_Debug::logTrace( 'invoke prerender call' ); - add_action( 'after_setup_theme', [ $prerender, 'after_setup_theme_hook' ] ); - add_action( 'shutdown', [ $prerender, 'shutdown_hook' ] ); - } - } - - - $hreflang = Transifex_Live_Integration_Static_Factory::create_hreflang( $settings ); - ($hreflang) ? Plugin_Debug::logTrace( 'adding hreflang' ) : Plugin_Debug::logTrace( 'skipping hreflang' ); - if ( $hreflang ) { - add_action( 'wp_head', [ $hreflang, 'render_hreflang' ], 1 ); - } - - $picker = Transifex_Live_Integration_Static_Factory::create_picker( $settings ); - ($picker) ? Plugin_Debug::logTrace( 'picker created' ) : Plugin_Debug::logTrace( 'picker skipped' ); - if ( $picker ) { - add_action( 'wp_head', [ $picker, 'render' ], 1 ); - } - - $subdomain = Transifex_Live_Integration_Static_Factory::create_subdomains( $settings ); - ($subdomain) ? Plugin_Debug::logTrace( 'subdomains created' ) : Plugin_Debug::logTrace( 'subdomains skipped' ); - if ( $subdomain ) { - add_action( 'parse_query', [ $subdomain, 'parse_query_hook' ] ); - } - } - $rewrite = Transifex_Live_Integration_Static_Factory::create_rewrite( $settings, $rewrite_options ); - ($rewrite) ? Plugin_Debug::logTrace( 'rewrite created' ) : Plugin_Debug::logTrace( 'rewrite skipped' ); - if ( $rewrite ) { - if ( isset( $rewrite_options['add_rewrites_reverse_template_links'] ) ) { - Plugin_Debug::logTrace( 'adding reverse template links' ); - add_action( 'wp', [ $rewrite, 'wp_hook' ] ); - add_filter( 'pre_post_link', [$rewrite, 'pre_post_link_hook' ], 10, 3 ); - add_filter( 'term_link', [$rewrite, 'term_link_hook' ], 10, 3 ); - add_filter( 'post_link', [$rewrite, 'term_link_hook' ], 10, 3 ); - add_filter( 'post_type_archive_link', [$rewrite, 'post_type_archive_link_hook' ], 10, 2 ); - add_filter( 'page_link', [$rewrite, 'page_link_hook' ], 10, 3 ); - add_filter( 'day_link', [$rewrite, 'day_link_hook' ], 10, 4 ); - add_filter( 'month_link', [$rewrite, 'month_link_hook' ], 10, 3 ); - add_filter( 'year_link', [$rewrite, 'year_link_hook' ], 10, 2 ); - add_filter( 'home_url', [$rewrite, 'home_url_hook' ] ); - } - add_action( 'parse_query', [ $rewrite, 'parse_query_hook' ] ); - $static_frontpage_support = (isset($settings['static_frontpage_support']))?true:false; - if ($static_frontpage_support) { - add_action( 'parse_query', [ $rewrite, 'parse_query_root_hook' ] ); - } - foreach ($rewrite->rewrite_options as $option) { - switch ($option) { - case 'date'; - add_filter( 'date_rewrite_rules', [ $rewrite, 'date_rewrite_rules_hook' ] ); - break; - case 'page'; - add_filter( 'page_rewrite_rules', [ $rewrite, 'page_rewrite_rules_hook' ] ); - break; - case 'author'; - add_filter( 'author_rewrite_rules', [ $rewrite, 'author_rewrite_rules_hook' ] ); - break; - case 'tag'; - add_filter( 'tag_rewrite_rules', [ $rewrite, 'tag_rewrite_rules_hook' ] ); - break; - case 'category'; - add_filter( 'category_rewrite_rules', [ $rewrite, 'category_rewrite_rules_hook' ] ); - break; - case 'search'; - add_filter( 'search_rewrite_rules', [ $rewrite, 'search_rewrite_rules_hook' ] ); - break; - case 'feed'; - add_filter( 'feed_rewrite_rules', [ $rewrite, 'feed_rewrite_rules_hook' ] ); - break; - case 'post'; - add_filter( 'post_rewrite_rules', [ $rewrite, 'post_rewrite_rules_hook' ] ); - break; - case 'root'; - add_filter( 'root_rewrite_rules', [ $rewrite, 'root_rewrite_rules_hook' ] ); - - break; - case 'permalink_tag'; - add_action( 'init', [ $rewrite, 'init_hook' ] ); - break; - } - } - } - } - - /** - * Plugin deactivation stub - */ - static function deactivation_hook() { - // Placeholder function. - } - - /** - * Plugin activation stub - */ - static function activation_hook() { - // Placeholder function. - } - -} - +require_once( dirname( __FILE__ ) . '/transifex-live-integration-main.php' ); Transifex_Live_Integration::do_plugin( is_admin(), $version ); From be8bbe0a1f4399424e17fbee6a551f2ae1ea4f92 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Mon, 4 Apr 2016 17:29:59 -0700 Subject: [PATCH 18/29] Fixed extra space --- includes/admin/transifex-live-integration-admin-template.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index d49c5388..8143eb34 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -32,7 +32,7 @@

From 5bd2614217d26556789206802d1becfdddf8084a Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Mon, 4 Apr 2016 18:37:31 -0700 Subject: [PATCH 19/29] Admin page UI updates --- ...nsifex-live-integration-admin-template.php | 18 ++++--- ...nsifex-live-integration-static-factory.php | 4 ++ ...ransifex-live-integration-settings-page.js | 50 ++++++++++++++++--- 3 files changed, 56 insertions(+), 16 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index 8143eb34..ce1f2b55 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -64,7 +64,7 @@
Subdirectory Options

@@ -72,27 +72,29 @@

>All
+ >Static Frontpage Support +

-

-

/>Static Frontpage Support

-

Check out our additional troubleshooting tips!', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?>

- +

/>

-

+

/>

-

+

-

Check out our docs for details.', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?>

+

Check out our docs for details.', TRANSIFEX_LIVE_INTEGRATION_TEXT_DOMAIN ); ?>

diff --git a/includes/transifex-live-integration-static-factory.php b/includes/transifex-live-integration-static-factory.php index 7e9666a4..747f926e 100644 --- a/includes/transifex-live-integration-static-factory.php +++ b/includes/transifex-live-integration-static-factory.php @@ -144,6 +144,10 @@ static function create_prerender( $settings ) { Plugin_Debug::logTrace( 'prerender url not set, skipping prerender' ); return false; } + if ( $url_option_setting !== '2' && $url_option_setting != '3' ) { + Plugin_Debug::logTrace( 'No URL option, skipping prerender' ); + return false; + } include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; $agent = Transifex_Live_Integration_Util::get_user_agent(); $req_escaped_fragment = (isset( $_GET['_escaped_fragment_'] )) ? $_GET['_escaped_fragment_'] : false; diff --git a/javascript/transifex-live-integration-settings-page.js b/javascript/transifex-live-integration-settings-page.js index c71c20bc..c16465fd 100755 --- a/javascript/transifex-live-integration-settings-page.js +++ b/javascript/transifex-live-integration-settings-page.js @@ -265,7 +265,6 @@ function updateTransifexSettingsFields(obj) { validating: { onEnter: function () { $.log.debug('transifex_live_settings_api_key:validating:onEnter'); - $('#transifex_live_settings_url_options_none').attr('disabled', true); $('#transifex_live_settings_url_options_subdirectory').attr('disabled', true); $('#transifex_live_settings_url_options_subdomain').attr('disabled', true); @@ -426,6 +425,7 @@ function updateTransifexSettingsFields(obj) { $('.url-structure-subdirectory').toggleClass('hide-if-js', true); $('.url-structure-subdomain').toggleClass('hide-if-js', true); $('.custom-urls-settings').toggleClass('hide-if-js', true); + $('.prerender-options').toggleClass('hide-if-js', true); $('#transifex_live_settings_url_options_subdirectory').prop("checked", false); $('#transifex_live_settings_url_options_subdomain').prop("checked", false); this.val('1'); @@ -440,6 +440,7 @@ function updateTransifexSettingsFields(obj) { $('.url-structure-subdirectory').toggleClass('hide-if-js', false); $('.url-structure-subdomain').toggleClass('hide-if-js', true); $('.custom-urls-settings').toggleClass('hide-if-js', false); + $('.prerender-options').toggleClass('hide-if-js', false); $('#transifex_live_options_all').trigger('activate'); $('#transifex_live_settings_url_options_none').prop("checked", false); $('#transifex_live_settings_url_options_subdomain').prop("checked", false); @@ -455,6 +456,7 @@ function updateTransifexSettingsFields(obj) { $('.url-structure-subdirectory').toggleClass('hide-if-js', true); $('.url-structure-subdomain').toggleClass('hide-if-js', false); $('.custom-urls-settings').toggleClass('hide-if-js', false); + $('.prerender-options').toggleClass('hide-if-js', false); $('#transifex_live_options_all').trigger('activate'); $('#transifex_live_settings_url_options_subdirectory').prop("checked", false); $('#transifex_live_settings_url_options_none').prop("checked", false); @@ -623,31 +625,63 @@ function updateTransifexSettingsFields(obj) { }, {setClass: true} ); })(jQuery); - (function ($) { $('#transifex_live_settings_enable_prerender').machine( { defaultState: { onEnter: function () { $.log.debug('transifex_live_settings_enable_prerender::defaultState::onEnter'); - this.trigger('disable'); + if (this.prop('checked')) { + this.trigger('enable'); + } else { + this.trigger('disable'); + } }, - events: {disable: 'disable'} + events: {enable: 'enable', disable: 'disable'} }, enable: { onEnter: function () { $.log.debug('transifex_live_settings_enable_prerender::enable::onEnter'); - $('.prerender-options').toggleClass('hide-if-js', false); + $('.prerender-enable-options').toggleClass('hide-if-js', false); + $('input#transifex_live_submit').trigger('disable'); }, events: {click: 'disable'} }, disable: { onEnter: function () { - $.log.debug('transifex_live_settings_enable_prerender::diable::onEnter'); - $('.prerender-options').toggleClass('hide-if-js', true); + $.log.debug('transifex_live_settings_enable_prerender::disable::onEnter'); + $('.prerender-enable-options').toggleClass('hide-if-js', true); + $('#transifex_live_settings_prerender_url').trigger('reset'); }, events: {click: 'enable'} }, }, {setClass: true} ); -})(jQuery); \ No newline at end of file +})(jQuery); + +(function ($) { + $('#transifex_live_settings_prerender_url').machine( + { + defaultState: { + onEnter: function () { + $.log.debug('transifex_live_settings_prerender_url::defaultState::onEnter'); + }, + events: {change: 'edited'} + }, + edited: { + onEnter: function () { + $.log.debug('transifex_live_settings_prerender_url::edited::onEnter'); + $('input#transifex_live_submit').trigger('enable'); + }, + events: {reset: 'reset'} + }, + reset: { + onEnter: function () { + $.log.debug('transifex_live_settings_prerender_url::reset::onEnter'); + this.val(''); + }, + events: {change: 'edited'} + }, + }, {setClass: true} + ); +})(jQuery); From 394b84f9c3daffe39a9627cab86286d45d409939 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Tue, 5 Apr 2016 09:53:54 -0700 Subject: [PATCH 20/29] Add sample prerender UI --- sample-ui/wp-plugin-prerender-ui.gif | Bin 0 -> 807870 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sample-ui/wp-plugin-prerender-ui.gif diff --git a/sample-ui/wp-plugin-prerender-ui.gif b/sample-ui/wp-plugin-prerender-ui.gif new file mode 100644 index 0000000000000000000000000000000000000000..d06720d6dcced2821522311b103d5ecb0e2bf539 GIT binary patch literal 807870 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ʋH2UUhJ=h+CCGsr&DY=gq_FSX{L0+=Na?Mo~~R z#!!{P(`1>c>a$_kdwcFHS;p#hsKK0i>AaQQeWudf)Jj+%yL)%PAa8|0#JN~u>BWV2 zq53?EkB~=t%}L)B3lQ1@0!;&}5p-n-ozMH-><_=f==uh40B{7dBm*VGufzs$p5ZTW z(${rTaTInp>ceun);9sshPf+9aZJTbw`*gnmFud6VvsM!sYOcXG7Cf}eV8y@Aon;g zPr}7oFyvJk4s-h+0@}V#>w}gV&?O&aD=iqowUhU+7nVB(YJ(>)=L}o==4@&k$|qXc z^FqG!kRZj~M9fgX2OvO8I4T`3PfH;0OQ?jYV){tk>^0P2JNywVEL1Jd@NPl5WV}1liy)An8eY)J2*1=2rn8w~)5ZUirE>4wMVxZUUC)m{sCsDdw9HHBL z6=kt><QEAZ#Mr^qX6-N*9EOetBMbeD?MZKkNzvaMR3&SG zAdtR0p@QfH9;FYHhc0D5BM!cD-kh82=w)`7$i~y792~-~;r@_ zViZo90$_v;n0*&!_g#V9s!)+@=nl^2A&{(@i{o7(eu~YtZD0t#wBIGB#kIYfq94+` z@N9&9@oCAkI~{i(j;V0bBASwHEC2>pVN}LTpBpW3CP0)i&mei45YyhXhP067o;)Mp z)PBdLU?DFm`K8+D_Pc+O7Wui!vow?I1DgsKi!Ud?GK{%C6h!(`I+Xm{qUribOu?6m z_sMV8f4+YI7->m>PnmNx=@>m;uvBf3^424!&vX} z25Xz+KOY`RR=S~^GN&2y^TFk#-`Xx(y?5V~KlT3T_s-8ZKOd7xetvED@<-^%$K%J7 zGjdZ@CnZReQkma#?#F&UY`XRJ@(Q?)cI?k7nS=Tj+=BVsW4~riZvVJ{{OFQuHzWoe zzrT<<<|+pVV4UapPsdk&y+5|{>+|iE&ud_?(im9^=`nN+oyE~?0~ACn90d+s2E&!r z<;pR+3K3jg7P!hERNw$aIu?uJQFVEmOrF6-K!J|X7VymJ2t77j4@foDO{FK1%^8q+ zR;o0%)U*~(V)6c1PSsiF>6gMaS!p)oJo8$(lNH>xG}Ws;)lC;ffSc3dVWn`R z(hPG6oTHnyV=g_+3ZcW!SS5jbmcn-UXC;?rq*@_X0a+!wsrszUr2gz@7c))!(}PMg z!sp<6oQ%L)AgC5F2N3Q_ITs=_&bOzZRL*V6TFFT6Pdz=JeIqIP++4aoJ0mA6E6*w? zvNp$jKK-OW%$T0l?4P60&hGWk?Vd}&9+BCZm0x!;)1;qQ)1MxOL4;!v$Copmva|rGi!LyJ#p+Jpv&hmF{#h8(p<;$y)fyj+fJT4tu{v9E>c@%r4EoRGK?bn*X-+IJT@%uk3_t z*~!SVQ`u!@m&%;)CgPryoql^FJv`aKw7mL9S>cv)qlL1t@8nC?a*bFy;URM9_i`dD zNuPRJfK7`CKOKGdbn8I*&B)|iuBWT4EA~7&4aS`w%qEBHRNS|&7>+zWFj4mCP{rW3 zGs8blUyG~=`Cjobvf{zpGaUojof8MUuP4s^IQ-K3%t-c`yO$324wOH>ekL#T%)3>G zX1ATacj)YV_F2i>GruOzz}+fZS0w^AXOTZw&YssR|L%HDq<3~P`y7NjhrpegE<63x zns?#SLHuA6__R{(us}gY@WHieO7GlInLw+fLSkL1_wHQRrApua%7pJ{&nZ=X88|qg zcLt?W*@itMA5cj;d`7+Qymo-V<*8t0;H>%2)WezQ!<8<)pQ!w}%6?VO7SDIp`Fe?) z%M*9n96o>TY~#AbV7D558+-r5TZ}p`?0r`ggS!}~e=*+eqO}edq~eW6-Hq%bmMm4n zTh~hF?Tk%pEle%%*y|eyBiB=q2&!DOCek|=b^w=_#)jFmVXYM4PzSlSk6d#2qGkes z=99@3Ob1Ht-YhIojErXon#Aef-47nIT#-BXfNX@67W10#Fpe)9Co8Du^Lm6u=Lar+|~14a_jagL1q* z2X>tTBSEmUY(P43h-B5@dtJY=-Ivs}#$%ou2RN)3Ao*gHA3$;gNR5oO3A5-mVpLl! zEC#ZTcUWgF%^eXT8)VTo6))I`82=rhhgT$B^2C9Kl-!qs}q5=ez)Nj;nz&!bV4EM=^BZ8?t~x22IhD7SNB6SOX~b z@loqpL}@DDWqG|)E5P(##Q49d!))d^;hd=|}z?VbB zRsEfhSjEu4!zLV!1!LG|iH>^CV$3uoeS|AGp?JG(MKTY<6$ysWd_0nI)&CoOk1ZZe z#~1O3iYS=7IN-VjYY70n*xi;C%x3&eBpu(AH*_-^0jCcav6{-C-jbJo;hmbk9j@0p z09;h5YbzpaA})cI;CNB3L;?}noiT)U8Fso;{MxU9P!I@~I6;>zAU82oV|QOVnH4F` zyX7Nvnrn&tT5>966OF9gyaf;8hO0;i?4fMe9wRJ zqv6G$BQJh`e6d254*N(DUJ~R!X%uIH1luUV-;)qONn}XVvc}VLUegNurj-h&S2a$n z-kVQ=3Xz??t8he;H7orOWS)d zH+*{e2Wi&Mc-Fyd)@k3YOTnyby^74|n!xC2my--H2}6#(%sppa)x(*KV@q4}Pv|3u27@BZJF zo__}lcMP^&dhqW`&)-s(ROxxr#Qp~;te^N>%KCSu$NgI4GpUsI?%B|_rWd#WrSu4= zrBar`&f)gvmv{O9C_OE&q*7MY^Wp2QZ|(~ma@9RM+TK2>-F*2!0EJ{3j6AD&-KQ6a zRvXH*5pQ#O@;EqfPwma(4P3eV_cAqS&lj>Vp>8C*<6!BeN#9CR=~T$V=eczc<~FkI ze}12TIdpE*?OVV9T>kR@#r@m2S5^R&ROtZ~BP3jmcCCa*u$=q9DAxhoTxPOO%Ccs1 z@cBYM7SYu|lSk{)-R+`QwG#Y?l!#+YK7ow=c2sIv~H zdZyT4zuF$R$+GNKv3}BzSEcfo7!WR`W*h6I%#KU1PsbX+4XfB~#`w>qta4?I9Lsle z=lRZ3rKfnyp0^iD!|LAFR3yH8dr^>~|E{*WWY7OW%IaS0+|d5I?tNn?*^1dDLQNK1 zbt^`FXztg({GsKF^WFMAht|9QBTF|N!~|accy+2^i{1832?n3qUz~vzqJ`Ik=af7u zFUy{nNq6`Z{NRIp#tx4VU(~)pcBrdEPlCKtAZ1v!Qejo!sIRuiZ&^`;N!%CbhxeF}Kf3;_JOLXJQ>n6``3N)xWr$ zlN-q!RNS00m0-K9~mv??2d~)mO*Cvis-a)&M zcdL98W_i}{QW_fXv-#G{&#w>Bai16r_|{T7QXjT%XyV@CZ><7iLxhX_)3NezZMB{a zd$tZeecbWwiZH(+I^2EoY4X!=SKCJ#_8lCWeE##>H4(8fHq(7-M&)~Zzh~qAQ$tg) zZT_Y7Ty%f-F5r8|_()^owV`L94u8KPAvPu5b$`BC{=IX~v+3}Yq37Q^zTceBZ%TgS z{^IA;@3)pmnvQ-SdhyrK@3#Tzq%zt=0#{uYVZ35vUg7+2s2KbYF&6*~|AxR%0i7@a zxgr7cLL$#b)HO!GzZGkEKVk2Sq{h$5pI1bJSf-)M@&4-l1JO3;#I*@-4FOH#^@&3t z58svulRS)1-=AwcJhJb`i~06sucpb*%biE>fBtiY!{w!>rDtSjW#{DP*Hm1OqXN0C9f`ee{|J8D)hW7b8z!&Cz8pOB z|7vZ}9{>LN$c<~CUx-riYrHz!{}%iVg6?%*m*U0e-OqWYv|;5QwMLmFrQG=bS<;ic zvS!n*&L6|a?yd8vWZeAona=aSYlFXbDS!L&V2d3qL;7t0JGB9=Bw{98x2AR`$MEXh zOfJ3ezpQ9#rR?^Ie09=4?9!`}z{Iz&PO&reUYCZHNCiK`TO93FtNOCt$aSkE+F5%? zBLA)p-i`u?zrB5Pj)T&l6KsjJo2$&yuA8gM`&VsH_Y7I|U#<-v@A+R8%|7Q#d>+T` zuAMa~tqq0;L!DdOGZG-YxG^L9#3tXrYlFo1AOBV~_r>k|p#8D^sx07rX6{zsz8mv> z2A?}G$=dJHUV44`^Q~XsCUs?S#3*TL<9)cRO9@cph~R&|7cx^L2IL)sHbgJP<8&_U zvs>QrVc~Aa#B^o3G!}Ysz|4!cIB0n7!{QMA`?7HfBf{#-E#hw9)}Z}66U^-t=?}j! zRBxBZ@A;S?(!vDq25ue&4}4g9h)eVv75j!a{5MVZ{l>o+dOt!`Y7$}nk^ zOT@}XUM#rx+NsnSkkrpEiU;|cwL z>okt3pZRGjT}}S!G!(QSHL2dnS?&J!YU0p!)M@Bn6gt`0-S1zW#w*u@@1FnDY19ip zdw2icX+$R~S?~Y&^y5>%2P4iwC(JWL{^>OAVBQ;gP$w;eHcc&!eUNQ?|3tX^IG9G5 zm_42Nuy$K~pBaU5ZTpba1?OEh}t72jy%Fdo=Zd+}KG@=a`qU1~-7det$4BJvy(Wa^p zSQf!&OwCey>D%6&R`l|0GP%uxL=$?utlIq0l!R5U_9kGx)x4dpJ;mMHDz2S&a0S169Ws;P>rD3M3wqT8mF?_TT`J=A z$p$am@fzA`vY$vz!!YNQDc??O%3CLQ_o?~S+wn|Y(gfLxE*^!h@>ipa5ab=g8NAZf zaznaxLRLUz|>wP6V7aTy%G5qIab6QxzkVgjnULf|e1r9i_i; z%C5?CdHKcTD$y$N)uSNYg>Lqq956oMMp93LGGsk!*WWSm!>73``FTiSMl6dlB-U13 zkDy=Rv+!EXIq@AMmt?N9+?LrDdirfnyz(HuWFwLh;$1vQCep)yRFCmuL=fgSF

l!%BoQOSclKd9FP-yScu1Z@p=gBMgaE6O(^;Tsc;WP|(*lMXID!H`~cg zR(bbXUE>5h%Gcw3hnKi-j#Z+M7n_k(UW(EgV*(@vlO`K0vRA3=O*M6d5zejNc-Iw89W_)%@)#aTGgMDO{slnjF>T8v zr9mL$@?H)ukc~v0qNl6>Wuz8CcP9B)5)9@(7m%yE88d7HAKGrjK@Dz4n-Jy0m&j$8 zB2+&vA@?p(S-W)|*3~o{hZ|J}mI-*pViwL@I)NWo>b#0cmnPRwV`C(61$9&85$nd2 zZOX6Oi|86=o%TM6I8aGUfwaZlA--AN@;hbWE`+K*yD138c6Np(pNeZ@ono|!(%WTs z6W(js$(2xWWC@(eXQ?SN`B~;SBe8dMl~m?4?(oD z3W_jlQAS}E?7nr-O}(?Ou0?C%W;4bUx^;Y9@!hy;yd0(8EDvA1?TQAzS6LRs`lJuZ zR^#hfPrxx6A3F{YJ)@GzfTxki-))E`#5p&T|qZlR}# zak9aH#SBKHAWc?b*N*<5;rd_;h5=jJ%w{441x)C`qXU%NrP20QvFWp~eJD>U7cFI^ zbfem=gWHg>XtNoNZ1LktkOD?QEm`N*#v%%8Jw~~F9^0;wMhvE#v~a%Wa+B=bSA3sb zE!D}{y8&DQ_xDSu@F!BSAyj$yd*-fv69~&WJ@0LR-3eFzE9v}31|~9H?)BYNH4lO8 zxhkHV{rn4VXE2uH@5ny$A!~nr7QO^1t~|gPiX~Rzx3ZC@%NH(uO!uUExjDvs^?0Al zs#HW+!^!tpVcQKID0@pyN~4=GWUF0!VLKgEET7>STHhe3&FO+GBcs=gz1_9F8{CK*x^y7klAY2lZui)-uDVd6(s~h5)_- zv*IgyLJkqDI-cpV2 z@3*Yu9S<*heXZO6`yDS1R1kAAwzEsNY;$7nmRUT&DT&ewXJ?UZ<{`^Yt|z!^Zh+#G zd3EqvYX~KK$HdnS!lU81HTDR(#phdiv7FmKwfhU@Tb6lASsJ_7G36~|6EgtcPm?!p z*c&2gBRaH2%%$~?>rD!WBI|zdp;j?lsIuwX%f9agcwPmai)grerOjVHC4btNq=+io%OmvN7S& z!?)hnPhHL^er`c{-))CI^ae0w3i6zmbS}G2F;+dVZq#clpd8zcJO`jraVRZk_<9K} zRFp{NASraD62pzgMtaXvZ3SSAK;y(ZMzpzCTx=p$0GjM~RAUi`W4Aa12jSD0MKe?k zWJ%S9*04|;IQTfWy=8X_rVIIEfm+_Z!JF+uqZmwm!A9#KW7rzM7gnpYk79J8(_)Pc zP?~l(*lB^Q7HsiM(grP;hwlwI%zWD^CFUZqZQFl=%bjN~{|v^Sl#$jQ|XGfp^f|*37RC zn5W*2-SUW^TR~4j1fv%1;d=n&g9n(?{JbV6bVq=z2hiiaxHgwVTj(ff0X}wdU7rAS z1yS1Pb^HY2ejYKDrSlWL)q7rBe{r?F739n|qp^^o0*wO^*wp!TW@J}OA5_fzy7yL) zkC1B~vZGZO!eP>BV#FdjYoH3;!bgp^!t%9{A@i_9cX9czVBYKi|CLpIqvL_qMbi^x`< zoj?QX66=NXQRbkz+dO`a*#GqjkOeW3g~^*~Nnf>!^LFWk^&_RHl4EIL6(8l=>n_Ja zjZ5^~dUc^{!kRJg;23f<&C^qiD(Obvx5pJT@E*OeT)JCgdX%RaaR)**ZGi$098stI zk=>7U6Ja97B@Rsdu~zWVDe!!+W0zUT<~F0DRHXC^ej~y9-W`(w;ej(%AR9t&885o| zu*gFUMp78Bead(+i=2GLyMCc8*iILK>nFni~* zMj9ra7N|h!OQcsgSHLAsgnZ5kn?z%S=uUgt8tnk;l@GqP2<+5DZrhfzgF#p~iyl4! zn#`d4!_Gxgkoa=2fq{$T`xje5FK1zX2xKs0dugaa?xVA700KL^;wBpPh>z(Nx!@i_~0>jCUkVA z8nV%b7<6>X_uY*QR0Ka!Z4eBlyR8RkU8SC$l!|h8I_O>ZTnjpHh(w*(f zs;5a0??j0=dl4sfOk5?QN4G$(thHv{eqpRbul6T;vjv_|XjcL_iGX+d2BEDXi?9nb zMRf#M%xFQ9@~L|*VpW51ju6TKTEC>e-K z(4A6L-VGiVZg3WWLLnk?9+{thdSVILser1XKsR-45u-)g6Pplm_)i*87!>-d3f%hm zMC^X>oT%Z)w;eeBuGn;{^p7= z8|5qgGduhmAt)?`>NwFf=w#%4*4=mhFiWWZupVMz-KRr4>%Jo8Lx8h%%PCev7Od0Pi*vz5!0wJERO}Ad$cC)>A)%a#Yf;fO zIw2N`^4pE2?k|SR8o${J*-*6d%nVXjj-Xs9nreWs&mL;NINEASHp|@YNZD)!>&Y#c@Mk}tXOtTMnXS-qbd>}&hQ2y7> zVhl<<5TYx>Y-s|ize^F&1 z)e&6`*R{_w+);KZA`#y%LA&$8Y<|&EDVPYMs<(Kqo=3V0T=?5@F)ZX>@hP~e*Q9tL zYtiAEA97L%x(JY;SjK8)SC|}6crf9h#63o+d2q2l@e$fbawXRZ?am7LR#|%f@U2}6 zmhlqZ*Y?nBzP2qN+{-p&@=MG zQV;STfIOa%7?U(g5jZ342;2O)(HfrDqoupl098t=($VT1)HDy3Al5|4B7^DZ)drBC zc#T^uVb~D4{w*zQEUirpmd)E1h+x!~!wP|e(YsI-p>FAoGgSHWV%djr2T+(hQkW5|n}V2CxMJ#PK)icT!*zz#dB_9(p7F*TD7) zbtQ+bE&4{C=|fa#3(v9AU#jYfOOQu~Hh4HW`?Ym+XKN#Y8w2313GXX0M52qklQVKW>1YN=S$}QX*>;IE|9d zth?_={ow*v^MXfFY-Ej*k!;NYz5|U;442G+cF*I3#~EJmNg)l@Occj%>gPKgWWR7J z!n)ofV)M{=dpMx}eCmGokt%vhTd@A-hJB88T>Z#`^&|)*Zt?AGD_p#eG<-wAfz!gkCXZK2w%PN`St?z zK}xIuc>9F@=35BbF7X`=3ONA0N5-LC$uqLeu*oQB=XO-Dx@_klnM(gi?viS(s3|W< z`#dt}ETkmdU@`@zzmY3EqO@At@NASjbP;L071D+yzg~qNPj#Rc5-=c5|3 zTjo<`f*0YkpA=zzs~fd7R_>GEe%c0gEs`rW%wuGYk3m)@TtXbojCTn$y?~ewJ(&a9 zQZ)aFf!f}1h@(p~qX^qSxMb>Aqh^F`((190N*Qm|9^y^yn^62Oxtq106bhU0T;!dL zPzAafW4h4qFQYe~dPD2NRWIyhNSgb=_8j{-b9Tf*^OhJB|zfOiX&`X@w zyfM5TSn{rW%Vzp$Y?AigM~Fa9$=&i6i#D)VfNcAUlvRd@R~dWHS12TFOUdCcTFBn9 zwWmtJZ&t9$m7Wuqm5^-~sSaVe9@5)H^LR?_WQkd}?POCt8|fFT?e_&4&yW`6dNK2> zJs{&S0CF!%68hinV#B2QC15#{!)=I}JZ_l5;+d-TkVk)QmP9JulKq zzN;Sq8kMLdcrQPb;xXO|wJI z!ez*%;xsT&l%$z?YD}Dwn`w#X;Fgq8r5?}~vUWaLwCK}0?O40eu8LYOK z2QzcNSl3jUyk`_Fy;3a*wJ>(>;^jmz=Z8~``}?UR{rxOcs_jEbRcd)PrR%r}IXfnM zPl;T-6}c)ZH*GspCxtC z$f~Mr#r{#Bl&z{yHtSZFcO6gd84)ExErqYy+B&{&YHw1n49@LBlSP<>)=e7~ys%-2 zBiScSlnI8JUlQgr(kxpJVezZ!RraSV9#gpZWZPewSQm}WHKmz@Kq|QPFXo&=?9bkH zB(j>`RWHqIQI?Un&w%UBEXhz;#s05yheC?n)mLQ|{?OF_!zIhRXQR2l-*^bYl|y5f z%ke(kJo*+Ne0+oi%N31SNvaf__uJGojkL3OxvM;>!{>TL|GA>L>x0L>ZiN2BXNGb# z^$VXB^(Ci|M`=bZXr*lhG^dqUTSSJ={8ZxxYz(=i?0JheD0JFrP~zVa5*k|&Lt|TB zK6qkecs^jGX^-goe1+S?Rgb%?wPD9;^!qYVg{!-?{|Hc??b@i<-CSX`%WB}qf$`mU zW0polc^diEqs-K_2d@0Jx2%E&-LQT;-*vNt<@Qu5E|lcnmxjaB-9DTW3D>_*6Dhk6 z>lQFdj5G@<(X?$yC+6A!W!2U&_$)iIu@N7c6Lj;2{ebVV<1!?iz^tki6(4#rh4rjp(42(iAE zM~;ZRUTCx0#^4$~5!GNdAHMdN7-2e) zL;91v*;2`ANP9ejvE4kQbfXyK7z-$$eg{*mXP^z*3(!oCz2;G>B8BdNEnqol2BN_~ zI5m6owI)8bH)HgT#dOSZ8LLXPyyhBCIOy>}=iCy7BCz;(Esq>mLXkYhuTI*vz5;Svp&)kOCbE#@i$aAHt*O(QCeZU-YvPu_rcFE%SS*%oCiiB zeM7XF_HbTUm0(-SmzOa5@M4caSaaq9F#=a;=(8|=2X)lNe22vstwex7@L~SUavxPz zrS(2ZnL0BP!9$p??1?+!e)ZlDCJbaI?ms!f%NrlD`lHbuQ|xjTv2WY9;oaKtWh2R9 z78kdTM1{qle)cQO>h89C@ip;hJ|>5+f3xlWk=OC(e*X%WzO@#oY9~|@Qz9I70!DMg z63(yw9l>-77&}puaKR`g(jz?J!Rglt7dQNlWMu|CJgtvS%JHzg|YO~8{IuMae({FYXZ+sAvP9%z0_bjaTxXjo$FncvY7F590zs7bui zkg^7g0f4V>cO*ZrllzgkDN*rO^SneAzGmn4XZK6&;8S}!f%H&PTD{EKrS5C=7*x+` z*@LS*dGz=b>|=|OJu9*WjBCG^*i}n$Y3?6dxtfpBc+|?l6yIMRT02L3D%r5)bHY!d zn<+3NpNrwqITcH9PHvXq(0rDL83h*Z%Sa6;n;~h;k9cjx!h2in(`Aw?@%m$3N&?Du z!?ZMK5!>(EUt_1V0~zZ*gg@lY(ofhJ;&8SsIJum@7>2dQ6e@ZhUBE6&(CPW&}kYBOE#ARQemoUlu1Qh zk$cO^M~?Ei2t}i$0ZE&9h$;4Rvem}^)cjN=jeh@K!NfVgG!F@CQJTO;ej&cXAxC zsjV|91N<~)-Sd4(j$;r2s0p6h6O)- z1Y@R*w~ka-P_r@S@D3~jMzSZcrA4SnguZpE1rxqxpkTzIT}aB-WJ7d-aDu_pssR2d zWssTc{3kdhT}9Oyd05eLxIagU&hhF`M@zGkq)#%Iv)&&-3pmIm?22@{4JGC%QD7J; zDNW}{gRT&)Gz^6c(1ABcHiG<(;ma^$1ZP<{;}o4|A<3~Q%To@4KiOej z^}jd%zh^bW7-MW>AB;6=$TF0A4`YlqJ4qR$D5Rn&={;jG_OY+kkV;aGQnU|A2x-@j zRMJMNC^g^toX`23``pVp_c{0S`(4-l56oOM*K2t$ujk`Y%1f!9Z$dF+SLTp9>I93o zSLNq_u7meU!Rf7xT{+edSwwNxqQsncy9n#mY1m@~Zw}5+ItRp{jRA;7leJ4}T*3^9 z-Hdq2R=LW)!s~^l?&4aD^mX0%%S7Ct`kXL+yR9b%F?rQ0&K11tZ1)5wOW=k942={l zyw{m1=B3Tr&`BILW&kybEY#z;2s5oQWyM0N+zzgtl4&pI6Yb$+R5?Q$Ja@){WaFYT5Cw|W;ezxHD?8lWDQ6~r(&xVzN@{gBeB=88IHHixc3+b7Xexr zfJA^3`2Z;qvQGleLc=_P4@L#Rilqw@NTG0^-9X8ZpbPJAgkObWdLdPQdmRly8?D+| zk01-wyo4FjVbXvUIISte{hgJTOX%B2x1moFgpya7y>Ar!h1He!S<-B0&Y27bDz zQkb!nZ|M;x9p&!li5NuEF^gr0J@XyzXpN5R5eeo$=(m{km zV+Ko_kw#?5@msZ?*6~KN_E>6J?jcau9$8v`+?a5W=YtFmMCw97a6w>*Aty1P6MX3& zNpvr`fJ2(*guDz4M+NO(Kr1@l|3S{e@3z(^XD|n=MRye*Y`-+p$NWh~()sPD2T)og zLGfRL66J#v-``KP@rZH^UYFrlGvoVkHKGd)PAPa0dLfG^3@*Lpw|LOkV<328G`MEw z!FOO}FvXu!9-QGA!t)BrTpN-VACetE()$?nyUoonJs`PI-K9MO9L+nalai5_cQWRu zC}LAxZ*TR+#v+}LkOj=@F*m#KBDhXup6MiPht0zx6?NV3Q2OqZQd?^6RoV#*$B?~x z(r+~;b!46eH%dWRS6!(j`0x%YJZ>p6GjT6ARo#rz$}y}iQ9eC!PQhRYWDBl8ja(R()Vu5^Mxi%b5%;-2o8(+=U*vM`Brm?MX{95O<3Ld>^oA{$m^L`D?8HNic~znBjei^v&y zA+pbHwBF1h?t!^pFvLMV>0Vf47h6Sv#m$M$sP2X3nq-j6N{dpk^Gb!8bIN{IK+PoF z3@W$l=rN2zj7^3SLvoGSTCQB8t`FpKmcs$smxa z1W33Q%0CDyTh9S2>tzgw;mRAdPCf))j8+u5Co$#no_6wanJ zY-Z|8WzKCQD%xxs^-7PEGr(EKUVg*3H(Q|6RY3nV{*n@MBri{qIR#a&k&UjB(yini z2XhQZG8MiLCcWs@O5yL*l<|TxsANJs=0d@{N&H#K`4AW1*ej;ve^VPmN&kSV;hs{b~w62 zxL;uso*)ccT7?MWbmvZTTZBrj=jvOULgq&^P$tq)$#u82vkSBWGskK3#ONl%;Dij6 z50aDu(`9)`8D(e|Mn1*1JmtaVDnnawmJ79xH%b0MKp7-%o}bP-AH&534RTJG@AT68 z>UG@X3C^HbV{@R4`Q(^iQx+~g$DW)u2$6hg`daaV4?He11CblkQP~8y5N`g_+hYab z%nKAcy!mS&xG6zt|LLNF0>Khi^t>o2knjDSEjoxgy4JE*s$VsMG9^xeqSAYHOHv*j zFoZciy*4#dfA6AaXjLzFy9@8lkV_iY&?JLTgInyzZX}fF<|#zQ!WUC>;;oD8LS)wx zXzS~WG|4a&kYAM>PJ5xd>tdN;SOpU(eyRL3Pf z$IYs@hYP>%egFClKS?|z`K&~Y$<%)XLmeq%B-WmyO-cA>m4-z{)+~3q0Q@T<%5EB} z7jWx6_=zKwLUtX`Cu`f*9J7?Lw^)*i$=dSK980?c)?}A8RHgS@ON~g_I-jR5HSKkC zTx*}lbwcdfm-*-PIVcQ7vw)p4;>eOV7uUl`7^wNH^O{V+jgQ*sA(eY0a))xJ_hmHB zAOyoO9YWzDA=(;~WjzDfkmQ#UGy_NWc|t0ttej*kEsc$GM6+;bLpOvuKZ6p3^1~|3NuAuo{5X=@+3Eae zDPVWvJ5!UqNq#B8GK&h8Cy<#$7EglQ5NSPKbc;>6`f&T#r#FnxqqOIs&pQxfY%T37 z1cmmkLr5y~ruB4+QcUOy_kbdo!JB4NU@aDCuMUjHhLRti)p+Prc11sgl0a|+hKH|NgYoacoKwpDRNK94t&K%}A` zuHw^TGWOLe*oOR+)HNX-_xb96DPmRKny2w@pHz6Z7kek5kl(yI`8{XV$bk*%dv+x6 zd6AB_1vmFP{(8XT@ATS36#aU5;9V3uujVQ4!O1-qP*tNs%^d63^n-LFIh{!AG$5bi zK|f>Sf7SsQGY6K5LBuo}>ws}vNKF!`=LG8!_FGO43-@Je*qvWCH`&m+j55Rz8#ye~ zma$j4WR9;`Z^Wlq$3~r-VQ1H(k83X{Gy}s2P-$5XqN6cQ4Yh?tNAdL|NZ|^FkVuCB zLCR$5frfb+lfx&Ekc@pp4?lsiTmBO z=peLvd8_}lqp zj~{+6o0}fLUb*hPJJZif%qz1u|~K`nle*;ME-Zy++HU^bty@ixOqwb{1VH4E9PfPlG3Y zKdRBzP29Pu9)($BR-cEDpxnx(J5q{~Ldx9|1U9g3M%GBiWk%|Nz^(4lq)ZDLM4wSB zm`0RvSoMzUW867J9$wT;wL?Ff^3AG>+3_sJD8g)7Xm4aG7hZF{e*j(DS@?m%$mDZje|a zOLU!O_0YoN+?+@<@^`}-z5<_(d$%w;U3z6AX51rV1W;zXS7JR+Jpkk|RYJuY(w7UQ z!OV8KJ;ltn@ZD6DhSKh86@U~%#$Z+11Q-?`0>S`1VN^`F!_WZ~o;2!ah&PAYkxp#T z=~2qfbF_7I{aI9IW=UfAZp`8a`NdHn-9?6Xxgk>u#krNK;l}GU#exg>>KkGr?zx(V zd-4W|8)c>(R8WV8P+F9UX^cvAzBAWAsU^|}pO^;AXX*|_fo72i@U+i|&tza9pIIsps}CTlJxQ^hbWMv!f*!$Yqia}=i0 zFnbFC4x@s`EFp|&4x#dwMTJTocNBBJd?>AJaog8&KRq5|;D+oupJai(lrT&Ytqtzx z6FlQla-N`*J|5oRqKw79MMP)>og*YrU=pm$W2L5aG#Hu|QU1b;Uvin;zoNT~e39&; zfo@PWA{`{j9WA9d!1AmqoAlf#>n%H|c)x@RPqdVkG%_kDt@hZJfvhdP?7X}rdJt3C zrQvs|KvJB8G+EP&$2p-4K)ui~%#if;^WnOe6J%8@mJ~~ZHaDSHIAFzcWT;)1L{USh zioGyGrTh{xKw(2jg6VA$<`r2tQ44E3jA$`6kOw}4g(fHYonLDRC%UDvnoF2V6ojWt(%nP!atz&6tj8F}U<0 zNC2S~7_hVGbE}K8uJaZ=-C}E+?v#xRPIFrN5c9rWD51{{)BHiiQO_ynt{B3~sN?vG zQNY4{!f-t`|EToE1l=i7PFhtHQRdjh4*<9OuG?nMxvpW>G;IAWp9DODHLEU_QL`wB z7&ulTX(2G-zZ{$nIX0*f7p6NM10yU0Mz^%JOrzs2jbSvKf-IMd5$5xHmYctK8N3=D zUDm4KN1@FKHZY~hp2sRLTDQ@s3`+x`-g}+Z_1ie7e9)IJo1lG-NV<<)Ovbr31RSEf zM>k~%lhzjYMa1mwS?cga|LELccR5RpWsf)=NZ{X>5kqK`vQ9+QG^mcbchznnrP-*Z zLRt8bLsmo}nbZuK1WmZFAApvsvvlx877+;{m8lrO$qdREs6pD2={Sr2O+*H{v10{m z(cR3a5gV^z92{BNQ*455iykd`QvUR78J~jgJB#k5pJjSR5S-`W4=Fxh7w$`d57CG+ z`4s9=^$lrC+e=3YL*Q%c@rSjWPS!tqemO^GxxhJUm8P9<2*GTZzs&AMv3|E!@H;B^ z@aGFOAEVX3F-L%zOzUL>V@!+&F3F<+_<}b-hwyRq$>s*}WI(T8`t9zST)`+_n`Ynd zaY|qOa*uU!;w;jUV|w`O3>o3gBqy%rZQ9q ztStTA@$HU*A!A~-8d1RGIP$yx0r#{kf~wl(dJ(InAKfsWxqh!p-r82;x_5X@yX9k= z&*u=MlF@Hs$ryI$T!t-hvY>m({%QWIv{AJssl69Yysfyh;B>e^TQc}L>vOG|2c2G2 zTEN@C>}d!l?0kuQMxD;*6MG%stzYuv;hoE0&t7r-u>ItZr=Kr>yDV{>&RCK*_KmzP z;%Ps9aTH3M@y7DA`wivhWTmh)ZZbOJwv%iL-}o9+&X;z9Ubu^}IDf6Nrtn8lbK>wx zT7c7dIDhu^sZ(01DtL!sEF+jH;D4AWq7a9>%KlwPEQij7j7Bz#v!^nix*Pk zr`;W%0w6Y^GFxs+%$bChQ zNpK(Yv#Ftv?wc^@^(*ROM-O-l572RA^t;#dkP(Fba(Wtlg;zJ8!qR-kqiFHS6B<~l zVbBDxL*z<7IhpivSz~GyFk-+nx=>F}gP}t0DmK?cZ^$emTvcxDR1|bF%G5u5x^b|2{;MDC zOSx)X3{>59Gi?#xXLo8cZZysg2iPlN=WxVfIjo7iIu)ig3%!Tj{9N3QlIip`n2Pd! zrx^N~n88IRve;R`TAieV%&DBiH4!}SKam(H-|Z`&d{D-gRqjxkiSk_b9oLNPTa3IK zs!pQ%z*I~MDv{WV6s)Q_OvUHnj-p2=@swAn(Q1E&wj0{ zh77ROSZeBvDFX1hDT0;Q)wa8_G?DiR>N^)m$YahLhhz&8QqR^!pJS9k0xeTse^^gv9 zHc|r3&Ey+XZxG)}#4>ZZ&q7$-8#pn>E7H6l&yX`7YM|GZ62YJr0JHcmtS7P4Kp3Ii zg4Gz1Q(ovKU9NXjf!pQiYt9~C)Dx-9pl_kTGh^_YWcry=*sp!^QN`kE0fcY#Q#jLS zTc#SMEgkKlE2ltU2z~!8rzJ>PY#LW;Fx!#{w=|(s5;rc(<(1HQ#M#aZTlK{rz&SF;smP>LQ|MGrp?jCnB~)ciQ6n7!vluYdQ6`2#>Pf<=3p$oA>p8>pfV}jroD6+r?WGZB8b`5%6KmSZV1;ip%GYS?R0mZF5Oja?0V_%} zs5#oXEP;$oL>P900H3a@4(d>WW48b;Z6v%5K#mrpLjp9ddH*`M) z*D9nF0Q|+5HTsO^Vz5%)XAiFsa@5H%O(<7`R87AKvm|rw zN6XvYjhT<~+&kN=5kqeq4G&w)NDt}TM^KD=7I0XfCsIc$nRgmh-NY9|nxGPKS}fZD zlNp6s&Su8`^hA!UKE0F^nSk6o#w-Hq3P6|LA-_3wMxHs6I7@H*F0iqEOQ)#(rWMGn zXHq#IqOLtoohsYom#*xw!)XzAA=BH3+@sAvzFPf2KtGvPK)i}K_J1R`(BdVZ z8=rb}=S+XhMBAuW$J7~}?njG}zPrYbC4z(drUuj*=k9iaNiYRAOl`I^yk6Sn(RQjU zlc8W1HON{}IX5T4_hh804=00at}Zo7n$SPi4Th6AiUUsx-#G?Ub7cnXtqHv_jsKq4 zX)J^h_7xB(?=DLfqpJL*O&HZOFT6gFh><9vzSETf#I6m-_MhHsrSy?Z=t@+W`lb+d zT0w~g?}_j0at7xGMiWErRMcl+c#vX8myz{zB4a2%zU%uSU3uc+?fkxXB@`!0PgE>Y zBfwcR;65?RSant`b;GjKBS<6Ox+!_eQcXs>B5K`em<9xI)Q~3u_%aPRrjs7i!hC8z zE)dI2YdkXtE#BP<>$yd53q7XILnk=_1ToNb2u%Z<2SfYJ7Ds1xN?P1v-axt_=gXS` z(g(4nuoI(ErCi2&*QO`yOaHmGywZfB4t4gViZ$<6<5K`7hLMJ7-25wWq`MPrf~ii( zXfbjO-gT0Apoy9PgpY);LSQ!aMe>p`wj?@pl&ik5$|$Du(JTLnDvrTIkMbP-;~eMw zq|0YFj=>}-@!`ksS)|VHjFgID&Cv=mKDn1WK~I?Ws3jKaTAY%zF2w^w!>HHgD7TCf z1C+3F2=%x=Jg#1u4YQ;no7DL#Jg`@a{xi>7=gH8T9g4&ujbl1xhB?YfkcLU$!{{!} zS-uG&L)8SCZI8zPV(!H;ROUD(qQc$2r^+EvcR@k@B8O#;o@LR`i0Q-_SOl#{l7=C$ z2eofRPJ!ej%R~2i!b%sSm^hx*VzkUfSmrcjFbkC@5sZ;D=wXh^ge8{6*{RL|c(FPc zB`x}mp@4a?#e@^??owouQ&s3)xw5#vS1{zr=U*BO9h0tK6(9-&!-oXGo^QvBAvhA$ z^aWw1pbWJSKi4VgrqfBiA+cQ5DueV7P)Pt?{bH|XNLM}t8kIt}F`RbjfRUDS5k#b> zkyXu4tNLIT3GvuOP<_^QFAj%IffV0m-`9{)LB6l^p_`x0epZlqp5djvLB=An^W-*j zEGc+cop(!ptud5roNv=?3F^*^S7)4|mnG|%h~Z5DjsYpKpE?BqE|y~LeKyGpne&46 z?KWppDNeU^{1kAuI|L(fA;+2Bbd@r~PEUH!F&CZ2P(wCKZ-S#RAvwy7vfcQ)^Ll8u zMM}M8)Z&OEXE&X+-Q0e5^A+2;>u2L`+QvUP8~@xk;q}>skG5OBo!ug_O_XU*RIuBs z*1lEOZkuuYwk3Ak?b^4mv`cbrPg-S{9NeB9ZntA&`;IMkJ9oD4+-sMT-JVipms;7L zdcbbik@j6D?RK}f@4jM}cD+6Arrn+g?R%cvrN3@Z|7f@OTl?M@E*2pGObiC9c5rlQ zT;mSz5?V&(z}}S|Z!N{-KtNUq(F0O~C(o=a1vA&r1;^2{OQAX^TFx3Bm-kHBxJ+Cb zEpPiiIkFg&57B$)@~?LkyhRo~NXgH;R@mNAr0_WJ8x0pSC;Nma8zW&Twm>CIcm;On zO6}~OX6K4l+3Tb13l6kMABEtAV2PSNR(W1lnNw*7RxEU*CZv%yXO@a>=AR@buL1rnAjtG9Zp|&MT=<#8PRlqYoHrKm~?5lppYg`^5BEu z`v7hZTzU}%>Of>Sh`jg`-VuxQ5hEC&MV;ir>a18rR_f{JyLVlr9Viv&UY80HmZC-> z^aR~7Mtt_B^z|lK-e4GR47%jOQ16x^>p;{Tu&}EOF2xXwA=v-`mgIyTR=ixad{@YP z~L-z$}f)e09}jzqUEf+M6&`Tzid1dV;fJy!tH0Z4)OCa3h` z?b7VNQc%9``*CMS+<-&20Vp3bSDEqh=mY7rsS^r%2_HCLVhm!tAp#$UV>sT;o4?(D zDaHCyzXs!qu6@w#GN+NBnFqy=2SE8JKk37l9?SgNG5KSkYihv@TEQ`KF(SS2hWP0E zOQWvoDU-_%tUUKJe8sCZm+6fX@KupCGV0`eT%I((4o^%~tXna42D8;-+lWz`TFvQk1IZYyZlkIVp`_Pw8F|6wJS5aD?b@u`Ltx^XS*w(SFW6O zy)wIM<(J?qU&2>@-FW5emX+UjUir3nR?&x%;LkBZ|bvy-r zIuey04`umzEF21aoq+m~e(l$83+I=6gC_VgK-8mCSLT1{fB;#K!=PtSqO=K7)UnRh zC|p)afKO0EhH`W!H@V;QT6QMVIUo4FjxuB9XeH4>#v zGY7d4mlTIljB7&BOTsDikWj%IH;S$tQw#+TGEVk{MTVh8bq2z{~(U;evno1Bhl)@OB}_pg^aY)*x?#{ffV1$|CoW7n>jM zk~P$RXi4+9xZBVnE8FJq~D>fQ(16O?#$cTufJ14X@=^`u9yI+Ep)*Pp)15ScbT6 zn!Xu>7tJ=r$bMH8a6{}fc)Bvi^wKUj$n_9+$D~kbIV!$NzFfMkj<*)CkyRSU)Rs1j zO`oIB=K=GzpNv})Uwq~Y?AOaKWA!4pI)tP$b`akQU*Hd=eti1vIp?FttuYnJ9_yk_ zvD11APWi|J!1!M;054lf;l?cx8(W4=UYoWNfEc(kKy6I zsaJl^zd8B**N>T-;gX;8AD>H?API!w1rW-56sA}OqAUa)`J_>V9*K_i7I0PCMp2ek zbom59hW6~J44vepSSa8bT909UtDIC$2r?HZjmbrjoYjW}SvGBB@>{E%wLb{59cRZB zI3$K1zL@V~J+4?>#W1ue&hbhbSE?tun0goI2DXi>v{tz+PAJY>J3Fq{Nn% zzfiwb#k4t5To9l1LUWAdYClw5nB4Y4d#1|O@k4RZp4k_=Fm)CkFDVgZT2JUHR`MC%^HC(D1JwDm!d*=8f0Z8vlJC%8ocVetENsqY+S# zFK=?Oner{J2{>d?e$*>@%D-MC@ThlrbKse&z}A|;;|b-*)_$1^?$o$1d!N;ESq}4O zoQjl_RSqb^DqxsD;Z$IM8>b=#H_{Xl*Ne!`{|3(V8&0KVF7gjJ(_e5Zzr&gSz^NQ` z{~gZsAA%dTV>TbZK}q=6aHb`F!RZJ&9nX%x2X1^Ow_gfwd{4wk!Hp+N+y*s{SKL>U z7w`AFaQ6M<{|wG_>HHTdPG$4+p-X=aXZkF~sf6FWeCfx37u-nsD>ze3Im+T6hcmq_ z3kdofaHg2UM_<*%oqZz(H};smu1mWACpgp5*Zb4{0%zi>Zu-}7rhgRN=xp}3rS0Fq znb3>giMsy+ZXB?E`|k8GbJ6>@yFr`ZpBdTkS8%2iyWlvDKY*av-+`c7e+Ggo{l2dL zj{rfbe*i&uX;a%^7isGO=U7s>ccl}YWV7e7wfN#LPgSFRYKbJ6!A$w{<9QNSGYTx^`bVH&6jvq6@I;9Z)AYZvt~QjtTm77r-j9wE@>H9N$^`jMP06e9$=4eG3J4l{ z7(Cqcvh!#<@?x9#NRJ-)8xVBUYE<*tsi{?LEeR6o95DHS<5DL~e(T$6B<8Uln#%d! zx}%jyh>t%!==UNk8#}&fx<3 z?GD$UyMoVCQuF*2N+Z{^RV>bpJy4Rb|1>2=s>Mx*sA;uOBQ}|bz0vY}-&JNvxOB?* zWHgJHx9;Yq#u&yE<=NJ&l$9z&o~|jGy-sJ!7Ve$Ml7I1O!1}>I0t7u%Y1Yy0%pJi} zSa3U1+nJl!dL}-&?C5QT{YK;51mCP_y$KnwpbX^5-wk&4>erqb4}`5QR=g-r|J4Bw8Il=HRfzVDgI#q=2M_n^(idm8 zCY;ZEaM9vV(641sFZqta6`8R$W$Hd_<9*(IdoT7iykOH^`$G1bNMjt~i0yLe^SgVD zm9?`hp84=WW|sHCw6Z)WNUa-k-ltID>haj_%Q+_!p)qyiJTfR3yuKpfZScL^iSPbH zi+X|kr7Lqq9HUGUe>%wz{4(*LypMqSMCLk3tm6iVecpm$7qMoV zXOiF7uYby^v@C)1OVOp^{vpBYoW2x`F(9HVNJWzy#YN=kLK0?$up*P9Cr58!R>_pe zGz!c-Jptt1tm4mxle--B!r(o&1jEBTIfK}YRn4ynYvZo@FTdTjQD|KDO@-m0zV*d6 zTUJAidSjfGJ)~nyl+8{{w5Oy+hQV``oTi#Ixt@*sYJI&-2P+C=VnBB>@mf~YAh~2x z0k?%{@g#|;f1ry0B1Qyt$Va6k^}wC9*Mc+kxAlKG52}?|-RQY%W%LQIO=l+ebInI( z^ymf_Ke#R(0S8x{Y~*X{M)sG-370Zytm}9rnufi&2}v@@&Uuua+2B$0&*i53Wq#Eoinj+@)}TR9zMeFGAV z9{I>`e{b7iw_=!gr5~IVFi3Xr0)5mz`Ey%F$<9yTxRyK=$eao|YG&UIir)xizWeJR zMK08lPuPY$$RKcuO^5LCz zXEb9?nwd-oLXf=8(e!vss0VzcJ2I-($da?Z_SA#EzYhdmR-%c z@fkU{17MiPy}Y!KM%)*@HVU?GT>fXh^Il+(9C1xnnngUo`mkB|(>ctFsNAJFQC=FX z(=YX1RNT}n20szN%no6iY^TNZ<)7~DUs$!{g@6CE!+#$LD&ndQjG~v#brK3iJY&x> zDS4)gG$hKh8yLgyp1VrMxAI**$BDIb-6r0xxxoYDsu$+2Q43r1H+sI%cs$ob8)_}w zIq*W~$J})ge@c+;IiasP-^=noRZ=-HVYF<%&!_NI*%8l|W^3mALxxUOv=6+r*gb!P zjXzy=-Sd@I?fgKD_vxAk1Fvi^%r6>DEIeKJ+Vi!;!l1n=|zbKK`Y3Do`{iOVD(OO3zm ze183a?zi+`Kkt3jg<$=*WDe@`4l);eYKJbMuwsP08E~iR#Ua);je$r>>{eiE|j2w9sqy?0g0`gR-@$348t{A6SC@eE0kUE z$W&pbj4ybD)oz$fzXpbrZ*>!ag-GmqL$7HV;LcEVQtnKlZ*gO%=%F;55))yh?dFe- zI>KH~=YoQi;;ZK+HP)Rfa4*2+n$}J!G?Scd{;8Kz8TYBrNTrK7& z%7PQ5Q1gu^=3o7%(99q2J6@mo@!{gP4?jMNWtJ>VcdKn#nCUe>x$tSg?&HFL6Ph`? z+GO+{9h;HQ>?0-|7+CS zzZn1@W~_O4sJq%}fA6c>t-kPopID`Ta}oxPgOl}`z{FA*|MKeK---BeJox5NSS#nv z;p7!vv4tV#?HGD!npueYWxe_bYKMoidpz1qBzLc}!URZ3v_{J%=9 z%+t@BFM5s|`i~Q<4;>Q~n?IbJJbdiK`FCgEe)yewJ9~fg$4hg+Q*Ym%Y|Q_)NL0+m z4H)a7!&6+f9g}>^4(~B7p|V$vTB6jIR?T%QZ59>x>#mAg7*$G$dve11hPCIs9G*of37D|@&@`wrn zbRbA6<*sY0^1s@^FZG?~osz=Wt&v$9`hf_O=Xh@+-7LSPHiqb2eCY9#0xqffe$EHN z6g==0;r;rooZrspUwtx4Ft(QLcOK-vB}}@8b}8lo8aV8G9!cqTxV&2Y~5;W z3}NP;v0U|z7LjcTEOmKek3$z4E%W9D7{Det8BvO|0yugdmR88|DqeF?s_xaqfnC>KNbLzJU!6 zpR0%S4_hB`8{8E7xn^YGux)$aV8X7?wWGKrwCip|+iE`7O?n=2c+fYri1 zzjnL1>(S@^a|1_KeCs=XGyVHN8UX*#b1Iud2AhN0`|q9D_2n2_{#eL$_xq=6zO=-6 z9SeQXfB)?HFUJ!Lj)lE;e{f#^TBQ!w$g|R|`!DCXv_Q56Ai`2%GJh_RMRA#b2fY5G z$8fEHF~j;7dbwebRsfI)W8=ifYApWX4Vym(fTf*zrPko@=eU3277hER~|81NSlx!Dm>DAxNCh;MQ?17XR?zEy``)_8GV*ex*QwVI@^g3!tYBt&6zTpNQaPLp6zi?h!AX`)&_hy@+ zhw5;LlwO{G>#7!KXO5I!uBCT0v!X^yFaIwT$j)24c*0ao!jvNb8E7@yw(5~uyvP@& zWMCgt?_oWm%w3uQu)8zKwqH@es^z|}d=o3CSI(-&$?b~ndj~l`MAd#dU&t<_w@4r%>voG|5kzQA2`Q9 zUIApxr~g#Q=)@SeOn2ez-c4U6xSG#&D+kBT{BAb+&jPW3q>%CDZb0zg48-CsQIFBc zf5}AR0Rn6{4EyH|5T^h4%mW4xMdz<7#JmpP4Wvy<&>w0auWc|YT~^c9{x{&Zv_hO8 z5AfbJAZ0Z;u7!W95C;~oU6DqIzY4sK)jaVVaNGQzmTMige!GlV$ze-Zl>3JMmfzGq zxkv=yQFs7EoxOGDRnD{D)IKYEkvPpLpaG!jrxt@(^Q0Rf&L*2^yD?V}cApohwmgBl zU8?r68Pr+R0yv_Do@(ZC`v0-Ot8E8oX2mE+5?~SvPdi-q||1Y2lF-45)R! zTqms%|GZIbr8%4;!B`qD`}TQq@98nJz)h<5S-rC0zoGW|QzoKp1^x5*{=XT>ysG}+ z+yMRm7dC)36aMZmg=*OEg=&}oljf@5)!Xc=5QDSW?%*hgdFpzC1* z!1Nlom1jNwP?qU7h0lGd%k=6z=*%}Q|5Zw-)Nfzak8t9MiX zCQg^yDSmH&)cWh+{&x+Kzdqj)`#UXS;t0wgFVwjy!c~3C=uCwj!9)QYiMIAH8~j(nyyQ>>=e7vE>_84+AUEG-;^=Nbsf!$45hGu#%p5T zM)MIo@gw9*^cL!U4iBUi_b_#7u%4kb)bZ`E-bwVNb=C%BzRIw=w2!xw?YAOXYLlZ# zm3T%Iy>e}eB~i_r=9L_#LyI`g@|_T&G#4LuAEdf<=Ur#I4^8jenvhA!TB0U9taay_ zHDU3$mAxma9ias@%TI2>3m0jjp8NtorPZE=_f?W>qg=*oYG3kH%~D~>lk4>?GToJu z3cm+$nA5(6-oi_~rKn`Ra6Z`3W7Y-mK@Rg=+~UT1KCtN#^UfiYajpuk3o8_r*m13S z?WfR((-;A>K(@+aW9wofD`o74*0mkE4{s2?V6FqIj(+{B4+*=SS@++dxbN`vdLHQP z&wsDV<<-Z+qp$iM0MTNgp9V`;sOJ({8;h;tIC5X)RFfRI8RC@AI0AOmMTdV;1dX|y zq#`8lBPy;f0*Y}|L`WUsB3~%dKUk_4QX;yT>+@DGJf$8lX&>k17DsJ%eo{|x?BW?3 zSuQdz<;xh2Bh8m9n*Y#byZ%yx%uU|svgsL0i$9@#TUvZcDZR%wAhIm27~4=e-KwXi zv2k~&V93=fn;*?}5vlx+mW#D-#={#^Rl44^0qtsdw8`jhAcmiO@z|IHVn%0D6VeP z-DYABGH9?lTDku3#_5Y(W6U0$54yHYzVog7D|KjJuFdl0up?_%!8x58XALuL+*Tk& zBUk^6<|^U;59X?Wq)`1N)IarW*^ulXU3;kn#TWp9qi_TGZ`I+yBSHCBy2X;QijqH+ zN`IC?8C@&2{Ua%nN>I+^Z2yx|>G!TZ$K}8uUHc;D;2*lhr)GarD&1*zS-t6ZrBd?S z=--P=Kizixu3IdejQUg8{>A%af6^@;SeN5@PO4j6X1xBdbc@^I>u*bw5}kbBjVY-F z<#luk^S7@3joU-NDV2^~*eg{k)oq*}mnxN3rKbI+R9b9X^jlKGy>oK&^ApRLNtH^e zyCn)zrP9>Qt2@U&=BG<9t)j67?DlR3b~c7FYVepQT9ufN|eUl@jSirm>2n^e%6Zu z#Yg-Xg_x<{7e$hJ%!FVL>o!sRQ9Wmrz{+ikD)q_w7F8Co$u7D)gt;?Xs#FSIQ^{7H zkFJU`vfof0Q_~(@6W4WiLv3Qi*9~<^T-%NNQWAD-+@I!mcH;ra_UlF=Ps28*p8qR3 zrXhd)Ow2(+&zG3SvSypuLse5dHXN=C-4T0482Kf(snOeJ)6piYjI%hT=6Tu~4 zHnp^Uu-<&U<95>K6BjSHZ9XY(p4}|!F0_to?cJ3WcWPimTioekzuCC9yDO~Y&y1KQ z#h-l=*&f?I`n4^-<4K{1#o1T;J>t(#Io(LOFmPFJ$*E669&wkx!aW`%=fBpDwf{on zh?n7a+!H%RI{DONvP<$eUB#EmZtWI&ds-e*4bPA5(eUrzdR>r?vpT3>lpoV)q?Eg@ zA38B$b-?0E{>A~TJ8s(t6QAWTt#$aAzv1SJQf$&N8}DUZ$=izQ)+|hKUh~3 zB)31^{FwCft82mDUjZL)O78voao|4OM0`R~1hJQq;nxp~Q8mXocu!5FLGM|t-*mj{ zMd1@`nj;=9o2(Nik8!T5Q7jQy8!fMo@oREg7A?x;?AF6!?XJ>VMOnK_^zceaSG9M! zXRo06C`d9$)p|tB72xuQz4=XyYt+^peyYB*e0jI&eb?NewpA*pF}mj4ZY^22(6Fw{ zgy|aJn*T=6K;zr?9-9)^f&`wN){Dss``f-!Nujsq$0|*e{FtJ&i-p>V*a|w)&pc~6 zC4_jCb&`6jI4qSyaY6OES-6%|w8$DQjcs<{_Q^nJZp?TQtzRkrR9W*UirJp+{eeb@ z%1Q1O zYj?7S>v3LuCoTPkEQgf92M!DX8w24q1Sk@VC+9iI#qZE`dr){*j}`*Ltw27EK*kX18Aj&?{M-rX z+{!oax2tmzND2s>Y%<$n&?RdtecwzOHcPR26P6voMPmsZSPfm#A`U|K2(PCdw^}r0 z%OG5hXRbBkqK$A#V&vg>&f8i6TnI%o4oc)9c0Vj)tXI=`mgq&;{E%?R&X}STm+iIS ze(6Mtf$4@Bza1*;3-5;Xu>EVr%Ky0OjJ@iI%WC;!Gie5!uaB)a$z_jX|b4CfJZ zql9z%n!&Pe1bZ00xR)AzWbRJCY$w-%eJk3i-SQOvAxy1dl=HFTq2$JH#%HIV&dkWF zFM|QzM>N0U6zxP2^6EX?_un}>#0&e3pI1&YF8VZR{Di(=5M&)VQ9hWaDn9KwL>X11YshLemRP$%?&;x1MfAA1Nk6ACLXpY!jHME-MF0V6FS=D>CP>`X;Dksef$VaV2vTNt_iLGXvEnl_q3ALN_tl7_QU!9C5GLf)J^AVl-duw+ zn7$vlNUZ`;w5sArT@2fuLiA)giKCrz^>DS4X;@z3B{FkMe^=!)lvx=P>1tw%Jq*GX ztm*nJ!5mmcMjctg`$#bD*?R**Wv7jH`iQzTZ-d*dfqi<>BY*~LdPjWVHaVS`YskYw z6mhhR~@tPF#EDkrfw02@Df!g5`4R)t)YTm^wIvo2!iB9jPg?G{C) zG7)U0$)!f0QKuI>1xOj`ltO&WZcI$Xw+gMXEA~)~M5zpf`#z~79g>d6w0)mBTRQqS z2Xuacip*M)Rws3>(@pFkq-&L)OgELV1w=i)hKi>WPD%;C5IX!DECfQn%SQW(V4n`H zso996B*L~{i`IpZHxA)^?j=Yi00j>aD_pUQZ_9e`glz}mhJh&QEOyi(~NxOk^aQz}dP8(iU0Vx;7Y zYy=5z52B+~P{FQnTNWV{;P{VjKYtG?wFkssM}!X}1HU8(PNQyQqQjVQcd0I6808(j zvtT3Yi%gE49l=-Nx^{R=%&6<3nCxXD#Fl9+ydI@<4dn=-gDV4nCFjII9Lh8d7VP(3 zZ7Vr2(8SLzm;gT^Kpdc|#|vD&3Fu%D z&)_5q0B;7+j)_PQA9Sn;7Dh$ci(!_S9cn^ER3b9!CCmdvIRI!Tfc6E@6{G1LR9MI> zn7hxelT?(O2)SE;4gyhXASyW)?cjrIz@h_v&~5}&UNyo{J^7X^oISd$ay8nx65#`) z8XlsEuK7}-hmy~(#_E8z|Btvgk4o}w7yWsFhgn5L#TmzN49!Z*3UI<1XEG}s(=x-d zQZoZYa~6k8%L<1|%?!=T$_&(U$PCNM%!v!IBetVs>*ZB|l z=UMk!57%|y*L_`|4-Nc0l^D(e6BJ0cLO&XUU1Kd`l0ysU6~V?3oF%gU!fJ%gQv7By zSSy8{VIlmK;5lWz$_c_zA~*_BycA3jgB%(nlovhdiqHH6KrX<-xbWO$oHq~65rbjk zHOMKL<#zzldXRA(T+7X5Nz;=dpf|NHkt(pjBVK$1la+`NPQzIru3+Yxh%iO4mt?=N5JCJ7td#=Y zF9B~n^!~j%C;)Qs(B(9Ng&d(P%`KCIA^1jW)XqhEU?>;P=2WUDAWZS%6%a(C2%%yO zX-SUHpE>M#7o0^ReDQ|^=b2EI@1~jB0;MCi?BBz}XLjs|M=b_}Uga=FncEwL!7Nez z5dJO{6Da|;I3Sw}q)6dmR8&VBZmmLXn{$9=oP<{Q;48+MiY&U99<>;`oOU3YgL>(Tf-2+I!5#xUbfIB9aJ@IUeSRs5 zm(=LT1^h+cR6l627`_dUV5uZ6NhQINV9qDY1;_$pY5EFjy1%63h{BtV-|nkKuV7Ye z=72t&oe5I46;zfh9`uuL4{*glwa#Wy%h+ULG*_~fg7>Cj8(D}wb?^k*_8~bKC25RX zjtroIJD&#!>}s@7B9K1;7EfS!5dN1EvtfEiw0BqNadBg1s_!)2}9c_UkKJKK^g{;eHWJ54MZP@2XNu* z{Ghd*ond0on|#z*8*#x?kjUw@z@Ogn^=u5SJ7Br^pf2b!KLpoj?_IAl+AQ6lMDE?e zY>#GjBQ}4ZSxdfx&{itUbXKwc<@ArYE4;t(q zy2oms&eTUT4^XQOw81qjl&b=htAK|{tJfCf9>Kl8yragl8W z;`gzxWJO+3Mymx4+rxuvk-=igVeHIKSKeth3u_^5f;u9Du_dl7keGQX2Yz8UzO;U* zA$(~F5NVJsf_v_RD;GDqEKWC!%IcZ-#v@fy5AN0gCFqQ*U-xtS`i(o2J?lTeZei2F zk>g+oACdn8Mcx zD5h%g*n5*%`@=UNOhmBRNJQJN%m6B20)cjz7H(0bTUq0yY3YU{n64c05>>nh1zk(4 z|Asi|a6COT46&QEvju(muk(P>tJ6F7!xQC);e7Z`mC8iPIdXsJ!MjEAK2V=uz5MmzNhKqZNxgZ0hwixKm&cHBEtpv{TsmKePOBwM)E$mTEZo= z_!@@`;Euu;eBHWmSJhfkSpP;aNdo9?ZX;%2PvNRHDY2KSz-|dfO9WdZ#rTSAqB*$B zBAAqm^H#PoMJHS#hzT0FMg%*{QM)I>x^h7+JUCnr3sCf?P?5KJ@JKFvtpt;-VmMIu zJG%nsm{lApX7N45k^`{42Ti@XaR0BzeOMq{z9U(+r%i&Nr9qF96HcYzLTy4rMTjs6 z;=!3bw->ivM?w4HEzu%`|6Wiu*RqTktrFq{dxHiXEc*b;YVXMq*6!Cc`evDp(fC}y zc@eymj3lx}b)=Bc0bK6K)EG#={5dZ?Cn$}#8JHqOrVQt)w0eewus zqDbFDWo_D@odyZ%VW}A_rlYw4{GGS_!7U%2@W|`w>vc1?y${@+XJ;9qMZ3RZ3^z5+ z*_V1twp-BZqiJA-V(-XZ_@)=R9QhfuSEb3kD_&xZN;J-?m(9|JPKthJ0L_5+1BXeBkDw3pzOX-)DhGpZ9p!`|Nb5JA~&Fqi)y8Q zX@#ieiPc`c!`{QI?d75_DX?kb zKAYCf6^P)X@&bHXd|O3w_=yPfRKrDx=14;1sl?mEaZkfK)(vsgE~bgE8W~)-IlAWV zyS2TUpWoefsoHX_kq>HE{kr>1-73)~Uw(x?G-9*`w`uap=*c^|34GeyVfWG6^J^Bq zVSW<{S06jq_lXQFv%BAsaBAgDjQrDlzD7ylF4oPVlsD~hi@!|KpdM+2P==_$wi0%t zbddInZCp7PUs~xI^?|q6yujLgDQ(Nk0*|j1cfEhmLwD|tt)9EI?bGr{7BRoRf4J}M zI^^VSlltAGxKbkNuXT+mVwh9duNtrk4vUf<_H%(ax}-p_S3$A!LopO%et}ck zY~90bEHW2uYQjDDy4i@-Xe0BBl`evck}ovhiHjBoVAev*=ePPRD<0A+j~Z2qV(Dew zwA7|Zf@U&IYoCi|t42SwmHy{PqxD$Dr$v8_9T~Q;E;AI7fkNj>vMJ_a+mvak^VkPz zfkEjSdC~gHDR_zHOJ*t^nB0W6uAQP|Ntc;0HH}*8k|HO?FCN@dI%uXw zS@Ty>wRsDfPNY^#1Vxs$bDC&pc|l`9X$^Y^&ZTJzQe;8sHY?oGN;5-#8dV6|OQ(NA zy_}ojuoCOaq}-a7eFqg-rwf#453QEke|qV2MdJ#a z9%WpURT-OF;@tk597t73Wr{5k6GNaJHe0b3PUFK?% zOlj=6#q>2(HR~~EzaOQMvRoMCeBs$kqXTn-62s}*{&gpB)z%6_oEa)|mu^Z{;Mjdy z(A-8Jaif~+2<`V%^O~b(g^=BFZ5ag;pmo7JI;6lI8&E?!k_Iz3x9H4H*0!O z^@oO8`iqyJF_ryvlQ?_{f4!a~9{J6bmYSyk=p{{8y6~S74lc3KC`c}HrA}{JfMVHl z2n-cCphIXsiH-gyCG_E;A$g9&ifDrp8z$2HaC+mWofySi4~g31wVtdt-*ia-JbzsNZoP#ZZ2LHFFsvpO@RZ7gQ&D&rRKN~14lq5y5H2;UHz zX@b6vY3|!WV4ME9jQ(oM7xIKO+>_HHX z-VY~)HKm+`s#imFvlt)lRRqtxPzKm3M<0!OKiOv z!gjIQg4W=xQ6Wr$y3+w|D;^)qkuuaP<)AZ7T3aTuP{J&|bKn5mPU__V|4G%iWlT#8U zX4+?^*A^ag#!QJqyWB+i9;9INwev|j&H1i;V`;dE+|m(8c>M6k87+sk%DM})-4#6+ z{Nq{*sdgKc?=%a+p6%JMQ{=1~K7Oobpnz&iSqLjGAFVHhYQNc+PuTYsYu;y~ml(f{ z;gXbUK~7lCJ7nJ%yr!O0WfFS z@~Vu!!Q1f;t2Xj4`k-!TuiQUw%!@*P6%dhDJ?)FO!f_EEP%St7=_MSX{Q`I4ww{@e zfSd2HX1AGa_4zH^d9)m!p6Ge=Ph%|UBKtLs-|6ipCCc8axjj?AO<yAU6A~q7pvHJ#9N-Ufd=yo#uMCY>g&tE&oj!1KSOKW_n)c~`??)V?BJX6B zY>t+GKw8W%GWVv^;}UK`iKEoP_U;%BgNk+c+T>SV!(?8TGfaC|Ry|&ln4GvGsHH`j zZzMjBSp);@4_t*8y|{r&M?{R3(2A3GOXDr1{kC!~oHMR7c0s=$vF5hX8sN}UI&8A* zT4 z7Tuy0SFzpE-%+QQ}DS(@44Piz#nHt8jb{)0!MT(~4UV60i#__U&ioEy`1bc7?> zPsy!y9cY$b(6${od3tbU%BB}ze2!LnHVIpjp;pAj9Gl_~;S27H+(UayLeq;Bcx>nx z?$~hi6Aq?WjQKO%`3i!L!=F&C)>98{8CPb%y3k;e#()I+GOf^w=@nRl_OJKa)a#Wp zi?!$~-#q5E<(C&1SG5u6z17Zpo11sKzxVcN?{bp&j%@FY67S4<@2vKr3a zg7a-K^yR~S8{K@H{YSSu`yNg4J)Z3w81LIs@7vZsTGQ>@KIVIJR-<*s_tY<6Nw2q~ z;lKhiu;^F8X^(5Y%xfZwUn#TdAop4|=US!c+RR8{6~(Xj6Y2ua@3Px)$0WAnDe4H- z@1k?j={J6hs{O7``VD3K4`utEP4VyX9~(};Hqh;-v&MgH(tpI+U+(Nb+&eb@%YSh4 z+Vx+4x5I{|(bp!30SzL5880Bf&7WU+U6$cDJ$P*#hq+}}^2jY<-g$Mv6N}+HgV;y) z0rJ^^=QGzI2*+N;j}K1<^hb~1bylI0#%~J871{nTeg(WB22OR4Kd}qi<2HT~Kkoea z!snFne#N2gN&lNEH!jUye;+;eVetB!=79eCpr6e_6S#oC3|YH8f-V-^5ZpZUqGVjR z_{RNN{~sRmxnBWGr~D9kEbOx}W&DjP)m`i%Z`jG=X~PNKMb|D^6#j^J6men1&tt#F zjLwuyXdIfz!UbO-2OH-3X_XfCH5V_J7A_YDoBkf@B!q?`2poLLuy?c=#kZVG2%gu`V-}_KC_edIj@_3f|y7K9y=~-%{Ph z&+{k=(Kr;+Hm2hdB`}njEu0geYsF|DxPX;s$O8#e(6vflNDq`tC%YEpqM5nq;gB88 zLX*=s?U}ju(oQ=Cbf-DixSqYi%&&qm{W1szSfZzKx4- zY}!5QtQ2&QidPxshCJaJLiqM`0tXJ9G9{Qt_dt!l-9mE&sxO{XO%~ts3|Y5!hCz$Z zm{EHKwj6lGl)!LGum;7qor4bQPkpqTIvx*xM4c^T3u{}$VzeqxP7Byl_yY0L!=*!N zwZ+!fq34ty2kisvfBPn=wqZ<|BZ&5c=DHU}ojN&T_B*Q6=zd;(RM(0%-DkW`2dp`} zc})Rs&AHMw=T{7!Ike{DrTcZlHN6kk^et|=@OF(@6Gk`XMr&_f552Tv?d^n_$#zLA@kd{T$`$R|~|3X13L?*VtHxd%grjoOdgKQl6OX2fBNUdn`h zv4&N=1QvC*YjF0(tr*_1+P=_t-OT2-f58Pmd~OzgH!~IJj=zH9zvkvK4)Zo zZ;a8y7~^*_CVyhc>anKAv1Sgj<||_@0%I-L#agAtF35?cl*L*fjeAR$2mE~Em|4p9QbtJNe4n##4f#B7AS|nTL5@V-15FSxAC|Y593z8 zi(B<4&aHzF7xR`n#P?D7Ad|1jj`vE9_s)rDmc{!Vj`!`D^$z5N9EkhF_+E<2BnNmN zi`NqYtg?7*(QN41`0#blLe|X^X^?>D@v9>+9;xx#Y`!*)ubmXHR}1Kp_^iZu&j>ze z<+C;G;q-^C@0oTj08S<7^$0U-_-3^mHeOALKK6W#gCL`0 z1Cf*v9XMy!lc1aNV&04eL9_rwlu(noVFTj1zxoDIeqq|NL^%0xEZ(XJh=&6|ngr3M z@U>j{1XT@<1u@}3P)eY7{Mr8e7kU&vK?U_@z0_-YNnr7CT!6^sYh@&ZE&L;gUt(M~ z!bPgz`T7~j@D?6~2h`;N+g9>7f0^5&o_sp6Fe)Nmj}0*q11J;(RRDO-36XPfsFaVw z3*0hz(FG7gF$7w`S7|idC{QAYN026v$SL{-yg(E$kO!D>dC@Ad3Y$kjK|01^`n7MO z#Sm2OCe$zt#f7wcz0q$0P-1@HRUQftgOWCFS-EN2tFU6-CX+chL(U5<;Locbj6^|T zN0ZydAdodsu|%6IS>RnRpt1A6!6@{5YG$< zip+~vHPb;-O;9{-6#S(Z#FGc8)?g}zfO3cy_gQ(zW{62)THmwEK-CI)J!c_M6a-{L z9N7@kFw9iK14s~0^5$$E*jysSu^`z{WoRpafMNiy1YpB?Ze$)xRWuw1O@~3GauY`J z7Nw%!s_<20VPhi1%mo-Z#s}YTGHc-_{CN*qwY8kNNt?&Vuy~lHt8gb z|1SW_1u$uOZ+(i7lRj(x!q*i;?2m7qx7rC{=HU8@l;Obl5b`$to_B#f$k{J^Ef#Oc z3n23N1oB_jH^Bq24zIf-S z!f8OHdIGELv+J=h;Wddd`Oi|k(>($Kt)v9*-gs8W*IhTh?%FxKd;jyCyI->}$Md!% zX0GRHW$d)rqjW{Y=ihxg8TdB;T-o+p4ECJtL@Z}@82LJuzeLS4K?5PRmug}mP6$|kVhceiMy_x z^0Trz3Wq882zxv17I8t49!-74LSD_#&Vl^t_2HfBnB^<^9vdU z87G@dilISh{v`lqkyL|g6Xc`q2o}?Sf&%XF9?K1XM|$2jUtAf!5N-H(2Pb?{KTJ7 z$wHEjO#<;B5|m2&O<(M$yEoqL+Wh*9{Y=l+7dKC;Bq(f~R_D5IlW`yPq z5p1J<=NE@0&DJzoG1KR0e*qY@#j2%gXU2p=C${eo5z8N1qiG*rEh^N12D4|gBqin* z&5nhx7E3%TZYJ)mb~>UB^)bsEJSJYhB+s zEf_&e;%a*n7<8mIVWKe1i`Xs>zDhV!AkZzcZtF2Cw!iSrti*A&CzfSF)y&g8#Z?UH zt`NzqcCFw|U?MddgZ0pbv`%lcRYg;`b&azHA;blhT&&J20qwSrVSN}vpDg0c$E0Fb z$HWlBg&a7V9j^!0nR0Z(Q5Mb(SB&FQ<%1-*dJj*n&}@znx%x{poY029duvl%YW`&E zQ+yK+E%T3gj9e3NCD&xTlOve(iqkMaFg-&6t)e|W7<$H2$%8)6dEc%eFmy*tbbNg4 zJ)c!MA-38j)pT%)uY8$#*NDwUyVKW~{cJyN*nS{aeK(ITFp*|M0;z1?W4fM6MpFyp z(e!g~Qm6+VqZPo8wL}|d1A_#w_^CnN!Z6^brZ_?eNy-s%%3^3D!WBZtl=EI4j*>jO zGie4Y(7ay3du$NeW0vO_V9_Nc{LZP-M|n&1@{rBhG=`%Ew_?7kF4|vH6Q$$OIkIy~ zUj~Rb`!^Um7*91O5d&D7VI(geARt6fe)n8lQ_{dHT#+FT4?61HOHVgRVR`DEupwR1 z4BR={Vn6J9la!S<=!eLPPw^CJn$Ub1sOClEJ$ea~CsmCD62U`~ zf_JRM^QuS!b4XIk;a(PY#z>-Rit-@CIP9^xhR#bd9ErICcyt)Q;kcng6wtBSi15zc z8c}nxfy@{ef&F=llE*`%;qi4AjscYrBXpT$WPYDhBHI}ZJ`kxz;7Yd+wxEyxI3@+1 zBz*O3#pyO_-YYuSE`ljQiX8Uq`m3UEKGPx4Vzdr_xF$K%ES~)s<-~yyY`!9hHxsY_oN(HHmyE z2MOt>`{TbqTiq_tL(ht9*M3jX-I{-nDmO#_?7BwaeUm--)NC8S)sT>+SF?~yh9@f+ z{CBagonwFPyb*GI#eG8FQf>m;#{ap?+S#5Cmqwfc?HGIOH*NbAs$GN&!;L?3&c=nW z9TIB%iU~nbd-@3$5E(%#8LP@BV?uv02xs>iJ;?+@lPPkdAs=BQ9)h9FWbm3gp}mNw z8LX^R@0BCCVFPA<+n8h?ZG zsSO?Z)>yym6JUc1L~e13&>fyMhUx=qLoWqOiCc>uKE)JN%lS?ok8NHIRuKbeMGiTI zYJ`%wKv&!6qfb1caf344P$OKYV32P(Yi+}6*+)FHN%sct~)qy@R1k;BdBc!D#6edWf@!hQQ5cTW8fXlHxS2)$3VBCmK6pUaW9lfHp* z1u(+aFQ7Tc90`tcs*Z7Sx5Y>-OOI{4^{Q}Fh19^bf=O(*o=5~@u*Ixlxbk$Kar0wL z%vAq8;;bmY{z*DsYf7NkBZ4{jbMR{*?po^}=LKa;vD>BuCM62EmE99vi>dy?b_K}X zYzn_+*Qt3{3UX(8n#IEa$%+PDXb4;zZVGp0!tGJDrrx3eRSyG#)D6i4680vjZb;MxrdAGb6sRQDD>CIl-U`Y9DzvA6 z{H78?6)FA=3x&h*jNnf-ol3>|Fr(%U^16;=bgxQ~`2%F}_-I zfHdU{==;UjT^0>44B4LNAZ)-&saEF)pg3Q)6}khD?KwVxjjoegWgPyBXSpD~ zct3Tj8=iUn5@=tB3`E6EzV3*xhlip^Znv;b%rB(TiF%J{>QAz7e{{*CCrMDc1kJ>} zEwrVHEt;0=VhpXCWBgVV7M9rsSv#kQajxP#SEdM&Hw(esUgEA_a0gL-^@Nwd0&#Yw zCI}ySW3htj=B91+Yb^cff}8XG_C1~ZR8>`rZCnq7>7{#@viLZa{Z@7CJEBI3#zI~1 zZ=l5&d%2WhInOW-_!>qx{Ul3I$Bw_WWr#6H)1b&~X?#tIkCq5(9Y)tpIe4X)zL^@K z&tkALc!S+0H*tYM>320h(Fhqr^`82rI1{u2>fu`S>}YQ4l$ULodq*|j2@i{^fGkbt z>u>?B_M&IM3r;x8j5FL1mADIq^DsNS!d6(L(u64Y8R~`snz3t7Gl4HDz=fAyI^4Ba zH}jV&iTcA2;M8?h{ycjL)KK?ZpQfy#lSIM->SLlz0F=3nAbHy6k>< z&nTYq&|prgLlx9mLTBs+k48`=Vr1GIoq-v@7uqOYWtCI7Op_8uOp%Qx>1h`P8gTm8 zg&#)7Vl@M$TUbDlHQj?nH~GYGgcK=b1aWDeBYgT#YAAn>rp~>Je4~ekxCaq)H9hE? zn&}#2bVGl-IfY4x3i=6if*E_+dXZEURT9}-l8_W;-u{$9;-`vbpWc@A&qh6%qt#VNLEI5a z{jhCw#35%urDsX>4@e|85riIfFCn@-Y1?F#j@dP23b0reqEciF{b{WMQtc_hwP+bU zzJ7%RqbdWkIKkUshBP>`wlKL)lNzMqA_E}g$W(ejx=cHoe)XtKhclqbzN3>Os~$G8 zG6eKyX}a-`i%IUf&HPo5_d38m3EeVfDP6x=cGZsGb`Pyvzn8(|%`6_PWy7`H=F$4; zha7n~444g@iA;&iMEBQK74N6T5+F6_61sz2foMW6T~A0SSoAM|=%+;m9G zJBYCieMf8XZELX^e3b3kXyc)u0+N(fH6NvEq6O$~0rpQ-cB!@*$>w;Gry+Y>T~1KT zvx&4Tb5LkS;%#dJgSGIt*cnwGY4lS`boV0AWo||@Q%aEMZru&G+4Bz>pE#Fe+mnBy zr_AO0Y&=BYPBT%=~C6aVJw z4!hB|O|JYm0cy{6g~lpX#noeW*W217IrL2h&E;=s-z(@umz3*>%{@-^b7r!Q=k-x3 zQjpvxUvjdiF}(2DbiIrH?TC}N*V*4mJb5S8{_YNYz29n&iLZ#YfW&5F#*Qn9Y-#Jm zD+tQKu`K(U#$bG^hc&IAHliOCKY88C=fKu0!aRQMK2Y8WS~trK;geDD)ENf{;%#zd z#sK2Fj9V>(d+^oWjF7c5ZJG=@>Eno-FJ&}~<9ear#$=lDBQ9frF2!9tnoqHSYEkCY z-3}=XwOca>NAC!Va%chRLS)i{#1eN>H$C&{=nK)G=+30p`icy#!>mEI>$eGX%Gq8~pY zP~c2$h0}}g2#7-cxwUwrf3)74)#}~-X$n1CS`m_|N;9XjpG)m~JBi|jZkaUuPg1im zq;-m*pSSkjvQG0=qQU7=MBTu0^tdjIZj1@{3e6{`r2ViLc{yl3}>}ibVaSZPDUMf*r7BBU``a zGz0aF_Uy0Q4uJbY8Q!P1*JfTmf+|x;hGd^JE#Ob(U89^63%GKeMs|XT?iGN zOpw4-s0K)viGUp3cTd(0r};VO}p(`4aOJ5^ftNK5ga ztLeYbI6IV;M|?3#%bQkL7+uKZJ$-UqGjB&E8BjBA+Dw&^vu8EKg6xTra}maDk!+;q zmad(QL;`ecb5ke#?LX1^7JyBbbZ;`>Ymc4CY^l_D$M}hXwKIW0_zTfU&yMFAifTXZzF|j?E=}w^B(EPt^_nAgcmGS&7a65 znE}tmHFBal==-{I(31rmtN|ebuH7ro*Ot51?LS`^YQJ(*@B`9`qVyAMn!nc-zXtI) zprQQXR0zqRw0Y>R)&pb(I;;r}Ufs0>3wCX(wVYg~&A2ics zeGxK5ugr6AV-RZai=l95vdj?Yz~)K!=Z$t5Tv8!@Ms&>SlbdiEzM~-3={OS7HTiWvI$3iw= zy7;sI(a+;eKU>Xv`!4T-fo_wVezbb8xV+%kq=DO=(A}3e?3Qi2ba%t08iVfvp1;bg zWhM(`D^CWgXG1?&1Z%*n*G=93lEgpV#P{-`GnJD3ktLh=Yt?f-Q@!bRt5L*B=+Bse zQeomq49oRxxU{F4XaQh1yuG~V(&WMw&re^xwQ!zw+vL~fr7JEKFPmF*sn7hqH~5b2DifO^kE+sGZ40+;=HG_|erdZwVjXaxF$^dj zS7C#?1Q^on9vy#O>f}?I#P7HCt;BEBCv<0|DGZ!+>+qkrvnU<)XjR2D*h&q}@s^V| z!8Z9E@ru4lF`tMh6A1>>+)j@YzfLbwq0Ztg;(T(*QNOw++kX%@hP8$wS7tK$Uxl9t zKb?BL=(7#`)Y>ztN3$Z@B0JaKJz%uvj(zm$&F8x;?=NXz+sS!dd1lxCQ|m8#wkFlx zgryPiNqS3Q^LcgxF?rP=(gmqv)q)p9Z#xLvZH z5-@9&?TaZKfBE{}xt;UIIlo@^Z`hll7M+vx`{(zsU*}Dv5YSL0g{ryXWpM3ikqlv! zjqgWU){FWv_Puz9hO^lKRp7vUg0eW!$k>ZrI-fm&D;6ot3XSy-J{f$E5R?>`k>Ugm z7E6*|IUQ}2$C8~SJt${fsT*O$Vofnr&0a!<7E>olD7C8Y`}9J>a%yaox=Ti`(716< zQA{!H6fmqBxgo_A4?`5rx|`XW>(oY~z%A#A$$$ zC0A%Y&Q=ewb%Qj(>_WQT3zs98!HO)t#9LylnQ|G<$$|Q0xiy2*1S2?{ZYTw*asS(UZ1FlwV@@qMf2w>tzj7q8RN>HAn43oRUIxBx0sRejZ{ zWHy!Txu|F?GL*cHRdplw#1e*y%1IdX@8~cX#0~>l2uXnE{~J0C`7ao#o&r~gjWffYP5(kJQSWp5e@8CycLwS| z%O(CDQ}Mr$OT4%tR>>s-E_AEp5}_wl=&&=dRhWuv|0TJ^-sLg>?Q)6#WGiLV!kM1( z3fPhwZ&?W3usN>$4oI7=aQy8es?<>Pxd~;CTJaceH{rBu-K$ChjD$~z)Nt~xpV!9M zB>#7z!$S52pO9RgkJ2;i`Y*~Q>C}xwl{LOaA~%1#1uM zo^8TVkO|oSzvUb#@?|1K5M+g?>`{MC-l!Vj_fq9 z#uJSWpPRGK3w-t%*ID-Cwd7|c?M*j!N5FqTjMr@+hOU;29$^7mZ_5hlop&^Cm_y~O zzHMO%KBWfm>`!=l5TOhgUjF-Qpk`_nRi-W0F7Z9d#!@6VK)pl$k0To#|vm81>ClaZj6f0 zH3l9-JZjIX`wE3i=%%1)rBwR@%h?|1kI;5@r%t@eb4e-2Y%6FXJ&fP$CM*DNL=C}NK_>YN+C;*j;Bn1eH~*hsnRbl^itl7Ex_ z-QlZCE_^8EmNXf@U=A&t{!o@tua5s~cxdI159K^uGa2bK%+UWRD)_qu;KKXZvg$_M zIwzkW0bP|~u#6Ew&h;&mlK1DKpRauabFr_<$|D;BSNI1poJ5+cz07Q{6y zr1fJeeShtPR4l|ZK^xA9Fr%c_;scveBwiV?(V|vd5`W(xvhc)Mr56DFCmwMVL<86j z9Dw`{#RH&b&Hrb3#3mUW;r9O$=vW7P2(;|t{*Fhq)waO%|1QwET>zmWAgi36@wLe< zw~n)#d_B)M(xG~H+Si_V64Q3~6lWkOKrW^qU%a#Ofp4Wp`~7p=r;RBxaxR%a3GZ05 z;N0J0oL(c0jMHaq4T7rpprkivH-kr*f%QF|&#u+(5VPOg-^J#&s!Da zq8ew%kF5DyjN=$hZr}L&p?wzY;K=rNrEy?y&xfZf6wmtc-oK%En*Pgt(Dlno|3DBF z1rM&1q(bpnwJ205o;gJ>-iz{B$nv2-&ePL;3g#Pzgym@&?4UHdo4No`3Me*VjfH{D zbFp-juAVE!4hMinEo0TDwv^J>30K`R0#f91rOOi#!kcKUplp>4AObnE=3{u5U`94Es0M) zoYdBl^16>}cO!lCql}LC+3)A2VlLB8zkIlP>qyG7Bl4DX-;+_NrrLL0dz*DxA<6J} zICx{OJL`Jt#Yf7X?7&m^-+$}Px$*wzJdZEP73SsdEhsE1E-5W57gbbNRqw0WUt4$J zVEv)PN5l<{P0dG-9dBuEJJEi!v*&uwUpRs@{rmf`;+$(i!Xb1h=ihSt zzu=t54jStG6N>6T`M5`~{T)U1U(fL$2PuC?QT<=b@!Ru|W79q351jG~H7^v;o1g(` zDDvs81v(AXF^EdS~KCq}4HRHVcf z6^d%d++!7rit?o3zeQ943*h}96G(jtrvnSB57gsObs~P7?EF0B#Ma~E`fDNZWSSQ5 z?6Q1m;N>p|NNW9<hC!|$+P%ha?bxheB2Y7 z{gQP&qnUOf%clK8E@?-U{Sh6FBWVWe8*Ih z`(D*$)A8Tc>ZwEaUuV+qZr<6y!lHKgLH5u29gNdp<{>=r!?AnEBWqb?j{^7XgB%-a zemHyrdCBfOeTT3c^3>9_1^;aS(3;P=3#r8Pxt8M{KVG$;d#B3rL;o)N`8QF)t`yxj z|0yc)Lq6K5^AAzM3B=$W>hrqb_qy!&cn!5uQ`VPzdmf3tY}*uci9QS4w{p0^V`1Ib zcmI~--OsuI_N%zO^51hj1Sf_dnW`MG8RFlCr1rGPXhMl2nc zseeJ`7~>jH-pqd&{rERvB8U5RE-3S;B@MU@%mMvrWxmT;gZj?l0plP4&N&zSgL7_{ z9HAs=_mmg~;EF)36YPIIz2I%7_v~`Q|3#}}|5v`C8cq4>gug>38 zk5b81MViAJTs;5+!F}|4ygJqN`Gip8w+Laiy5_&tb`;-_9!ZpZzHTRg^8SW=8(u zwF_&|(u^$nPp@5RPeR-66aPc6-MwlpZD{ui zrGws0H)Wh-e!wGfucRFJ4b>HLL}&&|bE#PhYm|(3yv3*W%!%=MsLT|vfk~DXqD&;Q z69x)$HQEtO>v~En#}oJFL-Sa{l~7AU18N6qu&~6~M>gv@;GZT(Xjt|amfPphpL>N; zo5X9G{vy?lRW(CY3JV_@g>O?2y9(z-B+D0YLR{rkvrlp%ZDA2U(B*b^LkSW}w-)Hb z8`2OiT87DZeb-r@2fdO|-E6h@IkgtmpiaDE3;hmQGX`eo$xt1i-IYSr0rKP(q#tkM z$^vl0y1%0SmuVYqZFKDh!}UZDPzzRJcH*!XDt_!F;?RT~uCl#@+F|t*?WmrDewJPw zs@j&mQK#D0@iwOUEiH<3zT-%bx(#%RFUp3Y9eDMGbsG~i=x-Y_1GS+mFv3%wOR_k5 zdhDB>iP1;G%moB3o-7X)Wmu7qTFsuIY}O)J=+cUK(Di zwgc_4?umSJpA=1jdNj|`UvK@l;CxL(p$JB5cdGEv9W7Ai>-sYt>GrNArg_6-cjy#WY{eno^xp)FyYrlwq2OHuScW zr^_0gJ63wAtBbDgJ=lpNX-WF?v}F9_ipu2AxpZ3HC^98u-Y)d9a|h`SK)59f;)jYJ9f)-)X|3v>_v(gGBhC?ZVk0O zRlCVU!>rlSlL+N2=%@r{C!AmmF^3}cH5Ty+Zm0pi{MQ-9rglfjl{NnE(O`M3kc9byzjN1#gm2OOE>nQMfiOFI5x z8yyR?*$3fK2Y__89WqgQ(fE`mOjt6G-AIBERZOWrF1v`ABr-&LtI#%w_*9_Z+Avi& z57>v>tb%&~Fcbn8=}~h~yHI+;>{z{v&GICuMI+Z&m=+(`V=A<)H;6!gTjkM7Ar_2V z5c+!nx2|yj`MIvl!y$ySoMC36X2RV|Amn3>FptcK61$3idGL_dklX;>hg>l;VWB2T z@{>M8SDW`XYOI|oRL^z7aO$L>^R{88P-%w_?wDa-tDhF8BtdZPVHu{2AXuU56Lv3o zz-GmSES?Xw8Oas-gfOMjQWZLd67Su{#6}rSqNbxmiNDuhVs98<62Oo+6>h5%v^vBX2EyV+=6nL&b&6+f zr+aF#$ZtPG0EvmCU$SUqq3H(0t1iSobtgZE;mPZ#9R;e221`dRD!YGLZX%0%EKYmVYL(Mw@_*QT##T6Qv}MPcgEcfO;^r zu>Iq)SPogTwlW$%k3Vj{@~()Waug+OsYfS}hv@>LwDWof22^BwRBPcLB`Py>`zGcy z{_QcAaLdN!dzj{~82YV{(0Fn=>e4uM-c*a#azQ_-P!oJQqqVc5JLKe50q8?#A*rsR zHtP`g160Ck99v&z&ZI9lY3{;Zrf^TR8z>T-8^(rF=CmX^ayd8WsxNql$WT7N=_E9* zAZdyD1vEbaGmMRaSq^b=ug0OcAnx95=SS`ilXch;+G^us%|iVTicvGe(#qWXs2Ba1 zk&|@pC^#5;TP4iYFpr-;E~Ld&VP{Wknr5nN z5Hm*HuWjaCq}8~JXf#OLQax}hm!VW_AC}v2FA_TV5^P;v_GOKk>D5Wd`l?FeX${;= z?TvJtLg9Liz36I!bKt{8TQvX_f0a`<5k3yHo*b~~(HgXX6X^N;u$j3t5PlMSAG8(NSi7%4CaCTH+n_QnK4%BF<%gI)R(b_wqQ7QhcJd87`?!bvk{~qQMfmk{Le0a!fV z1f~U#W#Sl_3FS-Z<}_%ZKtP=Yp*2R39{XT{5%dQ9U255FU8sO{T*|MDdk{` z@G;#emWE#pEI(du?lpv{=#f!1vg+xglFAMlv_)2dMZ!Q z@FQyQL{Dj+9%86=G6c(y((vuFirYggP8KN|h7<#h@?e0Rh!9`s7*DvH?@1n za<{-5sJ7zJw5*zvgSn%uZO7NtG}h9Zw(ps!u}t1>xd}BuM!(0`{IEdZr6?+=YTeM= z&(L-Z^wbVfc1)tSO|$F9Cbkcd1&7IsdlS_Z7dbbo?(~rSN5gij!0oiAO75A8r%4Uz zfps4yu!bU2s#=+QMp+c7%n>R*d#b$8C?25d9?2>Z2j!0$+h_lhPb5`U$mQ?J3faRQ z+j!MGMr4F5jij8a?Y|m#{gM@4QPiR9S}f&+WTmI!Mce*}AwNxS>WIP@CRZ-|RdecK zmF!>>qN(bTeCGj|ZQqib5B}P960N)#*nH;A4oR|k8M^Y^nPz;lJU^#;chk<|O-(mk zn%$>enj7Bi-agcL*`h{=ZiZ~C_&n5fz;fr?gL@JJca`PrmDBdDJJ@7$W$&qpy+22G zUzYFw@Nm!H!0p?9Z9}*!&jsQ?8Ae!(RBsu(v$cCBEfww$tJ`y$U%lCbt!Oe&+4GgG zyb)FT@5-J#6D?N{wo)rp2-g;RMMqN(O=FuX zZb!AW6}06Gn-DE+Bs(QV+m-{_&vvz0bheFP36NA^+tpicx2b% z_Ymj;0X&tG(yCu+$qF#{^C8{>7qjruIJXbb94i*QNQ6J_fFGQ6CB`9Q zb;!+1Sga1VL=T^QfsfW4!?3WHtI%ulN5Gmw*f^#gZfrdN*oRwirNR81o`f8l#KyG2 zbGQLeVb%)WiL0&i>m2Zt`{2K#v2%|jxswbk9y&s0KXJmh;k$}6;c68ICWIR@*sFE$ zSB3ag!QmwjFo6{N1ptD}Ib5xRm+HC`zT|S53&Ur1*})J;b*o~z*g~H;=;z#}%F_|n zP&OwU-i2JU8NOBnqol5V;fi0Rq0VMvBb8u=YTg#Ty@5(J#M9H%j?gZ6dL;gT>e?!n zL8}bPYo4bl{6H>tfgbD;8^x;O zFP?)bT)ruQU3<fJG7>V8J1bV_6{YMPn{_N*iQr6PuM=^E)ZS%!kg^_3*CB#;z$!UMm*U}_ zZg^8YSUHI{i@|SJA7OWKsy4%K9Kyx|P9yJ77Jqw_0e2fLf}@7RX5({|a0fSNfzrT9 z_Of@tQt^nrf@AGOjw|2ckg0P*T~msPES zx5H)*qrQ%!VCUffh$+x6SXvt1W;VnN9t7<|M}CIP7=ur`LQm7xf86l%1wfds_!pX{N;C< zFvw-F3r_NZlr8do*$cm4thHfCUh6Lh@HZn)pKFF9e(soE9}Jn?j=1vHA>6F%$zAxU zyP+8lUg8c7KL!7GxD)bEdYys=GcJq%VwK_{^AgvNF;tckp7IX!;{DZ^?mbjB+&%(d zKTWy1X*OiaCMA{vUx6P8)UTg`zmm>$S|)H_jqgh3yRFc}Q-RX!CDu3dFny~~mlChT z;&5Y|L!-3UeQdP;W`_GM8ul5xmVYBz2M*%lgY?Y#>eEJDNA7XV(mDKRhj7t4WY5)` zH!09*1@4aFU%(xDK^@TI$B5!yNz|-bOt~6+9UOaPAaqF9^ed;2!%wE%V9$c=JOE48 z--3-J6Dh{`^|*2l-jsee9dGxqGBU;b&ao2L+L9R9Eu+*ch$jM~?LJ(b4hcU1pV17X zd))n7fgtRH_vKz^E8#Ey+&x_bJ3yB&@xUi?FcnFD3(vu4T}0&Q?^QLTBB#CKg}_<9 z5+0|nOwxmPh7kbeeuQ1;zV2bdW-t-oPO=`FEH-ZFg;W&5?bnV_`9^HWym~U?h5KV& zKSD`YCj*Y*h|UTIuCenWm2TAh;US{HWE~z|$bh7K9P=Uez{hXT^MD$lH=hOgR2Tdf z0nq@@HeLyH3xsUChS26Eq*Lq-4|f+dh{bfsth`;Zy3ye+);1qg4C?5p#yCw6TAuEO zj)TpBQJ&uIWeM1dztu1%GX>D5mhho>nCUG0;BZ8&@O$Vn`){t8^`oTtRa)33p9xeUAnvC9pDWp7_5 zDjkYw#iNhu!3-Vj;_nxY98?}27sWzf!Q4`75Ffw6m*NLP^R1)lC)XG_Xr}QME-Ok0 zgH|K9Dls)&<0Fd$tXA01o^-hZV0Uqpd0a&9BSf$Y7sDAXqhP$>Nurd9)m-deC{B(? zuTm|e3XF&8M(gy~zs<)VVIE(gL6s}f=QsE$bSZ~a;Qq%(*NJ${qxC96PGRCXfD12`XDiFViV8 zRJGA6y!?f(ZT}p( zEA*uXp`$=QXcWYzyW1x)Q5k9ByC{aB$=<$trAGOG=wcEP(J3Jp&e?a`j4q)9#H)p@4bt^+J-2S6$o82mJ zr}Rg6-yAes+%|c3Te|y%vz6ty&yf@{sgO;5S8IIX{KR3t9d>oE3C+~h6n*uQs=M}T z)!*a!A=W#_@W9e@lvGQ$#3y7zW3H8baBFT39+GO>+jBWrhH$t zC}HvX#YoNtu)z-30Hwo(6J8n zP8=A<5Xt>I+4GGEiU}dkWhg!b;~u6FHFjO1_aAZ4yk%i+Z3rzp3uphB%6dtOlc7_J z^((6NjqKJ;k9ykkdY>?ZfoIa%$c34_VuslH{_Xf_#5ouw}eWc}wXmIq5FrBa>(_gQtu@TfjGAfwqq`y>SU(XMy@IU)8lsm6(Dm;tO&3ydHfiKxo*lVQcCVH_4{*Gy&s>>z$;HaZDMWt`n{VEd zR_-6h7NNJCnFKb@yDFoulh!exZKw53QEToWilbKS-lo^qly2imD_w4@{E^Gg3ZOXO zw0(&!0foF%a#uQQMN~(G1*ulzx(T#g4ymW7PyuIJKv|0ED5W`*y#6MXa}Zk z(6>b}v(Qk}OB&Ev7g8L-5t*B_PP>$3LT5IHke+aRGsmE~YGAWa5cVbU zV0@2=lvGpZrF&<#Y{IY*1%yds1T}%YB8!AiB0VvBHU&O zF>bmRV|e9#<3U$w=AsNTl`HjMR7;m~S<_i-CT!g5@Sg4y3ot7=u)$*f!x|3OcqXaQ zINuw=kZDqk2h1&l)i8npP+)F}o~#o{?_%6fV#ZZIo!?oEnC)ihefOPr+!9OHYfOG6 zguh;=K6*GJ@$7M{VY>~tj0gfKshtaR4O5pn>sfYrLuFpQt1t;^gQPonR!Ic34Bz&1 z9_F*B_28qb{T-Jq(AvetYAmyx6qKhIJ<#$iP(r&r6d^6it{ipDt6PgWeq4C|{pvNv=Tpl~&awKQuP;M2 zk1KY^Bo2j^-ivP)DtL>s?Pb#~cm2~OIA{A`=oxP`nYL7=ed=I%dtg*sv=6~)UW-NU zS;B7W$yWN-l~-%}b$s)z-Co-!&{6j1Tw% znJISb@oT+^nH|1W5q=r|-Lfz}Vw+ArypaC2cFt`=*f!dnx}a@dHnwlyr&-+#d>bL2 zwa9L;q{F$7eWDH6vMSBjHL9)D_gLWCm%ekXENkb=SM0&tCvR+@<7$TtlwEIF_<$D` zhryNIA8yG-uApa?o;(@u_rd*T%GmQCca9#s{wh5o!rME@KZ2N*w_)R@+c8ANxh+-s z^eBgiPwQ{3f3f<_+OL0DT}~UPwMI{9sbc5x;pC|UR;7Gdq|K7W$IUJ}mKG>hraiZQ zU37WQe+A0&v={cyo31PrD>YI%bc?qQ|3W`%>iqw@YI>en-V&w$#AiW>>} zU+kGJMvE4Z85&?=clQz8QrjzV!54&a?`ntWDTl{qxBYp=`&VmzZBBfqKB1lnaaaDs zJU{nE`Y?01yJB82c@#*LqK4fzTy8+!<|e8+3%~?jLy|`Aix*^|zl8+5x%$^0E)Rzq zupa=>ltcMT?ciz%CvTb$sBrym*@-fTe0u%!bKz6V0s-tG6+0K4=N`b2qEHzS45|fy zlG_~8?Eal7@6BAUw>GQiBJ3xsajW%Elj670U*F9jZ%7OQZmD3tY#}B?A7T@%0X+q9 zDF7otVLJ%Izou~SR*xTUV%sSRz6ag}F%}enCXGWCWMrpDJcvJ~NPs}0U0W4pDqJR)( z7=a7;wUSiD$ z0K9}vf`;f}NIdklsgRQt4jGb0DSuB zBk^E{0+_25%y;OUyw;P#7TIXZeAr?d05hiVc}fv`=|rVbVy7bMgUxWa9>7m+A!Lce zI4$qd$R$kC91hA)E%8=0Ea4!K#GN%v@pM_&410~JEDDP6X!Hk!7vfr|HfXmFGEL`z zSIi)E!21d$yIVviY$*LKm9A@G@L)5Npou8s6i(Tv&9FEW&4U9g)=E#vMKq=ZHBTDO zk=at3ZQ3dp;DvNl^$a?6N4!OvA>1~yH&6-fi`qH

7zOd>jX8Drixs6HNslgq4*( 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

@|!Kky4`V7?*@;Csv4~EwgK53(om=sF1aW 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

erT@T{ifw)c@2l368i& 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�t>{U`p2uyF)n#CLnGWs%3#s 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�b6ii?=~p+M>dbJo#kD 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�jjknaJCLx)=Jt5#dYh->;=>b7 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%0A{(1Fz!rjKy%L#DGG}rOX`~VWb9lcHCnr6 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 NWwDHMAT>Y%_&>o>)_4E_ literal 0 HcmV?d00001 From 030d7be49c72053a666e6b6934772a611bdc0822 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Tue, 5 Apr 2016 10:53:40 -0700 Subject: [PATCH 21/29] Fixed some logic for enabling prerender --- includes/transifex-live-integration-static-factory.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/includes/transifex-live-integration-static-factory.php b/includes/transifex-live-integration-static-factory.php index 747f926e..64ec315b 100644 --- a/includes/transifex-live-integration-static-factory.php +++ b/includes/transifex-live-integration-static-factory.php @@ -144,8 +144,13 @@ static function create_prerender( $settings ) { Plugin_Debug::logTrace( 'prerender url not set, skipping prerender' ); return false; } - if ( $url_option_setting !== '2' && $url_option_setting != '3' ) { - Plugin_Debug::logTrace( 'No URL option, skipping prerender' ); + if ( !isset( $settings['url_options'] ) ) { + Plugin_Debug::logTrace( 'No URL option set, skipping prerender' ); + return false; + } + + if ( $settings['url_options'] !== '2' && $settings['url_options'] != '3' ) { + Plugin_Debug::logTrace( 'URL option is none, skipping prerender' ); return false; } include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; From ec4771842699767e528309e34669ef3934604428 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Tue, 5 Apr 2016 17:20:55 -0700 Subject: [PATCH 22/29] changed change->input --- javascript/transifex-live-integration-settings-page.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/javascript/transifex-live-integration-settings-page.js b/javascript/transifex-live-integration-settings-page.js index c16465fd..dc5d9fac 100755 --- a/javascript/transifex-live-integration-settings-page.js +++ b/javascript/transifex-live-integration-settings-page.js @@ -666,7 +666,7 @@ function updateTransifexSettingsFields(obj) { onEnter: function () { $.log.debug('transifex_live_settings_prerender_url::defaultState::onEnter'); }, - events: {change: 'edited'} + events: {input: 'edited'} }, edited: { onEnter: function () { @@ -680,7 +680,7 @@ function updateTransifexSettingsFields(obj) { $.log.debug('transifex_live_settings_prerender_url::reset::onEnter'); this.val(''); }, - events: {change: 'edited'} + events: {input: 'edited'} }, }, {setClass: true} ); From e85130676491f8d9f525cdbe378739cb2bb8d1cc Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 6 Apr 2016 10:16:41 -0700 Subject: [PATCH 23/29] Switching prender from disable to enable --- includes/admin/transifex-live-integration-admin-template.php | 2 +- includes/transifex-live-integration-defaults.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index ce1f2b55..5df87392 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -88,7 +88,7 @@

/>

- /> + />

diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index 0236f5e0..ee95016c 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -101,7 +101,7 @@ static function settings() 'url_options' => 1, 'subdomain_pattern' => '', 'static_frontpage_support' => false, - 'enable_prerender' => false, + 'enable_prerender' => true, 'prerender_url' => '', 'override_prerender_check' => false, 'whitelist_crawlers' => From dc7c3139191cd1546d6c46cdee633e5aa0327810 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 6 Apr 2016 10:40:52 -0700 Subject: [PATCH 24/29] local fixes --- includes/admin/transifex-live-integration-admin-template.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index 5df87392..ac4e59a1 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -70,11 +70,11 @@

- + From 6552a33cd93ad599de29334ea2f14cb276924abe Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 6 Apr 2016 11:37:54 -0700 Subject: [PATCH 25/29] fixed escaped fragment with no val --- includes/transifex-live-integration-static-factory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/transifex-live-integration-static-factory.php b/includes/transifex-live-integration-static-factory.php index 64ec315b..14be8575 100644 --- a/includes/transifex-live-integration-static-factory.php +++ b/includes/transifex-live-integration-static-factory.php @@ -155,7 +155,7 @@ static function create_prerender( $settings ) { } include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/transifex-live-integration-util.php'; $agent = Transifex_Live_Integration_Util::get_user_agent(); - $req_escaped_fragment = (isset( $_GET['_escaped_fragment_'] )) ? $_GET['_escaped_fragment_'] : false; + $req_escaped_fragment = (isset( $_GET['_escaped_fragment_'] )) ? true : false; include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/lib/transifex-live-integration-prerender.php'; $check = Transifex_Live_Integration_Util::prerender_check( $agent, $req_escaped_fragment, $settings['generic_bot_types'], $settings['whitelist_crawlers'] ); From 2bdc2fff5169f9b266a01161e390caf0efb580b3 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 6 Apr 2016 11:43:10 -0700 Subject: [PATCH 26/29] fixed boolean unsafe 'type' --- includes/transifex-live-integration-static-factory.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/transifex-live-integration-static-factory.php b/includes/transifex-live-integration-static-factory.php index 14be8575..f8a162bc 100644 --- a/includes/transifex-live-integration-static-factory.php +++ b/includes/transifex-live-integration-static-factory.php @@ -159,7 +159,8 @@ static function create_prerender( $settings ) { include_once TRANSIFEX_LIVE_INTEGRATION_DIRECTORY_BASE . '/includes/lib/transifex-live-integration-prerender.php'; $check = Transifex_Live_Integration_Util::prerender_check( $agent, $req_escaped_fragment, $settings['generic_bot_types'], $settings['whitelist_crawlers'] ); - return ($check) ? new Transifex_Live_Integration_Prerender( $settings['prerender_url'], $settings['override_prerender_check'] ) : false; + $override_prerender_check = (isset($settings['override_prerender_check']))?true:false; + return ($check) ? new Transifex_Live_Integration_Prerender( $settings['prerender_url'], $override_prerender_check ) : false; } } From b4ef5b4bbb87f95ebb752e07e99ddfdc46f14afe Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 6 Apr 2016 13:32:52 -0700 Subject: [PATCH 27/29] Refactored prerender call, added debug, hid override option --- ...nsifex-live-integration-admin-template.php | 4 +- .../transifex-live-integration-prerender.php | 50 ++++++++++++------- tests/unit/PrerenderCheckTest.php | 19 ++++--- 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index ac4e59a1..e77d4124 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -87,9 +87,6 @@
>All>
- >Static Frontpage Support + >

/>

-

- /> -

@@ -99,6 +96,7 @@

+ /> diff --git a/includes/lib/transifex-live-integration-prerender.php b/includes/lib/transifex-live-integration-prerender.php index 261cc4ee..1eb689ca 100644 --- a/includes/lib/transifex-live-integration-prerender.php +++ b/includes/lib/transifex-live-integration-prerender.php @@ -55,11 +55,28 @@ function wp_head_hook() { function wp_headers_hook( $headers ) { Plugin_Debug::logTrace(); - $headers['X-PreRender-Req'] = 'TRUE'; + $headers['X-Prerender-Req'] = 'TRUE'; return $headers; } + function call_curl($url) { + $arr = []; + $ch = curl_init(); + curl_setopt( $ch, CURLOPT_URL, $url ); + curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); + curl_setopt( $ch, CURLOPT_VERBOSE, 1 ); + curl_setopt( $ch, CURLOPT_HEADER, 1 ); + curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT ,10); + curl_setopt( $ch, CURLOPT_TIMEOUT, 20); + $arr['url'] = $url; + $arr['response'] = curl_exec( $ch ); + $arr['statuscode'] = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $arr['header_size'] = curl_getinfo( $ch, CURLINFO_HEADER_SIZE ); + $arr['error'] = curl_error( $ch ); + curl_close( $ch ); + return $arr; + } /* * This aptly named filter function is used to make the prerender call, * ideally it should be executed after the template render is finished but before sending to the browser @@ -70,27 +87,24 @@ function wp_headers_hook( $headers ) { function callback( $buffer ) { global $wp; $output = $buffer; + $debug_html = '"; return $output; } diff --git a/tests/unit/PrerenderCheckTest.php b/tests/unit/PrerenderCheckTest.php index 389e55c4..76958658 100644 --- a/tests/unit/PrerenderCheckTest.php +++ b/tests/unit/PrerenderCheckTest.php @@ -15,50 +15,49 @@ protected function setUp() $bot_types = $settings['generic_bot_types']; $this->data = [[ // Standard Chrome Agent 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', - 'fragment' => null, + 'fragment' => false, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false ],[ // Standard Firefox Agent 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:46.0) Gecko/20100101 Firefox/46.0', - 'fragment' => null, + 'fragment' => false, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false ], [ // Prerender added 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 Prerender (+https://github.com/prerender/prerender)', - 'fragment' => null, + 'fragment' => false, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => false ], [ // Standard Googlebot 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', - 'fragment' => null, + 'fragment' => false, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true ], [ // Googlebot with prerender added 'agent' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Prerender (+https://github.com/prerender/prerender)', - 'fragment' => null, + 'fragment' => false, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true ], [ // Slackbot with 'agent' => 'Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)', - 'fragment' => null, + 'fragment' => false, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true ],[ // Slackbot with 'agent' => 'slackbot', - 'fragment' => null, + 'fragment' => false, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true - ], - [ // some fragment + ],[ // some fragment 'agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36', - 'fragment' => '/some-frament', + 'fragment' => true, 'bot_types' => $bot_types, 'whitelist' => $whitelist, 'result' => true From fc877cf0e00e7864d2b9a83cd883222d30174dd0 Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 6 Apr 2016 14:46:28 -0700 Subject: [PATCH 28/29] removing extra true --- includes/lib/transifex-live-integration-prerender.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/lib/transifex-live-integration-prerender.php b/includes/lib/transifex-live-integration-prerender.php index 1eb689ca..695e080e 100644 --- a/includes/lib/transifex-live-integration-prerender.php +++ b/includes/lib/transifex-live-integration-prerender.php @@ -95,7 +95,7 @@ function callback( $buffer ) { $header = substr( $curl_response['response'], 0, $curl_response['header_size'] ); $body = substr( $curl_response['response'], $curl_response['header_size'] ); $header_lowercase = strtolower($header); - if ( strpos( $header_lowercase, 'x-prerender-req: true' ) || $this->override_prerender_check ) { + if ( strpos( $header_lowercase, 'x-prerender-req' ) || $this->override_prerender_check ) { $output = ($curl_response['response'])?$body:$output; } $debug_html .= $curl_response['url'] . "\n"; From 1b2d3ac9c094dc4ad87891c5ea218e4c5538277f Mon Sep 17 00:00:00 2001 From: Matthew Jackowski Date: Wed, 6 Apr 2016 17:27:04 -0700 Subject: [PATCH 29/29] Fixes naming discrepencies --- includes/admin/transifex-live-integration-admin-template.php | 2 +- includes/admin/transifex-live-integration-admin.php | 4 ++-- includes/lib/transifex-live-integration-prerender.php | 2 +- includes/transifex-live-integration-defaults.php | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/includes/admin/transifex-live-integration-admin-template.php b/includes/admin/transifex-live-integration-admin-template.php index e77d4124..40d86e3c 100644 --- a/includes/admin/transifex-live-integration-admin-template.php +++ b/includes/admin/transifex-live-integration-admin-template.php @@ -96,7 +96,7 @@ - /> + /> diff --git a/includes/admin/transifex-live-integration-admin.php b/includes/admin/transifex-live-integration-admin.php index 15b2f850..7a70ea36 100644 --- a/includes/admin/transifex-live-integration-admin.php +++ b/includes/admin/transifex-live-integration-admin.php @@ -86,8 +86,8 @@ static function options_page() { $checked_enable_prerender = ob_get_clean(); ob_start(); - checked( $settings['override_prerender_check'], 1 ); - $checked_override_prerender_check = ob_get_clean(); + checked( $settings['enable_prerender_check'], 1 ); + $checked_enable_prerender_check = ob_get_clean(); ob_start(); checked( $settings['static_frontpage_support'], 1 ); diff --git a/includes/lib/transifex-live-integration-prerender.php b/includes/lib/transifex-live-integration-prerender.php index 695e080e..63e9721c 100644 --- a/includes/lib/transifex-live-integration-prerender.php +++ b/includes/lib/transifex-live-integration-prerender.php @@ -95,7 +95,7 @@ function callback( $buffer ) { $header = substr( $curl_response['response'], 0, $curl_response['header_size'] ); $body = substr( $curl_response['response'], $curl_response['header_size'] ); $header_lowercase = strtolower($header); - if ( strpos( $header_lowercase, 'x-prerender-req' ) || $this->override_prerender_check ) { + if ( strpos( $header_lowercase, 'x-prerender-req' ) && $this->enable_prerender_check ) { $output = ($curl_response['response'])?$body:$output; } $debug_html .= $curl_response['url'] . "\n"; diff --git a/includes/transifex-live-integration-defaults.php b/includes/transifex-live-integration-defaults.php index ee95016c..0a627fc2 100644 --- a/includes/transifex-live-integration-defaults.php +++ b/includes/transifex-live-integration-defaults.php @@ -101,9 +101,9 @@ static function settings() 'url_options' => 1, 'subdomain_pattern' => '', 'static_frontpage_support' => false, - 'enable_prerender' => true, + 'enable_prerender' => 0, 'prerender_url' => '', - 'override_prerender_check' => false, + 'enable_prerender_check' => 1, 'whitelist_crawlers' => 'googlebot|yahoo|bingbot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest/0.|developers.google.com/+/web/snippet|slackbot|vkshare|w3c_validator|redditbot|applebot|whatsapp|flipboard', 'generic_bot_types' => 'bot|crawl|slurp|spider'