From 482963527ecedff442325a70afcf95ef8882d4a9 Mon Sep 17 00:00:00 2001
From: Jaap Jansma <jaap.jansma@civicoop.org>
Date: Fri, 5 May 2023 16:49:58 +0200
Subject: [PATCH] Regression fix dashlets not working anymore #122

---
 CHANGELOG.md                                           | 2 ++
 CRM/Contact/Selector/DataProcessorContactSearch.php    | 2 +-
 CRM/Dataprocessor/Form/Output/AbstractUIOutputForm.php | 8 +++++---
 CRM/DataprocessorDashlet/Form/Dashlet.php              | 7 ++++---
 CRM/DataprocessorSearch/Form/AbstractSearch.php        | 4 ++--
 5 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index a4a8cfed..a368a9fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
 # Version 1.70 (not yet released)
 
+* Regression fix dashlets not working anymore #122
+
 # Version 1.69
 
 * Fixed issue with expanded search form when hard limit is enabled.
diff --git a/CRM/Contact/Selector/DataProcessorContactSearch.php b/CRM/Contact/Selector/DataProcessorContactSearch.php
index 86240431..f7af8c95 100644
--- a/CRM/Contact/Selector/DataProcessorContactSearch.php
+++ b/CRM/Contact/Selector/DataProcessorContactSearch.php
@@ -44,7 +44,7 @@ class CRM_Contact_Selector_DataProcessorContactSearch {
       }
       $this->dataProcessorClass->getDataFlow()->addSort($sortField['name'], $sortDirection);
     }
-    CRM_Dataprocessor_Form_Output_AbstractUIOutputForm::applyLimit($this->dataProcessorClass, $formValues);
+    CRM_Dataprocessor_Form_Output_AbstractUIOutputForm::applyLimit($this->dataProcessorClass, $formValues, $this->dataProcessorOutput);
   }
 
   /**
diff --git a/CRM/Dataprocessor/Form/Output/AbstractUIOutputForm.php b/CRM/Dataprocessor/Form/Output/AbstractUIOutputForm.php
index 88ab305d..bf39efce 100644
--- a/CRM/Dataprocessor/Form/Output/AbstractUIOutputForm.php
+++ b/CRM/Dataprocessor/Form/Output/AbstractUIOutputForm.php
@@ -227,9 +227,10 @@ abstract class CRM_Dataprocessor_Form_Output_AbstractUIOutputForm extends CRM_Co
   /**
    * Returns the default row limit.
    *
+   * @param array|null $output
    * @return int
    */
-  protected static function getDefaultLimit(): int {
+  protected static function getDefaultLimit(array $output = null): int {
     return CRM_Utils_Pager::ROWCOUNT;
   }
 
@@ -260,12 +261,13 @@ abstract class CRM_Dataprocessor_Form_Output_AbstractUIOutputForm extends CRM_Co
    *
    * @param \Civi\DataProcessor\ProcessorType\AbstractProcessorType $dataProcessor
    * @param array|null $submittedValues
+   * @param array|null $output
    *
    * @return void
    */
-  public static function applyLimit(AbstractProcessorType $dataProcessor, array $submittedValues = null) {
+  public static function applyLimit(AbstractProcessorType $dataProcessor, array $submittedValues = null, array $output = null) {
     $hardLimit = static::getHardLimit($submittedValues);
-    $limit = static::getDefaultLimit();
+    $limit = static::getDefaultLimit($output);
     if (isset($submittedValues['crmRowCount']) && $submittedValues['crmRowCount']) {
       $limit = $submittedValues['crmRowCount'];
     }
diff --git a/CRM/DataprocessorDashlet/Form/Dashlet.php b/CRM/DataprocessorDashlet/Form/Dashlet.php
index f8e6c708..728d4f94 100644
--- a/CRM/DataprocessorDashlet/Form/Dashlet.php
+++ b/CRM/DataprocessorDashlet/Form/Dashlet.php
@@ -15,12 +15,13 @@ class CRM_DataprocessorDashlet_Form_Dashlet extends CRM_DataprocessorSearch_Form
   /**
    * Returns the default row limit.
    *
+   * @param array|null $output
    * @return int
    */
-  protected function getDefaultLimit(): int {
+  protected static function getDefaultLimit(array $output = null): int {
     $defaultLimit = 10;
-    if (!empty($this->dataProcessorOutput['configuration']['default_limit'])) {
-      $defaultLimit = $this->dataProcessorOutput['configuration']['default_limit'];
+    if (!empty($output['configuration']['default_limit'])) {
+      $defaultLimit = $output['configuration']['default_limit'];
     }
     return $defaultLimit;
   }
diff --git a/CRM/DataprocessorSearch/Form/AbstractSearch.php b/CRM/DataprocessorSearch/Form/AbstractSearch.php
index 20c6e875..37486224 100644
--- a/CRM/DataprocessorSearch/Form/AbstractSearch.php
+++ b/CRM/DataprocessorSearch/Form/AbstractSearch.php
@@ -310,7 +310,7 @@ abstract class CRM_DataprocessorSearch_Form_AbstractSearch extends CRM_Dataproce
       } elseif ($id_field) {
         $this->dataProcessorClass->getDataFlow()->addSort($id_field, 'ASC');
       }
-      static::applyLimit($this->dataProcessorClass, $this->_formValues);
+      static::applyLimit($this->dataProcessorClass, $this->_formValues, $this->dataProcessorOutput);
 
       $this->alterDataProcessor($this->dataProcessorClass);
       $this->dataProcessorClass->postInitialize();
@@ -437,7 +437,7 @@ abstract class CRM_DataprocessorSearch_Form_AbstractSearch extends CRM_Dataproce
     $params['total'] = 0;
     $params['status'] =E::ts('%%StatusMessage%%');
     $params['csvString'] = NULL;
-    $params['rowCount'] =  static::getDefaultLimit();
+    $params['rowCount'] =  static::getDefaultLimit($this->dataProcessorOutput);
     $params['buttonTop'] = 'PagerTopButton';
     $params['buttonBottom'] = 'PagerBottomButton';
     return $params;
-- 
GitLab