Пример #1
0
 /**
  * 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();
 }
Пример #2
0
 /**
  * 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();
 }
Пример #3
0
 /**
  * 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);
 }
Пример #4
0
 /**
  * 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);
 }
Пример #5
0
 /**
  * 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;
 }