/** * Run dashboard * * @return void * @access public */ function run() { CRM_Utils_System::setTitle(ts('Dashlets')); $this->assign('admin', CRM_Core_Permission::check('administer CiviCRM')); // get all dashlets $allDashlets = CRM_Core_BAO_Dashboard::getDashlets(FALSE); // get dashlets for logged in contact $currentDashlets = CRM_Core_BAO_Dashboard::getContactDashlets(); $contactDashlets = $availableDashlets = array(); foreach ($currentDashlets as $columnNo => $values) { foreach ($values as $val => $isMinimized) { list($weight, $dashletID) = explode('-', $val); $key = "{$dashletID}-{$isMinimized}"; $contactDashlets[$columnNo][$key] = array('label' => $allDashlets[$dashletID]['label'], 'is_reserved' => $allDashlets[$dashletID]['is_reserved']); unset($allDashlets[$dashletID]); } } foreach ($allDashlets as $dashletID => $values) { $key = "{$dashletID}-0"; $availableDashlets[$key] = array('label' => $values['label'], 'is_reserved' => $values['is_reserved']); } $this->assign('contactDashlets', $contactDashlets); $this->assign('availableDashlets', $availableDashlets); return parent::run(); }
/** * Run dashboard. */ public function run() { CRM_Utils_System::setTitle(ts('Dashlets')); $this->assign('admin', CRM_Core_Permission::check('administer CiviCRM')); // get all dashlets $allDashlets = CRM_Core_BAO_Dashboard::getDashlets(FALSE); // get dashlets for logged in contact $currentDashlets = CRM_Core_BAO_Dashboard::getContactDashlets(); $contactDashlets = $availableDashlets = array(); foreach ($currentDashlets as $item) { $key = "{$item['dashboard_id']}-0"; $contactDashlets[$item['column_no']][$key] = array('label' => $item['label'], 'is_reserved' => $allDashlets[$item['dashboard_id']]['is_reserved']); unset($allDashlets[$item['dashboard_id']]); } foreach ($allDashlets as $dashletID => $values) { $key = "{$dashletID}-0"; $availableDashlets[$key] = array('label' => $values['label'], 'is_reserved' => $values['is_reserved']); } $this->assign('contactDashlets', $contactDashlets); $this->assign('availableDashlets', $availableDashlets); return parent::run(); }
/** * Function to save changes made by use to the Dashlet * * @param array $columns associated array * * @return void * @access public * @static */ static function saveDashletChanges($columns) { $session = CRM_Core_Session::singleton(); $contactID = $session->get('userID'); // $columns = array( 0 => array( 2 => 0 ), // 1 => array( 1 => 0 ) // ); //we need to get existing dashletes, so we know when to update or insert $contactDashlets = CRM_Core_BAO_Dashboard::getContactDashlets(true); $dashletIDs = array(); if (is_array($columns)) { foreach ($columns as $colNo => $dashlets) { if (!is_integer($colNo)) { continue; } $weight = 1; foreach ($dashlets as $dashletID => $isMinimized) { $isMinimized = (int) $isMinimized; if (in_array($dashletID, $contactDashlets)) { $query = " UPDATE civicrm_dashboard_contact \n SET weight = {$weight}, is_minimized = {$isMinimized}, column_no = {$colNo}, is_active = 1\n WHERE dashboard_id = {$dashletID} AND contact_id = {$contactID} "; } else { $query = " INSERT INTO civicrm_dashboard_contact \n ( weight, is_minimized, column_no, is_active, dashboard_id, contact_id )\n VALUES( {$weight}, {$isMinimized}, {$colNo}, 1, {$dashletID}, {$contactID} )"; } // fire update query for each column $dao = CRM_Core_DAO::executeQuery($query); $dashletIDs[] = $dashletID; $weight++; } } } if (!empty($dashletIDs)) { // we need to disable widget that removed $updateQuery = " UPDATE civicrm_dashboard_contact \n SET is_active = 0\n WHERE dashboard_id NOT IN ( " . implode(',', $dashletIDs) . ") AND contact_id = {$contactID}"; } else { // this means all widgets are disabled $updateQuery = " UPDATE civicrm_dashboard_contact \n SET is_active = 0\n WHERE contact_id = {$contactID}"; } CRM_Core_DAO::executeQuery($updateQuery); }
/** * Function used for CiviCRM dashboard operations. */ public static function dashboard() { $operation = CRM_Utils_Type::escape($_REQUEST['op'], 'String'); switch ($operation) { case 'get_widgets_by_column': // This would normally be coming from either the database (this user's settings) or a default/initial dashboard configuration. // get contact id of logged in user $dashlets = CRM_Core_BAO_Dashboard::getContactDashlets(); break; case 'get_widget': $dashletID = CRM_Utils_Type::escape($_GET['id'], 'Positive'); $dashlets = CRM_Core_BAO_Dashboard::getDashletInfo($dashletID); break; case 'save_columns': CRM_Core_BAO_Dashboard::saveDashletChanges($_REQUEST['columns']); CRM_Utils_System::civiExit(); case 'delete_dashlet': $dashletID = CRM_Utils_Type::escape($_REQUEST['dashlet_id'], 'Positive'); CRM_Core_BAO_Dashboard::deleteDashlet($dashletID); CRM_Utils_System::civiExit(); } CRM_Utils_JSON::output($dashlets); }
/** * Function used for CiviCRM dashboard operations */ static function dashboard() { $operation = CRM_Utils_Type::escape($_REQUEST['op'], 'String'); switch ($operation) { case 'get_widgets_by_column': // This would normally be coming from either the database (this user's settings) or a default/initial dashboard configuration. // get contact id of logged in user require_once 'CRM/Core/BAO/Dashboard.php'; $dashlets = CRM_Core_BAO_Dashboard::getContactDashlets(); break; case 'get_widget': $dashletID = CRM_Utils_Type::escape($_GET['id'], 'Positive'); require_once 'CRM/Core/BAO/Dashboard.php'; $dashlets = CRM_Core_BAO_Dashboard::getDashletInfo($dashletID); break; case 'save_columns': require_once 'CRM/Core/BAO/Dashboard.php'; CRM_Core_BAO_Dashboard::saveDashletChanges($_POST['columns']); exit; case 'delete_dashlet': $dashletID = CRM_Utils_Type::escape($_POST['dashlet_id'], 'Positive'); require_once 'CRM/Core/BAO/Dashboard.php'; CRM_Core_BAO_Dashboard::deleteDashlet($dashletID); exit; } echo json_encode($dashlets); exit; }