| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- /*
- * This file is part of MODX Revolution.
- *
- * Copyright (c) MODX, LLC. All Rights Reserved.
- *
- * For complete copyright and license information, see the COPYRIGHT and LICENSE
- * files found in the top-level directory of this distribution.
- */
- /**
- * Utility class for assisting in migrating content from older MODX releases.
- *
- * @package modx
- * @deprecated
- */
- class modTranslate095 {
- /**
- * A reference to the modX instance
- * @var modX $modx
- */
- public $modx= null;
- /**
- * The parsing engine for interpreting Evolution-style tags
- * @var modParser095
- */
- public $parser= null;
- /**
- * Initializes the class and sets up a translation map
- * @param modX $modx A reference to the modX instance
- */
- function __construct(modX &$modx) {
- $this->modx = &$modx;
- $this->preTranslationSearch= array('[*','[~','[+','[!');
- $this->preTranslationReplace= array('#trans->[*','#trans->[~','#trans->[+','#trans->[!');
- $this->tagTranslation= array (
- '[[++' => array ('[(', ')]', '++'),
- '[[$' => array ('{{', '}}', '$'),
- '[[*' => array ('#trans->[*', '*]', '*'),
- '[[~' => array ('#trans->[~', '~]', '~'),
- '[[+' => array ('#trans->[+', '+]', '+'),
- '[[!' => array ('#trans->[!', '!]', '!'),
- );
- }
- /**
- * Gets the parsing engine
- *
- * @return modParser095
- */
- public function getParser() {
- if (!is_object($this->parser) || !($this->parser instanceof modParser095)) {
- $this->parser= & $this->modx->getService('parser095', 'modParser095');
- }
- return $this->parser;
- }
- /**
- * Translate the site into Revolution-style tags
- *
- * @param boolean $save Whether or not to actually save the content changed
- * @param null $classes An array of classes and fields to translate
- * @param array $files An array of files to attempt to translate
- * @param boolean|string $toFile If true, will write the file to the specified log
- * @return void
- */
- public function translateSite($save= false, $classes= null, $files= array (), $toFile= false) {
- $parser = $this->getParser();
- $parser->tagTranslation = $this->tagTranslation;
- if ($classes === null) {
- $classes= array (
- 'modResource' => array ('content', 'pagetitle', 'longtitle', 'description', 'menutitle', 'introtext'),
- 'modTemplate' => array ('content'),
- 'modChunk' => array ('snippet'),
- 'modSnippet' => array ('snippet'),
- 'modPlugin' => array ('plugincode'),
- 'modTemplateVar' => array ('default_text'),
- 'modTemplateVarResource' => array ('value'),
- 'modSystemSetting' => array ('value')
- );
- }
- ob_start();
- echo "Processing classes: " . print_r($classes, true) . "\n\n\n";
- foreach ($classes as $className => $fields) {
- $resources= $this->modx->getCollection($className);
- if ($resources) {
- foreach ($resources as $resource) {
- foreach ($fields as $field) {
- $content= $resource->get($field);
- if ($content) {
- echo "[BEGIN TRANSLATING FIELD] {$field}\n";
- $content = str_replace($this->preTranslationSearch, $this->preTranslationReplace, $content);
- while ($parser->translate($content, array(), true)) {
- $resource->set($field, $content);
- }
- echo "[END TRANSLATING FIELD] {$field}\n\n";
- }
- }
- if ($save) {
- $resource->save();
- }
- }
- }
- }
- if (!empty ($files)) {
- echo $this->translateFiles($save, $files);
- }
- $log= ob_get_contents();
- ob_end_clean();
- if ($toFile) {
- $cacheManager= $this->modx->getCacheManager();
- $cacheManager->writeFile($toFile, $log);
- } else {
- echo $log;
- }
- }
- /**
- * Translate specific files
- *
- * @param boolean $save If true, will save the translation
- * @param array $files An array of files to translate
- * @return string
- */
- public function translateFiles($save= false, $files= array()) {
- $output= '';
- if (is_array($files) && !empty ($files)) {
- $parser= $this->getParser();
- $parser->tagTranslation=$this->tagTranslation;
- $cacheManager= $this->modx->getCacheManager();
- $output .= "Processing files: " . print_r($files, true) . "\n\n\n";
- ob_start();
- foreach ($files as $file) {
- if (file_exists($file)) {
- echo "[BEGIN TRANSLATING FILE] {$file}\n";
- $content= file_get_contents($file);
- if ($content !== false) {
- $content=str_replace($this->preTranslationSearch,$this->preTranslationReplace,$content);
- while ($parser->translate($content, array(), true)) {}
- if ($save) $cacheManager->writeFile($file, $content);
- }
- echo "[END TRANSLATING FILE] {$file}\n";
- }
- }
- $output .= ob_get_contents();
- ob_end_clean();
- }
- return $output;
- }
- }
|