mirror of
https://codeberg.org/artfulrobot/contactcats.git
synced 2025-06-25 23:38:06 +02:00
63 lines
1.8 KiB
PHP
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;
|
|
}
|
|
|
|
}
|