Merge pull request #13230 from colemanw/Api3
[civicrm-core.git] / CRM / Member / DAO / Membership.php
1 <?php
2
3 /**
4 * @package CRM
5 * @copyright CiviCRM LLC (c) 2004-2018
6 *
7 * Generated from xml/schema/CRM/Member/Membership.xml
8 * DO NOT EDIT. Generated by CRM_Core_CodeGen
9 * (GenCodeChecksum:f292ac185330c17ffa8c647359ab07b4)
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 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 static $_log = TRUE;
30
31 /**
32 * Membership Id
33 *
34 * @var int unsigned
35 */
36 public $id;
37
38 /**
39 * FK to Contact ID
40 *
41 * @var int unsigned
42 */
43 public $contact_id;
44
45 /**
46 * FK to Membership Type
47 *
48 * @var int unsigned
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 unsigned
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 boolean
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 unsigned
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 boolean
115 */
116 public $is_test;
117
118 /**
119 * @var boolean
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 unsigned
127 */
128 public $contribution_recur_id;
129
130 /**
131 * The campaign for which this membership is attached.
132 *
133 * @var int unsigned
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 'dataPattern' => '',
183 'export' => TRUE,
184 'table_name' => 'civicrm_membership',
185 'entity' => 'Membership',
186 'bao' => 'CRM_Member_BAO_Membership',
187 'localizable' => 0,
188 ],
189 'membership_contact_id' => [
190 'name' => 'contact_id',
191 'type' => CRM_Utils_Type::T_INT,
192 'title' => ts('Contact ID'),
193 'description' => ts('FK to Contact ID'),
194 'required' => TRUE,
195 'import' => TRUE,
196 'where' => 'civicrm_membership.contact_id',
197 'headerPattern' => '/contact(.?id)?/i',
198 'dataPattern' => '/^\d+$/',
199 'export' => TRUE,
200 'table_name' => 'civicrm_membership',
201 'entity' => 'Membership',
202 'bao' => 'CRM_Member_BAO_Membership',
203 'localizable' => 0,
204 'FKClassName' => 'CRM_Contact_DAO_Contact',
205 'html' => [
206 'type' => 'EntityRef',
207 ],
208 ],
209 'membership_type_id' => [
210 'name' => 'membership_type_id',
211 'type' => CRM_Utils_Type::T_INT,
212 'title' => ts('Membership Type Id'),
213 'description' => ts('FK to Membership Type'),
214 'required' => TRUE,
215 'import' => TRUE,
216 'where' => 'civicrm_membership.membership_type_id',
217 'headerPattern' => '/^(m(embership\s)?type)$/i',
218 'dataPattern' => '',
219 'export' => FALSE,
220 'table_name' => 'civicrm_membership',
221 'entity' => 'Membership',
222 'bao' => 'CRM_Member_BAO_Membership',
223 'localizable' => 0,
224 'FKClassName' => 'CRM_Member_DAO_MembershipType',
225 'html' => [
226 'type' => 'Select',
227 ],
228 'pseudoconstant' => [
229 'table' => 'civicrm_membership_type',
230 'keyColumn' => 'id',
231 'labelColumn' => 'name',
232 ]
233 ],
234 'join_date' => [
235 'name' => 'join_date',
236 'type' => CRM_Utils_Type::T_DATE,
237 'title' => ts('Member Since'),
238 'description' => ts('Beginning of initial membership period (member since...).'),
239 'import' => TRUE,
240 'where' => 'civicrm_membership.join_date',
241 'headerPattern' => '/^join|(j(oin\s)?date)$/i',
242 'dataPattern' => '/\d{4}-?\d{2}-?\d{2}/',
243 'export' => TRUE,
244 'table_name' => 'civicrm_membership',
245 'entity' => 'Membership',
246 'bao' => 'CRM_Member_BAO_Membership',
247 'localizable' => 0,
248 'html' => [
249 'type' => 'Select Date',
250 'formatType' => 'activityDate',
251 ],
252 ],
253 'membership_start_date' => [
254 'name' => 'start_date',
255 'type' => CRM_Utils_Type::T_DATE,
256 'title' => ts('Membership Start Date'),
257 'description' => ts('Beginning of current uninterrupted membership period.'),
258 'import' => TRUE,
259 'where' => 'civicrm_membership.start_date',
260 'headerPattern' => '/(member(ship)?.)?start(s)?(.date$)?/i',
261 'dataPattern' => '/\d{4}-?\d{2}-?\d{2}/',
262 'export' => TRUE,
263 'table_name' => 'civicrm_membership',
264 'entity' => 'Membership',
265 'bao' => 'CRM_Member_BAO_Membership',
266 'localizable' => 0,
267 'html' => [
268 'type' => 'Select Date',
269 'formatType' => 'activityDate',
270 ],
271 ],
272 'membership_end_date' => [
273 'name' => 'end_date',
274 'type' => CRM_Utils_Type::T_DATE,
275 'title' => ts('Membership Expiration Date'),
276 'description' => ts('Current membership period expire date.'),
277 'import' => TRUE,
278 'where' => 'civicrm_membership.end_date',
279 'headerPattern' => '/(member(ship)?.)?end(s)?(.date$)?/i',
280 'dataPattern' => '/\d{4}-?\d{2}-?\d{2}/',
281 'export' => TRUE,
282 'table_name' => 'civicrm_membership',
283 'entity' => 'Membership',
284 'bao' => 'CRM_Member_BAO_Membership',
285 'localizable' => 0,
286 'html' => [
287 'type' => 'Select Date',
288 'formatType' => 'activityDate',
289 ],
290 ],
291 'membership_source' => [
292 'name' => 'source',
293 'type' => CRM_Utils_Type::T_STRING,
294 'title' => ts('Source'),
295 'maxlength' => 128,
296 'size' => CRM_Utils_Type::HUGE,
297 'import' => TRUE,
298 'where' => 'civicrm_membership.source',
299 'headerPattern' => '/^(member(ship?))?source$/i',
300 'dataPattern' => '',
301 'export' => TRUE,
302 'table_name' => 'civicrm_membership',
303 'entity' => 'Membership',
304 'bao' => 'CRM_Member_BAO_Membership',
305 'localizable' => 0,
306 'html' => [
307 'type' => 'Text',
308 ],
309 ],
310 'status_id' => [
311 'name' => 'status_id',
312 'type' => CRM_Utils_Type::T_INT,
313 'title' => ts('Membership Status Id'),
314 'description' => ts('FK to Membership Status'),
315 'required' => TRUE,
316 'import' => TRUE,
317 'where' => 'civicrm_membership.status_id',
318 'headerPattern' => '/(member(ship|).)?(status)$/i',
319 'dataPattern' => '',
320 'export' => FALSE,
321 'table_name' => 'civicrm_membership',
322 'entity' => 'Membership',
323 'bao' => 'CRM_Member_BAO_Membership',
324 'localizable' => 0,
325 'FKClassName' => 'CRM_Member_DAO_MembershipStatus',
326 'html' => [
327 'type' => 'Select',
328 ],
329 'pseudoconstant' => [
330 'table' => 'civicrm_membership_status',
331 'keyColumn' => 'id',
332 'labelColumn' => 'label',
333 ]
334 ],
335 'is_override' => [
336 'name' => 'is_override',
337 'type' => CRM_Utils_Type::T_BOOLEAN,
338 'title' => ts('Status Override'),
339 '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.'),
340 'import' => TRUE,
341 'where' => 'civicrm_membership.is_override',
342 'headerPattern' => '/override$/i',
343 'dataPattern' => '',
344 'export' => TRUE,
345 'table_name' => 'civicrm_membership',
346 'entity' => 'Membership',
347 'bao' => 'CRM_Member_BAO_Membership',
348 'localizable' => 0,
349 'html' => [
350 'type' => 'CheckBox',
351 ],
352 ],
353 'status_override_end_date' => [
354 'name' => 'status_override_end_date',
355 'type' => CRM_Utils_Type::T_DATE,
356 'title' => ts('Status Override End Date'),
357 'description' => ts('Then end date of membership status override if \'Override until selected date\' override type is selected.'),
358 'import' => TRUE,
359 'where' => 'civicrm_membership.status_override_end_date',
360 'headerPattern' => '',
361 'dataPattern' => '',
362 'export' => TRUE,
363 'default' => 'NULL',
364 'table_name' => 'civicrm_membership',
365 'entity' => 'Membership',
366 'bao' => 'CRM_Member_BAO_Membership',
367 'localizable' => 0,
368 'html' => [
369 'type' => 'Select Date',
370 ],
371 ],
372 'owner_membership_id' => [
373 'name' => 'owner_membership_id',
374 'type' => CRM_Utils_Type::T_INT,
375 'title' => ts('Primary Member ID'),
376 'description' => ts('Optional FK to Parent Membership.'),
377 'export' => TRUE,
378 'where' => 'civicrm_membership.owner_membership_id',
379 'headerPattern' => '',
380 'dataPattern' => '',
381 'table_name' => 'civicrm_membership',
382 'entity' => 'Membership',
383 'bao' => 'CRM_Member_BAO_Membership',
384 'localizable' => 0,
385 'FKClassName' => 'CRM_Member_DAO_Membership',
386 ],
387 'max_related' => [
388 'name' => 'max_related',
389 'type' => CRM_Utils_Type::T_INT,
390 'title' => ts('Max Related'),
391 'description' => ts('Maximum number of related memberships (membership_type override).'),
392 'table_name' => 'civicrm_membership',
393 'entity' => 'Membership',
394 'bao' => 'CRM_Member_BAO_Membership',
395 'localizable' => 0,
396 'html' => [
397 'type' => 'Text',
398 ],
399 ],
400 'member_is_test' => [
401 'name' => 'is_test',
402 'type' => CRM_Utils_Type::T_BOOLEAN,
403 'title' => ts('Test'),
404 'import' => TRUE,
405 'where' => 'civicrm_membership.is_test',
406 'headerPattern' => '/(is.)?test(.member(ship)?)?/i',
407 'dataPattern' => '',
408 'export' => TRUE,
409 'default' => '0',
410 'table_name' => 'civicrm_membership',
411 'entity' => 'Membership',
412 'bao' => 'CRM_Member_BAO_Membership',
413 'localizable' => 0,
414 'html' => [
415 'type' => 'CheckBox',
416 ],
417 ],
418 'member_is_pay_later' => [
419 'name' => 'is_pay_later',
420 'type' => CRM_Utils_Type::T_BOOLEAN,
421 'title' => ts('Is Pay Later'),
422 'import' => TRUE,
423 'where' => 'civicrm_membership.is_pay_later',
424 'headerPattern' => '/(is.)?(pay(.)?later)$/i',
425 'dataPattern' => '',
426 'export' => TRUE,
427 'default' => '0',
428 'table_name' => 'civicrm_membership',
429 'entity' => 'Membership',
430 'bao' => 'CRM_Member_BAO_Membership',
431 'localizable' => 0,
432 'html' => [
433 'type' => 'CheckBox',
434 ],
435 ],
436 'contribution_recur_id' => [
437 'name' => 'contribution_recur_id',
438 'type' => CRM_Utils_Type::T_INT,
439 'title' => ts('Membership Recurring Contribution'),
440 '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.'),
441 'table_name' => 'civicrm_membership',
442 'entity' => 'Membership',
443 'bao' => 'CRM_Member_BAO_Membership',
444 'localizable' => 0,
445 'FKClassName' => 'CRM_Contribute_DAO_ContributionRecur',
446 ],
447 'member_campaign_id' => [
448 'name' => 'campaign_id',
449 'type' => CRM_Utils_Type::T_INT,
450 'title' => ts('Campaign'),
451 'description' => ts('The campaign for which this membership is attached.'),
452 'import' => TRUE,
453 'where' => 'civicrm_membership.campaign_id',
454 'headerPattern' => '',
455 'dataPattern' => '',
456 'export' => TRUE,
457 'table_name' => 'civicrm_membership',
458 'entity' => 'Membership',
459 'bao' => 'CRM_Member_BAO_Membership',
460 'localizable' => 0,
461 'FKClassName' => 'CRM_Campaign_DAO_Campaign',
462 'html' => [
463 'type' => 'Select',
464 ],
465 'pseudoconstant' => [
466 'table' => 'civicrm_campaign',
467 'keyColumn' => 'id',
468 'labelColumn' => 'title',
469 ]
470 ],
471 ];
472 CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
473 }
474 return Civi::$statics[__CLASS__]['fields'];
475 }
476
477 /**
478 * Return a mapping from field-name to the corresponding key (as used in fields()).
479 *
480 * @return array
481 * Array(string $name => string $uniqueName).
482 */
483 public static function &fieldKeys() {
484 if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) {
485 Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields()));
486 }
487 return Civi::$statics[__CLASS__]['fieldKeys'];
488 }
489
490 /**
491 * Returns the names of this table
492 *
493 * @return string
494 */
495 public static function getTableName() {
496 return self::$_tableName;
497 }
498
499 /**
500 * Returns if this table needs to be logged
501 *
502 * @return bool
503 */
504 public function getLog() {
505 return self::$_log;
506 }
507
508 /**
509 * Returns the list of fields that can be imported
510 *
511 * @param bool $prefix
512 *
513 * @return array
514 */
515 public static function &import($prefix = FALSE) {
516 $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'membership', $prefix, []);
517 return $r;
518 }
519
520 /**
521 * Returns the list of fields that can be exported
522 *
523 * @param bool $prefix
524 *
525 * @return array
526 */
527 public static function &export($prefix = FALSE) {
528 $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'membership', $prefix, []);
529 return $r;
530 }
531
532 /**
533 * Returns the list of indices
534 *
535 * @param bool $localize
536 *
537 * @return array
538 */
539 public static function indices($localize = TRUE) {
540 $indices = [
541 'index_owner_membership_id' => [
542 'name' => 'index_owner_membership_id',
543 'field' => [
544 0 => 'owner_membership_id',
545 ],
546 'localizable' => FALSE,
547 'sig' => 'civicrm_membership::0::owner_membership_id',
548 ],
549 ];
550 return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices;
551 }
552
553 }