Merge pull request #16872 from colemanw/arrayValue8
[civicrm-core.git] / Civi / Api4 / Generic / DAOGetAction.php
1 <?php
2
3 /*
4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC. All rights reserved. |
6 | |
7 | This work is published under the GNU AGPLv3 license with some |
8 | permitted exceptions and without any warranty. For full license |
9 | and copyright information, see https://civicrm.org/licensing |
10 +--------------------------------------------------------------------+
11 */
12
13 /**
14 *
15 * @package CRM
16 * @copyright CiviCRM LLC https://civicrm.org/licensing
17 * $Id$
18 *
19 */
20
21
22 namespace Civi\Api4\Generic;
23
24 use Civi\Api4\Query\Api4SelectQuery;
25
26 /**
27 * Retrieve $ENTITIES based on criteria specified in the `where` parameter.
28 *
29 * Use the `select` param to determine which fields are returned, defaults to `[*]`.
30 *
31 * Perform joins on other related entities using a dot notation.
32 */
33 class DAOGetAction extends AbstractGetAction {
34 use Traits\DAOActionTrait;
35
36 /**
37 * Fields to return. Defaults to all non-custom fields `[*]`.
38 *
39 * Use the dot notation to perform joins in the select clause, e.g. selecting `['*', 'contact.*']` from `Email::get()`
40 * will select all fields for the email + all fields for the related contact.
41 *
42 * @var array
43 * @inheritDoc
44 */
45 protected $select = [];
46
47 public function _run(Result $result) {
48 $this->setDefaultWhereClause();
49 $this->expandSelectClauseWildcards();
50 $result->exchangeArray($this->getObjects());
51 }
52
53 /**
54 * @return array|int
55 */
56 protected function getObjects() {
57 $query = new Api4SelectQuery($this);
58
59 $result = $query->run();
60 if (is_array($result)) {
61 \CRM_Utils_API_HTMLInputCoder::singleton()->decodeRows($result);
62 }
63 return $result;
64 }
65
66 }