Where are saved dashlets for dashboard?

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();
}


3 Likes