4 +--------------------------------------------------------------------+
6 +--------------------------------------------------------------------+
7 | Copyright CiviCRM LLC (c) 2004-2019 |
8 +--------------------------------------------------------------------+
9 | This file is a part of CiviCRM. |
11 | CiviCRM is free software; you can copy, modify, and distribute it |
12 | under the terms of the GNU Affero General Public License |
13 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
15 | CiviCRM is distributed in the hope that it will be useful, but |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. |
20 | You should have received a copy of the GNU Affero General Public |
21 | License and the CiviCRM Licensing Exception along |
22 | with this program; if not, contact CiviCRM LLC |
23 | at info[AT]civicrm[DOT]org. If you have questions about the |
24 | GNU Affero General Public License or the licensing of CiviCRM, |
25 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
26 +--------------------------------------------------------------------+
32 * @copyright CiviCRM LLC (c) 2004-2019
38 namespace Civi\Api4\Generic
;
40 use Civi\Api4\Service\Spec\SpecFormatter
;
43 * Get fields for a DAO-based entity.
45 * @method $this setIncludeCustom(bool $value)
46 * @method bool getIncludeCustom()
48 class DAOGetFieldsAction
extends BasicGetFieldsAction
{
51 * Include custom fields for this entity, or only core fields?
55 protected $includeCustom = TRUE;
58 * Get fields for a DAO-based entity
62 protected function getRecords() {
63 $fields = $this->_itemsToGet('name');
64 /** @var \Civi\Api4\Service\Spec\SpecGatherer $gatherer */
65 $gatherer = \Civi
::container()->get('spec_gatherer');
66 // Any fields name with a dot in it is custom
68 $this->includeCustom
= strpos(implode('', $fields), '.') !== FALSE;
70 $spec = $gatherer->getSpec($this->getEntityName(), $this->getAction(), $this->includeCustom
);
71 return SpecFormatter
::specToArray($spec->getFields($fields), $this->loadOptions
);
74 public function fields() {
75 $fields = parent
::fields();
77 'name' => 'custom_field_id',
78 'data_type' => 'Integer',
81 'name' => 'custom_group_id',
82 'data_type' => 'Integer',