Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
7e9e8871 | 4 | | CiviCRM version 4.7 | |
6a488035 | 5 | +--------------------------------------------------------------------+ |
8c9251b3 | 6 | | Copyright CiviCRM LLC (c) 2004-2018 | |
6a488035 TO |
7 | +--------------------------------------------------------------------+ |
8 | | This file is a part of CiviCRM. | | |
9 | | | | |
10 | | CiviCRM is free software; you can copy, modify, and distribute it | | |
11 | | under the terms of the GNU Affero General Public License | | |
12 | | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | | |
13 | | | | |
14 | | CiviCRM is distributed in the hope that it will be useful, but | | |
15 | | WITHOUT ANY WARRANTY; without even the implied warranty of | | |
16 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | | |
17 | | See the GNU Affero General Public License for more details. | | |
18 | | | | |
19 | | You should have received a copy of the GNU Affero General Public | | |
20 | | License and the CiviCRM Licensing Exception along | | |
21 | | with this program; if not, contact CiviCRM LLC | | |
22 | | at info[AT]civicrm[DOT]org. If you have questions about the | | |
23 | | GNU Affero General Public License or the licensing of CiviCRM, | | |
24 | | see the CiviCRM license FAQ at http://civicrm.org/licensing | | |
25 | +--------------------------------------------------------------------+ | |
d25dd0ee | 26 | */ |
6a488035 TO |
27 | |
28 | /** | |
29 | * | |
30 | * @package CRM | |
8c9251b3 | 31 | * @copyright CiviCRM LLC (c) 2004-2018 |
6a488035 TO |
32 | */ |
33 | class CRM_Contact_Form_Search_Criteria { | |
8a4f27dc | 34 | /** |
100fef9d | 35 | * @param CRM_Core_Form $form |
8a4f27dc | 36 | */ |
00be9182 | 37 | public static function basic(&$form) { |
6a488035 TO |
38 | $form->addElement('hidden', 'hidden_basic', 1); |
39 | ||
40 | if ($form->_searchOptions['contactType']) { | |
46b3417a | 41 | $contactTypes = CRM_Contact_BAO_ContactType::getSelectElements(); |
6a488035 TO |
42 | |
43 | if ($contactTypes) { | |
44 | $form->add('select', 'contact_type', ts('Contact Type(s)'), $contactTypes, FALSE, | |
02ddf039 | 45 | array('id' => 'contact_type', 'multiple' => 'multiple', 'class' => 'crm-select2', 'style' => 'width: 100%;') |
6a488035 TO |
46 | ); |
47 | } | |
48 | } | |
49 | ||
50 | if ($form->_searchOptions['groups']) { | |
51 | // multiselect for groups | |
52 | if ($form->_group) { | |
53 | // Arrange groups into hierarchical listing (child groups follow their parents and have indentation spacing in title) | |
f828fa2c | 54 | $groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($form->_group, NULL, ' ', TRUE); |
6a488035 TO |
55 | |
56 | $form->add('select', 'group', ts('Groups'), $groupHierarchy, FALSE, | |
02ddf039 | 57 | array('id' => 'group', 'multiple' => 'multiple', 'class' => 'crm-select2') |
6a488035 TO |
58 | ); |
59 | $groupOptions = CRM_Core_BAO_OptionValue::getOptionValuesAssocArrayFromName('group_type'); | |
60 | $form->add('select', 'group_type', ts('Group Types'), $groupOptions, FALSE, | |
02ddf039 | 61 | array('id' => 'group_type', 'multiple' => 'multiple', 'class' => 'crm-select2') |
6a488035 | 62 | ); |
353ffa53 | 63 | $form->add('hidden', 'group_search_selected', 'group'); |
6a488035 TO |
64 | } |
65 | } | |
66 | ||
67 | if ($form->_searchOptions['tags']) { | |
68 | // multiselect for categories | |
69 | $contactTags = CRM_Core_BAO_Tag::getTags(); | |
70 | ||
71 | if ($contactTags) { | |
72 | $form->add('select', 'contact_tags', ts('Tags'), $contactTags, FALSE, | |
02ddf039 | 73 | array('id' => 'contact_tags', 'multiple' => 'multiple', 'class' => 'crm-select2', 'style' => 'width: 100%;') |
6a488035 TO |
74 | ); |
75 | } | |
76 | ||
77 | $parentNames = CRM_Core_BAO_Tag::getTagSet('civicrm_contact'); | |
4dff5e17 | 78 | CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_contact', NULL, TRUE, FALSE); |
f828fa2c | 79 | |
6a488035 TO |
80 | $used_for = CRM_Core_OptionGroup::values('tag_used_for'); |
81 | $tagsTypes = array(); | |
ab8a593e | 82 | $showAllTagTypes = FALSE; |
6a488035 TO |
83 | foreach ($used_for as $key => $value) { |
84 | //check tags for every type and find if there are any defined | |
85 | $tags = CRM_Core_BAO_Tag::getTagsUsedFor($key, FALSE, TRUE, NULL); | |
86 | // check if there are tags other than contact type, if no - keep checkbox hidden on adv search | |
87 | // we will hide searching contact by attachments tags until it will be implemented in core | |
88 | if (count($tags) && $key != 'civicrm_file' && $key != 'civicrm_contact') { | |
89 | //if tags exists then add type to display in adv search form help text | |
f828fa2c | 90 | $tagsTypes[] = ts($value); |
4eeb9a5b | 91 | $showAllTagTypes = TRUE; |
6a488035 TO |
92 | } |
93 | } | |
94 | $tagTypesText = implode(" or ", $tagsTypes); | |
95 | if ($showAllTagTypes) { | |
96 | $form->add('checkbox', 'all_tag_types', ts('Include tags used for %1', array(1 => $tagTypesText))); | |
353ffa53 | 97 | $form->add('hidden', 'tag_types_text', $tagTypesText); |
6a488035 TO |
98 | } |
99 | } | |
100 | ||
101 | // add text box for last name, first name, street name, city | |
102 | $form->addElement('text', 'sort_name', ts('Find...'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'sort_name')); | |
103 | ||
104 | // add text box for last name, first name, street name, city | |
105 | $form->add('text', 'email', ts('Contact Email'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'sort_name')); | |
106 | ||
107 | //added contact source | |
108 | $form->add('text', 'contact_source', ts('Contact Source'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'contact_source')); | |
109 | ||
110 | //added job title | |
111 | $form->addElement('text', 'job_title', ts('Job Title'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'job_title')); | |
112 | ||
6a488035 | 113 | //added internal ID |
092cb9c5 | 114 | $form->add('number', 'contact_id', ts('Contact ID'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'id') + array('min' => 1)); |
5a0739f2 | 115 | $form->addRule('contact_id', ts('Please enter valid Contact ID'), 'positiveInteger'); |
6a488035 TO |
116 | |
117 | //added external ID | |
118 | $form->addElement('text', 'external_identifier', ts('External ID'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'external_identifier')); | |
119 | ||
89595c92 | 120 | if (CRM_Core_Permission::check('access deleted contacts') and Civi::settings()->get('contact_undelete')) { |
6a488035 TO |
121 | $form->add('checkbox', 'deleted_contacts', ts('Search in Trash') . '<br />' . ts('(deleted contacts)')); |
122 | } | |
123 | ||
124 | // add checkbox for cms users only | |
8a4f27dc | 125 | $form->addYesNo('uf_user', ts('CMS User?'), TRUE); |
6a488035 TO |
126 | |
127 | // tag all search | |
128 | $form->add('text', 'tag_search', ts('All Tags')); | |
129 | ||
130 | // add search profiles | |
131 | ||
132 | // FIXME: This is probably a part of profiles - need to be | |
133 | // FIXME: eradicated from here when profiles are reworked. | |
134 | $types = array('Participant', 'Contribution', 'Membership'); | |
135 | ||
136 | // get component profiles | |
137 | $componentProfiles = array(); | |
138 | $componentProfiles = CRM_Core_BAO_UFGroup::getProfiles($types); | |
139 | ||
140 | $ufGroups = CRM_Core_BAO_UFGroup::getModuleUFGroup('Search Profile', 1); | |
141 | $accessibleUfGroups = CRM_Core_Permission::ufGroup(CRM_Core_Permission::VIEW); | |
142 | ||
143 | $searchProfiles = array(); | |
144 | foreach ($ufGroups as $key => $var) { | |
145 | if (!array_key_exists($key, $componentProfiles) && in_array($key, $accessibleUfGroups)) { | |
146 | $searchProfiles[$key] = $var['title']; | |
147 | } | |
148 | } | |
149 | ||
3c0ec132 | 150 | $form->add('select', |
6a488035 | 151 | 'uf_group_id', |
e2b3c0e3 | 152 | ts('Views For Display Contacts'), |
6a488035 | 153 | array( |
317fceb4 | 154 | '0' => ts('- default view -'), |
3c0ec132 TM |
155 | ) + $searchProfiles, |
156 | FALSE, | |
157 | array('class' => 'crm-select2') | |
6a488035 TO |
158 | ); |
159 | ||
160 | $componentModes = CRM_Contact_Form_Search::getModeSelect(); | |
22e4d099 | 161 | $enabledComponents = CRM_Core_Component::getEnabledComponents(); |
6a488035 | 162 | |
22e4d099 BA |
163 | // unset disabled components that must should have been enabled |
164 | // to the option be viable | |
165 | if (!array_key_exists('CiviMail', $enabledComponents)) { | |
cf3e63fd | 166 | unset($componentModes['8']); |
22e4d099 | 167 | } |
ea080586 | 168 | |
6a488035 TO |
169 | // unset contributions or participants if user does not have |
170 | // permission on them | |
171 | if (!CRM_Core_Permission::access('CiviContribute')) { | |
172 | unset($componentModes['2']); | |
173 | } | |
174 | ||
175 | if (!CRM_Core_Permission::access('CiviEvent')) { | |
176 | unset($componentModes['3']); | |
177 | } | |
178 | ||
179 | if (!CRM_Core_Permission::access('CiviMember')) { | |
180 | unset($componentModes['5']); | |
181 | } | |
182 | ||
183 | if (!CRM_Core_Permission::check('view all activities')) { | |
184 | unset($componentModes['4']); | |
185 | } | |
186 | ||
187 | if (count($componentModes) > 1) { | |
3c0ec132 | 188 | $form->add('select', |
6a488035 TO |
189 | 'component_mode', |
190 | ts('Display Results As'), | |
3c0ec132 | 191 | $componentModes, |
ae1f4229 | 192 | FALSE, |
3c0ec132 | 193 | array('class' => 'crm-select2') |
6a488035 TO |
194 | ); |
195 | } | |
196 | ||
3c0ec132 | 197 | $form->addRadio( |
6a488035 TO |
198 | 'operator', |
199 | ts('Search Operator'), | |
6ea503d4 TO |
200 | array( |
201 | 'AND' => ts('AND'), | |
6a488035 | 202 | 'OR' => ts('OR'), |
3c0ec132 TM |
203 | ), |
204 | array('allowClear' => FALSE) | |
6a488035 TO |
205 | ); |
206 | ||
207 | // add the option to display relationships | |
208 | $rTypes = CRM_Core_PseudoConstant::relationshipType(); | |
209 | $rSelect = array('' => ts('- Select Relationship Type-')); | |
210 | foreach ($rTypes as $rid => $rValue) { | |
211 | if ($rValue['label_a_b'] == $rValue['label_b_a']) { | |
212 | $rSelect[$rid] = $rValue['label_a_b']; | |
213 | } | |
214 | else { | |
215 | $rSelect["{$rid}_a_b"] = $rValue['label_a_b']; | |
216 | $rSelect["{$rid}_b_a"] = $rValue['label_b_a']; | |
217 | } | |
218 | } | |
219 | ||
220 | $form->addElement('select', | |
221 | 'display_relationship_type', | |
222 | ts('Display Results as Relationship'), | |
aae123ba CW |
223 | $rSelect, |
224 | array('class' => 'crm-select2') | |
6a488035 TO |
225 | ); |
226 | ||
227 | // checkboxes for DO NOT phone, email, mail | |
228 | // we take labels from SelectValues | |
229 | $t = CRM_Core_SelectValues::privacy(); | |
230 | $form->add('select', | |
231 | 'privacy_options', | |
232 | ts('Privacy'), | |
233 | $t, | |
234 | FALSE, | |
235 | array( | |
236 | 'id' => 'privacy_options', | |
237 | 'multiple' => 'multiple', | |
02ddf039 | 238 | 'class' => 'crm-select2', |
6a488035 TO |
239 | ) |
240 | ); | |
241 | ||
242 | $form->addElement('select', | |
243 | 'privacy_operator', | |
244 | ts('Operator'), | |
6ea503d4 TO |
245 | array( |
246 | 'OR' => ts('OR'), | |
6a488035 TO |
247 | 'AND' => ts('AND'), |
248 | ) | |
249 | ); | |
250 | ||
251 | $options = array( | |
252 | 1 => ts('Exclude'), | |
253 | 2 => ts('Include by Privacy Option(s)'), | |
254 | ); | |
b847e6e7 | 255 | $form->addRadio('privacy_toggle', ts('Privacy Options'), $options, array('allowClear' => FALSE)); |
6a488035 TO |
256 | |
257 | // preferred communication method | |
6a488035 | 258 | |
ba8f6a69 | 259 | $onHold[] = $form->createElement('advcheckbox', 'on_hold', NULL, ''); |
6a488035 TO |
260 | $form->addGroup($onHold, 'email_on_hold', ts('Email On Hold')); |
261 | ||
7cc09daf | 262 | $form->addSelect('preferred_communication_method', |
263 | array('entity' => 'contact', 'multiple' => 'multiple', 'label' => ts('Preferred Communication Method'), 'option_url' => NULL, 'placeholder' => ts('- any -'))); | |
6a488035 TO |
264 | |
265 | //CRM-6138 Preferred Language | |
76773c5a | 266 | $form->addSelect('preferred_language', array('class' => 'twenty', 'context' => 'search')); |
6a488035 TO |
267 | |
268 | // Phone search | |
d79be26c | 269 | $form->addElement('text', 'phone_numeric', ts('Phone'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_Phone', 'phone')); |
b2b0530a | 270 | $locationType = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id'); |
b4f964d9 | 271 | $phoneType = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id'); |
3c0ec132 TM |
272 | $form->add('select', 'phone_location_type_id', ts('Phone Location'), array('' => ts('- any -')) + $locationType, FALSE, array('class' => 'crm-select2')); |
273 | $form->add('select', 'phone_phone_type_id', ts('Phone Type'), array('' => ts('- any -')) + $phoneType, FALSE, array('class' => 'crm-select2')); | |
6a488035 TO |
274 | } |
275 | ||
276 | ||
86538308 | 277 | /** |
12fbb7b3 | 278 | * @param CRM_Core_Form $form |
86538308 | 279 | */ |
00be9182 | 280 | public static function location(&$form) { |
12fbb7b3 | 281 | $config = CRM_Core_Config::singleton(); |
6a488035 TO |
282 | // Build location criteria based on _submitValues if |
283 | // available; otherwise, use $form->_formValues. | |
284 | $formValues = $form->_submitValues; | |
285 | ||
286 | if (empty($formValues) && !empty($form->_formValues)) { | |
287 | $formValues = $form->_formValues; | |
288 | } | |
289 | ||
290 | $form->addElement('hidden', 'hidden_location', 1); | |
291 | ||
292 | $addressOptions = CRM_Core_BAO_Setting::valueOptions(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, | |
293 | 'address_options', TRUE, NULL, TRUE | |
294 | ); | |
295 | ||
296 | $attributes = CRM_Core_DAO::getAttribute('CRM_Core_DAO_Address'); | |
297 | ||
298 | $elements = array( | |
299 | 'street_address' => array(ts('Street Address'), $attributes['street_address'], NULL, NULL), | |
539853b9 AS |
300 | 'supplemental_address_1' => array(ts('Supplemental Address 1'), $attributes['supplemental_address_1'], NULL, NULL), |
301 | 'supplemental_address_2' => array(ts('Supplemental Address 2'), $attributes['supplemental_address_2'], NULL, NULL), | |
207f62c6 | 302 | 'supplemental_address_3' => array(ts('Supplemental Address 3'), $attributes['supplemental_address_3'], NULL, NULL), |
6a488035 | 303 | 'city' => array(ts('City'), $attributes['city'], NULL, NULL), |
d79be26c | 304 | 'postal_code' => array(ts('Postal Code'), $attributes['postal_code'], NULL, NULL), |
6a488035 | 305 | 'country' => array(ts('Country'), $attributes['country_id'], 'country', FALSE), |
757069de | 306 | 'state_province' => array(ts('State/Province'), $attributes['state_province_id'], 'stateProvince', TRUE), |
c927c151 | 307 | 'county' => array(ts('County'), $attributes['county_id'], 'county', TRUE), |
6a488035 TO |
308 | 'address_name' => array(ts('Address Name'), $attributes['address_name'], NULL, NULL), |
309 | 'street_number' => array(ts('Street Number'), $attributes['street_number'], NULL, NULL), | |
310 | 'street_name' => array(ts('Street Name'), $attributes['street_name'], NULL, NULL), | |
311 | 'street_unit' => array(ts('Apt/Unit/Suite'), $attributes['street_unit'], NULL, NULL), | |
312 | ); | |
313 | ||
314 | $parseStreetAddress = CRM_Utils_Array::value('street_address_parsing', $addressOptions, 0); | |
315 | $form->assign('parseStreetAddress', $parseStreetAddress); | |
316 | foreach ($elements as $name => $v) { | |
317 | list($title, $attributes, $select, $multiSelect) = $v; | |
318 | ||
319 | if (in_array($name, | |
353ffa53 TO |
320 | array('street_number', 'street_name', 'street_unit') |
321 | )) { | |
6a488035 TO |
322 | if (!$parseStreetAddress) { |
323 | continue; | |
324 | } | |
325 | } | |
326 | elseif (!$addressOptions[$name]) { | |
327 | continue; | |
328 | } | |
329 | ||
330 | if (!$attributes) { | |
331 | $attributes = $attributes[$name]; | |
332 | } | |
333 | ||
334 | if ($select) { | |
c927c151 CW |
335 | if ($select == 'stateProvince' || $select == 'county') { |
336 | $element = $form->addChainSelect($name); | |
6a488035 TO |
337 | } |
338 | else { | |
339 | $selectElements = array('' => ts('- any -')) + CRM_Core_PseudoConstant::$select(); | |
02ddf039 | 340 | $element = $form->add('select', $name, $title, $selectElements, FALSE, array('class' => 'crm-select2')); |
6a488035 TO |
341 | } |
342 | if ($multiSelect) { | |
343 | $element->setMultiple(TRUE); | |
344 | } | |
345 | } | |
346 | else { | |
347 | $form->addElement('text', $name, $title, $attributes); | |
348 | } | |
349 | ||
350 | if ($addressOptions['postal_code']) { | |
12fbb7b3 CW |
351 | $attr = array('class' => 'six') + (array) CRM_Utils_Array::value('postal_code', $attributes); |
352 | $form->addElement('text', 'postal_code_low', NULL, $attr + array('placeholder' => ts('From'))); | |
353 | $form->addElement('text', 'postal_code_high', NULL, $attr + array('placeholder' => ts('To'))); | |
6a488035 TO |
354 | } |
355 | } | |
356 | ||
357 | // extend addresses with proximity search | |
4882d275 | 358 | if (CRM_Utils_GeocodeProvider::getUsableClassName()) { |
12fbb7b3 CW |
359 | $form->addElement('text', 'prox_distance', ts('Find contacts within'), array('class' => 'six')); |
360 | $form->addElement('select', 'prox_distance_unit', NULL, array( | |
361 | 'miles' => ts('Miles'), | |
21dfd5f5 | 362 | 'kilos' => ts('Kilometers'), |
12fbb7b3 CW |
363 | )); |
364 | $form->addRule('prox_distance', ts('Please enter positive number as a distance'), 'numeric'); | |
365 | } | |
6a488035 | 366 | |
76773c5a | 367 | $form->addSelect('world_region', array('entity' => 'address', 'context' => 'search')); |
6a488035 | 368 | |
d8a8bb0b | 369 | // select for location type |
b2b0530a | 370 | $locationType = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id'); |
d8a8bb0b CW |
371 | $form->add('select', 'location_type', ts('Address Location'), $locationType, FALSE, array( |
372 | 'multiple' => TRUE, | |
373 | 'class' => 'crm-select2', | |
374 | 'placeholder' => ts('Primary'), | |
375 | )); | |
6a488035 | 376 | |
86a0d21e CW |
377 | // custom data extending addresses |
378 | CRM_Core_BAO_Query::addCustomFormFields($form, array('Address')); | |
6a488035 TO |
379 | } |
380 | ||
86538308 | 381 | /** |
c490a46a | 382 | * @param CRM_Core_Form $form |
86538308 | 383 | */ |
00be9182 | 384 | public static function activity(&$form) { |
6a488035 TO |
385 | $form->add('hidden', 'hidden_activity', 1); |
386 | CRM_Activity_BAO_Query::buildSearchForm($form); | |
387 | } | |
388 | ||
86538308 | 389 | /** |
c490a46a | 390 | * @param CRM_Core_Form $form |
86538308 | 391 | */ |
00be9182 | 392 | public static function changeLog(&$form) { |
6a488035 TO |
393 | $form->add('hidden', 'hidden_changeLog', 1); |
394 | ||
395 | // block for change log | |
396 | $form->addElement('text', 'changed_by', ts('Modified By'), NULL); | |
397 | ||
398 | $dates = array(1 => ts('Added'), 2 => ts('Modified')); | |
672decaf | 399 | $form->addRadio('log_date', NULL, $dates, array('allowClear' => TRUE)); |
6a488035 | 400 | |
672decaf | 401 | CRM_Core_Form_Date::buildDateRange($form, 'log_date', 1, '_low', '_high', ts('From:'), FALSE, FALSE); |
6a488035 TO |
402 | } |
403 | ||
86538308 | 404 | /** |
c490a46a | 405 | * @param CRM_Core_Form $form |
86538308 | 406 | */ |
00be9182 | 407 | public static function task(&$form) { |
6a488035 TO |
408 | $form->add('hidden', 'hidden_task', 1); |
409 | } | |
410 | ||
86538308 EM |
411 | /** |
412 | * @param $form | |
413 | */ | |
00be9182 | 414 | public static function relationship(&$form) { |
6a488035 TO |
415 | $form->add('hidden', 'hidden_relationship', 1); |
416 | ||
417 | $allRelationshipType = array(); | |
418 | $allRelationshipType = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, NULL, NULL, NULL, TRUE); | |
026242fc | 419 | $form->add('select', 'relation_type_id', ts('Relationship Type'), array('' => ts('- select -')) + $allRelationshipType, FALSE, array('multiple' => TRUE, 'class' => 'crm-select2')); |
6a488035 | 420 | $form->addElement('text', 'relation_target_name', ts('Target Contact'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'sort_name')); |
5ea73a9f | 421 | // relation status |
9e4a7990 | 422 | $relStatusOption = array(ts('Active'), ts('Inactive'), ts('All')); |
6a488035 TO |
423 | $form->addRadio('relation_status', ts('Relationship Status'), $relStatusOption); |
424 | $form->setDefaults(array('relation_status' => 0)); | |
5ea73a9f | 425 | // relation permission |
481a74f4 | 426 | $relPermissionOption = array(ts('Any'), ts('Yes'), ts('No')); |
5ea73a9f DG |
427 | $form->addRadio('relation_permission', ts('Permissioned Relationship?'), $relPermissionOption); |
428 | $form->setDefaults(array('relation_permission' => 0)); | |
6a488035 TO |
429 | |
430 | //add the target group | |
431 | if ($form->_group) { | |
432 | $form->add('select', 'relation_target_group', ts('Target Contact(s) in Group'), $form->_group, FALSE, | |
02ddf039 | 433 | array('id' => 'relation_target_group', 'multiple' => 'multiple', 'class' => 'crm-select2') |
6a488035 TO |
434 | ); |
435 | } | |
ad682134 | 436 | CRM_Core_Form_Date::buildDateRange($form, 'relation_start_date', 1, '_low', '_high', ts('From:'), FALSE, FALSE); |
437 | CRM_Core_Form_Date::buildDateRange($form, 'relation_end_date', 1, '_low', '_high', ts('From:'), FALSE, FALSE); | |
6a488035 | 438 | |
eea5db81 | 439 | CRM_Core_Form_Date::buildDateRange($form, 'relation_active_period_date', 1, '_low', '_high', ts('From:'), FALSE, FALSE); |
440 | ||
6a488035 TO |
441 | // Add reltionship dates |
442 | CRM_Core_Form_Date::buildDateRange($form, 'relation_date', 1, '_low', '_high', ts('From:'), FALSE, FALSE); | |
443 | ||
444 | // add all the custom searchable fields | |
86a0d21e | 445 | CRM_Core_BAO_Query::addCustomFormFields($form, array('Relationship')); |
6a488035 TO |
446 | } |
447 | ||
86538308 EM |
448 | /** |
449 | * @param $form | |
450 | */ | |
00be9182 | 451 | public static function demographics(&$form) { |
6a488035 TO |
452 | $form->add('hidden', 'hidden_demographics', 1); |
453 | // radio button for gender | |
454 | $genderOptions = array(); | |
26cf88b5 | 455 | $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id'); |
6a488035 TO |
456 | foreach ($gender as $key => $var) { |
457 | $genderOptions[$key] = $form->createElement('radio', NULL, | |
458 | ts('Gender'), $var, $key, | |
459 | array('id' => "civicrm_gender_{$var}_{$key}") | |
460 | ); | |
461 | } | |
b847e6e7 | 462 | $form->addGroup($genderOptions, 'gender_id', ts('Gender'))->setAttribute('allowClear', TRUE); |
6a488035 | 463 | |
4b9de8a1 | 464 | $form->add('text', 'age_low', ts('Min Age'), array('size' => 6)); |
c4a7c967 | 465 | $form->addRule('age_low', ts('Please enter a positive integer'), 'positiveInteger'); |
4b9de8a1 | 466 | $form->add('text', 'age_high', ts('Max Age'), array('size' => 6)); |
c4a7c967 | 467 | $form->addRule('age_high', ts('Please enter a positive integer'), 'positiveInteger'); |
468 | $form->addDate('age_asof_date', ts('Age as of Date'), FALSE, array('formatType' => 'searchDate')); | |
469 | ||
6a488035 TO |
470 | CRM_Core_Form_Date::buildDateRange($form, 'birth_date', 1, '_low', '_high', ts('From'), FALSE, FALSE, 'birth'); |
471 | ||
472 | CRM_Core_Form_Date::buildDateRange($form, 'deceased_date', 1, '_low', '_high', ts('From'), FALSE, FALSE, 'birth'); | |
473 | ||
6a488035 | 474 | // radio button for is_deceased |
481a74f4 | 475 | $form->addYesNo('is_deceased', ts('Deceased'), TRUE); |
6a488035 TO |
476 | } |
477 | ||
86538308 EM |
478 | /** |
479 | * @param $form | |
480 | */ | |
00be9182 | 481 | public static function notes(&$form) { |
6a488035 TO |
482 | $form->add('hidden', 'hidden_notes', 1); |
483 | ||
484 | $options = array( | |
485 | 2 => ts('Body Only'), | |
486 | 3 => ts('Subject Only'), | |
487 | 6 => ts('Both'), | |
488 | ); | |
489 | $form->addRadio('note_option', '', $options); | |
490 | ||
491 | $form->addElement('text', 'note', ts('Note Text'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'sort_name')); | |
492 | ||
493 | $form->setDefaults(array('note_option' => 6)); | |
494 | } | |
495 | ||
496 | /** | |
5a409b50 | 497 | * Generate the custom Data Fields based for those with is_searchable = 1. |
6a488035 | 498 | * |
5a409b50 | 499 | * @param CRM_Contact_Form_Search $form |
6a488035 | 500 | */ |
00be9182 | 501 | public static function custom(&$form) { |
6a488035 TO |
502 | $form->add('hidden', 'hidden_custom', 1); |
503 | $extends = array_merge(array('Contact', 'Individual', 'Household', 'Organization'), | |
504 | CRM_Contact_BAO_ContactType::subTypes() | |
505 | ); | |
506 | $groupDetails = CRM_Core_BAO_CustomGroup::getGroupDetail(NULL, TRUE, | |
507 | $extends | |
508 | ); | |
509 | ||
510 | $form->assign('groupTree', $groupDetails); | |
511 | ||
512 | foreach ($groupDetails as $key => $group) { | |
513 | $_groupTitle[$key] = $group['name']; | |
514 | CRM_Core_ShowHideBlocks::links($form, $group['name'], '', ''); | |
515 | ||
6a488035 TO |
516 | foreach ($group['fields'] as $field) { |
517 | $fieldId = $field['id']; | |
518 | $elementName = 'custom_' . $fieldId; | |
0b77ccc2 CW |
519 | if ($field['data_type'] == 'Date' && $field['is_search_range']) { |
520 | CRM_Core_Form_Date::buildDateRange($form, $elementName, 1, '_from', '_to', ts('From:'), FALSE); | |
521 | } | |
522 | else { | |
523 | CRM_Core_BAO_CustomField::addQuickFormElement($form, $elementName, $fieldId, FALSE, TRUE); | |
524 | } | |
6a488035 TO |
525 | } |
526 | } | |
6a488035 TO |
527 | } |
528 | ||
86538308 EM |
529 | /** |
530 | * @param $form | |
531 | */ | |
00be9182 | 532 | public static function CiviCase(&$form) { |
6a488035 TO |
533 | //Looks like obsolete code, since CiviCase is a component, but might be used by HRD |
534 | $form->add('hidden', 'hidden_CiviCase', 1); | |
535 | CRM_Case_BAO_Query::buildSearchForm($form); | |
536 | } | |
96025800 | 537 | |
6a488035 | 538 | } |