I just found this piece of code in 5.2.0a:
<?php
include/MVC/View/ViewFactory.php
//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['actions']))
$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']);
?>
It's all about this one line:
<?php
if(!empty($view_config_root_cstm) && !empty($view_config_root_cstm['actions']))
?>
Noticing the difference?
I traveled back a bit in subversion, and found that this shameless oversight has been in SugarCRM since it's move to MVC in 5.0, released January 5 2008. That means that no one has ever been able to use a custom global config view file in SugarCRM without hacking the core first.
SugarCRM obviously has never tested this functionality outside a development box or RC release. That fact leads me to suspect that there is no written test for this method. If there's no formal test, then the QA department that Sugar often mentions ("the patch is in QA now, expect a release soon!") does not include a formal testing method. At least not for the MVC framework. But then again, why should we care? Soon 5.5 will be here, with a password mailer. Eat that, SF.