The dashboard dashlet configuration is setup in two different arrays (ādashletsā and āpagesā) in user_preferences category āHomeā.
If you run this script in the root folder, it will add the XXXX dashlet to all users:
/**
*
* This script is in charge of adding the XXXXDashlet in the dashboard of all Users in the instance. If the dashboard already contains
* the dashlet, this function don't do anything.
*/
global $current_user;
$current_user = new User();
$current_user->getSystemUser();
$userEmptyBean = BeanFactory::getBean('Users');
$userBeanArray = $userEmptyBean->get_full_list();
$sticDashlet = array(
'className' => 'XXXXDashlet',
'module' => 'Home',
'options' => array(),
'fileLocation' => 'custom/modules/Home/Dashlets/XXXXDashlet/XXXXDashlet.php',
);
foreach ($userBeanArray as $userBean) {
$dashletId = false;
require_once 'modules/UserPreferences/UserPreference.php';
$userBean = new UserPreference($userBean);
$foundInDashlet = false;
$dashletArray = $userBean->getPreference('dashlets', 'Home');
foreach($dashletArray as $key => $dashlet) {
if ($dashlet['className'] === 'XXXXDashlet') {
$dashletId = $key;
$GLOBALS['log']->debug('Dashlet found in User dashboard');
break;
}
}
if (!$dashletId) {
$dashletId = create_guid();
$GLOBALS['log']->debug('Dashlet not found in Dashlet array. We will add it...');
$dashletArray[$dashletId]= $XXXXDashlet;
$userBean->setPreference('dashlets', $dashletArray, 'Home');
$GLOBALS['log']->debug('Dashlet added in Dashlet array');
}
$pages = $userBean->getPreference('pages', 'Home');
if (in_array($dashletId, $pages[0]['columns'][1]['dashlets'])) {
$GLOBALS['log']->debug('Dashlet found in Page array');
} else {
$GLOBALS['log']->debug('Dashlet not found in Page. We will add it...');
array_unshift($pages[0]['columns'][1]['dashlets'], $dashletId);
$userBean->setPreference('pages', $pages, 'Home');
$GLOBALS['log']->debug('Dashlet added in Page array');
}
$userBean->savePreferencesToDB();
}