CRM-20430 - Permission 'save Report Criteria'.
authorJohan Vervloet <johanv@johanv.org>
Fri, 14 Apr 2017 12:16:50 +0000 (14:16 +0200)
committereileen <emcnaughton@wikimedia.org>
Fri, 8 Jun 2018 23:34:38 +0000 (11:34 +1200)
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
CRM/Report/BAO/ReportInstance.php
CRM/Report/Info.php
CRM/Upgrade/Incremental/php/FiveFour.php
tools/drupal/modules/civicrm_webtest/civicrm_webtest.install

index ee7b49f69d6fe2cc11fc7b84806da5d39c136da7..ff732084aa3efa97d215f9bb4be9c19b35065a81 100644 (file)
@@ -1470,6 +1470,9 @@ class CRM_Core_Permission {
       '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;
   }
 
index 0b254ee73cb239b696ff3f0aeb6fd57d2fff7402..a7dc5733cb44b26fb43adbe2e376f67caaef8480 100644 (file)
@@ -364,24 +364,35 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance {
    *  - 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'),
index 83cc3bbbe5d5c4e14f20970ca94843a4bfdcb76b..8d8c429a5deb3c57505cbaca3764f771bc772c75 100644 (file)
@@ -87,6 +87,10 @@ class CRM_Report_Info extends CRM_Core_Component_Info {
         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'),
index 128bba14f47c30df7e7f1c38b47d499d48f71fd2..ff1878b5a4c6300cb0d83280e9c42355e9920148 100644 (file)
@@ -55,6 +55,7 @@ class CRM_Upgrade_Incremental_php_FiveFour extends CRM_Upgrade_Incremental_Base
    *   an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs.
    */
   public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) {
+    $postUpgradeMessage .= '<p>' . 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')) . '</p>';
     // Example: Generate a post-upgrade message.
     // if ($rev == '5.12.34') {
     //   $postUpgradeMessage .= '<br /><br />' . 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'.");
index 307dbd72ff5b83d44178200bac9fd929c5756f58..cba6b799f2ac1cd26fea2ab948ad5325ad59f458 100644 (file)
@@ -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',