Merge branch 'phpunit-ob-fix' of https://github.com/giant-rabbit/civicrm-core into...
[civicrm-core.git] / api / v3 / examples / Contact / GetFieldsOptions.php
1 <?php
2 /**
3 * Test Generated example of using contact GetFields API
4 * Demonstrate retrieving metadata with custom field options *
5 */
6 function contact_getfields_example(){
7 $params = array(
8 'options' => array(
9 'get_options' => 'custom_1',
10 ),
11 'action' => 'create',
12 );
13
14 try{
15 $result = civicrm_api3('contact', 'GetFields', $params);
16 }
17 catch (CiviCRM_API3_Exception $e) {
18 // handle error here
19 $errorMessage = $e->getMessage();
20 $errorCode = $e->getErrorCode();
21 $errorData = $e->getExtraParams();
22 return array('error' => $errorMessage, 'error_code' => $errorCode, 'error_data' => $errorData);
23 }
24
25 return $result;
26 }
27
28 /**
29 * Function returns array of result expected from previous function
30 */
31 function contact_getfields_expectedresult(){
32
33 $expectedResult = array(
34 'is_error' => 0,
35 'version' => 3,
36 'count' => 55,
37 'values' => array(
38 'id' => array(
39 'name' => 'id',
40 'type' => 1,
41 'title' => 'Internal Contact ID',
42 'required' => true,
43 'import' => true,
44 'where' => 'civicrm_contact.id',
45 'headerPattern' => '/internal|contact?|id$/i',
46 'export' => true,
47 'api.aliases' => array(
48 '0' => 'contact_id',
49 ),
50 ),
51 'contact_type' => array(
52 'name' => 'contact_type',
53 'type' => 2,
54 'title' => 'Contact Type',
55 'maxlength' => 64,
56 'size' => 30,
57 'export' => true,
58 'where' => 'civicrm_contact.contact_type',
59 'html' => array(
60 'type' => 'Select',
61 ),
62 'pseudoconstant' => array(
63 'table' => 'civicrm_contact_type',
64 'keyColumn' => 'name',
65 'labelColumn' => 'label',
66 'condition' => 'parent_id IS NULL',
67 ),
68 'api.required' => 1,
69 ),
70 'contact_sub_type' => array(
71 'name' => 'contact_sub_type',
72 'type' => 2,
73 'title' => 'Contact Subtype',
74 'maxlength' => 255,
75 'size' => 45,
76 'import' => true,
77 'where' => 'civicrm_contact.contact_sub_type',
78 'headerPattern' => '/C(ontact )?(subtype|sub-type|sub type)/i',
79 'export' => true,
80 'html' => array(
81 'type' => 'Multi-Select',
82 ),
83 'pseudoconstant' => array(
84 'table' => 'civicrm_contact_type',
85 'keyColumn' => 'name',
86 'labelColumn' => 'label',
87 'condition' => 'parent_id IS NOT NULL',
88 ),
89 ),
90 'do_not_email' => array(
91 'name' => 'do_not_email',
92 'type' => 16,
93 'title' => 'Do Not Email',
94 'import' => true,
95 'where' => 'civicrm_contact.do_not_email',
96 'headerPattern' => '/d(o )?(not )?(email)/i',
97 'dataPattern' => '/^\\d{1,}$/',
98 'export' => true,
99 'html' => array(
100 'type' => 'CheckBox',
101 ),
102 ),
103 'do_not_phone' => array(
104 'name' => 'do_not_phone',
105 'type' => 16,
106 'title' => 'Do Not Phone',
107 'import' => true,
108 'where' => 'civicrm_contact.do_not_phone',
109 'headerPattern' => '/d(o )?(not )?(call|phone)/i',
110 'dataPattern' => '/^\\d{1,}$/',
111 'export' => true,
112 'html' => array(
113 'type' => 'CheckBox',
114 ),
115 ),
116 'do_not_mail' => array(
117 'name' => 'do_not_mail',
118 'type' => 16,
119 'title' => 'Do Not Mail',
120 'import' => true,
121 'where' => 'civicrm_contact.do_not_mail',
122 'headerPattern' => '/^(d(o\\s)?n(ot\\s)?mail)|(\\w*)?bulk\\s?(\\w*)$/i',
123 'dataPattern' => '/^\\d{1,}$/',
124 'export' => true,
125 'html' => array(
126 'type' => 'CheckBox',
127 ),
128 ),
129 'do_not_sms' => array(
130 'name' => 'do_not_sms',
131 'type' => 16,
132 'title' => 'Do Not Sms',
133 'import' => true,
134 'where' => 'civicrm_contact.do_not_sms',
135 'headerPattern' => '/d(o )?(not )?(sms)/i',
136 'dataPattern' => '/^\\d{1,}$/',
137 'export' => true,
138 'html' => array(
139 'type' => 'CheckBox',
140 ),
141 ),
142 'do_not_trade' => array(
143 'name' => 'do_not_trade',
144 'type' => 16,
145 'title' => 'Do Not Trade',
146 'import' => true,
147 'where' => 'civicrm_contact.do_not_trade',
148 'headerPattern' => '/d(o )?(not )?(trade)/i',
149 'dataPattern' => '/^\\d{1,}$/',
150 'export' => true,
151 'html' => array(
152 'type' => 'CheckBox',
153 ),
154 ),
155 'is_opt_out' => array(
156 'name' => 'is_opt_out',
157 'type' => 16,
158 'title' => 'No Bulk Emails (User Opt Out)',
159 'required' => true,
160 'import' => true,
161 'where' => 'civicrm_contact.is_opt_out',
162 'export' => true,
163 'html' => array(
164 'type' => 'CheckBox',
165 ),
166 ),
167 'legal_identifier' => array(
168 'name' => 'legal_identifier',
169 'type' => 2,
170 'title' => 'Legal Identifier',
171 'maxlength' => 32,
172 'size' => 20,
173 'import' => true,
174 'where' => 'civicrm_contact.legal_identifier',
175 'headerPattern' => '/legal\\s?id/i',
176 'dataPattern' => '/\\w+?\\d{5,}/',
177 'export' => true,
178 'html' => array(
179 'type' => 'Text',
180 ),
181 ),
182 'external_identifier' => array(
183 'name' => 'external_identifier',
184 'type' => 2,
185 'title' => 'External Identifier',
186 'maxlength' => 32,
187 'size' => 8,
188 'import' => true,
189 'where' => 'civicrm_contact.external_identifier',
190 'headerPattern' => '/external\\s?id/i',
191 'dataPattern' => '/^\\d{11,}$/',
192 'export' => true,
193 'html' => array(
194 'type' => 'Text',
195 ),
196 ),
197 'sort_name' => array(
198 'name' => 'sort_name',
199 'type' => 2,
200 'title' => 'Sort Name',
201 'maxlength' => 128,
202 'size' => 30,
203 'export' => true,
204 'where' => 'civicrm_contact.sort_name',
205 'html' => array(
206 'type' => 'Text',
207 ),
208 ),
209 'display_name' => array(
210 'name' => 'display_name',
211 'type' => 2,
212 'title' => 'Display Name',
213 'maxlength' => 128,
214 'size' => 30,
215 'export' => true,
216 'where' => 'civicrm_contact.display_name',
217 'html' => array(
218 'type' => 'Text',
219 ),
220 ),
221 'nick_name' => array(
222 'name' => 'nick_name',
223 'type' => 2,
224 'title' => 'Nickname',
225 'maxlength' => 128,
226 'size' => 30,
227 'import' => true,
228 'where' => 'civicrm_contact.nick_name',
229 'headerPattern' => '/n(ick\\s)name|nick$/i',
230 'dataPattern' => '/^\\w+$/',
231 'export' => true,
232 'html' => array(
233 'type' => 'Text',
234 ),
235 ),
236 'legal_name' => array(
237 'name' => 'legal_name',
238 'type' => 2,
239 'title' => 'Legal Name',
240 'maxlength' => 128,
241 'size' => 30,
242 'import' => true,
243 'where' => 'civicrm_contact.legal_name',
244 'headerPattern' => '/^legal|(l(egal\\s)?name)$/i',
245 'export' => true,
246 'html' => array(
247 'type' => 'Text',
248 ),
249 ),
250 'image_URL' => array(
251 'name' => 'image_URL',
252 'type' => 2,
253 'title' => 'Image Url',
254 'maxlength' => 255,
255 'size' => 45,
256 'import' => true,
257 'where' => 'civicrm_contact.image_URL',
258 'export' => true,
259 'html' => array(
260 'type' => 'Text',
261 ),
262 ),
263 'preferred_communication_method' => array(
264 'name' => 'preferred_communication_method',
265 'type' => 2,
266 'title' => 'Preferred Communication Method',
267 'maxlength' => 255,
268 'size' => 45,
269 'import' => true,
270 'where' => 'civicrm_contact.preferred_communication_method',
271 'headerPattern' => '/^p(ref\\w*\\s)?c(omm\\w*)|( meth\\w*)$/i',
272 'dataPattern' => '/^\\w+$/',
273 'export' => true,
274 'html' => array(
275 'type' => 'Select',
276 ),
277 'pseudoconstant' => array(
278 'optionGroupName' => 'preferred_communication_method',
279 ),
280 ),
281 'preferred_language' => array(
282 'name' => 'preferred_language',
283 'type' => 2,
284 'title' => 'Preferred Language',
285 'maxlength' => 5,
286 'size' => 6,
287 'import' => true,
288 'where' => 'civicrm_contact.preferred_language',
289 'headerPattern' => '/^lang/i',
290 'export' => true,
291 'html' => array(
292 'type' => 'Select',
293 ),
294 'pseudoconstant' => array(
295 'optionGroupName' => 'languages',
296 'keyColumn' => 'name',
297 ),
298 ),
299 'preferred_mail_format' => array(
300 'name' => 'preferred_mail_format',
301 'type' => 2,
302 'title' => 'Preferred Mail Format',
303 'maxlength' => 8,
304 'size' => 8,
305 'import' => true,
306 'where' => 'civicrm_contact.preferred_mail_format',
307 'headerPattern' => '/^p(ref\\w*\\s)?m(ail\\s)?f(orm\\w*)$/i',
308 'export' => true,
309 'default' => 'Both',
310 'html' => array(
311 'type' => 'Select',
312 ),
313 'pseudoconstant' => array(
314 'callback' => 'CRM_Core_SelectValues::pmf',
315 ),
316 ),
317 'hash' => array(
318 'name' => 'hash',
319 'type' => 2,
320 'title' => 'Contact Hash',
321 'maxlength' => 32,
322 'size' => 20,
323 'export' => true,
324 'where' => 'civicrm_contact.hash',
325 ),
326 'api_key' => array(
327 'name' => 'api_key',
328 'type' => 2,
329 'title' => 'Api Key',
330 'maxlength' => 32,
331 'size' => 20,
332 ),
333 'first_name' => array(
334 'name' => 'first_name',
335 'type' => 2,
336 'title' => 'First Name',
337 'maxlength' => 64,
338 'size' => 30,
339 'import' => true,
340 'where' => 'civicrm_contact.first_name',
341 'headerPattern' => '/^first|(f(irst\\s)?name)$/i',
342 'dataPattern' => '/^\\w+$/',
343 'export' => true,
344 'html' => array(
345 'type' => 'Text',
346 ),
347 ),
348 'middle_name' => array(
349 'name' => 'middle_name',
350 'type' => 2,
351 'title' => 'Middle Name',
352 'maxlength' => 64,
353 'size' => 20,
354 'import' => true,
355 'where' => 'civicrm_contact.middle_name',
356 'headerPattern' => '/^middle|(m(iddle\\s)?name)$/i',
357 'dataPattern' => '/^\\w+$/',
358 'export' => true,
359 'html' => array(
360 'type' => 'Text',
361 ),
362 ),
363 'last_name' => array(
364 'name' => 'last_name',
365 'type' => 2,
366 'title' => 'Last Name',
367 'maxlength' => 64,
368 'size' => 30,
369 'import' => true,
370 'where' => 'civicrm_contact.last_name',
371 'headerPattern' => '/^last|(l(ast\\s)?name)$/i',
372 'dataPattern' => '/^\\w+(\\s\\w+)?+$/',
373 'export' => true,
374 'html' => array(
375 'type' => 'Text',
376 ),
377 ),
378 'prefix_id' => array(
379 'name' => 'prefix_id',
380 'type' => 1,
381 'title' => 'Individual Prefix',
382 'import' => true,
383 'where' => 'civicrm_contact.prefix_id',
384 'headerPattern' => '/^(prefix|title)/i',
385 'dataPattern' => '/^(mr|ms|mrs|sir|dr)\\.?$/i',
386 'export' => true,
387 'html' => array(
388 'type' => 'Select',
389 ),
390 'pseudoconstant' => array(
391 'optionGroupName' => 'individual_prefix',
392 ),
393 'api.aliases' => array(
394 '0' => 'individual_prefix',
395 '1' => 'individual_prefix_id',
396 ),
397 ),
398 'suffix_id' => array(
399 'name' => 'suffix_id',
400 'type' => 1,
401 'title' => 'Individual Suffix',
402 'import' => true,
403 'where' => 'civicrm_contact.suffix_id',
404 'headerPattern' => '/^suffix$/i',
405 'dataPattern' => '/^(sr|jr)\\.?|i{2,}$/',
406 'export' => true,
407 'html' => array(
408 'type' => 'Select',
409 ),
410 'pseudoconstant' => array(
411 'optionGroupName' => 'individual_suffix',
412 ),
413 'api.aliases' => array(
414 '0' => 'individual_suffix',
415 '1' => 'individual_suffix_id',
416 ),
417 ),
418 'formal_title' => array(
419 'name' => 'formal_title',
420 'type' => 2,
421 'title' => 'Formal Title',
422 'maxlength' => 64,
423 'size' => 30,
424 'import' => true,
425 'where' => 'civicrm_contact.formal_title',
426 'headerPattern' => '/^title/i',
427 'export' => true,
428 ),
429 'communication_style_id' => array(
430 'name' => 'communication_style_id',
431 'type' => 1,
432 'title' => 'Communication Style',
433 'export' => true,
434 'where' => 'civicrm_contact.communication_style_id',
435 'pseudoconstant' => array(
436 'optionGroupName' => 'communication_style',
437 ),
438 ),
439 'email_greeting_id' => array(
440 'name' => 'email_greeting_id',
441 'type' => 1,
442 'title' => 'Email Greeting ID',
443 ),
444 'email_greeting_custom' => array(
445 'name' => 'email_greeting_custom',
446 'type' => 2,
447 'title' => 'Email Greeting Custom',
448 'maxlength' => 128,
449 'size' => 45,
450 'import' => true,
451 'where' => 'civicrm_contact.email_greeting_custom',
452 'html' => array(
453 'type' => 'Text',
454 ),
455 ),
456 'email_greeting_display' => array(
457 'name' => 'email_greeting_display',
458 'type' => 2,
459 'title' => 'Email Greeting',
460 'maxlength' => 255,
461 'size' => 45,
462 'html' => array(
463 'type' => 'Text',
464 ),
465 ),
466 'postal_greeting_id' => array(
467 'name' => 'postal_greeting_id',
468 'type' => 1,
469 'title' => 'Postal Greeting ID',
470 'html' => array(
471 'type' => 'Text',
472 ),
473 ),
474 'postal_greeting_custom' => array(
475 'name' => 'postal_greeting_custom',
476 'type' => 2,
477 'title' => 'Postal Greeting Custom',
478 'maxlength' => 128,
479 'size' => 45,
480 'import' => true,
481 'where' => 'civicrm_contact.postal_greeting_custom',
482 'html' => array(
483 'type' => 'Text',
484 ),
485 ),
486 'postal_greeting_display' => array(
487 'name' => 'postal_greeting_display',
488 'type' => 2,
489 'title' => 'Postal Greeting',
490 'maxlength' => 255,
491 'size' => 45,
492 'html' => array(
493 'type' => 'Text',
494 ),
495 ),
496 'addressee_id' => array(
497 'name' => 'addressee_id',
498 'type' => 1,
499 'title' => 'Addressee ID',
500 ),
501 'addressee_custom' => array(
502 'name' => 'addressee_custom',
503 'type' => 2,
504 'title' => 'Addressee Custom',
505 'maxlength' => 128,
506 'size' => 45,
507 'import' => true,
508 'where' => 'civicrm_contact.addressee_custom',
509 'html' => array(
510 'type' => 'Text',
511 ),
512 ),
513 'addressee_display' => array(
514 'name' => 'addressee_display',
515 'type' => 2,
516 'title' => 'Addressee',
517 'maxlength' => 255,
518 'size' => 45,
519 'html' => array(
520 'type' => 'Text',
521 ),
522 ),
523 'job_title' => array(
524 'name' => 'job_title',
525 'type' => 2,
526 'title' => 'Job Title',
527 'maxlength' => 255,
528 'size' => 20,
529 'import' => true,
530 'where' => 'civicrm_contact.job_title',
531 'headerPattern' => '/^job|(j(ob\\s)?title)$/i',
532 'dataPattern' => '//',
533 'export' => true,
534 'html' => array(
535 'type' => 'Text',
536 ),
537 ),
538 'gender_id' => array(
539 'name' => 'gender_id',
540 'type' => 1,
541 'title' => 'Gender',
542 'import' => true,
543 'where' => 'civicrm_contact.gender_id',
544 'headerPattern' => '/^gender$/i',
545 'export' => true,
546 'html' => array(
547 'type' => 'Select',
548 ),
549 'pseudoconstant' => array(
550 'optionGroupName' => 'gender',
551 ),
552 ),
553 'birth_date' => array(
554 'name' => 'birth_date',
555 'type' => 4,
556 'title' => 'Birth Date',
557 'import' => true,
558 'where' => 'civicrm_contact.birth_date',
559 'headerPattern' => '/^birth|(b(irth\\s)?date)|D(\\W*)O(\\W*)B(\\W*)$/i',
560 'dataPattern' => '/\\d{4}-?\\d{2}-?\\d{2}/',
561 'export' => true,
562 'html' => array(
563 'type' => 'Select Date',
564 ),
565 ),
566 'is_deceased' => array(
567 'name' => 'is_deceased',
568 'type' => 16,
569 'title' => 'Is Deceased',
570 'import' => true,
571 'where' => 'civicrm_contact.is_deceased',
572 'headerPattern' => '/i(s\\s)?d(eceased)$/i',
573 'export' => true,
574 'html' => array(
575 'type' => 'CheckBox',
576 ),
577 ),
578 'deceased_date' => array(
579 'name' => 'deceased_date',
580 'type' => 4,
581 'title' => 'Deceased Date',
582 'import' => true,
583 'where' => 'civicrm_contact.deceased_date',
584 'headerPattern' => '/^deceased|(d(eceased\\s)?date)$/i',
585 'export' => true,
586 'html' => array(
587 'type' => 'Select Date',
588 ),
589 ),
590 'household_name' => array(
591 'name' => 'household_name',
592 'type' => 2,
593 'title' => 'Household Name',
594 'maxlength' => 128,
595 'size' => 30,
596 'import' => true,
597 'where' => 'civicrm_contact.household_name',
598 'headerPattern' => '/^household|(h(ousehold\\s)?name)$/i',
599 'dataPattern' => '/^\\w+$/',
600 'export' => true,
601 'html' => array(
602 'type' => 'Text',
603 ),
604 ),
605 'primary_contact_id' => array(
606 'name' => 'primary_contact_id',
607 'type' => 1,
608 'title' => 'Household Primary Contact ID',
609 'FKClassName' => 'CRM_Contact_DAO_Contact',
610 'html' => array(
611 'type' => 'Select',
612 ),
613 ),
614 'organization_name' => array(
615 'name' => 'organization_name',
616 'type' => 2,
617 'title' => 'Organization Name',
618 'maxlength' => 128,
619 'size' => 30,
620 'import' => true,
621 'where' => 'civicrm_contact.organization_name',
622 'headerPattern' => '/^organization|(o(rganization\\s)?name)$/i',
623 'dataPattern' => '/^\\w+$/',
624 'export' => true,
625 'html' => array(
626 'type' => 'Text',
627 ),
628 ),
629 'sic_code' => array(
630 'name' => 'sic_code',
631 'type' => 2,
632 'title' => 'Sic Code',
633 'maxlength' => 8,
634 'size' => 8,
635 'import' => true,
636 'where' => 'civicrm_contact.sic_code',
637 'headerPattern' => '/^sic|(s(ic\\s)?code)$/i',
638 'export' => true,
639 'html' => array(
640 'type' => 'Text',
641 ),
642 ),
643 'user_unique_id' => array(
644 'name' => 'user_unique_id',
645 'type' => 2,
646 'title' => 'Unique ID (OpenID)',
647 'maxlength' => 255,
648 'size' => 45,
649 'import' => true,
650 'where' => 'civicrm_contact.user_unique_id',
651 'headerPattern' => '/^Open\\s?ID|u(niq\\w*)?\\s?ID/i',
652 'dataPattern' => '/^[\\w\\/\\:\\.]+$/',
653 'export' => true,
654 'rule' => 'url',
655 'html' => array(
656 'type' => 'Text',
657 ),
658 ),
659 'created_date' => array(
660 'name' => 'created_date',
661 'type' => 256,
662 'title' => 'Created Date',
663 'required' => '',
664 'export' => true,
665 'where' => 'civicrm_contact.created_date',
666 'default' => 'NULL',
667 ),
668 'modified_date' => array(
669 'name' => 'modified_date',
670 'type' => 256,
671 'title' => 'Modified Date',
672 'required' => '',
673 'export' => true,
674 'where' => 'civicrm_contact.modified_date',
675 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
676 ),
677 'source' => array(
678 'name' => 'source',
679 'type' => 2,
680 'title' => 'Source of Contact Data',
681 'maxlength' => 255,
682 'size' => 30,
683 'import' => true,
684 'where' => 'civicrm_contact.source',
685 'headerPattern' => '/(S(ource\\s)?o(f\\s)?C(ontact\\s)?Data)$/i',
686 'export' => true,
687 'html' => array(
688 'type' => 'Text',
689 ),
690 'uniqueName' => 'contact_source',
691 ),
692 'employer_id' => array(
693 'name' => 'employer_id',
694 'type' => 1,
695 'title' => 'Current Employer ID',
696 'export' => true,
697 'where' => 'civicrm_contact.employer_id',
698 'FKClassName' => 'CRM_Contact_DAO_Contact',
699 'html' => array(
700 'type' => 'Autocomplete-Select',
701 ),
702 'uniqueName' => 'current_employer_id',
703 ),
704 'is_deleted' => array(
705 'name' => 'is_deleted',
706 'type' => 16,
707 'title' => 'Contact is in Trash',
708 'required' => true,
709 'export' => true,
710 'where' => 'civicrm_contact.is_deleted',
711 'html' => array(
712 'type' => 'CheckBox',
713 ),
714 'uniqueName' => 'contact_is_deleted',
715 ),
716 'custom_1' => array(
717 'label' => 'Our special field',
718 'groupTitle' => 'select_test_g',
719 'data_type' => 'String',
720 'html_type' => 'Select',
721 'default_value' => '',
722 'text_length' => '',
723 'options_per_line' => '',
724 'custom_group_id' => '1',
725 'extends' => 'Contact',
726 'is_search_range' => 0,
727 'extends_entity_column_value' => '',
728 'extends_entity_column_id' => '',
729 'is_view' => 0,
730 'is_multiple' => 0,
731 'option_group_id' => '102',
732 'date_format' => '',
733 'time_format' => '',
734 'is_required' => '1',
735 'name' => 'custom_1',
736 'title' => 'Our special field',
737 'type' => 2,
738 'options' => array(
739 '1' => 'Label1',
740 '2' => 'Label2',
741 ),
742 ),
743 'current_employer' => array(
744 'title' => 'Current Employer',
745 'description' => 'Name of Current Employer',
746 'type' => 2,
747 ),
748 'dupe_check' => array(
749 'title' => 'Check for Duplicates',
750 'description' => 'Throw error if contact create matches dedupe rule',
751 ),
752 ),
753 );
754
755 return $expectedResult;
756 }
757
758
759 /*
760 * This example has been generated from the API test suite. The test that created it is called
761 *
762 * testCustomFieldCreateWithOptionValues and can be found in
763 * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php
764 *
765 * You can see the outcome of the API tests at
766 * https://test.civicrm.org/job/CiviCRM-master-git/
767 *
768 * To Learn about the API read
769 * http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API
770 *
771 * Browse the api on your own site with the api explorer
772 * http://MYSITE.ORG/path/to/civicrm/api/explorer
773 *
774 * Read more about testing here
775 * http://wiki.civicrm.org/confluence/display/CRM/Testing
776 *
777 * API Standards documentation:
778 * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards
779 */