contactcats/Civi/Api4/Action/ContactCategoryDefinition/Get.php
2025-02-18 21:42:27 +00:00

63 lines
1.8 KiB
PHP

<?php
namespace Civi\Api4\Action\ContactCategoryDefinition;
use Civi\Api4\Generic\DAOGetAction;
use Civi\Api4\Generic\Result;
use Civi\Api4\Group;
use Civi\Api4\SavedSearch;
class Get extends DAOGetAction {
/**
* Whether to look up and return extra data, helpful for presentations.
*
* @var bool
*/
protected $withLabels = FALSE;
/**
*/
public function _run(Result $result) {
parent::_run($result);
$groupIDs = $searchIDs = [];
foreach ($result as $idx => $row) {
if ($row['search_type'] === 'group') {
$groupIDs[] = $row['search_data']['group_id'] ?? NULL;
}
elseif ($row['search_type'] === 'search') {
$searchIDs[] = $row['search_data']['saved_search_id'] ?? NULL;
}
}
$groupIDs = array_filter($groupIDs);
$searchIDs = array_filter($searchIDs);
if ($groupIDs) {
$groupNames = Group::get()
->addWhere('id', 'IN', $groupIDs)
->addSelect('title')
->execute()->indexBy('id')->column('title');
}
if ($searchIDs) {
$searchNames = SavedSearch::get()
->addWhere('id', 'IN', $searchIDs)
->addSelect('label')
->execute()->indexBy('id')->column('label');
}
if ($searchNames || $groupNames) {
foreach ($result as $row) {
if ($row['search_type'] === 'group'
&& !empty($groupNames[$row['search_data']['group_id'] ?? ''])
) {
$row['search_source'] = $groupNames[$row['search_data']['group_id'] ?? ''];
}
elseif (($row['search_type'] === 'search')
&& !empty($searchNames[$row['search_data']['saved_search_id'] ?? ''])
) {
$row['search_source'] = $searchNames[$row['search_data']['saved_search_id'] ?? ''];
}
}
}
$result[$idx] = $row;
}
}