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