REF - Swap CRM_Utils_Array::collect with vanilla array_column
authorcolemanw <coleman@civicrm.org>
Sat, 16 Dec 2023 02:47:18 +0000 (21:47 -0500)
committercolemanw <coleman@civicrm.org>
Tue, 19 Dec 2023 02:26:17 +0000 (21:26 -0500)
The only difference between these functions (when only passed 2 params)
is the order of the params, and the fact that array_column does not preserve keys.
So CRM_Utils_Array::collect can be swapped out 1-1 with array_column anywhere
that the keys don't matter to the return value.

CRM/Case/BAO/CaseType.php
CRM/Contact/Form/Edit/TagsAndGroups.php
Civi/Api4/Action/Queue/RunItems.php
Civi/Api4/Generic/BasicReplaceAction.php
tests/phpunit/CRM/Activity/Form/Task/PDFTest.php

index 63d3dba55ac0c558178119f68ac7abf47b05dc16..cd63147e2b9e6671c5b77b57b6ea266e3dca9aa2 100644 (file)
@@ -456,8 +456,8 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType implements \Civi\Core\
       $caseType = new CRM_Case_DAO_CaseType();
       $caseType->id = $event->id;
       $refCounts = $caseType->getReferenceCounts();
-      $total = array_sum(CRM_Utils_Array::collect('count', $refCounts));
-      if (array_sum(CRM_Utils_Array::collect('count', $refCounts))) {
+      $total = array_sum(array_column($refCounts, 'count'));
+      if ($total) {
         throw new CRM_Core_Exception(ts("You can not delete this case type -- it is assigned to %1 existing case record(s). If you do not want this case type to be used going forward, consider disabling it instead.", [1 => $total]));
       }
     }
index fdc59e7b6e512c8fe59bf1e2ee81077960e64354..5851e8ab48ebb8097d12b1b8dc44e287c931a719 100644 (file)
@@ -171,7 +171,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups {
       $contactGroup = CRM_Contact_BAO_GroupContact::getContactGroup($id, 'Added', NULL, FALSE, TRUE, FALSE, TRUE, NULL, TRUE);
       if ($contactGroup) {
         if ($groupElementType == 'select') {
-          $defaults[$fName] = implode(',', CRM_Utils_Array::collect('group_id', $contactGroup));
+          $defaults[$fName] = implode(',', array_column($contactGroup, 'group_id'));
         }
         else {
           foreach ($contactGroup as $group) {
index e7e8bdbff784193cc2c9be88d7bbe4603ea58783..aa6c1827cb1ae573c05fda4020dffd27e7e9bd97 100644 (file)
@@ -56,7 +56,7 @@ class RunItems extends \Civi\Api4\Generic\AbstractAction {
     if (!empty($this->items)) {
       $this->validateItemStubs();
       $queue = \Civi::queue($this->items[0]['queue']);
-      $ids = \CRM_Utils_Array::collect('id', $this->items);
+      $ids = array_column($this->items, 'id');
       if (count($ids) > 1 && !($queue instanceof \CRM_Queue_Queue_BatchQueueInterface)) {
         throw new \CRM_Core_Exception("runItems: Error: Running multiple items requires BatchQueueInterface");
       }
index 9b83eb8f324d146a88d7a448a251de458b67dc4e..c9f3a3ee2c7d6de931b214f365a3497f8bb6bf7a 100644 (file)
@@ -95,7 +95,7 @@ class BasicReplaceAction extends AbstractBatchAction {
     }
 
     $idField = $this->getSelect()[0];
-    $toDelete = array_diff_key(array_column($items, NULL, $idField), array_flip(array_filter(\CRM_Utils_Array::collect($idField, $this->records))));
+    $toDelete = array_diff_key(array_column($items, NULL, $idField), array_flip(array_column($this->records, $idField)));
 
     $saveAction = \Civi\API\Request::create($this->getEntityName(), 'save', ['version' => 4]);
     $saveAction
index df6b24999a8d1ac1160e5f8c091620ec7292a854..d3fb7aa9462c3ffacb184eb15f5f93f5c8c3616a 100644 (file)
@@ -51,7 +51,7 @@ class CRM_Activity_Form_Task_PDFTest extends CiviUnitTestCase {
     $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => ['activityId']]);
 
     $this->assertEquals(array_merge($this->getActivityTokens(), CRM_Core_SelectValues::domainTokens()), $tokenProcessor->listTokens());
-    $html_message = "\n" . implode("\n", CRM_Utils_Array::collect('0', $data)) . "\n";
+    $html_message = "\n" . implode("\n", array_column($data, '0')) . "\n";
     $form = $this->getFormObject('CRM_Activity_Form_Task_PDF');
     try {
       $output = $form->createDocument([$activity['id']], $html_message, []);