/** * Load current Sugar metadata for this module * * @return array */ protected function loadDefaultMetadata() { $client = $this->client == 'wireless' ? 'mobile' : $this->client; // The new defs array - this should contain OOTB defs for the module $newdefs = $viewdefs = array(); $viewname = MetaDataFiles::getName($this->viewtype); if (!$viewname) { $viewname = $this->viewtype; } // Bug 55568 - new metadata was not included for custom metadata // conversion from pre-6.6 installations. // Grab the new metadata for this module. For undeployed modules we // need to get the metadata from the SugarObject type. // If there are defs for this module, grab them $this->defsfile = 'modules/' . $this->module . '/clients/' . $client . '/views/' . $viewname . '/' . $viewname . '.php'; if (file_exists($this->defsfile)) { require $this->defsfile; if (isset($viewdefs[$this->module][$client]['view'][$viewname])) { $newdefs = $viewdefs[$this->module][$client]['view'][$viewname]; } } // Fallback to the object type if there were no defs found // Bug 57216 - Upgrade wizard was dying on undeployed modules getType if (empty($newdefs)) { if ($this->deployed) { require_once 'modules/ModuleBuilder/Module/StudioModuleFactory.php'; $sm = StudioModuleFactory::getStudioModule($this->module); $moduleType = $sm->getType(); } elseif ($this->package) { require_once 'modules/ModuleBuilder/MB/ModuleBuilder.php'; $mb = new ModuleBuilder(); $package = $mb->getPackage($this->package); $module = $package->getModule($this->module); $moduleType = $module->getModuleType(); } if (!empty($moduleType)) { $this->base_defsfile = 'include/SugarObjects/templates/' . $moduleType . '/clients/' . $client . '/views/' . $viewname . '/' . $viewname . '.php'; if (file_exists($this->base_defsfile)) { require $this->base_defsfile; } else { $this->base_defsfile = 'include/SugarObjects/templates/basic/clients/' . $client . '/views/' . $viewname . '/' . $viewname . '.php'; if (file_exists($this->base_defsfile)) { require $this->base_defsfile; } else { $this->logUpgradeStatus("Could not find basic {$viewname} template for module {$this->module} type {$moduleType}"); } } // See if there are viewdefs defined that we can use if (isset($viewdefs['<module_name>'][$client]['view'][$viewname])) { //Need to perform variable replacement for some field defs $module = $this->getNormalizedModuleName(); $convertedDefs = MetaDataFiles::getModuleMetaDataDefsWithReplacements($module, $viewdefs); if (isset($convertedDefs[$module][$client]['view'][$viewname])) { $newdefs = $convertedDefs[$module][$client]['view'][$viewname]; } else { $newdefs = $viewdefs['<module_name>'][$client]['view'][$viewname]; } } // Only write a defs file for deployed modules if ($newdefs && $this->deployed) { // If we used the template, create the basic one $this->logUpgradeStatus(get_class($this) . ": Copying template defs {$this->base_defsfile} to {$this->defsfile}"); mkdir_recursive(dirname($this->defsfile)); $viewname = pathinfo($this->defsfile, PATHINFO_FILENAME); $export = var_export($newdefs, true); $data = <<<END <?php /* Generated by SugarCRM Upgrader */ \$viewdefs['{$this->module}']['{$client}']['view']['{$viewname}'] = {$export}; END; sugar_file_put_contents($this->defsfile, $data); } } } return $newdefs; }
/** * Gets the metadata from various non module locations as a fallback. If * no metadata file is found, will log an error and return an empty set of * viewdefs. * * @param string $marker The property to set when metadata is found * @return array */ public function getFallbackMetadata($marker = 'loadedMetadataFile') { // Prepare the return $viewdefs = array(); // Get our module type $sm = new StudioModule($this->_moduleName); $template = $sm->getType(); // Build an array of files to search defs for $files = array(); if (!$this->_viewClient !== 'base') { // This is the OOTB file for this module in the base client $files[] = $this->getMetadataFilename(MB_BASEMETADATALOCATION, null, 'base'); } // This is the metadata file for this module type $files[] = $this->getMetadataFilename('', $template, 'base'); if ($template !== 'basic') { // This is the metadata file for basic modules $files[] = $this->getMetadataFilename('', 'basic', 'base'); } // Used for logging $found = false; // Loop and set foreach ($files as $file) { if (file_exists($file)) { require $file; if (!empty($viewdefs)) { // This needs to be done in the event we have a SugarObject template file in use $viewdefs = MetaDataFiles::getModuleMetaDataDefsWithReplacements($this->bean, $viewdefs); if (isset($viewdefs[$this->_moduleName])) { $this->{$marker} = $file; $found = true; break; } } } } // If we found nothing, log it if (!$found) { $GLOBALS['log']->error("Could not find a filter file for {$this->_moduleName}"); } return $viewdefs; }
private function replaceVariables($defs, $module) { return MetaDataFiles::getModuleMetaDataDefsWithReplacements($module instanceof StudioModule ? $module->seed : $module, $defs); /* $var_values = array( "<object_name>" => $module->seed->object_name, "<_object_name>" => strtolower($module->seed->object_name), "<OBJECT_NAME>" => strtoupper($module->seed->object_name), "<module_name>" => $module->seed->module_dir, '<_module_name>'=> strtolower ( $module->seed->module_dir ) ); return $this->recursiveVariableReplace($defs, $module, $var_values); */ }