Merge pull request #15322 from alifrumin/removePrintIcon
[civicrm-core.git] / Civi / Api4 / Generic / DAOGetFieldsAction.php
1 <?php
2
3 /*
4 +--------------------------------------------------------------------+
5 | CiviCRM version 5 |
6 +--------------------------------------------------------------------+
7 | Copyright CiviCRM LLC (c) 2004-2019 |
8 +--------------------------------------------------------------------+
9 | This file is a part of CiviCRM. |
10 | |
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. |
14 | |
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. |
19 | |
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 +--------------------------------------------------------------------+
27 */
28
29 /**
30 *
31 * @package CRM
32 * @copyright CiviCRM LLC (c) 2004-2019
33 * $Id$
34 *
35 */
36
37
38 namespace Civi\Api4\Generic;
39
40 use Civi\Api4\Service\Spec\SpecFormatter;
41
42 /**
43 * Get fields for a DAO-based entity.
44 *
45 * @method $this setIncludeCustom(bool $value)
46 * @method bool getIncludeCustom()
47 */
48 class DAOGetFieldsAction extends BasicGetFieldsAction {
49
50 /**
51 * Include custom fields for this entity, or only core fields?
52 *
53 * @var bool
54 */
55 protected $includeCustom = TRUE;
56
57 /**
58 * Get fields for a DAO-based entity
59 *
60 * @return array
61 */
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
67 if ($fields) {
68 $this->includeCustom = strpos(implode('', $fields), '.') !== FALSE;
69 }
70 $spec = $gatherer->getSpec($this->getEntityName(), $this->getAction(), $this->includeCustom);
71 return SpecFormatter::specToArray($spec->getFields($fields), $this->loadOptions);
72 }
73
74 public function fields() {
75 $fields = parent::fields();
76 $fields[] = [
77 'name' => 'custom_field_id',
78 'data_type' => 'Integer',
79 ];
80 $fields[] = [
81 'name' => 'custom_group_id',
82 'data_type' => 'Integer',
83 ];
84 return $fields;
85 }
86
87 }