From 4792ab0512d582d7a5d7dac8dcb596b77800741c Mon Sep 17 00:00:00 2001 From: Erik Amaru Ortiz Date: Thu, 23 Dec 2010 22:30:39 +0000 Subject: [PATCH] moving the cache file translation.es location in ./workflow/engine/content/translation to shared directory to solve the problem in balanced environments and write permissions --- gulliver/system/class.g.php | 5 ++++ workflow/engine/classes/model/Translation.php | 24 +++++++++++++------ workflow/engine/config/paths.php | 4 +++- workflow/engine/methods/login/login.php | 7 ++++-- workflow/engine/methods/login/sysLogin.php | 8 +++---- .../engine/methods/setup/appCacheViewAjax.php | 11 ++++----- .../engine/methods/setup/language_Ajax.php | 2 +- workflow/public_html/sysGeneric.php | 15 ++++++++++++ 8 files changed, 53 insertions(+), 23 deletions(-) diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index f50e2d80a..6eda47514 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -3020,6 +3020,11 @@ class G } return $infoUser; } + + function getModel($model){ + require_once "classes/model/$model.php"; + return new $model(); + } }; /** diff --git a/workflow/engine/classes/model/Translation.php b/workflow/engine/classes/model/Translation.php index b30a19fb7..6f98032f4 100644 --- a/workflow/engine/classes/model/Translation.php +++ b/workflow/engine/classes/model/Translation.php @@ -42,6 +42,12 @@ class Translation extends BaseTranslation { public static $meta; public static $localeSeparator = '-'; + private $envFilePath; + + function __construct(){ + $this->envFilePath = PATH_DATA . "META-INF" . PATH_SEP . "translations.env"; + } + function getAllCriteria(){ //SELECT * from TRANSLATION WHERE TRN_LANG = 'en' order by TRN_CATEGORY, TRN_ID @@ -150,7 +156,7 @@ class Translation extends BaseTranslation { function addTranslationEnvironment($locale, $headers, $numRecords) { - $filePath = PATH_LANGUAGECONT . "translations.environments"; + $filePath = $this->envFilePath; $environments = Array(); if( file_exists($filePath) ) { @@ -179,7 +185,7 @@ class Translation extends BaseTranslation { function removeTranslationEnvironment($locale) { - $filePath = PATH_LANGUAGECONT . "translations.environments"; + $filePath = $this->envFilePath; if( strpos($locale, self::$localeSeparator) !== false ) { list($LAN_ID, $IC_UID) = explode('-', strtoupper($locale)); } else { @@ -198,22 +204,26 @@ class Translation extends BaseTranslation { } function getTranslationEnvironments(){ - $filePath = PATH_LANGUAGECONT . "translations.environments"; + $filePath = $this->envFilePath; $envs = Array(); if( ! file_exists($filePath) ) { //the transaltions table file doesn't exist, then build it + + if( ! is_dir(dirname($this->envFilePath)) ) + G::mk_dir(dirname($this->envFilePath)); + $translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP; $basePOFile = $translationsPath . 'english' . PATH_SEP . 'processmaker.en.po'; $params = self::getInfoFromPOFile($basePOFile); - self::addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); + $this->addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); //getting more lanuguage translations $files = glob($translationsPath . "*.po"); foreach( $files as $file ){ $params = self::getInfoFromPOFile($file); - self::addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); + $this->addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); } } $envs = unserialize(file_get_contents($filePath)); @@ -286,7 +296,7 @@ class Translation extends BaseTranslation { } function getTranslationEnvironment($locale){ - $filePath = PATH_LANGUAGECONT . "translations.environments"; + $filePath = $this->envFilePath; $environments = Array(); if( ! file_exists($filePath) ) { @@ -308,7 +318,7 @@ class Translation extends BaseTranslation { } function saveTranslationEnvironment($locale, $data){ - $filePath = PATH_LANGUAGECONT . "translations.environments"; + $filePath = $this->envFilePath; $environments = Array(); if( ! file_exists($filePath) ) { diff --git a/workflow/engine/config/paths.php b/workflow/engine/config/paths.php index 870364e14..3695ed72f 100644 --- a/workflow/engine/config/paths.php +++ b/workflow/engine/config/paths.php @@ -52,7 +52,7 @@ define( 'PATH_FIXTURES', PATH_TEST . 'fixtures' . PATH_SEP ); define( 'PATH_RTFDOCS' , PATH_CORE . 'rtf_templates' . PATH_SEP ); define( 'PATH_DYNACONT', PATH_CORE . 'content' . PATH_SEP . 'dynaform' . PATH_SEP ); - define( 'PATH_LANGUAGECONT',PATH_CORE . 'content' . PATH_SEP . 'languages' . PATH_SEP ); + //define( 'PATH_LANGUAGECONT',PATH_CORE . 'content' . PATH_SEP . 'languages' . PATH_SEP ); define( 'SYS_UPLOAD_PATH', PATH_HOME . "public_html/files/" ); define( 'PATH_UPLOAD', PATH_HTML . 'files' . PATH_SEP); define( 'PATH_WORKFLOW_MYSQL_DATA', PATH_CORE . 'data' . PATH_SEP.'mysql'.PATH_SEP); @@ -77,6 +77,8 @@ } require_once ( FILE_PATHS_INSTALLED ); + + define( 'PATH_LANGUAGECONT', PATH_DATA . "META-INF" . PATH_SEP ); // TODO: This path defines where to save temporal data, similar to $_SESSION. define( 'PATH_TEMPORAL', PATH_C . 'dynEditor/'); diff --git a/workflow/engine/methods/login/login.php b/workflow/engine/methods/login/login.php index 5cf063831..b6edf7810 100644 --- a/workflow/engine/methods/login/login.php +++ b/workflow/engine/methods/login/login.php @@ -22,6 +22,8 @@ * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ + + if (! isset ( $_GET ['u'] )) { $aFields ['URL'] = ''; } @@ -89,8 +91,9 @@ $_SESSION ['FAILED_LOGINS'] = $sFailedLogins; //translation - require_once "classes/model/Translation.php"; - $translationsTable = Translation::getTranslationEnvironments(); + $Translations = G::getModel("Translation"); + $translationsTable = $Translations->getTranslationEnvironments(); + $availableLangArray = array (); $availableLangArray [] = array ('LANG_ID' => 'char', 'LANG_NAME' => 'char' ); foreach ( $translationsTable as $locale ) { diff --git a/workflow/engine/methods/login/sysLogin.php b/workflow/engine/methods/login/sysLogin.php index 9f9447308..2048cf888 100644 --- a/workflow/engine/methods/login/sysLogin.php +++ b/workflow/engine/methods/login/sysLogin.php @@ -77,11 +77,9 @@ function getWorkspacesAvailable() { } $availableWorkspace = getWorkspacesAvailable (); -require_once "classes/model/Translation.php"; - -$translationsTable = Translation::getTranslationEnvironments(); -//g::pr($translationsTable); die; -//$availableLang = getLangFiles (); +//Translations +$Translations = G::getModel("Translation"); +$translationsTable = $Translations->getTranslationEnvironments(); $availableLangArray = array (); $availableLangArray [] = array ('LANG_ID' => 'char', 'LANG_NAME' => 'char' ); diff --git a/workflow/engine/methods/setup/appCacheViewAjax.php b/workflow/engine/methods/setup/appCacheViewAjax.php index 8be1d01a1..0e9a38377 100755 --- a/workflow/engine/methods/setup/appCacheViewAjax.php +++ b/workflow/engine/methods/setup/appCacheViewAjax.php @@ -113,21 +113,18 @@ case 'getLangList': - require_once 'classes/model/Translation.php'; + $Translations = G::getModel('Translation'); $result = new stdClass(); $result->rows = Array(); - - $langs = Translation::getTranslationEnvironments(); + $langs = $Translations->getTranslationEnvironments(); foreach($langs as $lang){ $result->rows[] = Array('LAN_ID'=>$lang['LOCALE'], 'LAN_NAME'=>$lang['LANGUAGE']); } - //print_r($langs); - //$result->rows = $lang->getActiveLanguages(); - + print(G::json_encode($result)); break; - + case 'build': $sqlToExe = Array(); G::LoadClass('configuration'); diff --git a/workflow/engine/methods/setup/language_Ajax.php b/workflow/engine/methods/setup/language_Ajax.php index 52c9e203b..c50458394 100644 --- a/workflow/engine/methods/setup/language_Ajax.php +++ b/workflow/engine/methods/setup/language_Ajax.php @@ -51,7 +51,7 @@ try { $translationRow = new Translation(); $response = new stdClass(); $translationsEnvList = $translationRow->getTranslationEnvironments(); - + //print_r($translationsEnvList); die; $i = 0; foreach( $translationsEnvList as $locale=>$translationRow) { diff --git a/workflow/public_html/sysGeneric.php b/workflow/public_html/sysGeneric.php index 24b9be0ea..a73264ba0 100644 --- a/workflow/public_html/sysGeneric.php +++ b/workflow/public_html/sysGeneric.php @@ -388,6 +388,21 @@ $startingTime = array_sum(explode(' ',microtime())); session_start(); ob_start(); +//Rebuild the base Workflow translations if not exists + if( ! is_file(PATH_LANGUAGECONT . 'translation.en') ){ + require_once ( "classes/model/Translation.php" ); + $fields = Translation::generateFileTranslation('en'); + } +//TODO: Verify if the language set into url is defined in translations env. + if( SYS_LANG != 'en' && ! is_file(PATH_LANGUAGECONT . 'translation.' . SYS_LANG) ){ + require_once ( "classes/model/Translation.php" ); + $fields = Translation::generateFileTranslation(SYS_LANG); + } + + + + + //********* Setup plugins ************* $oPluginRegistry->setupPlugins(); //get and setup enabled plugins $avoidChangedWorkspaceValidation = false;