Example #1
0
 /**
  * Called when the buffer containing the original page is flushed. Triggers the translation process.
  * @param string $buffer Original page
  * @return string Modified page buffer
  */
 function process_page(&$buffer)
 {
     /*        if (!$this->target_language) {
               global $wp;
               $this->on_parse_request($wp);
               } */
     tp_logger('processing page hit with language:' . $this->target_language, 1);
     $start_time = microtime(TRUE);
     // Refrain from touching the administrative interface and important pages
     if ($this->is_special_page($_SERVER['REQUEST_URI'])) {
         tp_logger("Skipping translation for admin pages", 3);
     } elseif ($this->target_language == '') {
         tp_logger("Skipping translation where target language is unset", 3);
         if (!$buffer) {
             tp_logger("seems like we had a premature flushing");
             $this->tried_buffer = true;
         }
     } elseif ($this->options->is_default_language($this->target_language) && !$this->options->enable_default_translate) {
         tp_logger("Skipping translation for default language {$this->target_language}", 3);
     } else {
         // This one allows to redirect to a static element which we can find, since the redirection will remove
         // the target language, we are able to avoid nasty redirection loops
         if (is_404()) {
             global $wp;
             if (isset($wp->query_vars['pagename']) && file_exists(ABSPATH . $wp->query_vars['pagename'])) {
                 // Hmm
                 tp_logger('Redirecting a static file ' . $wp->query_vars['pagename'], 1);
                 $this->tp_redirect('/' . $wp->query_vars['pagename'], 301);
             }
         }
         tp_logger("Translating {$_SERVER['REQUEST_URI']} to: {$this->target_language}", 1);
         //translate the entire page
         $parse = new parser();
         $parse->fetch_translate_func = array(&$this->database, 'fetch_translation');
         $parse->prefetch_translate_func = array(&$this->database, 'prefetch_translations');
         $parse->url_rewrite_func = array(&$this, 'rewrite_url');
         $parse->split_url_func = array(&$this, 'split_url');
         $parse->dir_rtl = in_array($this->target_language, transposh_consts::$rtl_languages);
         $parse->lang = $this->target_language;
         $parse->default_lang = $this->options->is_default_language($this->target_language);
         $parse->is_edit_mode = $this->edit_mode;
         $parse->might_json = $this->attempt_json;
         $parse->is_auto_translate = $this->is_auto_translate_permitted();
         // TODO - check this!
         if (stripos($_SERVER['REQUEST_URI'], '/feed/') !== FALSE) {
             tp_logger("in rss feed!", 2);
             $parse->is_auto_translate = false;
             $parse->is_edit_mode = false;
             $parse->feed_fix = true;
         }
         $parse->change_parsing_rules(!$this->options->parser_dont_break_puncts, !$this->options->parser_dont_break_numbers, !$this->options->parser_dont_break_entities);
         $buffer = $parse->fix_html($buffer);
         $end_time = microtime(TRUE);
         tp_logger('Translation completed in ' . ($end_time - $start_time) . ' seconds', 1);
     }
     return $buffer;
 }