File: /home/nexper/public_html/67.225.167.226/public_html/crm/modules/Dashboard/index.php
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
/*********************************************************************************
* SugarCRM is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004 - 2009 SugarCRM Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, see http://www.gnu.org/licenses or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
*
* 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".
********************************************************************************/
global $current_user, $sugar_version, $sugar_config, $image_path;
require_once('include/Sugar_Smarty.php');
require_once('include/MySugar/MySugar.php');
// build dashlet cache file if not found
if(!is_file('cache/dashlets/dashlets.php')) {
require_once('include/Dashlets/DashletCacheBuilder.php');
$dc = new DashletCacheBuilder();
$dc->buildCache();
}
require_once('cache/dashlets/dashlets.php');
require('modules/Dashboard/dashlets.php');
$pages = $current_user->getPreference('pages', 'Dashboard');
$dashlets = $current_user->getPreference('dashlets', 'Dashboard');
// BEGIN fill in with default homepage and dashlet selections
if(!isset($pages) || !isset($dashlets)) {
$dashboardDashlets = array();
//list of preferences to move over and to where
$prefstomove = array(
'mypbss_date_start' => 'MyPipelineBySalesStageDashlet',
'mypbss_date_end' => 'MyPipelineBySalesStageDashlet',
'mypbss_sales_stages' => 'MyPipelineBySalesStageDashlet',
'mypbss_chart_type' => 'MyPipelineBySalesStageDashlet',
'lsbo_lead_sources' => 'OpportunitiesByLeadSourceByOutcomeDashlet',
'lsbo_ids' => 'OpportunitiesByLeadSourceByOutcomeDashlet',
'pbls_lead_sources' => 'OpportunitiesByLeadSourceDashlet',
'pbls_ids' => 'OpportunitiesByLeadSourceDashlet',
'pbss_date_start' => 'PipelineBySalesStageDashlet',
'pbss_date_end' => 'PipelineBySalesStageDashlet',
'pbss_sales_stages' => 'PipelineBySalesStageDashlet',
'pbss_chart_type' => 'PipelineBySalesStageDashlet',
'obm_date_start' => 'OutcomeByMonthDashlet',
'obm_date_end' => 'OutcomeByMonthDashlet',
'obm_ids' => 'OutcomeByMonthDashlet');
// upgrading from pre-5.0 dashboard
// begin upgrade code
require_once('modules/Dashboard/Dashboard.php');
$dashboard = new Dashboard();
$old_dashboard = $dashboard->getUsersTopDashboard($current_user->id);
$dashboard_def = unserialize(from_html(from_html($old_dashboard->content)));
if (isset($dashboard_def)){
foreach($dashboard_def as $def){
if ($def['type'] == 'code'){
$dashboardDashletName = $dashboard->getDashletName($def['id']);
// clint - fixes bug #20398
// only display dashlets that are from visibile modules and that the user has permission to list
$myDashlet = new MySugar('Opportunities');
$displayDashlet = $myDashlet->checkDashletDisplay();
if (isset($dashletsFiles[$dashboardDashletName]) && $displayDashlet){
$options = array();
$prefsforthisdashlet = array_keys($prefstomove,$dashboardDashletName);
foreach ( $prefsforthisdashlet as $pref ) {
$options[$pref] = $current_user->getPreference($pref);
}
$dashboardDashlets[create_guid()] = array('className' => $dashboardDashletName,
'module' => 'Opportunities',
'fileLocation' => $dashletsFiles[$dashboardDashletName]['file'],
'options' => $options);
}
}
}
}
// end upgrade code
else{
foreach($defaultDashboardDashlets as $dashboardDashletName=>$module){
// clint - fixes bug #20398
// only display dashlets that are from visibile modules and that the user has permission to list
$myDashlet = new MySugar($module);
$displayDashlet = $myDashlet->checkDashletDisplay();
if (isset($dashletsFiles[$dashboardDashletName]) && $displayDashlet){
$options = array();
$prefsforthisdashlet = array_keys($prefstomove,$dashboardDashletName);
foreach ( $prefsforthisdashlet as $pref ) {
$options[$pref] = $current_user->getPreference($pref);
}
$dashboardDashlets[create_guid()] = array('className' => $dashboardDashletName,
'module' => $module,
'fileLocation' => $dashletsFiles[$dashboardDashletName]['file'],
'options' => $options,);
}
}
}
$count = 0;
$dashboardColumns = array();
$dashboardColumns[0] = array();
$dashboardColumns[0]['width'] = '60%';
$dashboardColumns[0]['dashlets'] = array();
$dashboardColumns[1] = array();
$dashboardColumns[1]['width'] = '40%';
$dashboardColumns[1]['dashlets'] = array();
foreach($dashboardDashlets as $guid=>$dashlet){
if($count % 2 == 0) array_push($dashboardColumns[0]['dashlets'], $guid);
else array_push($dashboardColumns[1]['dashlets'], $guid);
$count++;
}
$dashlets = $dashboardDashlets;
$current_user->setPreference('dashlets', $dashlets, 0, 'Dashboard');
}
if (empty($pages)){
$pages = array();
$pages[0]['columns'] = $dashboardColumns;
$pages[0]['numColumns'] = '2';
$pages[0]['pageTitle'] = $mod_strings['LBL_DASHBOARD_PAGE_1'];
$current_user->setPreference('pages', $pages, 0, 'Dashboard');
$activePage = 0;
}
$activePage = 0;
$divPages[] = $activePage;
$numCols = $pages[$activePage]['numColumns'];
$count = 0;
$dashletIds = array(); // collect ids to pass to javascript
$display = array();
foreach($pages[$activePage]['columns'] as $colNum => $column) {
if ($colNum == $numCols){
break;
}
$display[$colNum]['width'] = $column['width'];
$display[$colNum]['dashlets'] = array();
foreach($column['dashlets'] as $num => $id) {
if(!empty($id) && isset($dashlets[$id]) && is_file($dashlets[$id]['fileLocation'])) {
$module = 'Home';
if ( isset($dashletsFiles[$dashlets[$id]['className']]['module']) )
$module = $dashletsFiles[$dashlets[$id]['className']]['module'];
$myDashlet = new MySugar($module);
if($myDashlet->checkDashletDisplay()) {
require_once($dashlets[$id]['fileLocation']);
$dashlet = new $dashlets[$id]['className']($id, (isset($dashlets[$id]['options']) ? $dashlets[$id]['options'] : array()));
array_push($dashletIds, $id);
$dashlet->process();
$display[$colNum]['dashlets'][$id]['display'] = $dashlet->display();
if($dashlet->hasScript) {
$display[$colNum]['dashlets'][$id]['script'] = $dashlet->displayScript();
}
}
}
}
}
$sugar_smarty = new Sugar_Smarty();
if(!empty($sugar_config['lock_homepage']) && $sugar_config['lock_homepage'] == true) $sugar_smarty->assign('lock_homepage', true);
$sugar_smarty->assign('sugarVersion', $sugar_version);
$sugar_smarty->assign('sugarFlavor', $sugar_flavor);
$sugar_smarty->assign('currentLanguage', $GLOBALS['current_language']);
$sugar_smarty->assign('serverUniqueKey', $GLOBALS['server_unique_key']);
$sugar_smarty->assign('imagePath', $GLOBALS['image_path']);
$sugar_smarty->assign('jsCustomVersion', $sugar_config['js_custom_version']);
$sugar_smarty->assign('maxCount', empty($sugar_config['max_dashlets_homepage']) ? 15 : $sugar_config['max_dashlets_homepage']);
$sugar_smarty->assign('dashletCount', $count);
$sugar_smarty->assign('dashletIds', '["' . implode('","', $dashletIds) . '"]');
$sugar_smarty->assign('columns', $display);
global $theme;
$sugar_smarty->assign('theme', $theme);
$sugar_smarty->assign('divPages', $divPages);
$sugar_smarty->assign('activePage', $activePage);
$sugar_smarty->assign('current_user', $current_user->id);
$local_mod_strings = return_module_language($sugar_config['default_language'], 'Home');
$sugar_smarty->assign('lblAddDashlets', $GLOBALS['app_strings']['LBL_ADD_DASHLETS']);
$sugar_smarty->assign('lblLnkHelp', $GLOBALS['app_strings']['LNK_HELP']);
$sugar_smarty->assign('module', 'Dashboard');
echo $sugar_smarty->fetch('include/MySugar/tpls/MySugar.tpl');
?>