From 4341efe4e6b79572baae8e6331f4dba7e15a3407 Mon Sep 17 00:00:00 2001 From: Johan Vervloet Date: Fri, 14 Apr 2017 14:16:50 +0200 Subject: [PATCH] CRM-20430 - Permission 'save Report Criteria'. If you don't have the permission, the 'save report' actions aren't shown on the form of the report instance. CRM-20430 - Check 'save Report Criteria' permission before saving a report instance. Coding style issues. Added a pre-commit message about the new permission. --- CRM/Core/Permission.php | 3 ++ CRM/Report/BAO/ReportInstance.php | 33 ++++++++++++------- CRM/Report/Info.php | 4 +++ CRM/Upgrade/Incremental/php/FiveFour.php | 1 + .../civicrm_webtest/civicrm_webtest.install | 1 + 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/CRM/Core/Permission.php b/CRM/Core/Permission.php index ee7b49f69d6f..ff732084aa3e 100644 --- a/CRM/Core/Permission.php +++ b/CRM/Core/Permission.php @@ -1470,6 +1470,9 @@ public static function getEntityActionPermissions() { 'create' => array('edit message templates', 'edit user-driven message templates', 'edit system workflow message templates'), 'update' => array('edit message templates', 'edit user-driven message templates', 'edit system workflow message templates'), ); + + $permissions['report_template']['update'] = 'save Report Criteria'; + $permissions['report_template']['create'] = 'save Report Criteria'; return $permissions; } diff --git a/CRM/Report/BAO/ReportInstance.php b/CRM/Report/BAO/ReportInstance.php index 0b254ee73cb2..a7dc5733cb44 100644 --- a/CRM/Report/BAO/ReportInstance.php +++ b/CRM/Report/BAO/ReportInstance.php @@ -364,24 +364,35 @@ public static function doFormDelete($instanceId, $bounceTo = 'civicrm/report/lis * - general script-add. */ public static function getActionMetadata() { - $actions = array( - 'report_instance.save' => array('title' => ts('Save')), - 'report_instance.copy' => array( + $actions = array(); + if (CRM_Core_Permission::check('save Report Criteria')) { + $actions['report_instance.save'] = array('title' => ts('Save')); + $actions['report_instance.copy'] = array( 'title' => ts('Save a Copy'), 'data' => array( 'is_confirm' => TRUE, 'confirm_title' => ts('Save a copy...'), 'confirm_refresh_fields' => json_encode(array( - 'title' => array('selector' => '.crm-report-instanceForm-form-block-title', 'prepend' => ts('(Copy) ')), - 'description' => array('selector' => '.crm-report-instanceForm-form-block-description', 'prepend' => ''), - 'parent_id' => array('selector' => '.crm-report-instanceForm-form-block-parent_id', 'prepend' => ''), + 'title' => array( + 'selector' => '.crm-report-instanceForm-form-block-title', + 'prepend' => ts('(Copy) '), + ), + 'description' => array( + 'selector' => '.crm-report-instanceForm-form-block-description', + 'prepend' => '', + ), + 'parent_id' => array( + 'selector' => '.crm-report-instanceForm-form-block-parent_id', + 'prepend' => '', + ), )), ), - ), - 'report_instance.print' => array('title' => ts('Print Report')), - 'report_instance.pdf' => array('title' => ts('Print to PDF')), - 'report_instance.csv' => array('title' => ts('Export as CSV')), - ); + ); + } + $actions['report_instance.print'] = array('title' => ts('Print Report')); + $actions['report_instance.pdf'] = array('title' => ts('Print to PDF')); + $actions['report_instance.csv'] = array('title' => ts('Export as CSV')); + if (CRM_Core_Permission::check('administer Reports')) { $actions['report_instance.delete'] = array( 'title' => ts('Delete report'), diff --git a/CRM/Report/Info.php b/CRM/Report/Info.php index 83cc3bbbe5d5..8d8c429a5deb 100644 --- a/CRM/Report/Info.php +++ b/CRM/Report/Info.php @@ -87,6 +87,10 @@ public function getPermissions($getAllUnconditionally = FALSE, $descriptions = F ts('access Report Criteria'), ts('Change report search criteria'), ), + 'save Report Criteria' => array( + ts('save Report Criteria'), + ts('Save report search criteria'), + ), 'administer private reports' => array( ts('administer private reports'), ts('Edit all private reports'), diff --git a/CRM/Upgrade/Incremental/php/FiveFour.php b/CRM/Upgrade/Incremental/php/FiveFour.php index 128bba14f47c..ff1878b5a4c6 100644 --- a/CRM/Upgrade/Incremental/php/FiveFour.php +++ b/CRM/Upgrade/Incremental/php/FiveFour.php @@ -55,6 +55,7 @@ public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NU * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. */ public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { + $postUpgradeMessage .= '

' . ts('A new %1 permission has been added. It is not granted by default. If your users create reports, you may wish to review your permissions.', array(1 => 'save Report Criteria')) . '

'; // Example: Generate a post-upgrade message. // if ($rev == '5.12.34') { // $postUpgradeMessage .= '

' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'."); diff --git a/tools/drupal/modules/civicrm_webtest/civicrm_webtest.install b/tools/drupal/modules/civicrm_webtest/civicrm_webtest.install index 307dbd72ff5b..cba6b799f2ac 100644 --- a/tools/drupal/modules/civicrm_webtest/civicrm_webtest.install +++ b/tools/drupal/modules/civicrm_webtest/civicrm_webtest.install @@ -43,6 +43,7 @@ function civicrm_webtest_enable() { 'access deleted contacts', // 'access my cases and activities', 'access Report Criteria', + 'save Report Criteria', 'access uploaded files', // 'add cases', 'add contacts',