protected function getSubpanelDefs($module_dir)
 {
     if (!isset(self::$defs[$module_dir])) {
         $defs = SugarAutoLoader::loadWithMetafiles($module_dir, 'subpaneldefs');
         if ($defs) {
             require $defs;
         }
         $defs = SugarAutoLoader::loadExtension("layoutdefs", $module_dir);
         if ($defs) {
             require $defs;
         }
         if (!isset($layout_defs)) {
             return null;
         }
         self::$defs[$module_dir] = $layout_defs;
     }
     return self::$defs[$module_dir];
 }
 /**
  * get_subpanel_defs
  *
  * @param String $module The name of the module to get the subpanel definition for
  * @param String $type The type of subpanel definition ('wireless' or 'default')
  * @return array Array of the subpanel definition; empty array if no matching definition found
  */
 function get_subpanel_defs($module, $type)
 {
     global $beanList, $beanFiles;
     $results = array();
     switch ($type) {
         case 'wireless':
             $defs = SugarAutoLoader::existingCustomOne('modules/' . $module . '/metadata/wireless.subpaneldefs.php');
             if ($defs) {
                 require $defs;
             }
             //If an Ext/WirelessLayoutdefs/wireless.subpaneldefs.ext.php file exists, then also load it as well
             $defs = SugarAutoLoader::loadExtension("wireless_subpanels", $module);
             if ($defs) {
                 require $defs;
             }
             break;
         case 'default':
         default:
             $defs = SugarAutoLoader::loadWithMetafiles($module, 'subpaneldefs');
             if ($defs) {
                 require $defs;
             }
             $defs = SugarAutoLoader::loadExtension("layoutdefs", $module);
             if ($defs) {
                 require $defs;
             }
     }
     //Filter results for permissions
     foreach ($layout_defs[$module]['subpanel_setup'] as $subpanel => $subpaneldefs) {
         $moduleToCheck = $subpaneldefs['module'];
         $bean = BeanFactory::getBean($moduleToCheck);
         if (empty($bean)) {
             continue;
         }
         if ($bean->ACLAccess('list')) {
             $results[$subpanel] = $subpaneldefs;
         }
     }
     return $results;
 }
include "metadata/users_holidaysMetaData.php";
include "metadata/dataset_layoutsMetaData.php";
include "metadata/dataset_attributesMetaData.php";
//ACL RELATIONSHIPS
include "metadata/acl_roles_actionsMetaData.php";
include "metadata/acl_roles_usersMetaData.php";
// INBOUND EMAIL
include "metadata/inboundEmail_autoreplyMetaData.php";
include "metadata/inboundEmail_cacheTimestampMetaData.php";
include "metadata/email_cacheMetaData.php";
include "metadata/email_marketing_prospect_listsMetaData.php";
//linked documents.
include "metadata/linked_documentsMetaData.php";
include "metadata/sessionHistoryMetaData.php";
// Documents, so we can start replacing Notes as the primary way to attach something to something else.
include "metadata/documents_accountsMetaData.php";
include "metadata/documents_contactsMetaData.php";
include "metadata/documents_opportunitiesMetaData.php";
include "metadata/documents_casesMetaData.php";
include "metadata/documents_bugsMetaData.php";
include "metadata/documents_productsMetaData.php";
include "metadata/documents_revenuelineitemsMetaData.php";
include "metadata/documents_quotesMetaData.php";
include "metadata/forecast_treeMetaData.php";
include "metadata/oauth_nonce.php";
include "metadata/activities_usersMetaData.php";
include "metadata/metadata_cacheMetaData.php";
$defs = SugarAutoLoader::loadExtension('tabledictionary');
if ($defs) {
    require $defs;
}
Exemple #4
0
 public function loadHooks($module_dir)
 {
     $hook_array = array();
     if (!empty($module_dir)) {
         $custom = "custom/modules/{$module_dir}";
     } else {
         $custom = "custom/modules";
     }
     foreach (SugarAutoLoader::existing("{$custom}/logic_hooks.php", SugarAutoLoader::loadExtension("logichooks", empty($module_dir) ? "application" : $module_dir)) as $file) {
         if (isset($GLOBALS['log'])) {
             $GLOBALS['log']->debug('Including hook file: ' . $file);
         }
         include $file;
     }
     return $hook_array;
 }
 /**
  * Get the content of the given files to build metadata.
  *
  * @param array  $fileList A list of files to retrieve for building metadata.
  * @param string $type     The type of file to retrieve for building metadata.
  * @param string $module   The module to retrieve for building metadata.
  *
  * @return array
  */
 public static function getClientFileContents($fileList, $type, $module = '', $bean = null)
 {
     $results = array();
     foreach ($fileList as $fileInfo) {
         $extension = substr($fileInfo['path'], -3);
         switch ($extension) {
             case '.js':
                 $subpath = $fileInfo['subPath'];
                 if (strpos($fileInfo['path'], "custom/") === 0) {
                     $subpath = "custom" . ucfirst($subpath);
                 }
                 if (isset($results[$subpath]['controller'][$fileInfo['platform']])) {
                     continue;
                 }
                 $controller = self::trimLicense(file_get_contents($fileInfo['path'], "js"));
                 $results[$subpath]['controller'][$fileInfo['platform']] = $controller;
                 break;
             case 'hbs':
                 $layoutName = substr($fileInfo['file'], 0, -4);
                 if (isset($results[$fileInfo['subPath']]['templates'][$layoutName])) {
                     continue;
                 }
                 $results[$fileInfo['subPath']]['templates'][$layoutName] = self::trimLicense(file_get_contents($fileInfo['path']));
                 break;
             case 'php':
                 $viewdefs = array();
                 if (isset($results[$fileInfo['subPath']]['meta']) && !strstr($fileInfo['path'], '.ext.php')) {
                     continue;
                 }
                 //When an extension file is found and NO corresponding metadata has been found so far
                 if (!empty($module) && strstr($fileInfo['path'], '.ext.php') && !isset($results[$fileInfo['subPath']]['meta'])) {
                     //need to check the global files for metadata
                     $results[$fileInfo['subPath']]['meta'] = self::getGlobalFileContent($fileInfo['platform'], $type, $fileInfo['subPath']);
                 }
                 //Viewdefs must be maintained between files to allow for extension files that append to out of box meta.
                 if (!empty($results[$fileInfo['subPath']]['meta'])) {
                     if (empty($module)) {
                         $viewdefs[$fileInfo['platform']][$type][$fileInfo['subPath']] = $results[$fileInfo['subPath']]['meta'];
                     } else {
                         $viewdefs[$module][$fileInfo['platform']][$type][$fileInfo['subPath']] = $results[$fileInfo['subPath']]['meta'];
                     }
                 }
                 if ($fileInfo['template']) {
                     // This is a template file, not a real one.
                     require $fileInfo['path'];
                     if (!$bean) {
                         $bean = BeanFactory::getBean($module);
                     }
                     if (!is_a($bean, 'SugarBean')) {
                         // I'm not sure what this is, but it's not something we can template
                         continue;
                     }
                     $viewdefs = self::getModuleMetaDataDefsWithReplacements($bean, $viewdefs);
                     if (!isset($viewdefs[$module][$fileInfo['platform']][$type][$fileInfo['subPath']])) {
                         $GLOBALS['log']->error('Could not generate a metadata file for module ' . $module . ', platform: ' . $fileInfo['platform'] . ', type: ' . $type);
                         continue;
                     }
                     $results[$fileInfo['subPath']]['meta'] = $viewdefs[$module][$fileInfo['platform']][$type][$fileInfo['subPath']];
                 } else {
                     require $fileInfo['path'];
                     if ($fileInfo['subPath'] != 'subpanels') {
                         $extensionName = "sidecar{$type}{$fileInfo['platform']}{$fileInfo['subPath']}";
                         $extFile = SugarAutoLoader::loadExtension($extensionName, $module);
                         if ($extFile) {
                             include $extFile;
                         }
                     }
                     if (empty($module)) {
                         if (!isset($viewdefs[$fileInfo['platform']][$type][$fileInfo['subPath']])) {
                             $GLOBALS['log']->error('No viewdefs for type: ' . $type . ' viewdefs @ ' . $fileInfo['path']);
                         } else {
                             $results[$fileInfo['subPath']]['meta'] = $viewdefs[$fileInfo['platform']][$type][$fileInfo['subPath']];
                         }
                     } else {
                         if (!isset($viewdefs[$module][$fileInfo['platform']][$type][$fileInfo['subPath']])) {
                             $GLOBALS['log']->error('No viewdefs for module: ' . $module . ' viewdefs @ ' . $fileInfo['path']);
                         } else {
                             if (isset($results[$fileInfo['subPath']]['meta']) && $fileInfo['subPath'] == 'subpanels') {
                                 $results[$fileInfo['subPath']]['meta'] = self::mergeSubpanels($viewdefs[$module][$fileInfo['platform']][$type][$fileInfo['subPath']], $results[$fileInfo['subPath']]['meta']);
                             } else {
                                 // For custom modules or if there is no subpanel
                                 // layout defined and edits are made, we
                                 // need to capture the changes that all live
                                 // in one file for subpanels
                                 if ($fileInfo['subPath'] == 'subpanels') {
                                     $results[$fileInfo['subPath']]['meta'] = self::mergeSubpanels($viewdefs[$module][$fileInfo['platform']][$type][$fileInfo['subPath']], array('components' => array()));
                                 } else {
                                     $results[$fileInfo['subPath']]['meta'] = $viewdefs[$module][$fileInfo['platform']][$type][$fileInfo['subPath']];
                                 }
                             }
                         }
                     }
                     break;
                 }
         }
     }
     $results['_hash'] = md5(serialize($results));
     return $results;
 }
Exemple #6
0
 /**
  * This method saves a subpanels override defintion
  *
  * @param object $panel the subpanel
  * @param var $subsection
  * @param string $override the override string
  */
 function saveSubPanelDefOverride($panel, $subsection, $override)
 {
     $layoutPath = "custom/Extension/modules/{$panel->parent_bean->module_dir}/Ext/Layoutdefs/";
     $layoutDefsName = "layout_defs['{$panel->parent_bean->module_dir}']['subpanel_setup']['" . strtolower($panel->name) . "']";
     $layoutDefsExtName = "layoutdefs";
     $moduleInstallerMethod = "rebuild_layoutdefs";
     //bug 42262 (filename with $panel->_instance_properties['get_subpanel_data'] can create problem if had word "function" in it)
     $overrideValue = $filename = $panel->parent_bean->object_name . "_subpanel_" . $panel->name;
     $overrideName = 'override_subpanel_name';
     //save the new subpanel
     $name = "subpanel_layout['list_fields']";
     //bugfix: load looks for moduleName/metadata/subpanels, not moduleName/subpanels
     $path = 'custom/modules/' . $panel->_instance_properties['module'] . '/metadata/subpanels';
     //bug# 40171: "Custom subpanels not working as expected"
     //each custom subpanel needs to have a unique custom def file
     $oldName1 = '_override' . $panel->parent_bean->object_name . $panel->_instance_properties['module'] . $panel->_instance_properties['subpanel_name'];
     $oldName2 = '_override' . $panel->parent_bean->object_name . $panel->_instance_properties['get_subpanel_data'];
     if (file_exists("{$layoutPath}/{$oldName1}.php")) {
         @unlink("{$layoutPath}/{$oldName1}.php");
     }
     if (file_exists("{$layoutPath}/{$oldName2}.php")) {
         @unlink("{$layoutPath}/{$oldName2}.php");
     }
     $extname = '_override' . $filename;
     //end of bug# 40171
     mkdir_recursive($path, true);
     write_array_to_file($name, $override, $path . '/' . $filename . '.php');
     //save the override for the layoutdef
     //tyoung 10.12.07 pushed panel->name to lowercase to match case in subpaneldefs.php files -
     //gave error on bad index 'module' as this override key didn't match the key in the subpaneldefs
     $newValue = override_value_to_string($layoutDefsName, $overrideName, $overrideValue);
     mkdir_recursive($layoutPath, true);
     $fp = sugar_fopen("{$layoutPath}/{$extname}.php", 'w');
     fwrite($fp, "<?php\n//auto-generated file DO NOT EDIT\n{$newValue}\n?>");
     fclose($fp);
     require_once 'ModuleInstall/ModuleInstaller.php';
     $moduleInstaller = new ModuleInstaller();
     $moduleInstaller->silent = true;
     // make sure that the ModuleInstaller->log() function doesn't echo while rebuilding the layoutdefs
     $moduleInstaller->{$moduleInstallerMethod}();
     SugarAutoLoader::buildCache();
     foreach (SugarAutoLoader::existing('modules/' . $panel->parent_bean->module_dir . '/layout_defs.php', SugarAutoLoader::loadExtension($layoutDefsExtName, $panel->parent_bean->module_dir)) as $file) {
         include $file;
     }
 }
Exemple #7
0
 function preDisplay()
 {
     global $current_user, $app_strings, $sugar_config;
     if (!isset($this->bean->id)) {
         // No reason to set everything up just to have it fail in the display() call
         return;
     }
     if (!$current_user->isAdminForModule('Users') && !$current_user->isDeveloperForModule('Users') && $this->bean->id != $current_user->id) {
         ACLController::displayNoAccess(true);
         sugar_cleanup(true);
     }
     parent::preDisplay();
     $viewHelper = UserViewHelper::create($this->ss, $this->bean, 'DetailView');
     $viewHelper->setupAdditionalFields();
     $errors = "";
     $msgGood = false;
     if (isset($_REQUEST['pwd_set']) && $_REQUEST['pwd_set'] != 0) {
         if ($_REQUEST['pwd_set'] == '4') {
             require_once 'modules/Users/password_utils.php';
             $errors .= canSendPassword();
         } else {
             $errors .= translate('LBL_NEW_USER_PASSWORD_' . $_REQUEST['pwd_set'], 'Users');
             $msgGood = true;
         }
     } else {
         //IF BEAN USER IS LOCKOUT
         if ($this->bean->getPreference('lockout') == '1') {
             $errors .= translate('ERR_USER_IS_LOCKED_OUT', 'Users');
         }
     }
     $this->ss->assign("ERRORS", $errors);
     $this->ss->assign("ERROR_MESSAGE", $msgGood ? translate('LBL_PASSWORD_SENT', 'Users') : translate('LBL_CANNOT_SEND_PASSWORD', 'Users'));
     $buttons = array();
     if ((is_admin($current_user) || $_REQUEST['record'] == $current_user->id) && !empty($sugar_config['default_user_name']) && $sugar_config['default_user_name'] == $this->bean->user_name && isset($sugar_config['lock_default_user_name']) && $sugar_config['lock_default_user_name']) {
         $buttons[] = "<input id='edit_button' accessKey='" . $app_strings['LBL_EDIT_BUTTON_KEY'] . "' name='Edit' title='" . $app_strings['LBL_EDIT_BUTTON_TITLE'] . "' value='" . $app_strings['LBL_EDIT_BUTTON_LABEL'] . "' onclick=\"this.form.return_module.value='Users'; this.form.return_action.value='DetailView'; this.form.return_id.value='" . $this->bean->id . "'; this.form.action.value='EditView'\" type='submit' value='" . $app_strings['LBL_EDIT_BUTTON_LABEL'] . "'>";
     } elseif (is_admin($current_user) || $GLOBALS['current_user']->isAdminForModule('Users') && !$this->bean->is_admin || $_REQUEST['record'] == $current_user->id) {
         $buttons[] = "<input title='" . $app_strings['LBL_EDIT_BUTTON_TITLE'] . "' accessKey='" . $app_strings['LBL_EDIT_BUTTON_KEY'] . "' name='Edit' id='edit_button' value='" . $app_strings['LBL_EDIT_BUTTON_LABEL'] . "' onclick=\"this.form.return_module.value='Users'; this.form.return_action.value='DetailView'; this.form.return_id.value='" . $this->bean->id . "'; this.form.action.value='EditView'\" type='submit' value='" . $app_strings['LBL_EDIT_BUTTON_LABEL'] . "'>";
         if (is_admin($current_user) || $GLOBALS['current_user']->isAdminForModule('Users')) {
             if (!$current_user->is_group) {
                 $buttons[] = "<input id='duplicate_button' title='" . $app_strings['LBL_DUPLICATE_BUTTON_TITLE'] . "' accessKey='" . $app_strings['LBL_DUPLICATE_BUTTON_KEY'] . "' class='button' onclick=\"this.form.return_module.value='Users'; this.form.return_action.value='DetailView'; this.form.isDuplicate.value=true; this.form.action.value='EditView'\" type='submit' name='Duplicate' value='" . $app_strings['LBL_DUPLICATE_BUTTON_LABEL'] . "'>";
                 if ($this->bean->id != $current_user->id) {
                     $buttons[] = "<input id='delete_button' type='button' class='button' onclick='confirmDelete();' value='" . $app_strings['LBL_DELETE_BUTTON_LABEL'] . "' />";
                 }
                 if (!$this->bean->portal_only && !$this->bean->is_group && !$this->bean->external_auth_only && isset($sugar_config['passwordsetting']['SystemGeneratedPasswordON']) && $sugar_config['passwordsetting']['SystemGeneratedPasswordON']) {
                     $buttons[] = "<input title='" . translate('LBL_GENERATE_PASSWORD_BUTTON_TITLE', 'Users') . "' class='button' LANGUAGE=javascript onclick='generatepwd(\"" . $this->bean->id . "\");' type='button' name='password' value='" . translate('LBL_GENERATE_PASSWORD_BUTTON_LABEL', 'Users') . "'>";
                 }
             }
         }
     }
     $buttons = array_merge($buttons, $this->ss->get_template_vars('BUTTONS_HEADER'));
     $this->ss->assign('EDITBUTTONS', $buttons);
     $show_roles = !($this->bean->is_group == '1' || $this->bean->portal_only == '1');
     $this->ss->assign('SHOW_ROLES', $show_roles);
     //Mark whether or not the user is a group or portal user
     $this->ss->assign('IS_GROUP_OR_PORTAL', $this->bean->is_group == '1' || $this->bean->portal_only == '1' ? true : false);
     if ($show_roles) {
         ob_start();
         echo "<div>";
         require_once 'modules/ACLRoles/DetailUserRole.php';
         echo "</div></div>";
         $file = SugarAutoLoader::loadExtension("userpage");
         if ($file) {
             include $file;
         }
         $role_html = ob_get_contents();
         ob_end_clean();
         $this->ss->assign('ROLE_HTML', $role_html);
     }
     // Tell the template to render the javascript that requests new metadata
     // after a user preference change
     $this->ss->assign('refreshMetadata', !empty($_REQUEST['refreshMetadata']));
 }
global $app_strings, $current_user;
global $sugar_config, $sugar_version, $sugar_flavor, $server_unique_key, $current_language, $action;
if (!isset($global_control_links)) {
    $global_control_links = array();
    $sub_menu = array();
}
if (isset($sugar_config['disc_client']) && $sugar_config['disc_client']) {
    require_once 'modules/Sync/headermenu.php';
}
if (SugarThemeRegistry::current()->name != 'Classic') {
    $global_control_links['profile'] = array('linkinfo' => array($app_strings['LBL_PROFILE'] => 'index.php?module=Users&action=EditView&record=' . $GLOBALS['current_user']->id), 'submenu' => '');
}
$global_control_links['employees'] = array('linkinfo' => array($app_strings['LBL_EMPLOYEES'] => 'index.php?module=Employees&action=index&query=true'), 'submenu' => '');
if (is_admin($current_user) || $current_user->isDeveloperForAnyModule()) {
    $global_control_links['admin'] = array('linkinfo' => array($app_strings['LBL_ADMIN'] => 'index.php?module=Administration&action=index'), 'submenu' => '');
}
/* no longer goes in the menubar - now implemented in the bottom bar.
$global_control_links['training'] = array(
'linkinfo' => array($app_strings['LBL_TRAINING'] => 'javascript:void(window.open(\'http://support.sugarcrm.com\'))'),
'submenu' => ''
 );
$global_control_links['help'] = array(
    'linkinfo' => array($app_strings['LNK_HELP'] => ' javascript:void window.open(\'index.php?module=Administration&action=SupportPortal&view=documentation&version='.$sugar_version.'&edition='.$sugar_flavor.'&lang='.$current_language.'&help_module='.$GLOBALS['module'].'&help_action='.$action.'&key='.$server_unique_key.'\')'),
    'submenu' => ''
 );
*/
$global_control_links['users'] = array('linkinfo' => array($app_strings['LBL_LOGOUT'] => 'index.php?module=Users&action=Logout'), 'submenu' => '');
$global_control_links['about'] = array('linkinfo' => array($app_strings['LNK_ABOUT'] => 'index.php?module=Home&action=About'), 'submenu' => '');
foreach (SugarAutoLoader::existing('custom/include/globalControlLinks.php', SugarAutoLoader::loadExtension("links")) as $file) {
    include $file;
}
Exemple #9
0
 /**
  * Loads the module shortcuts menu
  *
  * @param  $module string optional, can specify module to retrieve menu for if not the current one
  * @return array module menu
  */
 public function getMenu($module = null, $mod_strings_override = false)
 {
     global $current_language, $current_user, $app_strings, $module_menu, $mod_strings;
     if (empty($module)) {
         $module = $this->module;
     }
     //Need to make sure the mod_strings match the requested module or Menus may fail
     $curr_mod_strings = $mod_strings;
     if ($mod_strings_override !== false) {
         $mod_strings = $mod_strings_override;
     } else {
         $mod_strings = return_module_language($current_language, $module);
     }
     $module_menu = array();
     $menus = SugarAutoLoader::existing('modules/' . $module . '/Menu.php', SugarAutoLoader::loadExtension("menus", $module));
     foreach ($menus as $file) {
         require $file;
     }
     if (empty($menus) && !empty($GLOBALS['mod_strings']['LNK_NEW_RECORD'])) {
         $module_menu[] = array("index.php?module={$module}&action=EditView&return_module={$module}&return_action=DetailView", $GLOBALS['mod_strings']['LNK_NEW_RECORD'], "{$GLOBALS['app_strings']['LBL_CREATE_BUTTON_LABEL']}{$module}", $module);
         $module_menu[] = array("index.php?module={$module}&action=index", $GLOBALS['mod_strings']['LNK_LIST'], $module, $module);
         if ($this->bean instanceof SugarBean && !empty($this->bean->importable)) {
             if (!empty($mod_strings['LNK_IMPORT_' . strtoupper($module)])) {
                 $module_menu[] = array("index.php?module=Import&action=Step1&import_module={$module}&return_module={$module}&return_action=index", $mod_strings['LNK_IMPORT_' . strtoupper($module)], "Import", $module);
             } else {
                 $module_menu[] = array("index.php?module=Import&action=Step1&import_module={$module}&return_module={$module}&return_action=index", $app_strings['LBL_IMPORT'], "Import", $module);
             }
         }
     }
     if ($this->base_menu) {
         require $this->base_menu;
     }
     $mod_strings = $curr_mod_strings;
     $builtModuleMenu = $module_menu;
     unset($module_menu);
     return $builtModuleMenu;
 }
 /**
  * Load the layout def file and associate the definition with a variable in the file.
  */
 function open_layout_defs($reload = false, $layout_def_key = '', $original_only = false)
 {
     require_once 'include/MetaDataManager/MetaDataManager.php';
     $mm = MetaDataManager::getManager();
     $layout_defs[$this->_focus->module_dir] = array();
     $layout_defs[$layout_def_key] = array();
     $def_path = array();
     if (empty($this->layout_defs) || $reload || !empty($layout_def_key) && !isset($layout_defs[$layout_def_key])) {
         if (!$original_only) {
             if (isModuleBWC($this->_focus->module_dir)) {
                 $def_path = array('modules/' . $this->_focus->module_dir . '/metadata/' . ($this->platform == 'mobile' ? 'wireless.' : '') . 'subpaneldefs.php');
                 $def_path[] = SugarAutoLoader::loadExtension($this->platform == 'mobile' ? 'wireless_subpanels' : 'layoutdefs', $this->_focus->module_dir);
                 foreach (SugarAutoLoader::existing($def_path) as $file) {
                     require $file;
                 }
             } else {
                 $viewdefs = $mm->getModuleLayouts($this->_focus->module_dir);
                 $viewdefs = !empty($viewdefs['subpanels']['meta']['components']) ? $viewdefs['subpanels']['meta']['components'] : array();
             }
         }
         $layoutDefsKey = !empty($layout_def_key) ? $layout_def_key : $this->_focus->module_dir;
         // convert sidecar subpanels to the array the SubpanelDefinitions are looking for
         if ($this->_focus instanceof SugarBean && !isModuleBWC($this->_focus->module_dir) && isset($viewdefs)) {
             require_once 'include/MetaDataManager/MetaDataConverter.php';
             $metaDataConverter = new MetaDataConverter();
             $layout_defs[$layoutDefsKey] = $metaDataConverter->toLegacySubpanelLayoutDefs($viewdefs, $this->_focus);
         }
         $this->layout_defs = $layout_defs[$layoutDefsKey];
     }
 }
Exemple #11
0
}
function cleanJobQueue($job)
{
    $td = TimeDate::getInstance();
    // soft delete all jobs that are older than cutoff
    $soft_cutoff = 7;
    if (isset($GLOBALS['sugar_config']['jobs']['soft_lifetime'])) {
        $soft_cutoff = $GLOBALS['sugar_config']['jobs']['soft_lifetime'];
    }
    $soft_cutoff_date = $job->db->quoted($td->getNow()->modify("- {$soft_cutoff} days")->asDb());
    $job->db->query("UPDATE {$job->table_name} SET deleted=1 WHERE status='done' AND date_modified < " . $job->db->convert($soft_cutoff_date, 'datetime'));
    // hard delete all jobs that are older than hard cutoff
    $hard_cutoff = 21;
    if (isset($GLOBALS['sugar_config']['jobs']['hard_lifetime'])) {
        $hard_cutoff = $GLOBALS['sugar_config']['jobs']['hard_lifetime'];
    }
    $hard_cutoff_date = $job->db->quoted($td->getNow()->modify("- {$hard_cutoff} days")->asDb());
    $job->db->query("DELETE FROM {$job->table_name} WHERE status='done' AND date_modified < " . $job->db->convert($hard_cutoff_date, 'datetime'));
    return true;
}
if (SugarAutoLoader::existing('custom/modules/Schedulers/_AddJobsHere.php')) {
    require 'custom/modules/Schedulers/_AddJobsHere.php';
}
$extfile = SugarAutoLoader::loadExtension('schedulers');
if ($extfile) {
    require $extfile;
}
$extfile = SugarAutoLoader::loadExtension('app_schedulers');
if ($extfile) {
    require $extfile;
}
Exemple #12
0
 /**
  * Reload the default tinyMCE config
  *
  */
 private function overloadDefaultConfigs()
 {
     if (SugarAutoLoader::existing($this->customDefaultConfigFile)) {
         require_once $this->customDefaultConfigFile;
     }
     $defs = SugarAutoLoader::loadExtension('tinymce');
     if ($defs) {
         require $defs;
     }
     if (!isset($defaultConfig)) {
         return;
     }
     foreach ($defaultConfig as $k => $v) {
         if ($k == "extended_valid_elements") {
             $this->defaultConfig[$k] .= "," . $v;
         } else {
             $this->defaultConfig[$k] = $v;
         }
     }
 }
 protected function _displaySubPanels()
 {
     if (!empty($this->bean->id) && (SugarAutoLoader::existingCustom('modules/' . $this->module . '/metadata/subpaneldefs.php') || SugarAutoLoader::loadExtension("layoutdefs", $this->module))) {
         $GLOBALS['focus'] = $this->bean;
         require_once 'include/SubPanel/SubPanelTiles.php';
         $subpanel = new SubPanelTiles($this->bean, $this->module);
         echo $subpanel->display();
     }
 }
Exemple #14
0
////	DATA SECURITY MEASURES
require_once 'include/clean.php';
clean_special_arguments();
clean_incoming_data();
////	END DATA SECURITY MEASURES
///////////////////////////////////////////////////////////////////////////////
// cn: set php.ini settings at entry points
setPhpIniSettings();
require_once 'sugar_version.php';
// provides $sugar_version, $sugar_db_version, $sugar_flavor
require_once 'include/utils/sugar_file_utils.php';
require_once 'include/utils/autoloader.php';
SugarAutoLoader::init();
//check to see if custom utils exist and load them too
// not doing it in utils since autoloader is not loaded there yet
foreach (SugarAutoLoader::existing('include/custom_utils.php', 'custom/include/custom_utils.php', SugarAutoLoader::loadExtension('utils')) as $file) {
    require_once $file;
}
require_once 'include/database/DBManagerFactory.php';
require_once 'include/dir_inc.php';
require_once 'include/Localization/Localization.php';
require_once 'include/TimeDate.php';
require_once 'include/modules.php';
// provides $moduleList, $beanList, $beanFiles, $modInvisList, $adminOnlyList, $modInvisListActivities
require_once 'data/SugarBean.php';
require_once 'include/utils/mvc_utils.php';
require_once 'include/SugarObjects/LanguageManager.php';
require_once 'include/SugarObjects/VardefManager.php';
require_once 'include/utils/file_utils.php';
require_once 'include/SugarLogger/LoggerManager.php';
require_once 'modules/Trackers/BreadCrumbStack.php';
Exemple #15
0
        switch ($subGroup) {
            case 'bootstrap':
                return array('include/javascript/twitterbootstrap/transition.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-button.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-tooltip.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-dropdown.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-popover.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-modal.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-alert.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-datepicker.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-tab.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-collapse.js' => $target, 'include/javascript/twitterbootstrap/bootstrap-colorpicker.js' => $target);
                break;
            case 'bootstrap_core':
                return array('include/javascript/jquery/bootstrap/bootstrap.min.js' => $target, 'include/javascript/jquery/jquery.popoverext.js' => $target);
                break;
            case 'jquery_core':
                return array('include/javascript/jquery/jquery-min.js' => $target, 'include/javascript/jquery/jquery-ui-min.js' => $target, 'include/javascript/jquery/jquery.json-2.3.js' => $target);
                break;
            case 'jquery_menus':
                return array('include/javascript/jquery/jquery.hoverIntent.js' => $target, 'include/javascript/jquery/jquery.hoverscroll.js' => $target, 'include/javascript/jquery/jquery.hotkeys.js' => $target, 'include/javascript/jquery/jquery.tipTip.js' => $target, 'include/javascript/jquery/jquery.sugarMenu.js' => $target, 'include/javascript/jquery/jquery.highLight.js' => $target, 'include/javascript/jquery/jquery.showLoading.js' => $target, 'include/javascript/jquery/jquery.jstree.js' => $target, 'include/javascript/jquery/jquery.dataTables.min.js' => $target, 'include/javascript/jquery/jquery.dataTables.customSort.js' => $target, 'include/javascript/jquery/jquery.jeditable.js' => $target, 'include/javascript/jquery/jquery.effects.custombounce.js' => $target);
                break;
            default:
                break;
        }
    }
}
$calendarJSFileName = SugarAutoLoader::fileExists('custom/include/javascript/calendar.js') ? 'custom/include/javascript/calendar.js' : 'include/javascript/calendar.js';
$js_groupings = array($sugar_grp1 = array("sidecar/lib/backbone/underscore.js" => "include/javascript/sugar_grp1.js", 'include/javascript/sugar_3.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/ajaxUI.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/cookie.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/menu.js' => 'include/javascript/sugar_grp1.js', $calendarJSFileName => 'include/javascript/sugar_grp1.js', 'include/javascript/quickCompose.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/yui/build/yuiloader/yuiloader-min.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/phpjs/license.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/phpjs/get_html_translation_table.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/phpjs/html_entity_decode.js' => 'include/javascript/sugar_grp1.js', 'include/javascript/phpjs/htmlentities.js' => 'include/javascript/sugar_grp1.js', 'sidecar/lib/sugarlogic/expressions.js' => 'include/javascript/sugar_grp1.js', 'include/Expressions/javascript/dependency.js' => 'include/javascript/sugar_grp1.js', 'include/EditView/Panels.js' => 'include/javascript/sugar_grp1.js'), $sugar_grp_jquery_core = getSubgroupForTarget('jquery_core', 'include/javascript/sugar_grp1_jquery_core.js'), $sugar_grp_bootstrap = getSubgroupForTarget('bootstrap_core', 'include/javascript/sugar_grp1_bootstrap.js'), $sugar_grp_jquery_menus = getSubgroupForTarget('jquery_menus', 'include/javascript/sugar_grp1_jquery_menus.js'), $sugar_grp_jquery = array_merge(getSubgroupForTarget('jquery_core', 'include/javascript/sugar_grp1_jquery.js'), getSubgroupForTarget('bootstrap_core', 'include/javascript/sugar_grp1_jquery.js'), getSubgroupForTarget('jquery_menus', 'include/javascript/sugar_grp1_jquery.js')), $sugar_field_grp = array('include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'include/javascript/sugar_field_grp.js', 'include/SugarFields/Fields/Teamset/Teamset.js' => 'include/javascript/sugar_field_grp.js', 'include/SugarFields/Fields/Datetimecombo/Datetimecombo.js' => 'include/javascript/sugar_field_grp.js'), $sugar_grp1_yui = array('include/javascript/yui3/build/yui/yui-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui3/build/loader/loader-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/yahoo/yahoo-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/dom/dom-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/yahoo-dom-event/yahoo-dom-event.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/event/event-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/logger/logger-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/animation/animation-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/connection/connection-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/dragdrop/dragdrop-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/container/container-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/element/element-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/tabview/tabview-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/selector/selector.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/ygDDList.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/datasource/datasource-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/json/json-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/autocomplete/autocomplete-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/quicksearch.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/menu/menu-min.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/sugar_connection_event_listener.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/calendar/calendar.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/history/history.js' => 'include/javascript/sugar_grp1_yui.js', 'include/javascript/yui/build/resize/resize-min.js' => 'include/javascript/sugar_grp1_yui.js'), $sugar_grp_yui_widgets = array('include/javascript/yui/build/datatable/datatable-min.js' => 'include/javascript/sugar_grp_yui_widgets.js', 'include/javascript/yui/build/treeview/treeview-min.js' => 'include/javascript/sugar_grp_yui_widgets.js', 'include/javascript/yui/build/button/button-min.js' => 'include/javascript/sugar_grp_yui_widgets.js', 'include/javascript/yui/build/calendar/calendar-min.js' => 'include/javascript/sugar_grp_yui_widgets.js', 'include/javascript/sugarwidgets/SugarYUIWidgets.js' => 'include/javascript/sugar_grp_yui_widgets.js', 'include/javascript/sugar_yui_overrides.js' => 'include/javascript/sugar_grp_yui_widgets.js'), $sugar_grp_yui_widgets_css = array("include/javascript/yui/build/fonts/fonts-min.css" => 'include/javascript/sugar_grp_yui_widgets.css', "include/javascript/yui/build/treeview/assets/skins/sam/treeview.css" => 'include/javascript/sugar_grp_yui_widgets.css', "include/javascript/yui/build/datatable/assets/skins/sam/datatable.css" => 'include/javascript/sugar_grp_yui_widgets.css', "include/javascript/yui/build/container/assets/skins/sam/container.css" => 'include/javascript/sugar_grp_yui_widgets.css', "include/javascript/yui/build/button/assets/skins/sam/button.css" => 'include/javascript/sugar_grp_yui_widgets.css', "include/javascript/yui/build/calendar/assets/skins/sam/calendar.css" => 'include/javascript/sugar_grp_yui_widgets.css'), $sugar_grp_yui2 = array('include/javascript/yui/build/dragdrop/dragdrop-min.js' => 'include/javascript/sugar_grp_yui2.js', 'include/javascript/yui/build/container/container-min.js' => 'include/javascript/sugar_grp_yui2.js'), $sugar_grp_emails = array('include/javascript/yui/ygDDList.js' => 'include/javascript/sugar_grp_emails.js', 'include/SugarEmailAddress/SugarEmailAddress.js' => 'include/javascript/sugar_grp_emails.js', 'include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'include/javascript/sugar_grp_emails.js', 'include/SugarRouting/javascript/SugarRouting.js' => 'include/javascript/sugar_grp_emails.js', 'include/SugarDependentDropdown/javascript/SugarDependentDropdown.js' => 'include/javascript/sugar_grp_emails.js', 'modules/InboundEmail/InboundEmail.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/EmailUIShared.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/EmailUI.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/EmailUICompose.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/ajax.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/grid.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/init.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/complexLayout.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/composeEmailTemplate.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/displayOneEmailTemplate.js' => 'include/javascript/sugar_grp_emails.js', 'modules/Emails/javascript/viewPrintable.js' => 'include/javascript/sugar_grp_emails.js', 'include/javascript/quicksearch.js' => 'include/javascript/sugar_grp_emails.js'), $sugar_grp_quick_compose = array('include/javascript/jsclass_base.js' => 'include/javascript/sugar_grp_quickcomp.js', 'include/javascript/jsclass_async.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/vars.js' => 'include/javascript/sugar_grp_quickcomp.js', 'include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/EmailUIShared.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/ajax.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/grid.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/EmailUICompose.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/composeEmailTemplate.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/complexLayout.js' => 'include/javascript/sugar_grp_quickcomp.js'), $sugar_grp_jsolait = array('include/javascript/jsclass_base.js' => 'include/javascript/sugar_grp_jsolait.js', 'include/javascript/jsclass_async.js' => 'include/javascript/sugar_grp_jsolait.js', 'modules/Meetings/jsclass_scheduler.js' => 'include/javascript/sugar_grp_jsolait.js'), $sugar_grp_sidecar = array_merge(array('include/javascript/phpjs/base64_encode.js' => 'include/javascript/sugar_sidecar.min.js', 'sidecar/lib/jquery-placeholder/jquery.placeholder.js' => 'include/javascript/sugar_sidecar.min.js'), getSubgroupForTarget('bootstrap', 'include/javascript/sugar_sidecar.min.js'), array('include/javascript/nvd3/lib/d3.min.js' => 'include/javascript/sugar_sidecar.min.js', 'include/SugarCharts/nvd3/js/sugarCharts.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/nvd3/nv.d3.min.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/error.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/touch.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/select2/select2.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Select2.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/jquery/jquery.timepicker.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/jquery/jquery.jstree.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/jquery/jquery.popoverext.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/jquery/jquery.effects.custombounce.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/jquery/jquery.nouislider.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/nprogress/nprogress.js' => 'include/javascript/sugar_sidecar.min.js', 'sidecar/lib/momentjs/min/langs.min.js' => 'include/javascript/sugar_sidecar.min.js', 'sidecar/lib/sugarlogic/expressions.js' => 'include/javascript/sugar_sidecar.min.js', 'sidecar/lib/sugarlogic/sidecarExpressionContext.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/FieldErrorCollection.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Dashlet.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Connector.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Tooltip.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Audit.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/FindDuplicates.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/MergeDuplicates.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/DragdropAttachments.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/FileDragoff.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Dropdown.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/EllipsisInline.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ListColumnEllipsis.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ReorderableColumns.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/jquery/sugar.resizableColumns.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ResizableColumns.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ToggleMoreLess.js' => 'include/javascript/sugar_sidecar.min.js', 'modules/Contacts/clients/base/plugins/ContactsPortalMetadataFilter.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/HistoricalSummary.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/MetadataEventDriven.js' => 'include/javascript/sugar_sidecar.min.js', 'modules/Forecasts/clients/base/plugins/DisableDelete.js' => 'include/javascript/sugar_sidecar.min.js', 'modules/Forecasts/clients/base/plugins/DisableMassDelete.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/MassQuote.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Taggable.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/RelativeTime.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ErrorDecoration.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/QuickSearchFilter.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ClickToEdit.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/GridBuilder.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ListDisableSort.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Editable.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ListEditable.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ListRemoveLinks.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/File.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/FieldDuplicate.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/LinkedModel.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ToggleVisibility.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Pagination.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/ShortcutSession.js' => 'include/javascript/sugar_sidecar.min.js', 'modules/Contacts/clients/base/lib/bean.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/DirtyCollection.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Prettify.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/Chart.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/EmailClientLaunch.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/VirtualCollection.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/SearchForMore.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/EditAllRecurrences.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/sugar7/plugins/AddAsInvitee.js' => 'include/javascript/sugar_sidecar.min.js', 'include/javascript/fuse/fuse.js' => 'include/javascript/sugar_sidecar.min.js')), $sugar_grp_portal2 = array_merge(array('sidecar/lib/jquery-placeholder/jquery.placeholder.js' => 'portal2/portal.min.js'), array('portal2/error.js' => 'portal2/portal.min.js', 'portal2/user.js' => 'portal2/portal.min.js', 'portal2/portal.js' => 'portal2/portal.min.js')), $sugar_grp_sugar7 = array('include/javascript/sugar7.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/bwc.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/utils.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/utils-filters.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/field.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/hacks.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/alert.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/language.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/help.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/hbs-helpers.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/underscore-mixins.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/filter-analytics.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/metadata-manager.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/sweetspot.js' => 'include/javascript/sugar_grp7.min.js', 'include/javascript/sugar7/import-export-warnings.js' => 'include/javascript/sugar_grp7.min.js'), $sugar_grp_sugar7_portal2 = array('include/javascript/sugar7/bwc.js' => 'portal2/sugar_portal.min.js', 'include/javascript/sugar7/utils.js' => 'portal2/sugar_portal.min.js', 'include/javascript/sugar7/utils-filters.js' => 'portal2/sugar_portal.min.js', 'include/javascript/sugar7/field.js' => 'portal2/sugar_portal.min.js', 'include/javascript/sugar7/hacks.js' => 'portal2/sugar_portal.min.js', 'include/javascript/sugar7/alert.js' => 'portal2/sugar_portal.min.js', 'include/javascript/sugar7/hbs-helpers.js' => 'portal2/sugar_portal.min.js', 'include/javascript/sugar7/language.js' => 'portal2/portal.min.js', 'custom/include/javascript/voodoo.js' => 'portal2/sugar_portal.min.js'), $pmse_br = array('include/javascript/pmse/ui/utils.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/style.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/arraylist.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/base.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/proxy.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/element.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/sugar_proxy.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/expression_container.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/decision_table.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/data_item.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/single_item.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/list_item.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/close_list_item.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/item_container_control.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/field_panel_item.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/field_panel_button.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/field_panel_button_group.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/collapsible_panel.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/form_panel.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/list_panel.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/multiple_collapsible_panel.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/field_panel_item_factory.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/field_panel.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/dropdown_selector.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/ui/expression_builder2.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/utils.js' => 'include/javascript/pmse.br.min.js', 'include/javascript/pmse/business_rules.js' => 'include/javascript/pmse.br.min.js'), $pmse_designer = array('include/javascript/pmse/tree.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/drag_behavior.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/drop_behavior.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/shapes.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/flow.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/command.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/command_annotation_resize.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/command_single_property.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/container_behavior.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/resize_behavior.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/project.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/canvas.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/marker.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/event.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/gateway.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/activity.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/artifact.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/properties_grid.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/artifact_resize_behavior.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/command_default_flow.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/command_connection_condition.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/command_reconnect.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/pmtree.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/progrid.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/ErrorMessageItem.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/ListContainer.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/ErrorListItem.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/ErrorListPanel.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/utils.js' => 'include/javascript/pmse.designer.min.js', 'include/javascript/pmse/designer.js' => 'include/javascript/pmse.designer.min.js'), $pmse_et = array('include/javascript/pmse/email_template.js' => 'include/javascript/pmse.et.min.js'), $pmse_libraries = array('include/javascript/pmse/lib/jquery.layout-latest.js' => 'include/javascript/pmse.libraries.min.js'), $pmse_jcore = array('include/javascript/pmse/lib/jcore.js' => 'include/javascript/pmse.jcore.min.js'), $pmse_utils = array('include/javascript/pmse/utils.js' => 'include/javascript/pmse.utils.min.js'), $pmse_ui = array('include/javascript/pmse/ui/utils.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/style.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/arraylist.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/base.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/modal.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/proxy.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/element.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/container.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/window.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/action.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/menu.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/checkbox_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/separator_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/menu_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/layout.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/tooltip.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/form.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/field.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/validator.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/validator_types.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/field_types.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/button.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/rest_proxy.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/sugar_proxy.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/item_matrix.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/item_updater.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/html_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/store.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/grid.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/history_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/log_field.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/message_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/updater_field.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/note_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/reassign_field.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/reassign_form.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/data_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/single_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/list_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/item_container_control.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/field_panel_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/field_panel_button.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/field_panel_button_group.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/collapsible_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/form_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/list_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/multiple_collapsible_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/field_panel_item_factory.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/field_panel.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/multiple_item.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/email_picker.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/expression_builder2.js' => 'include/javascript/pmse.ui.min.js', 'include/javascript/pmse/ui/criteria_field.js' => 'include/javascript/pmse.ui.min.js'));
/**
 * Check for custom additions to this code
 */
if (!class_exists('SugarAutoLoader')) {
    // This block is required because this file could be called from a non-entrypoint (such as jssource/minify.php).
    require_once 'include/utils/autoloader.php';
    SugarAutoLoader::init();
}
foreach (SugarAutoLoader::existing("custom/jssource/JSGroupings.php", SugarAutoLoader::loadExtension("jsgroupings")) as $file) {
    require $file;
}
Exemple #16
0
$beanFiles['Subscription'] = 'modules/ActivityStream/Subscriptions/Subscription.php';
$modInvisList[] = 'Subscriptions';
$beanList['Filters'] = 'Filters';
$beanFiles['Filters'] = 'modules/Filters/Filters.php';
$modInvisList[] = 'Filters';
$beanList['Dashboards'] = 'Dashboard';
$beanFiles['Dashboard'] = 'modules/Dashboards/Dashboard.php';
$modInvisList[] = 'Dashboards';
//Object list is only here to correct for modules that break
//the bean class name == dictionary entry/object name convention
//No future module should need an entry here.
$objectList = array();
$objectList['Cases'] = 'Case';
$objectList['Groups'] = 'User';
$objectList['Users'] = 'User';
$objectList['ActivityStream/Activities'] = 'Activities';
$objectList['TrackerSessions'] = 'tracker_sessions';
$objectList['TrackerPerfs'] = 'tracker_perf';
$objectList['TrackerQueries'] = 'tracker_queries';
$objectList['TeamNotices'] = 'TeamNotices';
$beanList['PdfManager'] = 'PdfManager';
$beanFiles['PdfManager'] = 'modules/PdfManager/PdfManager.php';
$modInvisList[] = 'PdfManager';
$adminOnlyList['PdfManager'] = array('all' => 1);
// TODO: this definition should be grouped with all the others definitions like $beanList, $beanFiles and so on
$bwcModules = array('ACLFields', 'ACLRoles', 'ACLActions', 'Administration', 'Audit', 'Calendar', 'CampaignLog', 'Campaigns', 'CampaignTrackers', 'Charts', 'Configurator', 'Contracts', 'ContractTypes', 'Connectors', 'Currencies', 'CustomQueries', 'DataSets', 'DocumentRevisions', 'Documents', 'EAPM', 'EmailAddresses', 'EmailMarketing', 'EmailMan', 'Emails', 'EmailTemplates', 'Employees', 'Exports', 'Expressions', 'Groups', 'History', 'Holidays', 'iCals', 'Import', 'InboundEmail', 'KBContents', 'KBDocuments', 'KBDocumentRevisions', 'KBTags', 'KBDocumentKBTags', 'KBContents', 'Manufacturers', 'MergeRecords', 'ModuleBuilder', 'MySettings', 'OAuthKeys', 'OAuthTokens', 'OptimisticLock', 'OutboundEmailConfiguration', 'PdfManager', 'ProductBundleNotes', 'ProductBundles', 'ProductTypes', 'Project', 'ProjectResources', 'ProjectTask', 'Quotas', 'Quotes', 'QueryBuilder', 'Relationships', 'Releases', 'ReportMaker', 'Reports', 'Roles', 'SavedSearch', 'Schedulers', 'SchedulersJobs', 'Shippers', 'SNIP', 'Studio', 'SugarFavorites', 'TaxRates', 'Teams', 'TeamMemberships', 'TeamSets', 'TeamSetModules', 'TeamNotices', 'TimePeriods', 'Trackers', 'TrackerSessions', 'TrackerPerfs', 'TrackerQueries', 'UserPreferences', 'UserSignatures', 'Users', 'vCals', 'vCards', 'Versions', 'WorkFlow', 'WorkFlowActions', 'WorkFlowActionShells', 'WorkFlowAlerts', 'WorkFlowAlertShells', 'WorkFlowTriggerShells');
// this module doesn't need a Bean
$modInvisList[] = 'Feedbacks';
foreach (SugarAutoLoader::existing('include/modules_override.php', SugarAutoLoader::loadExtension("modules")) as $modExtFile) {
    include $modExtFile;
}
 /**
  * Retrieve the subpanel definitions for a given SugarBean object. Unforunately we can't reuse
  * any of the SubPanelDefinion.php functions.
  *
  * @param  SugarBean $bean
  * @return array The subpanel definitions.
  */
 private function getSubpanelDefs($bean)
 {
     if (empty($bean->module_dir)) {
         return array();
     }
     $layout_defs = array();
     // Handle things differently for BWC modules
     if (isModuleBWC($bean->module_dir)) {
         foreach (SugarAutoLoader::existingCustom('modules/' . $bean->module_dir . '/metadata/subpaneldefs.php') as $file) {
             require $file;
         }
         $defs = SugarAutoLoader::loadExtension('layoutdefs', $bean->module_dir);
         if ($defs) {
             require $defs;
         }
     } else {
         // Handle things the new way
         foreach (SugarAutoLoader::existingCustom('modules/' . $bean->module_dir . '/clients/base/layouts/subpanels/subpanels.php') as $file) {
             require $file;
         }
         // Add in any studio customizations
         $ext = 'custom/modules/' . $bean->module_dir . '/Ext/clients/base/layouts/subpanels/subpanels.ext.php';
         if (SugarAutoLoader::fileExists($ext)) {
             require $ext;
         }
         // Massage defs to look like old style for use in the rename process
         if (isset($viewdefs[$bean->module_dir]['base']['layout']['subpanels']['components'])) {
             $layout_defs = $this->getSidecarSubpanelDefsAsLegacy($viewdefs[$bean->module_dir]['base']['layout']['subpanels']['components'], $bean);
         }
     }
     return isset($layout_defs[$bean->module_dir]['subpanel_setup']) ? $layout_defs[$bean->module_dir]['subpanel_setup'] : $layout_defs;
 }
 private static function getModuleDependencyMetadata($module)
 {
     /* //Disable caching for now
        $cacheLoc = create_cache_directory("modules/$module/dependencies.php");
        //If the cache file exists, use it.
        if(inDeveloperMode() && empty($_SESSION['developerMode']) && is_file($cacheLoc)) {
            include($cacheLoc);
        }
        //Otherwise load all the def locations and create the cache file.
        else {
        */
     $dependencies = array($module => array());
     foreach (SugarAutoLoader::existingCustom("modules/{$module}/metadata/dependencydefs.php") as $loc) {
         require $loc;
     }
     $defs = SugarAutoLoader::loadExtension("dependencies", $module);
     if ($defs) {
         require $defs;
     }
     /*  //More disabled cache code
             $out = "<?php\n // created: " . date('Y-m-d H:i:s') . "\n"
                  . override_value_to_string('dependencies', $module, $dependencies[$module]);
             file_put_contents($cacheLoc, $out);
         }*/
     return $dependencies[$module];
 }
Exemple #19
0
 /**
  * Search for bwc modules which are not related to core bwc modules
  *
  * @return array
  */
 protected function getNotCoreBwcModules()
 {
     // Because of 6_ScanModules.php we should find core BWC modules in some specific way.
     $bwcModules = array();
     include 'include/modules.php';
     $coreBwcModules = $bwcModules;
     foreach (SugarAutoLoader::existing('include/modules_override.php', SugarAutoLoader::loadExtension("modules")) as $modExtFile) {
         $bwcModules = array();
         include $modExtFile;
         foreach ($bwcModules as $module) {
             $key = array_search($module, $coreBwcModules);
             if ($key !== false) {
                 unset($coreBwcModules[$key]);
             }
         }
     }
     return array_diff($GLOBALS['bwcModules'], $coreBwcModules);
 }
 /**
  * Given a module, search all of the specified locations, and any others as specified
  * in order to refresh the cache file
  *
  * @param string $module the given module we want to load the vardefs for
  * @param string $object the given object we wish to load the vardefs for
  * @param array $additional_search_paths an array which allows a consumer to pass in additional vardef locations to search
  */
 static function refreshVardefs($module, $object, $additional_search_paths = null, $cacheCustom = true, $params = array())
 {
     // Some of the vardefs do not correctly define dictionary as global.  Declare it first.
     global $dictionary, $beanList;
     // some tests do new SugarBean(), we can't do much with it here.
     if (empty($module)) {
         return;
     }
     $guard_name = "{$module}:{$object}";
     if (isset(self::$inReload[$guard_name])) {
         self::$inReload[$guard_name]++;
         if (self::$inReload[$guard_name] > 2) {
             return;
         }
     } else {
         self::$inReload[$guard_name] = 1;
     }
     $vardef_paths = array('modules/' . $module . '/vardefs.php', SugarAutoLoader::loadExtension("vardefs", $module), 'custom/Extension/modules/' . $module . '/Ext/Vardefs/vardefs.php');
     // Add in additional search paths if they were provided.
     if (!empty($additional_search_paths) && is_array($additional_search_paths)) {
         $vardef_paths = array_merge($vardef_paths, $additional_search_paths);
     }
     $found = false;
     //search a predefined set of locations for the vardef files
     foreach (SugarAutoLoader::existing($vardef_paths) as $path) {
         require $path;
         $found = true;
     }
     if (!empty($params['bean'])) {
         $bean = $params['bean'];
     } else {
         if (!empty($dictionary[$object])) {
             // to avoid extra refresh - we'll fill it in later
             if (!isset($GLOBALS['dictionary'][$object]['related_calc_fields'])) {
                 $GLOBALS['dictionary'][$object]['related_calc_fields'] = array();
             }
         }
         // we will instantiate here even though dictionary may not be there,
         // since in case somebody calls us with wrong module name we need bean
         // to get $module_dir. This may cause a loop but since the second call will
         // have the right module name the loop should be short.
         $bean = BeanFactory::newBean($module);
     }
     //Some modules have multiple beans, we need to see if this object has a module_dir that is different from its module_name
     if (!$found) {
         if ($bean instanceof SugarBean) {
             $object_name = BeanFactory::getObjectName($bean->module_dir);
             if ($bean->module_dir != $bean->module_name && !empty($object_name)) {
                 unset($params["bean"]);
                 // don't pass this bean down - it may be wrong bean for that module
                 self::refreshVardefs($bean->module_dir, $object_name, $additional_search_paths, $cacheCustom, $params);
             }
         }
     }
     //Some modules like cases have a bean name that doesn't match the object name
     if (empty($dictionary[$object])) {
         $newName = BeanFactory::getObjectName($module);
         if (!empty($newName)) {
             $object = $newName;
         }
     }
     //load custom fields into the vardef cache
     if ($cacheCustom && !empty($GLOBALS['dictionary'][$object]['fields'])) {
         require_once "modules/DynamicFields/DynamicField.php";
         $df = new DynamicField($module);
         $df->buildCache($module, false);
     }
     // if we are currently rebuilding the relationships, we don't want `updateRelCFModules` to be called
     // as it will fail when trying to look up relationships as they my have not been loaded into the
     // cache yet
     $rebuildingRelationships = isset($GLOBALS['buildingRelCache']) && $GLOBALS['buildingRelCache'] === true;
     if (empty($params['ignore_rel_calc_fields']) && $rebuildingRelationships === false) {
         self::updateRelCFModules($module, $object);
     }
     // Put ACLStatic into vardefs for beans supporting ACLs
     if (!empty($bean) && $bean instanceof SugarBean && !empty($dictionary[$object]) && !isset($dictionary[$object]['acls']['SugarACLStatic']) && $bean->bean_implements('ACL')) {
         $dictionary[$object]['acls']['SugarACLStatic'] = true;
     }
     //great! now that we have loaded all of our vardefs.
     //let's go save them to the cache file
     if (!empty($dictionary[$object])) {
         VardefManager::saveCache($module, $object);
         SugarBean::clearLoadedDef($object);
     }
     if (isset(self::$inReload[$guard_name])) {
         if (self::$inReload[$guard_name] > 1) {
             self::$inReload[$guard_name]--;
         } else {
             unset(self::$inReload[$guard_name]);
         }
     }
 }