Merge pull request #2393 from yashodha/HR-252
[civicrm-core.git] / CRM / Report / BAO / ReportInstance.php
index c58477858473a5d1d4dfc18b44e0b4bc4e3e3ae4..a44debf1325964452ee53fa14504a365aa1eb1da 100644 (file)
@@ -2,7 +2,7 @@
 
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -68,10 +68,12 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
       );
     }
 
-    $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE);
+    if (!isset($params['id'])) {
+      $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE);
+    }
 
     $instanceID = CRM_Utils_Array::value('id', $params);
-    if (CRM_Utils_Array::value('instance_id', $params)) {
+    if (!empty($params['instance_id'])) {
       $instanceID = CRM_Utils_Array::value('instance_id', $params);
     }
 
@@ -90,7 +92,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
     }
 
     // explicitly set to null if params value is empty
-    if (empty($params['grouprole'])) {
+    if (!$instanceID && empty($params['grouprole'])) {
       $instance->grouprole = 'null';
     }
 
@@ -98,16 +100,19 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
       $instance->id = $instanceID;
     }
 
-    if ($reportID = CRM_Utils_Array::value('report_id', $params)) {
-      $instance->report_id = $reportID;
-    } else if ($instanceID) {
-      $instance->report_id = CRM_Report_Utils_Report::getValueFromUrl($instanceID);
-    } else {
-      // just take it from current url
-      $instance->report_id = CRM_Report_Utils_Report::getValueFromUrl();
+    if (! $instanceID) {
+      if ($reportID = CRM_Utils_Array::value('report_id', $params)) {
+        $instance->report_id = $reportID;
+      } else if ($instanceID) {
+        $instance->report_id = CRM_Report_Utils_Report::getValueFromUrl($instanceID);
+      } else {
+        // just take it from current url
+        $instance->report_id = CRM_Report_Utils_Report::getValueFromUrl();
+      }
     }
+
     $instance->save();
-    
+
     if ($instanceID) {
       CRM_Utils_Hook::pre('edit', 'ReportInstance', $instance->id, $instance);
     }
@@ -130,11 +135,15 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
    * @static
    */
   static function &create(&$params) {
-    $params['header']    = CRM_Utils_Array::value('report_header',$params);
-    $params['footer']    = CRM_Utils_Array::value('report_footer',$params);
+    if (isset($params['report_header'])) {
+      $params['header']    = CRM_Utils_Array::value('report_header',$params);
+    }
+    if (isset($params['report_footer'])) {
+      $params['footer']    = CRM_Utils_Array::value('report_footer',$params);
+    }
 
     // build navigation parameters
-    if (CRM_Utils_Array::value('is_navigation', $params)) {
+    if (!empty($params['is_navigation'])) {
       if (!array_key_exists('navigation', $params)) {
         $params['navigation'] = array();
       }
@@ -159,7 +168,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
 
     // add to dashboard
     $dashletParams = array();
-    if (CRM_Utils_Array::value('addToDashboard', $params)) {
+    if (!empty($params['addToDashboard'])) {
       $dashletParams = array(
         'label' => $params['title'],
         'is_active' => 1,
@@ -179,15 +188,13 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
 
     // add / update navigation as required
     if (!empty($navigationParams)) {
-      if (!CRM_Utils_Array::value('id',$params) && 
-        !CRM_Utils_Array::value('instance_id',$params) && 
-        CRM_Utils_Array::value('id', $navigationParams)) {
+      if (empty($params['id']) && empty($params['instance_id']) && !empty($navigationParams['id'])) {
         unset($navigationParams['id']);
       }
       $navigationParams['url'] = "civicrm/report/instance/{$instance->id}&reset=1";
       $navigation = CRM_Core_BAO_Navigation::add($navigationParams);
 
-      if (CRM_Utils_Array::value('is_active', $navigationParams)) {
+      if (!empty($navigationParams['is_active'])) {
         //set the navigation id in report instance table
         CRM_Core_DAO::setFieldValue('CRM_Report_DAO_ReportInstance', $instance->id, 'navigation_id', $navigation->id);
       }
@@ -203,7 +210,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
     if (!empty($dashletParams)) {
       $section = 2;
       $chart  = '';
-      if (CRM_Utils_Array::value('charts', $params)) {
+      if (!empty($params['charts'])) {
         $section = 1;
         $chart   = "&charts=" . $params['charts'];
       }