Commit | Line | Data |
---|---|---|
6bc5e930 TO |
1 | <?php |
2 | ||
3 | require_once 'afform_gui.civix.php'; | |
4 | use CRM_AfformGui_ExtensionUtil as E; | |
5 | ||
6 | /** | |
7 | * Implements hook_civicrm_config(). | |
8 | * | |
9 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config | |
10 | */ | |
11 | function afform_gui_civicrm_config(&$config) { | |
12 | _afform_gui_civix_civicrm_config($config); | |
13 | } | |
14 | ||
15 | /** | |
16 | * Implements hook_civicrm_xmlMenu(). | |
17 | * | |
18 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu | |
19 | */ | |
20 | function afform_gui_civicrm_xmlMenu(&$files) { | |
21 | _afform_gui_civix_civicrm_xmlMenu($files); | |
22 | } | |
23 | ||
24 | /** | |
25 | * Implements hook_civicrm_install(). | |
26 | * | |
27 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install | |
28 | */ | |
29 | function afform_gui_civicrm_install() { | |
30 | _afform_gui_civix_civicrm_install(); | |
31 | } | |
32 | ||
33 | /** | |
34 | * Implements hook_civicrm_postInstall(). | |
35 | * | |
36 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_postInstall | |
37 | */ | |
38 | function afform_gui_civicrm_postInstall() { | |
39 | _afform_gui_civix_civicrm_postInstall(); | |
40 | } | |
41 | ||
42 | /** | |
43 | * Implements hook_civicrm_uninstall(). | |
44 | * | |
45 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall | |
46 | */ | |
47 | function afform_gui_civicrm_uninstall() { | |
48 | _afform_gui_civix_civicrm_uninstall(); | |
49 | } | |
50 | ||
51 | /** | |
52 | * Implements hook_civicrm_enable(). | |
53 | * | |
54 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable | |
55 | */ | |
56 | function afform_gui_civicrm_enable() { | |
57 | _afform_gui_civix_civicrm_enable(); | |
58 | } | |
59 | ||
60 | /** | |
61 | * Implements hook_civicrm_disable(). | |
62 | * | |
63 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable | |
64 | */ | |
65 | function afform_gui_civicrm_disable() { | |
66 | _afform_gui_civix_civicrm_disable(); | |
67 | } | |
68 | ||
69 | /** | |
70 | * Implements hook_civicrm_upgrade(). | |
71 | * | |
72 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade | |
73 | */ | |
74 | function afform_gui_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { | |
75 | return _afform_gui_civix_civicrm_upgrade($op, $queue); | |
76 | } | |
77 | ||
78 | /** | |
79 | * Implements hook_civicrm_managed(). | |
80 | * | |
81 | * Generate a list of entities to create/deactivate/delete when this module | |
82 | * is installed, disabled, uninstalled. | |
83 | * | |
84 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed | |
85 | */ | |
86 | function afform_gui_civicrm_managed(&$entities) { | |
87 | _afform_gui_civix_civicrm_managed($entities); | |
88 | } | |
89 | ||
90 | /** | |
91 | * Implements hook_civicrm_caseTypes(). | |
92 | * | |
93 | * Generate a list of case-types. | |
94 | * | |
95 | * Note: This hook only runs in CiviCRM 4.4+. | |
96 | * | |
97 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes | |
98 | */ | |
99 | function afform_gui_civicrm_caseTypes(&$caseTypes) { | |
100 | _afform_gui_civix_civicrm_caseTypes($caseTypes); | |
101 | } | |
102 | ||
103 | /** | |
104 | * Implements hook_civicrm_angularModules(). | |
105 | * | |
106 | * Generate a list of Angular modules. | |
107 | * | |
108 | * Note: This hook only runs in CiviCRM 4.5+. It may | |
109 | * use features only available in v4.6+. | |
110 | * | |
111 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_angularModules | |
112 | */ | |
113 | function afform_gui_civicrm_angularModules(&$angularModules) { | |
114 | _afform_gui_civix_civicrm_angularModules($angularModules); | |
115 | } | |
116 | ||
117 | /** | |
118 | * Implements hook_civicrm_alterSettingsFolders(). | |
119 | * | |
120 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders | |
121 | */ | |
122 | function afform_gui_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { | |
123 | _afform_gui_civix_civicrm_alterSettingsFolders($metaDataFolders); | |
124 | } | |
125 | ||
126 | /** | |
127 | * Implements hook_civicrm_entityTypes(). | |
128 | * | |
129 | * Declare entity types provided by this module. | |
130 | * | |
131 | * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_entityTypes | |
132 | */ | |
133 | function afform_gui_civicrm_entityTypes(&$entityTypes) { | |
134 | _afform_gui_civix_civicrm_entityTypes($entityTypes); | |
135 | } | |
136 | ||
7620445e TO |
137 | /** |
138 | * Implements hook_civicrm_themes(). | |
139 | */ | |
140 | function afform_gui_civicrm_themes(&$themes) { | |
141 | _afform_gui_civix_civicrm_themes($themes); | |
142 | } | |
143 | ||
6bc5e930 | 144 | /** |
c820e08c CW |
145 | * Implements hook_civicrm_pageRun(). |
146 | */ | |
147 | function afform_gui_civicrm_pageRun(&$page) { | |
148 | if (get_class($page) == 'CRM_Afform_Page_AfformBase' && $page->get('afModule') == 'afGuiAdmin') { | |
149 | Civi::resources()->addScriptUrl(Civi::service('asset_builder')->getUrl('af-gui-vars.js')); | |
150 | } | |
151 | } | |
6bc5e930 TO |
152 | |
153 | /** | |
c820e08c | 154 | * Implements hook_civicrm_buildAsset(). |
6bc5e930 | 155 | * |
c820e08c CW |
156 | * Loads metadata to send to the gui editor. |
157 | */ | |
158 | function afform_gui_civicrm_buildAsset($asset, $params, &$mimeType, &$content) { | |
159 | if ($asset !== 'af-gui-vars.js') { | |
160 | return; | |
161 | } | |
162 | ||
163 | // Things that can't be handled by afform. TODO: Need a better way to do this. Maybe add core metadata about what each entity is for, and filter on that. | |
164 | $entityBlacklist = [ | |
165 | 'ACL', | |
166 | 'ActionSchedule', | |
167 | 'ActivityContact', | |
168 | 'Afform%', | |
169 | 'CaseContact', | |
170 | 'EntityTag', | |
171 | 'GroupContact', | |
172 | 'GroupNesting', | |
173 | 'GroupOrganization', | |
174 | 'Setting', | |
175 | 'System', | |
176 | 'UF%', | |
177 | ]; | |
178 | $entityApi = Civi\Api4\Entity::get() | |
179 | ->setCheckPermissions(FALSE) | |
180 | ->setSelect(['name', 'description']); | |
181 | foreach ($entityBlacklist as $nono) { | |
182 | $entityApi->addWhere('name', 'NOT LIKE', $nono); | |
183 | } | |
184 | ||
a064e90d | 185 | $contactFields = Civi\Api4\Contact::getFields() |
c820e08c CW |
186 | ->setCheckPermissions(FALSE) |
187 | ->setIncludeCustom(TRUE) | |
188 | ->setLoadOptions(TRUE) | |
65c9e7ae CW |
189 | ->setAction('create') |
190 | ->setSelect(['name', 'title', 'input_type', 'input_attrs', 'options']) | |
c820e08c CW |
191 | ->execute(); |
192 | ||
a064e90d CW |
193 | $contactSettings = [ |
194 | 'data' => [], | |
195 | ]; | |
196 | ||
c820e08c CW |
197 | $mimeType = 'text/javascript'; |
198 | $content = "CRM.afformAdminData={"; | |
199 | $content .= 'entities:' . json_encode((array) $entityApi->execute(), JSON_UNESCAPED_SLASHES) . ','; | |
a064e90d CW |
200 | $content .= 'fields:' . json_encode(['Contact' => (array) $contactFields], JSON_UNESCAPED_SLASHES) . ','; |
201 | $content .= 'settings:' . json_encode(['Contact' => $contactSettings], JSON_UNESCAPED_SLASHES); | |
c820e08c CW |
202 | $content .= '}'; |
203 | } |