Merge pull request #18400 from aydun/class_api_tweak_2
[civicrm-core.git] / CRM / Member / DAO / Membership.php
1 <?php
2
3 /**
4 * @package CRM
5 * @copyright CiviCRM LLC https://civicrm.org/licensing
6 *
7 * Generated from xml/schema/CRM/Member/Membership.xml
8 * DO NOT EDIT. Generated by CRM_Core_CodeGen
9 * (GenCodeChecksum:d80be256fb175b763047883b8694559c)
10 */
11
12 /**
13 * Database access object for the Membership entity.
14 */
15 class CRM_Member_DAO_Membership extends CRM_Core_DAO {
16 const EXT = 'civicrm';
17 const TABLE_ADDED = '1.5';
18
19 /**
20 * Static instance to hold the table name.
21 *
22 * @var string
23 */
24 public static $_tableName = 'civicrm_membership';
25
26 /**
27 * Icon associated with this entity.
28 *
29 * @var string
30 */
31 public static $_icon = 'fa-id-badge';
32
33 /**
34 * Should CiviCRM log any modifications to this table in the civicrm_log table.
35 *
36 * @var bool
37 */
38 public static $_log = TRUE;
39
40 /**
41 * Membership Id
42 *
43 * @var int
44 */
45 public $id;
46
47 /**
48 * FK to Contact ID
49 *
50 * @var int
51 */
52 public $contact_id;
53
54 /**
55 * FK to Membership Type
56 *
57 * @var int
58 */
59 public $membership_type_id;
60
61 /**
62 * Beginning of initial membership period (member since...).
63 *
64 * @var date
65 */
66 public $join_date;
67
68 /**
69 * Beginning of current uninterrupted membership period.
70 *
71 * @var date
72 */
73 public $start_date;
74
75 /**
76 * Current membership period expire date.
77 *
78 * @var date
79 */
80 public $end_date;
81
82 /**
83 * @var string
84 */
85 public $source;
86
87 /**
88 * FK to Membership Status
89 *
90 * @var int
91 */
92 public $status_id;
93
94 /**
95 * Admin users may set a manual status which overrides the calculated status. When this flag is true, automated status update scripts should NOT modify status for the record.
96 *
97 * @var bool
98 */
99 public $is_override;
100
101 /**
102 * Then end date of membership status override if 'Override until selected date' override type is selected.
103 *
104 * @var date
105 */
106 public $status_override_end_date;
107
108 /**
109 * Optional FK to Parent Membership.
110 *
111 * @var int
112 */
113 public $owner_membership_id;
114
115 /**
116 * Maximum number of related memberships (membership_type override).
117 *
118 * @var int
119 */
120 public $max_related;
121
122 /**
123 * @var bool
124 */
125 public $is_test;
126
127 /**
128 * @var bool
129 */
130 public $is_pay_later;
131
132 /**
133 * Conditional foreign key to civicrm_contribution_recur id. Each membership in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.
134 *
135 * @var int
136 */
137 public $contribution_recur_id;
138
139 /**
140 * The campaign for which this membership is attached.
141 *
142 * @var int
143 */
144 public $campaign_id;
145
146 /**
147 * Class constructor.
148 */
149 public function __construct() {
150 $this->__table = 'civicrm_membership';
151 parent::__construct();
152 }
153
154 /**
155 * Returns localized title of this entity.
156 *
157 * @param bool $plural
158 * Whether to return the plural version of the title.
159 */
160 public static function getEntityTitle($plural = FALSE) {
161 return $plural ? ts('Memberships') : ts('Membership');
162 }
163
164 /**
165 * Returns foreign keys and entity references.
166 *
167 * @return array
168 * [CRM_Core_Reference_Interface]
169 */
170 public static function getReferenceColumns() {
171 if (!isset(Civi::$statics[__CLASS__]['links'])) {
172 Civi::$statics[__CLASS__]['links'] = static::createReferenceColumns(__CLASS__);
173 Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'contact_id', 'civicrm_contact', 'id');
174 Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'membership_type_id', 'civicrm_membership_type', 'id');
175 Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'status_id', 'civicrm_membership_status', 'id');
176 Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'owner_membership_id', 'civicrm_membership', 'id');
177 Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'contribution_recur_id', 'civicrm_contribution_recur', 'id');
178 Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'campaign_id', 'civicrm_campaign', 'id');
179 CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']);
180 }
181 return Civi::$statics[__CLASS__]['links'];
182 }
183
184 /**
185 * Returns all the column names of this table
186 *
187 * @return array
188 */
189 public static function &fields() {
190 if (!isset(Civi::$statics[__CLASS__]['fields'])) {
191 Civi::$statics[__CLASS__]['fields'] = [
192 'membership_id' => [
193 'name' => 'id',
194 'type' => CRM_Utils_Type::T_INT,
195 'title' => ts('Membership ID'),
196 'description' => ts('Membership Id'),
197 'required' => TRUE,
198 'import' => TRUE,
199 'where' => 'civicrm_membership.id',
200 'headerPattern' => '/^(m(embership\s)?id)$/i',
201 'export' => TRUE,
202 'table_name' => 'civicrm_membership',
203 'entity' => 'Membership',
204 'bao' => 'CRM_Member_BAO_Membership',
205 'localizable' => 0,
206 'add' => '1.5',
207 ],
208 'membership_contact_id' => [
209 'name' => 'contact_id',
210 'type' => CRM_Utils_Type::T_INT,
211 'title' => ts('Contact ID'),
212 'description' => ts('FK to Contact ID'),
213 'required' => TRUE,
214 'import' => TRUE,
215 'where' => 'civicrm_membership.contact_id',
216 'headerPattern' => '/contact(.?id)?/i',
217 'dataPattern' => '/^\d+$/',
218 'export' => TRUE,
219 'table_name' => 'civicrm_membership',
220 'entity' => 'Membership',
221 'bao' => 'CRM_Member_BAO_Membership',
222 'localizable' => 0,
223 'FKClassName' => 'CRM_Contact_DAO_Contact',
224 'html' => [
225 'type' => 'EntityRef',
226 ],
227 'add' => '1.5',
228 ],
229 'membership_type_id' => [
230 'name' => 'membership_type_id',
231 'type' => CRM_Utils_Type::T_INT,
232 'title' => ts('Membership Type Id'),
233 'description' => ts('FK to Membership Type'),
234 'required' => TRUE,
235 'import' => TRUE,
236 'where' => 'civicrm_membership.membership_type_id',
237 'headerPattern' => '/^(m(embership\s)?type)$/i',
238 'export' => FALSE,
239 'table_name' => 'civicrm_membership',
240 'entity' => 'Membership',
241 'bao' => 'CRM_Member_BAO_Membership',
242 'localizable' => 0,
243 'FKClassName' => 'CRM_Member_DAO_MembershipType',
244 'html' => [
245 'type' => 'Select',
246 'label' => ts("Membership Type"),
247 ],
248 'pseudoconstant' => [
249 'table' => 'civicrm_membership_type',
250 'keyColumn' => 'id',
251 'labelColumn' => 'name',
252 ],
253 'add' => '1.5',
254 ],
255 'membership_join_date' => [
256 'name' => 'join_date',
257 'type' => CRM_Utils_Type::T_DATE,
258 'title' => ts('Member Since'),
259 'description' => ts('Beginning of initial membership period (member since...).'),
260 'import' => TRUE,
261 'where' => 'civicrm_membership.join_date',
262 'headerPattern' => '/^join|(j(oin\s)?date)$/i',
263 'dataPattern' => '/\d{4}-?\d{2}-?\d{2}/',
264 'export' => TRUE,
265 'table_name' => 'civicrm_membership',
266 'entity' => 'Membership',
267 'bao' => 'CRM_Member_BAO_Membership',
268 'localizable' => 0,
269 'html' => [
270 'type' => 'Select Date',
271 'formatType' => 'activityDate',
272 ],
273 'add' => '1.5',
274 ],
275 'membership_start_date' => [
276 'name' => 'start_date',
277 'type' => CRM_Utils_Type::T_DATE,
278 'title' => ts('Membership Start Date'),
279 'description' => ts('Beginning of current uninterrupted membership period.'),
280 'import' => TRUE,
281 'where' => 'civicrm_membership.start_date',
282 'headerPattern' => '/(member(ship)?.)?start(s)?(.date$)?/i',
283 'dataPattern' => '/\d{4}-?\d{2}-?\d{2}/',
284 'export' => TRUE,
285 'table_name' => 'civicrm_membership',
286 'entity' => 'Membership',
287 'bao' => 'CRM_Member_BAO_Membership',
288 'localizable' => 0,
289 'html' => [
290 'type' => 'Select Date',
291 'formatType' => 'activityDate',
292 ],
293 'add' => '1.5',
294 ],
295 'membership_end_date' => [
296 'name' => 'end_date',
297 'type' => CRM_Utils_Type::T_DATE,
298 'title' => ts('Membership Expiration Date'),
299 'description' => ts('Current membership period expire date.'),
300 'import' => TRUE,
301 'where' => 'civicrm_membership.end_date',
302 'headerPattern' => '/(member(ship)?.)?end(s)?(.date$)?/i',
303 'dataPattern' => '/\d{4}-?\d{2}-?\d{2}/',
304 'export' => TRUE,
305 'table_name' => 'civicrm_membership',
306 'entity' => 'Membership',
307 'bao' => 'CRM_Member_BAO_Membership',
308 'localizable' => 0,
309 'html' => [
310 'type' => 'Select Date',
311 'formatType' => 'activityDate',
312 ],
313 'add' => '1.5',
314 ],
315 'membership_source' => [
316 'name' => 'source',
317 'type' => CRM_Utils_Type::T_STRING,
318 'title' => ts('Source'),
319 'maxlength' => 128,
320 'size' => CRM_Utils_Type::HUGE,
321 'import' => TRUE,
322 'where' => 'civicrm_membership.source',
323 'headerPattern' => '/^(member(ship?))?source$/i',
324 'export' => TRUE,
325 'table_name' => 'civicrm_membership',
326 'entity' => 'Membership',
327 'bao' => 'CRM_Member_BAO_Membership',
328 'localizable' => 0,
329 'html' => [
330 'type' => 'Text',
331 ],
332 'add' => '1.5',
333 ],
334 'status_id' => [
335 'name' => 'status_id',
336 'type' => CRM_Utils_Type::T_INT,
337 'title' => ts('Membership Status Id'),
338 'description' => ts('FK to Membership Status'),
339 'required' => TRUE,
340 'import' => TRUE,
341 'where' => 'civicrm_membership.status_id',
342 'headerPattern' => '/(member(ship|).)?(status)$/i',
343 'export' => FALSE,
344 'table_name' => 'civicrm_membership',
345 'entity' => 'Membership',
346 'bao' => 'CRM_Member_BAO_Membership',
347 'localizable' => 0,
348 'FKClassName' => 'CRM_Member_DAO_MembershipStatus',
349 'html' => [
350 'type' => 'Select',
351 ],
352 'pseudoconstant' => [
353 'table' => 'civicrm_membership_status',
354 'keyColumn' => 'id',
355 'labelColumn' => 'label',
356 ],
357 'add' => '1.5',
358 ],
359 'member_is_override' => [
360 'name' => 'is_override',
361 'type' => CRM_Utils_Type::T_BOOLEAN,
362 'title' => ts('Status Override'),
363 'description' => ts('Admin users may set a manual status which overrides the calculated status. When this flag is true, automated status update scripts should NOT modify status for the record.'),
364 'import' => TRUE,
365 'where' => 'civicrm_membership.is_override',
366 'headerPattern' => '/override$/i',
367 'export' => TRUE,
368 'table_name' => 'civicrm_membership',
369 'entity' => 'Membership',
370 'bao' => 'CRM_Member_BAO_Membership',
371 'localizable' => 0,
372 'html' => [
373 'type' => 'CheckBox',
374 ],
375 'add' => '1.5',
376 ],
377 'status_override_end_date' => [
378 'name' => 'status_override_end_date',
379 'type' => CRM_Utils_Type::T_DATE,
380 'title' => ts('Status Override End Date'),
381 'description' => ts('Then end date of membership status override if \'Override until selected date\' override type is selected.'),
382 'import' => TRUE,
383 'where' => 'civicrm_membership.status_override_end_date',
384 'export' => TRUE,
385 'default' => 'NULL',
386 'table_name' => 'civicrm_membership',
387 'entity' => 'Membership',
388 'bao' => 'CRM_Member_BAO_Membership',
389 'localizable' => 0,
390 'html' => [
391 'type' => 'Select Date',
392 'formatType' => 'activityDate',
393 ],
394 'add' => '4.7',
395 ],
396 'owner_membership_id' => [
397 'name' => 'owner_membership_id',
398 'type' => CRM_Utils_Type::T_INT,
399 'title' => ts('Primary Member ID'),
400 'description' => ts('Optional FK to Parent Membership.'),
401 'where' => 'civicrm_membership.owner_membership_id',
402 'export' => TRUE,
403 'table_name' => 'civicrm_membership',
404 'entity' => 'Membership',
405 'bao' => 'CRM_Member_BAO_Membership',
406 'localizable' => 0,
407 'FKClassName' => 'CRM_Member_DAO_Membership',
408 'add' => '1.7',
409 ],
410 'max_related' => [
411 'name' => 'max_related',
412 'type' => CRM_Utils_Type::T_INT,
413 'title' => ts('Max Related'),
414 'description' => ts('Maximum number of related memberships (membership_type override).'),
415 'where' => 'civicrm_membership.max_related',
416 'export' => TRUE,
417 'table_name' => 'civicrm_membership',
418 'entity' => 'Membership',
419 'bao' => 'CRM_Member_BAO_Membership',
420 'localizable' => 0,
421 'html' => [
422 'type' => 'Text',
423 ],
424 'add' => '4.3',
425 ],
426 'member_is_test' => [
427 'name' => 'is_test',
428 'type' => CRM_Utils_Type::T_BOOLEAN,
429 'title' => ts('Test'),
430 'import' => TRUE,
431 'where' => 'civicrm_membership.is_test',
432 'headerPattern' => '/(is.)?test(.member(ship)?)?/i',
433 'export' => TRUE,
434 'default' => '0',
435 'table_name' => 'civicrm_membership',
436 'entity' => 'Membership',
437 'bao' => 'CRM_Member_BAO_Membership',
438 'localizable' => 0,
439 'html' => [
440 'type' => 'CheckBox',
441 ],
442 'add' => NULL,
443 ],
444 'member_is_pay_later' => [
445 'name' => 'is_pay_later',
446 'type' => CRM_Utils_Type::T_BOOLEAN,
447 'title' => ts('Is Pay Later'),
448 'import' => TRUE,
449 'where' => 'civicrm_membership.is_pay_later',
450 'headerPattern' => '/(is.)?(pay(.)?later)$/i',
451 'export' => TRUE,
452 'default' => '0',
453 'table_name' => 'civicrm_membership',
454 'entity' => 'Membership',
455 'bao' => 'CRM_Member_BAO_Membership',
456 'localizable' => 0,
457 'html' => [
458 'type' => 'CheckBox',
459 ],
460 'add' => '2.1',
461 ],
462 'membership_recur_id' => [
463 'name' => 'contribution_recur_id',
464 'type' => CRM_Utils_Type::T_INT,
465 'title' => ts('Membership Recurring Contribution'),
466 'description' => ts('Conditional foreign key to civicrm_contribution_recur id. Each membership in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.'),
467 'where' => 'civicrm_membership.contribution_recur_id',
468 'export' => TRUE,
469 'table_name' => 'civicrm_membership',
470 'entity' => 'Membership',
471 'bao' => 'CRM_Member_BAO_Membership',
472 'localizable' => 0,
473 'FKClassName' => 'CRM_Contribute_DAO_ContributionRecur',
474 'add' => '3.3',
475 ],
476 'member_campaign_id' => [
477 'name' => 'campaign_id',
478 'type' => CRM_Utils_Type::T_INT,
479 'title' => ts('Campaign'),
480 'description' => ts('The campaign for which this membership is attached.'),
481 'import' => TRUE,
482 'where' => 'civicrm_membership.campaign_id',
483 'export' => TRUE,
484 'table_name' => 'civicrm_membership',
485 'entity' => 'Membership',
486 'bao' => 'CRM_Member_BAO_Membership',
487 'localizable' => 0,
488 'FKClassName' => 'CRM_Campaign_DAO_Campaign',
489 'html' => [
490 'type' => 'Select',
491 ],
492 'pseudoconstant' => [
493 'table' => 'civicrm_campaign',
494 'keyColumn' => 'id',
495 'labelColumn' => 'title',
496 ],
497 'add' => '3.4',
498 ],
499 ];
500 CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
501 }
502 return Civi::$statics[__CLASS__]['fields'];
503 }
504
505 /**
506 * Return a mapping from field-name to the corresponding key (as used in fields()).
507 *
508 * @return array
509 * Array(string $name => string $uniqueName).
510 */
511 public static function &fieldKeys() {
512 if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) {
513 Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields()));
514 }
515 return Civi::$statics[__CLASS__]['fieldKeys'];
516 }
517
518 /**
519 * Returns the names of this table
520 *
521 * @return string
522 */
523 public static function getTableName() {
524 return self::$_tableName;
525 }
526
527 /**
528 * Returns if this table needs to be logged
529 *
530 * @return bool
531 */
532 public function getLog() {
533 return self::$_log;
534 }
535
536 /**
537 * Returns the list of fields that can be imported
538 *
539 * @param bool $prefix
540 *
541 * @return array
542 */
543 public static function &import($prefix = FALSE) {
544 $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'membership', $prefix, []);
545 return $r;
546 }
547
548 /**
549 * Returns the list of fields that can be exported
550 *
551 * @param bool $prefix
552 *
553 * @return array
554 */
555 public static function &export($prefix = FALSE) {
556 $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'membership', $prefix, []);
557 return $r;
558 }
559
560 /**
561 * Returns the list of indices
562 *
563 * @param bool $localize
564 *
565 * @return array
566 */
567 public static function indices($localize = TRUE) {
568 $indices = [
569 'index_owner_membership_id' => [
570 'name' => 'index_owner_membership_id',
571 'field' => [
572 0 => 'owner_membership_id',
573 ],
574 'localizable' => FALSE,
575 'sig' => 'civicrm_membership::0::owner_membership_id',
576 ],
577 ];
578 return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices;
579 }
580
581 }