Ejemplo n.º 1
0
 /**
  * Export a Base64 PDF Report
  * @param SugarBean report
  * @return file contents
  */
 protected function exportBase64(ServiceBase $api, SugarBean $report)
 {
     global $beanList, $beanFiles;
     global $sugar_config, $current_language;
     require_once 'modules/Reports/templates/templates_pdf.php';
     $contents = '';
     $report_filename = false;
     if ($report->id != null) {
         //Translate pdf to correct language
         $reporter = new Report(html_entity_decode($report->content), '', '');
         $reporter->layout_manager->setAttribute("no_sort", 1);
         $reporter->fromApi = true;
         //Translate pdf to correct language
         $mod_strings = return_module_language($current_language, 'Reports');
         //Generate actual pdf
         $report_filename = template_handle_pdf($reporter, false);
         sugar_cache_put($report->id . '-' . $GLOBALS['current_user']->id, $report_filename, $this->cacheLength * 60);
         $dl = new DownloadFile();
         $contents = $dl->getFileByFilename($report_filename);
     }
     if (empty($contents)) {
         throw new SugarApiException('File contents empty.');
     }
     // Reply is raw just pass back the base64 encoded contents
     return base64_encode($contents);
 }
 /**
  * Takes in the request params from a save request and processes 
  * them for the save.
  *
  * @param REQUEST params  $params
  */
 function saveTabGroups($params)
 {
     $tabGroups = array();
     $selected_lang = !empty($params['dropdown_lang']) ? $params['dropdown_lang'] : $_SESSION['authenticated_user_language'];
     for ($count = 0; isset($params['slot_' . $count]); $count++) {
         if ($params['delete_' . $count] == 1) {
             continue;
         }
         $index = $params['slot_' . $count];
         $labelID = !empty($params['tablabelid_' . $index]) ? $params['tablabelid_' . $index] : 'LBL_GROUPTAB' . $count . '_' . time();
         $labelValue = $params['tablabel_' . $index];
         if (empty($GLOBALS['app_strings'][$labelID]) || $GLOBALS['app_strings'][$labelID] != $labelValue) {
             $contents = return_custom_app_list_strings_file_contents($selected_lang);
             $new_contents = replace_or_add_app_string($labelID, $labelValue, $contents);
             save_custom_app_list_strings_contents($new_contents, $selected_lang);
             $app_strings[$labelID] = $labelValue;
         }
         $tabGroups[$labelID] = array('label' => $labelID);
         $tabGroups[$labelID]['modules'] = array();
         for ($subcount = 0; isset($params[$index . '_' . $subcount]); $subcount++) {
             $tabGroups[$labelID]['modules'][] = $params[$index . '_' . $subcount];
         }
     }
     sugar_cache_put('app_strings', $GLOBALS['app_strings']);
     $newFile = create_custom_directory('include/tabConfig.php');
     write_array_to_file("GLOBALS['tabStructure']", $tabGroups, $newFile);
     $GLOBALS['tabStructure'] = $tabGroups;
 }
Ejemplo n.º 3
0
function LoadCachedArray($module_dir, $module, $key)
{
    global $moduleDefs, $fileName;
    $cache_key = "load_cached_array.{$module_dir}.{$module}.{$key}";
    $result = sugar_cache_retrieve($cache_key);
    if (!empty($result)) {
        // Use EXTERNAL_CACHE_NULL_VALUE to store null values in the cache.
        if ($result == EXTERNAL_CACHE_NULL_VALUE) {
            return null;
        }
        return $result;
    }
    if (file_exists('modules/' . $module_dir . '/' . $fileName)) {
        // If the data was not loaded, try loading again....
        if (!isset($moduleDefs[$module])) {
            include 'modules/' . $module_dir . '/' . $fileName;
            $moduleDefs[$module] = $fields_array;
        }
        // Now that we have tried loading, make sure it was loaded
        if (empty($moduleDefs[$module]) || empty($moduleDefs[$module][$module][$key])) {
            // It was not loaded....  Fail.  Cache null to prevent future repeats of this calculation
            sugar_cache_put($cache_key, EXTERNAL_CACHE_NULL_VALUE);
            return null;
        }
        // It has been loaded, cache the result.
        sugar_cache_put($cache_key, $moduleDefs[$module][$module][$key]);
        return $moduleDefs[$module][$module][$key];
    }
    // It was not loaded....  Fail.  Cache null to prevent future repeats of this calculation
    sugar_cache_put($cache_key, EXTERNAL_CACHE_NULL_VALUE);
    return null;
}
Ejemplo n.º 4
0
 /**
  * Load the view_<view>_config.php file which holds options used by the view.
  */
 function _loadConfig(&$view, $type)
 {
     $view_config_custom = array();
     $view_config_module = array();
     $view_config_root_cstm = array();
     $view_config_root = array();
     $view_config_app = array();
     $config_file_name = 'view.' . $type . '.config.php';
     $view_config = sugar_cache_retrieve("VIEW_CONFIG_FILE_" . $view->module . "_TYPE_" . $type);
     if (!$view_config) {
         $view_config_all = array('actions' => array(), 'req_params' => array());
         foreach (SugarAutoLoader::existingCustom('include/MVC/View/views/view.config.php', 'include/MVC/View/views/' . $config_file_name, 'modules/' . $view->module . '/views/' . $config_file_name) as $file) {
             $view_config = array();
             require $file;
             if (!empty($view_config['actions'])) {
                 $view_config_all['actions'] = array_merge($view_config_all['actions'], $view_config['actions']);
             }
             if (!empty($view_config['req_params'])) {
                 $view_config_all['req_params'] = array_merge($view_config_all['req_params'], $view_config['req_params']);
             }
         }
         $view_config = $view_config_all;
         sugar_cache_put("VIEW_CONFIG_FILE_" . $view->module . "_TYPE_" . $type, $view_config);
     }
     $action = strtolower($view->action);
     $config = null;
     if (!empty($view_config['req_params'])) {
         //try the params first
         foreach ($view_config['req_params'] as $key => $value) {
             if (!empty($_REQUEST[$key]) && $_REQUEST[$key] == "false") {
                 $_REQUEST[$key] = false;
             }
             if (!empty($_REQUEST[$key])) {
                 if (!is_array($value['param_value'])) {
                     if ($value['param_value'] == $_REQUEST[$key]) {
                         $config = $value['config'];
                         break;
                     }
                 } else {
                     foreach ($value['param_value'] as $v) {
                         if ($v == $_REQUEST[$key]) {
                             $config = $value['config'];
                             break;
                         }
                     }
                 }
             }
         }
     }
     if ($config == null && !empty($view_config['actions']) && !empty($view_config['actions'][$action])) {
         $config = $view_config['actions'][$action];
     }
     if ($config != null) {
         $view->options = $config;
     }
 }
Ejemplo n.º 5
0
 function handleOverride()
 {
     global $sugar_config, $sugar_version;
     $sc = SugarConfig::getInstance();
     list($oldConfig, $overrideArray) = $this->readOverride();
     $this->previous_sugar_override_config_array = $overrideArray;
     $diffArray = deepArrayDiff($this->config, $sugar_config);
     $overrideArray = sugarArrayMergeRecursive($overrideArray, $diffArray);
     if (isset($overrideArray['authenticationClass']) && empty($overrideArray['authenticationClass'])) {
         unset($overrideArray['authenticationClass']);
     }
     $overideString = "<?php\n/***CONFIGURATOR***/\n";
     sugar_cache_put('sugar_config', $this->config);
     $GLOBALS['sugar_config'] = $this->config;
     //print_r($overrideArray);
     //Bug#53013: Clean the tpl cache if action menu style has been changed.
     if (isset($overrideArray['enable_action_menu']) && (!isset($this->previous_sugar_override_config_array['enable_action_menu']) || $overrideArray['enable_action_menu'] != $this->previous_sugar_override_config_array['enable_action_menu'])) {
         require_once 'modules/Administration/QuickRepairAndRebuild.php';
         $repair = new RepairAndClear();
         $repair->module_list = array();
         $repair->clearTpls();
     }
     foreach ($overrideArray as $key => $val) {
         if (in_array($key, $this->allow_undefined) || isset($sugar_config[$key])) {
             if (is_string($val) && strcmp($val, 'true') == 0) {
                 $val = true;
                 $this->config[$key] = $val;
             }
             if (is_string($val) && strcmp($val, 'false') == 0) {
                 $val = false;
                 $this->config[$key] = false;
             }
         }
         $overideString .= override_value_to_string_recursive2('sugar_config', $key, $val, true, $oldConfig);
     }
     $overideString .= '/***CONFIGURATOR***/';
     $this->saveOverride($overideString);
     if (isset($this->config['logger']['level']) && $this->logger) {
         $this->logger->setLevel($this->config['logger']['level']);
     }
 }
 function handleOverride()
 {
     global $sugar_config, $sugar_version;
     $this->readOverride();
     foreach ($this->config as $key => $value) {
         if (in_array($key, $this->allow_undefined) || isset($sugar_config[$key]) && strcmp("{$sugar_config[$key]}", "{$value}") != 0) {
             if (strcmp("{$value}", 'true') == 0) {
                 $value = true;
                 $this->config[$key] = $value;
             }
             if (strcmp("{$value}", 'false') == 0) {
                 $value = false;
                 $this->config[$key] = false;
             }
             $this->replaceOverride('sugar_config', $key, $value);
         }
     }
     sugar_cache_put('sugar_config', $this->config);
     $GLOBALS['sugar_config'] = $this->config;
     $this->saveOverride();
 }
Ejemplo n.º 7
0
 /**
  * wrapper for whatever currency system we implement
  */
 function loadCurrencies()
 {
     // doing it dirty here
     global $db;
     global $sugar_config;
     if (empty($db)) {
         return array();
     }
     $load = sugar_cache_retrieve('currency_list');
     if (!is_array($load)) {
         // load default from config.php
         $this->currencies['-99'] = array('name' => $sugar_config['default_currency_name'], 'symbol' => $sugar_config['default_currency_symbol'], 'conversion_rate' => 1);
         $q = "SELECT id, name, symbol, conversion_rate FROM currencies WHERE status = 'Active' and deleted = 0";
         $r = $db->query($q);
         while ($a = $db->fetchByAssoc($r)) {
             $load = array();
             $load['name'] = $a['name'];
             $load['symbol'] = $a['symbol'];
             $load['conversion_rate'] = $a['conversion_rate'];
             $this->currencies[$a['id']] = $load;
         }
         sugar_cache_put('currency_list', $this->currencies);
     } else {
         $this->currencies = $load;
     }
 }
Ejemplo n.º 8
0
 /**
  * Get user datetime format.
  *
  * @param User $user user object, current user if not specified
  * @return string
  */
 public function get_date_time_format($user = null)
 {
     // BC fix - had (bool, user) signature before
     if (!$user instanceof User) {
         if (func_num_args() > 1) {
             $user = func_get_arg(1);
             if (!$user instanceof User) {
                 $user = null;
             }
         } else {
             $user = null;
         }
     }
     $cacheKey = $this->get_date_time_format_cache_key($user);
     $cachedValue = sugar_cache_retrieve($cacheKey);
     if (!empty($cachedValue)) {
         return $cachedValue;
     } else {
         $value = $this->merge_date_time($this->get_date_format($user), $this->get_time_format($user));
         sugar_cache_put($cacheKey, $value, 0);
         return $value;
     }
 }
Ejemplo n.º 9
0
 function loadModuleLanguage($module, $lang, $refresh = false)
 {
     //here check if the cache file exists, if it does then load it, if it doesn't
     //then call refreshVardef
     //if either our session or the system is set to developerMode then refresh is set to true
     // Retrieve the vardefs from cache.
     $key = self::getLanguageCacheKey($module, $lang);
     if (!$refresh) {
         $return_result = sugar_cache_retrieve($key);
         if (!empty($return_result) && is_array($return_result)) {
             return $return_result;
         }
     }
     // Some of the vardefs do not correctly define dictionary as global.  Declare it first.
     $cachedfile = sugar_cached('modules/') . $module . '/language/' . $lang . '.lang.php';
     if ($refresh || !file_exists($cachedfile)) {
         LanguageManager::refreshLanguage($module, $lang);
     }
     //at this point we should have the cache/modules/... file
     //which was created from the refreshVardefs so let's try to load it.
     if (file_exists($cachedfile)) {
         global $mod_strings;
         require $cachedfile;
         // now that we hae loaded the data from disk, put it in the cache.
         if (!empty($mod_strings)) {
             sugar_cache_put($key, $mod_strings);
         }
         if (!empty($_SESSION['translation_mode'])) {
             $mod_strings = array_map('translated_prefix', $mod_strings);
         }
         return $mod_strings;
     }
 }
Ejemplo n.º 10
0
 public function testBuildMergeLink()
 {
     $this->_lvd->seed = new stdClass();
     $this->_lvd->seed->module_dir = 'foobarfoobar';
     $GLOBALS['current_user']->setPreference('mailmerge_on', 'on');
     $settings_cache = sugar_cache_retrieve('admin_settings_cache');
     if (empty($settings_cache)) {
         $settings_cache = array();
     }
     $settings_cache['system_mailmerge_on'] = true;
     sugar_cache_put('admin_settings_cache', $settings_cache);
     $output = $this->_lvd->buildMergeLink(array('foobarfoobar' => 'foobarfoobar'));
     $this->assertContains("index.php?action=index&module=MailMerge&entire=true", $output);
     sugar_cache_clear('admin_settings_cache');
 }
Ejemplo n.º 11
0
 /**
  * checkDatabaseVersion
  * Check the db version sugar_version.php and compare to what the version is stored in the config table.
  * Ensure that both are the same.
  */
 function checkDatabaseVersion($dieOnFailure = true)
 {
     $row_count = sugar_cache_retrieve('checkDatabaseVersion_row_count');
     if (empty($row_count)) {
         $version_query = "SELECT count(*) as the_count FROM config WHERE category='info' AND name='sugar_version' AND " . $GLOBALS['db']->convert('value', 'text2char') . " = " . $GLOBALS['db']->quoted($GLOBALS['sugar_db_version']);
         $result = $GLOBALS['db']->query($version_query);
         $row = $GLOBALS['db']->fetchByAssoc($result);
         $row_count = $row['the_count'];
         sugar_cache_put('checkDatabaseVersion_row_count', $row_count);
     }
     if ($row_count == 0 && empty($GLOBALS['sugar_config']['disc_client'])) {
         if ($dieOnFailure) {
             $replacementStrings = array(0 => $GLOBALS['sugar_version'], 1 => $GLOBALS['sugar_db_version']);
             sugar_die(string_format($GLOBALS['app_strings']['ERR_DB_VERSION'], $replacementStrings));
         } else {
             return false;
         }
     }
     return true;
 }
Ejemplo n.º 12
0
 public function testStoreAndRetrieveWithTTL()
 {
     sugar_cache_put($this->_cacheKey1, $this->_cacheValue1, 100);
     sugar_cache_put($this->_cacheKey2, $this->_cacheValue2, 100);
     sugar_cache_put($this->_cacheKey3, $this->_cacheValue3, 100);
     $this->assertEquals($this->_cacheValue1, sugar_cache_retrieve($this->_cacheKey1));
     $this->assertEquals($this->_cacheValue2, sugar_cache_retrieve($this->_cacheKey2));
     $this->assertEquals($this->_cacheValue3, sugar_cache_retrieve($this->_cacheKey3));
 }
Ejemplo n.º 13
0
 /**
  * Generic load method to load mapping arrays.
  */
 private function loadMapping($var, $merge = false)
 {
     ${$var} = sugar_cache_retrieve("CONTROLLER_" . $var . "_" . $this->module);
     if (!${$var}) {
         if ($merge && !empty($this->{$var})) {
             ${$var} = $this->{$var};
         } else {
             ${$var} = [];
         }
         if (file_exists($path = DOCROOT . "include/MVC/Controller/{$var}.php")) {
             require $path;
         }
         if (file_exists($path = DOCROOT . "modules/{$this->module}/{$var}'.php")) {
             require $path;
         }
         if (file_exists($path = DOCROOT . "custom/modules/{$this->module}/{$var}.php")) {
             require $path;
         }
         if (file_exists($path = DOCROOT . "custom/include/MVC/Controller/{$var}.php")) {
             require $path;
         }
         $varname = str_replace(" ", "", ucwords(str_replace("_", " ", $var)));
         if (file_exists($path = DOCROOT . "custom/application/Ext/{$varname}/{$var}.ext.php")) {
             require $path;
         }
         if (file_exists($path = DOCROOT . "custom/modules/{$this->module}/Ext/{$varname}/{$var}.ext.php")) {
             require $path;
         }
         sugar_cache_put("CONTROLLER_" . $var . "_" . $this->module, ${$var});
     }
     $this->{$var} = ${$var};
 }
Ejemplo n.º 14
0
 static function getLinkTypes()
 {
     static $linkTypeList = null;
     // Fastest, already stored in the static variable
     if ($linkTypeList != null) {
         return $linkTypeList;
     }
     // Second fastest, stored in a cache somewhere
     $linkTypeList = sugar_cache_retrieve('SugarFeedLinkType');
     if ($linkTypeList != null) {
         return $linkTypeList;
     }
     // Third fastest, already stored in a file
     if (file_exists($GLOBALS['sugar_config']['cache_dir'] . 'modules/SugarFeed/linkTypeCache.php')) {
         require_once $GLOBALS['sugar_config']['cache_dir'] . 'modules/SugarFeed/linkTypeCache.php';
         sugar_cache_put('SugarFeedLinkType', $linkTypeList);
         return $linkTypeList;
     }
     // Slow, have to actually collect the data
     $baseDirs = array('custom/modules/SugarFeed/linkHandlers/', 'modules/SugarFeed/linkHandlers');
     $linkTypeList = array();
     foreach ($baseDirs as $dirName) {
         if (!file_exists($dirName)) {
             continue;
         }
         $d = dir($dirName);
         while ($file = $d->read()) {
             if ($file[0] == '.') {
                 continue;
             }
             if (substr($file, -4) == '.php') {
                 // We found one
                 $typeName = substr($file, 0, -4);
                 $linkTypeList[$typeName] = $typeName;
             }
         }
     }
     sugar_cache_put('SugarFeedLinkType', $linkTypeList);
     if (!file_exists($GLOBALS['sugar_config']['cache_dir'] . 'modules/SugarFeed')) {
         mkdir_recursive($GLOBALS['sugar_config']['cache_dir'] . 'modules/SugarFeed');
     }
     $fd = fopen($GLOBALS['sugar_config']['cache_dir'] . 'modules/SugarFeed/linkTypeCache.php', 'w');
     fwrite($fd, '<' . "?php\n\n" . '$linkTypeList = ' . var_export($linkTypeList, true) . ';');
     fclose($fd);
     return $linkTypeList;
 }
 function handleOverride()
 {
     global $sugar_config, $sugar_version;
     $sc = SugarConfig::getInstance();
     $overrideArray = $this->readOverride();
     $this->previous_sugar_override_config_array = $overrideArray;
     $diffArray = deepArrayDiff($this->config, $sugar_config);
     $overrideArray = sugarArrayMerge($overrideArray, $diffArray);
     $overideString = "<?php\n/***CONFIGURATOR***/\n";
     sugar_cache_put('sugar_config', $this->config);
     $GLOBALS['sugar_config'] = $this->config;
     foreach ($overrideArray as $key => $val) {
         if (in_array($key, $this->allow_undefined) || isset($sugar_config[$key])) {
             if (strcmp("{$val}", 'true') == 0) {
                 $val = true;
                 $this->config[$key] = $val;
             }
             if (strcmp("{$val}", 'false') == 0) {
                 $val = false;
                 $this->config[$key] = false;
             }
         }
         $overideString .= override_value_to_string_recursive2('sugar_config', $key, $val);
     }
     $overideString .= '/***CONFIGURATOR***/';
     $this->saveOverride($overideString);
     if (isset($this->config['logger']['level']) && $this->logger) {
         $this->logger->setLevel($this->config['logger']['level']);
     }
 }
Ejemplo n.º 16
0
 /**
  * @ticket 33283
  */
 public function testCheckDatabaseVersion()
 {
     if (isset($GLOBALS['sugar_db_version'])) {
         $old_sugar_db_version = $GLOBALS['sugar_db_version'];
     }
     if (isset($GLOBALS['sugar_version'])) {
         $old_sugar_version = $GLOBALS['sugar_version'];
     }
     include 'sugar_version.php';
     $GLOBALS['sugar_version'] = $sugar_version;
     // first test a valid value
     $GLOBALS['sugar_db_version'] = $sugar_db_version;
     $this->assertTrue($this->_app->checkDatabaseVersion(false));
     $GLOBALS['sugar_db_version'] = '1.1.1';
     // then test to see if we pull against the cache the valid value
     $this->assertTrue($this->_app->checkDatabaseVersion(false));
     // now retest to be sure we actually do the check again
     sugar_cache_put('checkDatabaseVersion_row_count', 0);
     $this->assertFalse($this->_app->checkDatabaseVersion(false));
     if (isset($old_sugar_db_version)) {
         $GLOBALS['sugar_db_version'] = $old_sugar_db_version;
     }
     if (isset($old_sugar_version)) {
         $GLOBALS['sugar_version'] = $old_sugar_version;
     }
 }
Ejemplo n.º 17
0
 /**
  * checkDatabaseVersion
  * Check the db version sugar_version.php and compare to what the version is stored in the config table.
  * Ensure that both are the same.
  */
 function checkDatabaseVersion($dieOnFailure = true)
 {
     $row_count = sugar_cache_retrieve('checkDatabaseVersion_row_count');
     if (empty($row_count)) {
         global $sugar_db_version;
         $version_query = 'SELECT count(*) as the_count FROM config WHERE category=\'info\' AND name=\'sugar_version\'';
         if ($GLOBALS['db']->dbType == 'oci8') {
         } else {
             if ($GLOBALS['db']->dbType == 'mssql') {
                 $version_query .= " AND CAST(value AS varchar(8000)) = '{$sugar_db_version}'";
             } else {
                 $version_query .= " AND value = '{$sugar_db_version}'";
             }
         }
         $result = $GLOBALS['db']->query($version_query);
         $row = $GLOBALS['db']->fetchByAssoc($result, -1, true);
         $row_count = $row['the_count'];
         sugar_cache_put('checkDatabaseVersion_row_count', $row_count);
     }
     if ($row_count == 0 && empty($GLOBALS['sugar_config']['disc_client'])) {
         $sugar_version = $GLOBALS['sugar_version'];
         if ($dieOnFailure) {
             sugar_die("Sugar CRM {$sugar_version} Files May Only Be Used With A Sugar CRM {$sugar_db_version} Database.");
         } else {
             return false;
         }
     }
     return true;
 }
Ejemplo n.º 18
0
 /**
  * load the vardefs for a given module and object
  * @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 bool   $refresh whether or not we wish to refresh the cache file.
  */
 static function loadVardef($module, $object, $refresh = false, $params = array())
 {
     //here check if the cache file exists, if it does then load it, if it doesn't
     //then call refreshVardef
     //if either our session or the system is set to developerMode then refresh is set to true
     if (inDeveloperMode() || !empty($_SESSION['developerMode'])) {
         $refresh = true;
     }
     // Retrieve the vardefs from cache.
     $key = "VardefManager.{$module}.{$object}";
     if (!$refresh) {
         $return_result = sugar_cache_retrieve($key);
         $return_result = self::applyGlobalAccountRequirements($return_result);
         if (!empty($return_result)) {
             $GLOBALS['dictionary'][$object] = $return_result;
             return;
         }
     }
     // Some of the vardefs do not correctly define dictionary as global.  Declare it first.
     global $dictionary;
     if (empty($GLOBALS['dictionary'][$object]) || $refresh) {
         //if the consumer has demanded a refresh or the cache/modules... file
         //does not exist, then we should do out and try to reload things
         $cachedfile = sugar_cached('modules/') . $module . '/' . $object . 'vardefs.php';
         if ($refresh || !file_exists($cachedfile)) {
             VardefManager::refreshVardefs($module, $object, null, true, $params);
         }
         //at this point we should have the cache/modules/... file
         //which was created from the refreshVardefs so let's try to load it.
         if (file_exists($cachedfile)) {
             if (is_readable($cachedfile)) {
                 include $cachedfile;
             }
             // now that we hae loaded the data from disk, put it in the cache.
             if (!empty($GLOBALS['dictionary'][$object])) {
                 $GLOBALS['dictionary'][$object] = self::applyGlobalAccountRequirements($GLOBALS['dictionary'][$object]);
                 sugar_cache_put($key, $GLOBALS['dictionary'][$object]);
             }
         }
     }
 }
Ejemplo n.º 19
0
 /**
  * Generic load method to load mapping arrays.
  */
 private function loadMapping($var, $merge = false)
 {
     ${$var} = sugar_cache_retrieve("CONTROLLER_" . $var . "_" . $this->module);
     if (!${$var}) {
         if ($merge && !empty($this->{$var})) {
             ${$var} = $this->{$var};
         } else {
             ${$var} = array();
         }
         if (file_exists('include/MVC/Controller/' . $var . '.php')) {
             require 'include/MVC/Controller/' . $var . '.php';
         }
         if (file_exists('modules/' . $this->module . '/' . $var . '.php')) {
             require 'modules/' . $this->module . '/' . $var . '.php';
         }
         if (file_exists('custom/modules/' . $this->module . '/' . $var . '.php')) {
             require 'custom/modules/' . $this->module . '/' . $var . '.php';
         }
         if (file_exists('custom/include/MVC/Controller/' . $var . '.php')) {
             require 'custom/include/MVC/Controller/' . $var . '.php';
         }
         // entry_point_registry -> EntryPointRegistry
         $varname = str_replace(" ", "", ucwords(str_replace("_", " ", $var)));
         if (file_exists("custom/application/Ext/{$varname}/{$var}.ext.php")) {
             require "custom/application/Ext/{$varname}/{$var}.ext.php";
         }
         if (file_exists("custom/modules/{$this->module}/Ext/{$varname}/{$var}.ext.php")) {
             require "custom/modules/{$this->module}/Ext/{$varname}/{$var}.ext.php";
         }
         sugar_cache_put("CONTROLLER_" . $var . "_" . $this->module, ${$var});
     }
     $this->{$var} = ${$var};
 }
Ejemplo n.º 20
0
 /**
  * Load the view_<view>_config.php file which holds options used by the view.
  */
 function _loadConfig(&$view, $type)
 {
     $view_config_custom = array();
     $view_config_module = array();
     $view_config_root_cstm = array();
     $view_config_root = array();
     $view_config_app = array();
     $config_file_name = 'view.' . $type . '.config.php';
     $view_config = sugar_cache_retrieve("VIEW_CONFIG_FILE_" . $view->module . "_TYPE_" . $type);
     if (!$view_config) {
         if (file_exists('custom/modules/' . $view->module . '/views/' . $config_file_name)) {
             require_once 'custom/modules/' . $view->module . '/views/' . $config_file_name;
             $view_config_custom = $view_config;
         }
         if (file_exists('modules/' . $view->module . '/views/' . $config_file_name)) {
             require_once 'modules/' . $view->module . '/views/' . $config_file_name;
             $view_config_module = $view_config;
         }
         if (file_exists('custom/include/MVC/View/views/' . $config_file_name)) {
             require_once 'custom/include/MVC/View/views/' . $config_file_name;
             $view_config_root_cstm = $view_config;
         }
         if (file_exists('include/MVC/View/views/' . $config_file_name)) {
             require_once 'include/MVC/View/views/' . $config_file_name;
             $view_config_root = $view_config;
         }
         if (file_exists('include/MVC/View/views/view.config.php')) {
             require_once 'include/MVC/View/views/view.config.php';
             $view_config_app = $view_config;
         }
         $view_config = array('actions' => array(), 'req_params' => array());
         //actions
         if (!empty($view_config_app) && !empty($view_config_app['actions'])) {
             $view_config['actions'] = array_merge($view_config['actions'], $view_config_app['actions']);
         }
         if (!empty($view_config_root) && !empty($view_config_root['actions'])) {
             $view_config['actions'] = array_merge($view_config['actions'], $view_config_root['actions']);
         }
         if (!empty($view_config_root_cstm) && !empty($view_config_root_cstm['actions'])) {
             $view_config['actions'] = array_merge($view_config['actions'], $view_config_root_cstm['actions']);
         }
         if (!empty($view_config_module) && !empty($view_config_module['actions'])) {
             $view_config['actions'] = array_merge($view_config['actions'], $view_config_module['actions']);
         }
         if (!empty($view_config_custom) && !empty($view_config_custom['actions'])) {
             $view_config['actions'] = array_merge($view_config['actions'], $view_config_custom['actions']);
         }
         //req_params
         if (!empty($view_config_app) && !empty($view_config_app['req_params'])) {
             $view_config['req_params'] = array_merge($view_config['req_params'], $view_config_app['req_params']);
         }
         if (!empty($view_config_root) && !empty($view_config_root['req_params'])) {
             $view_config['req_params'] = array_merge($view_config['req_params'], $view_config_root['req_params']);
         }
         if (!empty($view_config_root_cstm) && !empty($view_config_root_cstm['req_params'])) {
             $view_config['req_params'] = array_merge($view_config['req_params'], $view_config_root_cstm['req_params']);
         }
         if (!empty($view_config_module) && !empty($view_config_module['req_params'])) {
             $view_config['req_params'] = array_merge($view_config['req_params'], $view_config_module['req_params']);
         }
         if (!empty($view_config_custom) && !empty($view_config_custom['req_params'])) {
             $view_config['req_params'] = array_merge($view_config['req_params'], $view_config_custom['req_params']);
         }
         sugar_cache_put("VIEW_CONFIG_FILE_" . $view->module . "_TYPE_" . $type, $view_config);
     }
     $action = strtolower($view->action);
     $config = null;
     if (!empty($view_config['req_params'])) {
         //try the params first
         foreach ($view_config['req_params'] as $key => $value) {
             if (!empty($_REQUEST[$key]) && $_REQUEST[$key] == "false") {
                 $_REQUEST[$key] = false;
             }
             if (!empty($_REQUEST[$key])) {
                 if (!is_array($value['param_value'])) {
                     if ($value['param_value'] == $_REQUEST[$key]) {
                         $config = $value['config'];
                         break;
                     }
                 } else {
                     foreach ($value['param_value'] as $v) {
                         if ($v == $_REQUEST[$key]) {
                             $config = $value['config'];
                             break;
                         }
                     }
                 }
             }
         }
     }
     if ($config == null && !empty($view_config['actions']) && !empty($view_config['actions'][$action])) {
         $config = $view_config['actions'][$action];
     }
     if ($config != null) {
         $view->options = $config;
     }
 }
Ejemplo n.º 21
0
 function retrieveSettings($category = FALSE, $clean = false)
 {
     // declare a cache for all settings
     $settings_cache = sugar_cache_retrieve('admin_settings_cache');
     if ($clean) {
         $settings_cache = array();
     }
     // Check for a cache hit
     if (!empty($settings_cache)) {
         $this->settings = $settings_cache;
         return $this;
     }
     $query = "SELECT category, name, value FROM {$this->table_name}";
     $result = $this->db->query($query, true, "Unable to retrieve system settings");
     if (empty($result)) {
         return NULL;
     }
     while ($row = $this->db->fetchByAssoc($result, -1, true)) {
         if ($row['category'] . "_" . $row['name'] == 'ldap_admin_password' || $row['category'] . "_" . $row['name'] == 'proxy_password') {
             $this->settings[$row['category'] . "_" . $row['name']] = $this->decrypt_after_retrieve($row['value']);
         } else {
             $this->settings[$row['category'] . "_" . $row['name']] = $row['value'];
         }
     }
     // outbound email settings
     $oe = new OutboundEmail();
     $oe->getSystemMailerSettings();
     foreach ($oe->field_defs as $def) {
         if (strpos($def, "mail_") !== false) {
             $this->settings[$def] = $oe->{$def};
         }
     }
     // At this point, we have built a new array that should be cached.
     sugar_cache_put('admin_settings_cache', $this->settings);
     return $this;
 }
Ejemplo n.º 22
0
 /**
  * Destructor
  * Here we'll write out the internal file path caches to an external cache of some sort.
  */
 public function __destruct()
 {
     // Bug 28309 - Set the current directory to one which we expect it to be (i.e. the root directory of the install
     set_include_path(realpath(dirname(__FILE__) . '/../..') . PATH_SEPARATOR . get_include_path());
     chdir(realpath(dirname(__FILE__) . '/../..'));
     // Bug 30807/30808 - Re-setup the external cache since the object isn't there when calling this method.
     $GLOBALS['external_cache_checked'] = false;
     check_cache();
     // clear out the cache on destroy if we are asked to
     if ($this->_clearCacheOnDestroy) {
         if (is_file($GLOBALS['sugar_config']['cache_dir'] . $this->getFilePath() . '/pathCache.php')) {
             unlink($GLOBALS['sugar_config']['cache_dir'] . $this->getFilePath() . '/pathCache.php');
         }
         if ($GLOBALS['external_cache_enabled'] && $GLOBALS['external_cache_type'] != 'base-in-memory') {
             sugar_cache_clear('theme_' . $this->dirName . '_jsCache');
             sugar_cache_clear('theme_' . $this->dirName . '_cssCache');
             sugar_cache_clear('theme_' . $this->dirName . '_imageCache');
             sugar_cache_clear('theme_' . $this->dirName . '_templateCache');
         }
     } elseif (!inDeveloperMode()) {
         // push our cache into the sugar cache
         if ($GLOBALS['external_cache_enabled'] && $GLOBALS['external_cache_type'] != 'base-in-memory') {
             // only update the caches if they have been changed in this request
             if (count($this->_jsCache) != $this->_initialCacheSize['jsCache']) {
                 sugar_cache_put('theme_' . $this->dirName . '_jsCache', $this->_jsCache);
             }
             if (count($this->_cssCache) != $this->_initialCacheSize['cssCache']) {
                 sugar_cache_put('theme_' . $this->dirName . '_cssCache', $this->_cssCache);
             }
             if (count($this->_imageCache) != $this->_initialCacheSize['imageCache']) {
                 sugar_cache_put('theme_' . $this->dirName . '_imageCache', $this->_imageCache);
             }
             if (count($this->_templateCache) != $this->_initialCacheSize['templateCache']) {
                 sugar_cache_put('theme_' . $this->dirName . '_templateCache', $this->_templateCache);
             }
         } elseif (count($this->_jsCache) != $this->_initialCacheSize['jsCache'] || count($this->_cssCache) != $this->_initialCacheSize['cssCache'] || count($this->_imageCache) != $this->_initialCacheSize['imageCache'] || count($this->_templateCache) != $this->_initialCacheSize['templateCache']) {
             sugar_file_put_contents(create_cache_directory($this->getFilePath() . '/pathCache.php'), serialize(array('jsCache' => $this->_jsCache, 'cssCache' => $this->_cssCache, 'imageCache' => $this->_imageCache, 'templateCache' => $this->_templateCache)));
         }
     } elseif ($GLOBALS['external_cache_enabled']) {
         sugar_cache_clear('theme_' . $this->dirName . '_jsCache');
         sugar_cache_clear('theme_' . $this->dirName . '_cssCache');
         sugar_cache_clear('theme_' . $this->dirName . '_imageCache');
         sugar_cache_clear('theme_' . $this->dirName . '_templateCache');
     }
 }
Ejemplo n.º 23
0
 function getArrowImageSize()
 {
     // just get the non-sort image's size.. the up and down have be the same.
     $image = SugarThemeRegistry::current()->getImageURL("arrow.gif", false);
     $cache_key = 'arrow_size.' . $image;
     // Check the cache
     $result = sugar_cache_retrieve($cache_key);
     if (!empty($result)) {
         return $result;
     }
     // No cache hit.  Calculate the value and return.
     $result = getimagesize($image);
     sugar_cache_put($cache_key, $result);
     return $result;
 }
Ejemplo n.º 24
0
 /**
  * Saves the created strings
  *
  * Here, we cheat the system by storing our string overrides in the sugar_cache where
  * we normally stored the cached language strings.
  */
 public function save()
 {
     $language = $GLOBALS['current_language'];
     if (isset($this->_strings['app_strings'])) {
         $cache_key = 'app_strings.' . $language;
         $app_strings = sugar_cache_retrieve($cache_key);
         if (empty($app_strings)) {
             $app_strings = return_application_language($language);
         }
         foreach ($this->_strings['app_strings'] as $key => $value) {
             $app_strings[$key] = $value;
         }
         sugar_cache_put($cache_key, $app_strings);
         $GLOBALS['app_strings'] = $app_strings;
     }
     if (isset($this->_strings['app_list_strings'])) {
         $cache_key = 'app_list_strings.' . $language;
         $app_list_strings = sugar_cache_retrieve($cache_key);
         if (empty($app_list_strings)) {
             $app_list_strings = return_app_list_strings_language($language);
         }
         foreach ($this->_strings['app_list_strings'] as $key => $value) {
             $app_list_strings[$key] = $value;
         }
         sugar_cache_put($cache_key, $app_list_strings);
         $GLOBALS['app_list_strings'] = $app_list_strings;
     }
     if (isset($this->_strings['mod_strings'])) {
         foreach ($this->_strings['mod_strings'] as $module => $strings) {
             $cache_key = LanguageManager::getLanguageCacheKey($module, $language);
             $mod_strings = sugar_cache_retrieve($cache_key);
             if (empty($mod_strings)) {
                 $mod_strings = return_module_language($language, $module);
             }
             foreach ($strings as $key => $value) {
                 $mod_strings[$key] = $value;
             }
             sugar_cache_put($cache_key, $mod_strings);
             $GLOBALS['mod_strings'] = $mod_strings;
         }
     }
 }
Ejemplo n.º 25
0
 /**
  * Called from process(). This method will display the footer on the page.
  */
 public function displayFooter()
 {
     if (empty($this->responseTime)) {
         $this->_calculateFooterMetrics();
     }
     global $sugar_config;
     global $app_strings;
     global $mod_strings;
     $themeObject = SugarThemeRegistry::current();
     //decide whether or not to show themepicker, default is to show
     $showThemePicker = true;
     if (isset($sugar_config['showThemePicker'])) {
         $showThemePicker = $sugar_config['showThemePicker'];
     }
     echo "<!-- crmprint -->";
     $jsalerts = new jsAlerts();
     if (!isset($_SESSION['isMobile'])) {
         echo $jsalerts->getScript();
     }
     $ss = new Sugar_Smarty();
     $ss->assign("AUTHENTICATED", isset($_SESSION["authenticated_user_id"]));
     $ss->assign('MOD', return_module_language($GLOBALS['current_language'], 'Users'));
     $bottomLinkList = array();
     if (isset($this->action) && $this->action != "EditView") {
         $bottomLinkList['print'] = array($app_strings['LNK_PRINT'] => getPrintLink());
     }
     $bottomLinkList['backtotop'] = array($app_strings['LNK_BACKTOTOP'] => 'javascript:SUGAR.util.top();');
     $bottomLinksStr = "";
     foreach ($bottomLinkList as $key => $value) {
         foreach ($value as $text => $link) {
             $href = $link;
             if (substr($link, 0, 11) == "javascript:") {
                 $onclick = " onclick=\"" . substr($link, 11) . "\"";
                 $href = "javascript:void(0)";
             } else {
                 $onclick = "";
             }
             $imageURL = SugarThemeRegistry::current()->getImageURL($key . '.gif');
             $bottomLinksStr .= "<a href=\"{$href}\"";
             $bottomLinksStr .= isset($onclick) ? $onclick : "";
             $bottomLinksStr .= "><img src='{$imageURL}' alt=''>";
             //keeping alt blank on purpose for 508 (text will be read instead)
             $bottomLinksStr .= " " . $text . "</a>";
         }
     }
     $ss->assign("BOTTOMLINKS", $bottomLinksStr);
     if (SugarConfig::getInstance()->get('calculate_response_time', false)) {
         $ss->assign('STATISTICS', $this->_getStatistics());
     }
     // Under the License referenced above, you are required to leave in all copyright statements in both
     // the code and end-user application.
     $copyright = '&copy; 2004-2012 SugarCRM Inc. The Program is provided AS IS, without warranty.  Licensed under <a href="LICENSE.txt" target="_blank" class="copyRightLink">AGPLv3</a>.<br>This program is free software; you can redistribute it and/or modify it under the terms of the <br><a href="LICENSE.txt" target="_blank" class="copyRightLink"> GNU Affero General Public License version 3</a> as published by the Free Software Foundation, including the additional permission set forth in the source code header.<br>';
     // The interactive user interfaces in modified source and object code
     // versions of this program must display Appropriate Legal Notices, as
     // required under Section 5 of the GNU General Public License version
     // 3. In accordance with Section 7(b) of the GNU General Public License
     // version 3, these Appropriate Legal Notices must retain the display
     // of the "Powered by SugarCRM" logo. If the display of the logo is
     // not reasonably feasible for technical reasons, the Appropriate
     // Legal Notices must display the words "Powered by SugarCRM".
     $attribLinkImg = "<img style='margin-top: 2px' border='0' width='120' height='34' src='include/images/poweredby_sugarcrm_65.png' alt='Powered By SugarCRM'>\n";
     // handle resizing of the company logo correctly on the fly
     $companyLogoURL = $themeObject->getImageURL('company_logo.png');
     $companyLogoURL_arr = explode('?', $companyLogoURL);
     $companyLogoURL = $companyLogoURL_arr[0];
     $company_logo_attributes = sugar_cache_retrieve('company_logo_attributes');
     if (!empty($company_logo_attributes)) {
         $ss->assign("COMPANY_LOGO_MD5", $company_logo_attributes[0]);
         $ss->assign("COMPANY_LOGO_WIDTH", $company_logo_attributes[1]);
         $ss->assign("COMPANY_LOGO_HEIGHT", $company_logo_attributes[2]);
     } else {
         // Always need to md5 the file
         $ss->assign("COMPANY_LOGO_MD5", md5_file($companyLogoURL));
         list($width, $height) = getimagesize($companyLogoURL);
         if ($width > 212 || $height > 40) {
             $resizePctWidth = ($width - 212) / 212;
             $resizePctHeight = ($height - 40) / 40;
             if ($resizePctWidth > $resizePctHeight) {
                 $resizeAmount = $width / 212;
             } else {
                 $resizeAmount = $height / 40;
             }
             $ss->assign("COMPANY_LOGO_WIDTH", round($width * (1 / $resizeAmount)));
             $ss->assign("COMPANY_LOGO_HEIGHT", round($height * (1 / $resizeAmount)));
         } else {
             $ss->assign("COMPANY_LOGO_WIDTH", $width);
             $ss->assign("COMPANY_LOGO_HEIGHT", $height);
         }
         // Let's cache the results
         sugar_cache_put('company_logo_attributes', array($ss->get_template_vars("COMPANY_LOGO_MD5"), $ss->get_template_vars("COMPANY_LOGO_WIDTH"), $ss->get_template_vars("COMPANY_LOGO_HEIGHT")));
     }
     $ss->assign("COMPANY_LOGO_URL", getJSPath($companyLogoURL) . "&logo_md5=" . $ss->get_template_vars("COMPANY_LOGO_MD5"));
     // Bug 38594 - Add in Trademark wording
     $copyright .= 'SugarCRM is a trademark of SugarCRM, Inc. All other company and product names may be trademarks of the respective companies with which they are associated.<br />';
     //rrs bug: 20923 - if this image does not exist as per the license, then the proper image will be displayed regardless, so no need
     //to display an empty image here.
     if (file_exists('include/images/poweredby_sugarcrm_65.png')) {
         $copyright .= $attribLinkImg;
     }
     // End Required Image
     $ss->assign('COPYRIGHT', $copyright);
     // here we allocate the help link data
     $help_actions_blacklist = array('Login');
     // we don't want to show a context help link here
     if (!in_array($this->action, $help_actions_blacklist)) {
         $url = 'javascript:void(window.open(\'index.php?module=Administration&action=SupportPortal&view=documentation&version=' . $GLOBALS['sugar_version'] . '&edition=' . $GLOBALS['sugar_flavor'] . '&lang=' . $GLOBALS['current_language'] . '&help_module=' . $this->module . '&help_action=' . $this->action . '&key=' . $GLOBALS['server_unique_key'] . '\'))';
         $label = (isset($GLOBALS['app_list_strings']['moduleList'][$this->module]) ? $GLOBALS['app_list_strings']['moduleList'][$this->module] : $this->module) . ' ' . $app_strings['LNK_HELP'];
         $ss->assign('HELP_LINK', SugarThemeRegistry::current()->getLink($url, $label, "id='help_link_two'", 'help-dashlet.png', 'class="icon"', null, null, '', 'left'));
     }
     // end
     $ss->display(SugarThemeRegistry::current()->getTemplate('footer.tpl'));
 }
Ejemplo n.º 26
0
function set_register_value($category, $name, $value)
{
    return sugar_cache_put("{$category}:{$name}", $value);
}
Ejemplo n.º 27
0
 /**
  * static  getUserRoleNames($user_id)
  * returns a list of Role names for a given user id
  *
  * @param GUID $user_id
  *
  * @return a list of ACLRole Names
  */
 function getUserRoleNames($user_id)
 {
     $user_roles = sugar_cache_retrieve("RoleMembershipNames_" . $user_id);
     if (!$user_roles) {
         //if we don't have it loaded then lets check against the db
         $additional_where = '';
         $query = "SELECT acl_roles.* " . "FROM acl_roles " . "INNER JOIN acl_roles_users ON acl_roles_users.user_id = '{$user_id}' " . "AND acl_roles_users.role_id = acl_roles.id AND acl_roles_users.deleted = 0 " . "WHERE acl_roles.deleted=0 ";
         $result = $GLOBALS['db']->query($query);
         $user_roles = [];
         while ($row = $GLOBALS['db']->fetchByAssoc($result)) {
             $user_roles[] = $row['name'];
         }
         sugar_cache_put("RoleMembershipNames_" . $user_id, $user_roles);
     }
     return $user_roles;
 }
Ejemplo n.º 28
0
/** This function retrieves an application language file and returns the array of strings included in the $mod_list_strings var.
 * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
 * All Rights Reserved.
 * Contributor(s): ______________________________________..
 * If you are using the current language, do not call this function unless you are loading it for the first time */
function return_mod_list_strings_language($language, $module)
{
    global $mod_list_strings;
    global $sugar_config;
    global $currentModule;
    $cache_key = "mod_list_str_lang." . $language . $module;
    // Check for cached value
    $cache_entry = sugar_cache_retrieve($cache_key);
    if (!empty($cache_entry)) {
        return $cache_entry;
    }
    $language_used = $language;
    $temp_mod_list_strings = $mod_list_strings;
    $default_language = $sugar_config['default_language'];
    if ($currentModule == $module && isset($mod_list_strings) && $mod_list_strings != null) {
        return $mod_list_strings;
    }
    // cn: bug 6351 - include en_us if file langpack not available
    // cn: bug 6048 - merge en_us with requested language
    include "modules/{$module}/language/en_us.lang.php";
    $en_mod_list_strings = array();
    if ($language_used != $default_language) {
        $en_mod_list_strings = $mod_list_strings;
    }
    if (file_exists("modules/{$module}/language/{$language}.lang.php")) {
        include "modules/{$module}/language/{$language}.lang.php";
    }
    if (file_exists("modules/{$module}/language/{$language}.lang.override.php")) {
        include "modules/{$module}/language/{$language}.lang.override.php";
    }
    if (file_exists("modules/{$module}/language/{$language}.lang.php.override")) {
        echo 'Please Change:<br>' . "modules/{$module}/language/{$language}.lang.php.override" . '<br>to<br>' . 'Please Change:<br>' . "modules/{$module}/language/{$language}.lang.override.php";
        include "modules/{$module}/language/{$language}.lang.php.override";
    }
    // cn: bug 6048 - merge en_us with requested language
    $mod_list_strings = sugarArrayMerge($en_mod_list_strings, $mod_list_strings);
    // if we still don't have a language pack, then log an error
    if (!isset($mod_list_strings)) {
        $GLOBALS['log']->fatal("Unable to load the application list language file for the selected language({$language}) or the default language({$default_language}) for module({$module})");
        return null;
    }
    $return_value = $mod_list_strings;
    $mod_list_strings = $temp_mod_list_strings;
    sugar_cache_put($cache_key, $return_value);
    return $return_value;
}
Ejemplo n.º 29
0
 /**
  * @return boolean true if the user is a member of the role_name, false otherwise
  * @param string $role_name - Must be the exact name of the acl_role
  * @param string $user_id - The user id to check for the role membership, empty string if current user
  * @desc Determine whether or not a user is a member of an ACL Role. This function caches the
  *       results in the session or to prevent running queries after the first time executed.
  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
  * All Rights Reserved..
  * Contributor(s): ______________________________________..
  */
 function check_role_membership($role_name, $user_id = '')
 {
     global $current_user;
     if (empty($user_id)) {
         $user_id = $current_user->id;
     }
     // Check the Sugar External Cache to see if this users memberships were cached
     $role_array = sugar_cache_retrieve("RoleMemberships_" . $user_id);
     // If we are pulling the roles for the current user
     if ($user_id == $current_user->id) {
         // If the Session doesn't contain the values
         if (!isset($_SESSION['role_memberships'])) {
             // This means the external cache already had it loaded
             if (!empty($role_array)) {
                 $_SESSION['role_memberships'] = $role_array;
             } else {
                 $_SESSION['role_memberships'] = ACLRole::getUserRoleNames($user_id);
                 $role_array = $_SESSION['role_memberships'];
             }
         } else {
             $role_array = $_SESSION['role_memberships'];
         }
     } else {
         // If the external cache didn't contain the values, we get them and put them in cache
         if (!$role_array) {
             $role_array = ACLRole::getUserRoleNames($user_id);
             sugar_cache_put("RoleMemberships_" . $user_id, $role_array);
         }
     }
     // If the role doesn't exist in the list of the user's roles
     if (!empty($role_array) && in_array($role_name, $role_array)) {
         return true;
     } else {
         return false;
     }
 }
Ejemplo n.º 30
0
function getMeetingsExternalApiDropDown($focus = null, $name = null, $value = null, $view = null)
{
    global $dictionary, $app_list_strings;
    $cacheKeyName = 'meetings_type_drop_down';
    $apiList = sugar_cache_retrieve($cacheKeyName);
    if ($apiList === null) {
        require_once 'include/externalAPI/ExternalAPIFactory.php';
        $apiList = ExternalAPIFactory::getModuleDropDown('Meetings');
        $apiList = array_merge(array('Sugar' => $GLOBALS['app_list_strings']['eapm_list']['Sugar']), $apiList);
        sugar_cache_put($cacheKeyName, $apiList);
    }
    if (!empty($value) && empty($apiList[$value])) {
        $apiList[$value] = $value;
    }
    //bug 46294: adding list of options to dropdown list (if it is not the default list)
    if ($dictionary['Meeting']['fields']['type']['options'] != "eapm_list") {
        $apiList = array_merge(getMeetingTypeOptions($dictionary, $app_list_strings), $apiList);
    }
    return $apiList;
}