2 /*********************************************************************************
3 * SugarCRM Community Edition is a customer relationship management program developed by
4 * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6 * This program is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU Affero General Public License version 3 as published by the
8 * Free Software Foundation with the addition of the following permission added
9 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
18 * You should have received a copy of the GNU Affero General Public License along with
19 * this program; if not, see http://www.gnu.org/licenses or write to the Free
20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24 * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26 * The interactive user interfaces in modified source and object code versions
27 * of this program must display Appropriate Legal Notices, as required under
28 * Section 5 of the GNU Affero General Public License version 3.
30 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31 * these Appropriate Legal Notices must retain the display of the "Powered by
32 * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33 * technical reasons, the Appropriate Legal Notices must display the words
34 * "Powered by SugarCRM".
35 ********************************************************************************/
38 class SugarTestLangPackCreator
40 public function __construct()
44 public function __destruct()
46 $this->clearLangCache();
50 * Set a string for the app_strings array
53 * @param $value string
55 public function setAppString(
60 $this->_strings['app_strings'][$key] = $value;
64 * Set a string for the app_list_strings array
67 * @param $value string
69 public function setAppListString(
74 $this->_strings['app_list_strings'][$key] = $value;
78 * Set a string for the mod_strings array
81 * @param $value string
82 * @param $module string
84 public function setModString(
90 $this->_strings['mod_strings'][$module][$key] = $value;
94 * Saves the created strings
96 * Here, we cheat the system by storing our string overrides in the sugar_cache where
97 * we normally stored the cached language strings.
99 public function save()
101 $language = $GLOBALS['current_language'];
102 if ( isset($this->_strings['app_strings']) ) {
103 $cache_key = 'app_strings.'.$language;
104 $app_strings = sugar_cache_retrieve($cache_key);
105 if ( empty($app_strings) )
106 $app_strings = return_application_language($language);
107 foreach ( $this->_strings['app_strings'] as $key => $value )
108 $app_strings[$key] = $value;
109 sugar_cache_put($cache_key, $app_strings);
110 $GLOBALS['app_strings'] = $app_strings;
113 if ( isset($this->_strings['app_list_strings']) ) {
114 $cache_key = 'app_list_strings.'.$language;
115 $app_list_strings = sugar_cache_retrieve($cache_key);
116 if ( empty($app_list_strings) )
117 $app_list_strings = return_app_list_strings_language($language);
118 foreach ( $this->_strings['app_list_strings'] as $key => $value )
119 $app_list_strings[$key] = $value;
120 sugar_cache_put($cache_key, $app_list_strings);
121 $GLOBALS['app_list_strings'] = $app_list_strings;
124 if ( isset($this->_strings['mod_strings']) ) {
125 foreach ( $this->_strings['mod_strings'] as $module => $strings ) {
126 $cache_key = LanguageManager::getLanguageCacheKey($module, $language);
127 $mod_strings = sugar_cache_retrieve($cache_key);
128 if ( empty($mod_strings) )
129 $mod_strings = return_module_language($language, $module);
130 foreach ( $strings as $key => $value )
131 $mod_strings[$key] = $value;
132 sugar_cache_put($cache_key, $mod_strings);
133 $GLOBALS['mod_strings'] = $mod_strings;
139 * Clear the language string cache in sugar_cache, which will get rid of our
140 * language file overrides.
142 protected function clearLangCache()
144 $language = $GLOBALS['current_language'];
146 if ( isset($this->_strings['app_strings']) ) {
147 $cache_key = 'app_strings.'.$language;
148 sugar_cache_clear($cache_key);
151 if ( isset($this->_strings['app_list_strings']) ) {
152 $cache_key = 'app_list_strings.'.$language;
153 sugar_cache_clear($cache_key);
156 if ( isset($this->_strings['mod_strings']) ) {
157 foreach ( $this->_strings['mod_strings'] as $module => $strings ) {
158 $cache_key = LanguageManager::getLanguageCacheKey($module, $language);
159 sugar_cache_clear($cache_key);