コード例 #1
0
 /**
  * Workflow: Check module builder modules for "moduleList" and "moduleListSingular"
  * labels and translations. Create or append fixed content to package
  * language file to make it compatible with Studio or ModuleBuilder for future changes
  */
 public function run()
 {
     if (empty($this->upgrader->state['MBModules'])) {
         // No MB modules - nothing to do
         return;
     }
     $app_list_strings = return_app_list_strings_language("en_us");
     $changes = array();
     $packages = $this->getPackages();
     foreach ($this->upgrader->state['MBModules'] as $MBModule) {
         // All custom modules will have package key in module name
         $keys = explode('_', $MBModule);
         $packageKey = $keys[0];
         if (!isset($packages[$packageKey])) {
             $this->upgrader->log('FixSingularList: can\'t find package for module: key - ' . $packageKey . '. Script will use current key as package name');
             $packages[$packageKey] = $packageKey;
         }
         $changes[$packageKey] = isset($changes[$packageKey]) ? $changes[$packageKey] : array();
         // Try to add custom module to moduleList
         if (!isset($app_list_strings['moduleList'][$MBModule])) {
             $langFile = $this->getLanguageFilePath($MBModule);
             if (file_exists($langFile)) {
                 $mod_strings = array();
                 require $langFile;
                 $moduleName = isset($mod_strings['LBL_MODULE_NAME']) ? $mod_strings['LBL_MODULE_NAME'] : false;
                 if ($moduleName) {
                     $app_list_strings['moduleList'][$MBModule] = $moduleName;
                     $changes[$packageKey]['moduleList'][$MBModule] = $moduleName;
                 } else {
                     $this->upgrader->log('FixSingularList: warning - module ' . $MBModule . ' do not have module name translation');
                 }
             }
         }
         if (!isset($app_list_strings['moduleListSingular'][$MBModule]) && !empty($app_list_strings['moduleList'][$MBModule])) {
             $changes[$packageKey]['moduleListSingular'][$MBModule] = $app_list_strings['moduleList'][$MBModule];
         }
     }
     $rebuildLang = false;
     foreach ($changes as $packageKey => $content) {
         // if no changes - continue
         if (empty($content)) {
             continue;
         }
         $packageName = $packages[$packageKey];
         $fileName = $this->getPackageLangFile($packageName);
         $values = $this->mergeCustomTranslations($fileName, $content);
         $header = file_get_contents('modules/ModuleBuilder/MB/header.php');
         $file = $header;
         foreach ($values as $key => $array) {
             $file .= override_value_to_string_recursive2('app_list_strings', $key, $array);
         }
         $this->upgrader->putFile($fileName, $file);
         $rebuildLang = true;
     }
     if ($rebuildLang) {
         $mi = new ModuleInstaller();
         $mi->silent = true;
         $mi->rebuild_languages(array('en_us' => 'en_us'));
     }
 }
コード例 #2
0
 /**
  * Rebuild changes languages for module
  *
  * @param $languages
  * @param $module
  */
 protected function rebuildLanguages($languages, $module)
 {
     if (!$this->mi) {
         $this->mi = new ModuleInstaller();
         $this->mi->silent = true;
     }
     $this->mi->rebuild_languages($languages, array($module));
 }
コード例 #3
0
ファイル: parser.label.php プロジェクト: jglaine/sugar761-ent
 /**
  * Rebuilds extensions and language files for this language and module
  * 
  * @param string $language The language to rebuild extensions for
  * @param string $moduleName The name of the module whose extensions are being rebuilt
  */
 protected static function rebuildLanguageExtensions($language, $moduleName)
 {
     if (empty(self::$moduleInstaller)) {
         self::$moduleInstaller = new ModuleInstaller();
         self::$moduleInstaller->silent = true;
     }
     self::$moduleInstaller->rebuild_extensions(array($moduleName), array('languages'));
     // While this *is* called from rebuild_extensions, it doesn't do anything
     // there because there is no language or module provided to it. This fixes
     // that.
     self::$moduleInstaller->rebuild_languages(array($language => $language), array($moduleName));
 }
コード例 #4
0
 /**
  * Clears the js cache and rebuilds the language files
  *
  * @param string $lang - language to be rebuilt, and cache cleared
  */
 public function finalize($lang)
 {
     $mi = new ModuleInstaller();
     $mi->silent = true;
     $mi->rebuild_languages(array($lang => $lang));
     sugar_cache_reset();
     sugar_cache_reset_full();
     clearAllJsAndJsLangFilesWithoutOutput();
     // Clear out the api metadata languages cache for selected language
     MetaDataManager::refreshLanguagesCache($lang);
 }