From 1c641c629574f07c3dbe1954da61a3bba6d756fc Mon Sep 17 00:00:00 2001
From: Jaap Jansma <jaap.jansma@civicoop.org>
Date: Fri, 17 Feb 2023 11:21:29 +0100
Subject: [PATCH] * Fixed regression bugs.

---
 CHANGELOG.md                                  |  4 ++-
 .../Form/DataProcessorContactSearch.php       | 36 ++++++++++---------
 .../Form/DataProcessorContactSummaryTab.php   | 30 ++++++++--------
 info.xml                                      |  2 +-
 4 files changed, 38 insertions(+), 34 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 083de2fa..ab79a47d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,6 @@
-# Version 1.61 (not yet released)
+# Version 1.60.1
+
+* Fixed regression bugs.
 
 # Version 1.60
 
diff --git a/CRM/Contact/Form/DataProcessorContactSearch.php b/CRM/Contact/Form/DataProcessorContactSearch.php
index 113e8737..e593e48e 100644
--- a/CRM/Contact/Form/DataProcessorContactSearch.php
+++ b/CRM/Contact/Form/DataProcessorContactSearch.php
@@ -14,7 +14,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return string
    */
-  public function getDefaultEntity() {
+  public function getDefaultEntity(): string {
     return 'Contact';
   }
 
@@ -25,7 +25,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return array
    */
-  protected function alterDataProcessorOutput($output) {
+  protected function alterDataProcessorOutput($output): array {
     // link_to_view_contact option was added in 0.12. So we default to TRUE to match previous behaviour
     if (!isset($output['configuration']['link_to_view_contact'])) {
       $output['configuration']['link_to_view_contact'] = TRUE;
@@ -40,7 +40,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return string
    */
-  protected function link($row) {
+  protected function link($row): string {
     return CRM_Utils_System::url('civicrm/contact/view', 'reset=1&cid=' . $row['id']);
   }
 
@@ -51,7 +51,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return false|string
    */
-  protected function linkText($row) {
+  protected function linkText($row):? string {
     return E::ts('View contact');
   }
 
@@ -60,7 +60,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return bool
    */
-  protected function isConfigurationValid() {
+  protected function isConfigurationValid(): bool {
     if (!isset($this->dataProcessorOutput['configuration']['contact_id_field'])) {
       return false;
     }
@@ -72,9 +72,8 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return String
    */
-  protected function getDataProcessorName() {
-    $dataProcessorName = str_replace('civicrm/dataprocessor_contact_search/', '', CRM_Utils_System::currentPath());
-    return $dataProcessorName;
+  protected function getDataProcessorName(): string {
+    return str_replace('civicrm/dataprocessor_contact_search/', '', CRM_Utils_System::currentPath());
   }
 
 
@@ -83,7 +82,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return string
    */
-  protected function getOutputName() {
+  protected function getOutputName(): string {
     return 'contact_search';
   }
 
@@ -92,7 +91,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return string
    */
-  protected function getIdFieldName() {
+  public function getIdFieldName(): string {
     return $this->dataProcessorOutput['configuration']['contact_id_field'];
   }
 
@@ -100,7 +99,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    * @return string
    */
 
-  protected function getEntityTable() {
+  protected function getEntityTable(): string {
     return 'civicrm_contact';
   }
 
@@ -108,7 +107,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    * Returns whether we want to use the prevnext cache.
    * @return bool
    */
-  protected function usePrevNextCache() {
+  protected function usePrevNextCache(): bool {
     return true;
   }
 
@@ -119,7 +118,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    * @param array $ids
    *
    */
-  protected function alterRows(&$rows, $ids) {
+  protected function alterRows(array &$rows, array $ids) {
     $contactImages = array();
     // Add the contact type image
     if (count($ids)) {
@@ -129,9 +128,14 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
         foreach($rows as $idx => $row) {
           if ($row['id'] == $contactDao->id) {
             if (!isset($contactImages[$contactDao->id])) {
-              $contactImages[$contactDao->id] = CRM_Contact_BAO_Contact_Utils::getImage($contactDao->contact_sub_type ? $contactDao->contact_sub_type : $contactDao->contact_type,  FALSE, $contactDao->id);
+              try {
+                $contactImages[$contactDao->id] = CRM_Contact_BAO_Contact_Utils::getImage($contactDao->contact_sub_type ?: $contactDao->contact_type, FALSE, $contactDao->id);
+              } catch (CRM_Core_Exception $e) {
+              }
+            }
+            if (isset($contactImages[$contactDao->id])) {
+              $rows[$idx]['contact_type'] = $contactImages[$contactDao->id];
             }
-            $rows[$idx]['contact_type'] = $contactImages[$contactDao->id];
           }
         }
       }
@@ -143,7 +147,7 @@ class CRM_Contact_Form_DataProcessorContactSearch extends CRM_DataprocessorSearc
    *
    * @return array
    */
-  public function buildTaskList() {
+  public function buildTaskList(): array {
     if (!$this->_taskList) {
       $taskParams['deletedContacts'] = FALSE;
       $taskParams['ssID'] = $this->_ssID ?? NULL;
diff --git a/CRM/Contact/Form/DataProcessorContactSummaryTab.php b/CRM/Contact/Form/DataProcessorContactSummaryTab.php
index 7c62003f..483fa5ac 100644
--- a/CRM/Contact/Form/DataProcessorContactSummaryTab.php
+++ b/CRM/Contact/Form/DataProcessorContactSummaryTab.php
@@ -4,13 +4,9 @@
  * @license AGPL-3.0
  */
 
-use Civi\DataProcessor\DataFlow\SqlDataFlow;
-use Civi\DataProcessor\DataFlow\InMemoryDataFlow;
-use Civi\DataProcessor\DataFlow\SqlDataFlow\SimpleWhereClause;
 use Civi\DataProcessor\Exception\DataSourceNotFoundException;
 use Civi\DataProcessor\Exception\FieldNotFoundException;
 use Civi\DataProcessor\ProcessorType\AbstractProcessorType;
-use CRM_Dataprocessor_ExtensionUtil as E;
 
 class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorSearch_Form_AbstractSearch {
   public function buildQuickform() {
@@ -25,7 +21,7 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    *
    * @return int
    */
-  protected function getDefaultLimit() {
+  protected function getDefaultLimit(): int {
     $defaultLimit = 25;
     if (!empty($this->dataProcessorOutput['configuration']['default_limit'])) {
       $defaultLimit = $this->dataProcessorOutput['configuration']['default_limit'];
@@ -39,14 +35,14 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    *
    * @return string
    */
-  protected function getIdFieldName() {
+  public function getIdFieldName(): string {
     return false;
   }
 
   /**
    * @return false|string
    */
-  protected function getEntityTable() {
+  protected function getEntityTable():? string {
     return false;
   }
 
@@ -57,7 +53,7 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    *
    * @return false|string
    */
-  protected function link($row) {
+  protected function link($row):? string {
     return false;
   }
 
@@ -68,7 +64,7 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    *
    * @return false|string
    */
-  protected function linkText($row) {
+  protected function linkText($row):? string {
     return false;
   }
 
@@ -77,9 +73,8 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    *
    * @return String
    */
-  protected function getDataProcessorName() {
-    $dataProcessorName = str_replace('civicrm/dataprocessor_contact_summary/', '', CRM_Utils_System::currentPath());
-    return $dataProcessorName;
+  protected function getDataProcessorName(): string {
+    return str_replace('civicrm/dataprocessor_contact_summary/', '', CRM_Utils_System::currentPath());
   }
 
   /**
@@ -87,7 +82,7 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    *
    * @return string
    */
-  protected function getOutputName() {
+  protected function getOutputName(): string {
     return 'contact_summary_tab';
   }
 
@@ -96,7 +91,7 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    *
    * @return bool
    */
-  protected function isConfigurationValid() {
+  protected function isConfigurationValid(): bool {
     return TRUE;
   }
 
@@ -118,7 +113,10 @@ class CRM_Contact_Form_DataProcessorContactSummaryTab extends CRM_DataprocessorS
    * @param \Civi\DataProcessor\ProcessorType\AbstractProcessorType $dataProcessorClass
    */
   protected function alterDataProcessor(AbstractProcessorType $dataProcessorClass) {
-    $cid = CRM_Utils_Request::retrieveValue('contact_id', 'Integer', NULL, TRUE);
-    CRM_Contact_DataProcessorContactSummaryTab::alterDataProcessor($cid, $this->dataProcessorOutput, $dataProcessorClass);
+    try {
+      $cid = CRM_Utils_Request::retrieveValue('contact_id', 'Integer', NULL, TRUE);
+      CRM_Contact_DataProcessorContactSummaryTab::alterDataProcessor($cid, $this->dataProcessorOutput, $dataProcessorClass);
+    } catch (CRM_Core_Exception|DataSourceNotFoundException|FieldNotFoundException $e) {
+    }
   }
 }
diff --git a/info.xml b/info.xml
index b7254503..0dc729c0 100644
--- a/info.xml
+++ b/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-02-17</releaseDate>
-  <version>1.61-dev</version>
+  <version>1.60.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.41</ver>
-- 
GitLab