5 * @copyright CiviCRM LLC https://civicrm.org/licensing
7 * Generated from xml/schema/CRM/Contact/Relationship.xml
8 * DO NOT EDIT. Generated by CRM_Core_CodeGen
9 * (GenCodeChecksum:138d23f70bbc1e8c3b1ad2d247e9a8df)
13 * Database access object for the Relationship entity.
15 class CRM_Contact_DAO_Relationship
extends CRM_Core_DAO
{
16 const EXT
= 'civicrm';
17 const TABLE_ADDED
= '1.1';
20 * Static instance to hold the table name.
24 public static $_tableName = 'civicrm_relationship';
27 * Icon associated with this entity.
31 public static $_icon = 'fa-handshake-o';
34 * Should CiviCRM log any modifications to this table in the civicrm_log table.
38 public static $_log = TRUE;
41 * Paths for accessing this entity in the UI.
45 protected static $_paths = [
46 'view' => 'civicrm/contact/view/rel?action=view&reset=1&cid=[contact_id_a]&id=[id]',
47 'delete' => 'civicrm/contact/view/rel?action=delete&reset=1&cid=[contact_id_a]&id=[id]',
53 * @var int|string|null
54 * (SQL type: int unsigned)
55 * Note that values will be retrieved from the database as a string.
60 * id of the first contact
63 * (SQL type: int unsigned)
64 * Note that values will be retrieved from the database as a string.
69 * id of the second contact
72 * (SQL type: int unsigned)
73 * Note that values will be retrieved from the database as a string.
78 * Type of relationship
81 * (SQL type: int unsigned)
82 * Note that values will be retrieved from the database as a string.
84 public $relationship_type_id;
87 * date when the relationship started
91 * Note that values will be retrieved from the database as a string.
96 * date when the relationship ended
100 * Note that values will be retrieved from the database as a string.
105 * is the relationship active ?
108 * (SQL type: tinyint)
109 * Note that values will be retrieved from the database as a string.
114 * Optional verbose description for the relationship.
117 * (SQL type: varchar(255))
118 * Note that values will be retrieved from the database as a string.
123 * Permission that Contact A has to view/update Contact B
126 * (SQL type: int unsigned)
127 * Note that values will be retrieved from the database as a string.
129 public $is_permission_a_b;
132 * Permission that Contact B has to view/update Contact A
135 * (SQL type: int unsigned)
136 * Note that values will be retrieved from the database as a string.
138 public $is_permission_b_a;
143 * @var int|string|null
144 * (SQL type: int unsigned)
145 * Note that values will be retrieved from the database as a string.
150 * Relationship created date.
153 * (SQL type: timestamp)
154 * Note that values will be retrieved from the database as a string.
156 public $created_date;
159 * Relationship last modified.
162 * (SQL type: timestamp)
163 * Note that values will be retrieved from the database as a string.
165 public $modified_date;
170 public function __construct() {
171 $this->__table
= 'civicrm_relationship';
172 parent
::__construct();
176 * Returns localized title of this entity.
178 * @param bool $plural
179 * Whether to return the plural version of the title.
181 public static function getEntityTitle($plural = FALSE) {
182 return $plural ?
ts('Relationships') : ts('Relationship');
186 * Returns foreign keys and entity references.
189 * [CRM_Core_Reference_Interface]
191 public static function getReferenceColumns() {
192 if (!isset(Civi
::$statics[__CLASS__
]['links'])) {
193 Civi
::$statics[__CLASS__
]['links'] = static::createReferenceColumns(__CLASS__
);
194 Civi
::$statics[__CLASS__
]['links'][] = new CRM_Core_Reference_Basic(self
::getTableName(), 'contact_id_a', 'civicrm_contact', 'id');
195 Civi
::$statics[__CLASS__
]['links'][] = new CRM_Core_Reference_Basic(self
::getTableName(), 'contact_id_b', 'civicrm_contact', 'id');
196 Civi
::$statics[__CLASS__
]['links'][] = new CRM_Core_Reference_Basic(self
::getTableName(), 'relationship_type_id', 'civicrm_relationship_type', 'id');
197 Civi
::$statics[__CLASS__
]['links'][] = new CRM_Core_Reference_Basic(self
::getTableName(), 'case_id', 'civicrm_case', 'id');
198 CRM_Core_DAO_AllCoreTables
::invoke(__CLASS__
, 'links_callback', Civi
::$statics[__CLASS__
]['links']);
200 return Civi
::$statics[__CLASS__
]['links'];
204 * Returns all the column names of this table
208 public static function &fields() {
209 if (!isset(Civi
::$statics[__CLASS__
]['fields'])) {
210 Civi
::$statics[__CLASS__
]['fields'] = [
213 'type' => CRM_Utils_Type
::T_INT
,
214 'title' => ts('Relationship ID'),
215 'description' => ts('Relationship ID'),
217 'where' => 'civicrm_relationship.id',
218 'table_name' => 'civicrm_relationship',
219 'entity' => 'Relationship',
220 'bao' => 'CRM_Contact_BAO_Relationship',
229 'name' => 'contact_id_a',
230 'type' => CRM_Utils_Type
::T_INT
,
231 'title' => ts('Contact A ID'),
232 'description' => ts('id of the first contact'),
234 'where' => 'civicrm_relationship.contact_id_a',
235 'table_name' => 'civicrm_relationship',
236 'entity' => 'Relationship',
237 'bao' => 'CRM_Contact_BAO_Relationship',
239 'FKClassName' => 'CRM_Contact_DAO_Contact',
241 'label' => ts("Contact A"),
246 'name' => 'contact_id_b',
247 'type' => CRM_Utils_Type
::T_INT
,
248 'title' => ts('Contact B ID'),
249 'description' => ts('id of the second contact'),
251 'where' => 'civicrm_relationship.contact_id_b',
252 'table_name' => 'civicrm_relationship',
253 'entity' => 'Relationship',
254 'bao' => 'CRM_Contact_BAO_Relationship',
256 'FKClassName' => 'CRM_Contact_DAO_Contact',
258 'type' => 'EntityRef',
259 'label' => ts("Contact B"),
263 'relationship_type_id' => [
264 'name' => 'relationship_type_id',
265 'type' => CRM_Utils_Type
::T_INT
,
266 'title' => ts('Relationship Type ID'),
267 'description' => ts('Type of relationship'),
269 'where' => 'civicrm_relationship.relationship_type_id',
270 'table_name' => 'civicrm_relationship',
271 'entity' => 'Relationship',
272 'bao' => 'CRM_Contact_BAO_Relationship',
274 'FKClassName' => 'CRM_Contact_DAO_RelationshipType',
277 'label' => ts("Relationship Type"),
279 'pseudoconstant' => [
280 'table' => 'civicrm_relationship_type',
282 'labelColumn' => 'label_a_b',
283 'nameColumn' => 'name_a_b',
287 'relationship_start_date' => [
288 'name' => 'start_date',
289 'type' => CRM_Utils_Type
::T_DATE
,
290 'title' => ts('Relationship Start Date'),
291 'description' => ts('date when the relationship started'),
292 'where' => 'civicrm_relationship.start_date',
293 'table_name' => 'civicrm_relationship',
294 'entity' => 'Relationship',
295 'bao' => 'CRM_Contact_BAO_Relationship',
298 'type' => 'Select Date',
299 'formatType' => 'activityDate',
303 'relationship_end_date' => [
304 'name' => 'end_date',
305 'type' => CRM_Utils_Type
::T_DATE
,
306 'title' => ts('Relationship End Date'),
307 'description' => ts('date when the relationship ended'),
308 'where' => 'civicrm_relationship.end_date',
309 'table_name' => 'civicrm_relationship',
310 'entity' => 'Relationship',
311 'bao' => 'CRM_Contact_BAO_Relationship',
314 'type' => 'Select Date',
315 'formatType' => 'activityDate',
320 'name' => 'is_active',
321 'type' => CRM_Utils_Type
::T_BOOLEAN
,
322 'title' => ts('Relationship Is Active'),
323 'description' => ts('is the relationship active ?'),
325 'where' => 'civicrm_relationship.is_active',
327 'table_name' => 'civicrm_relationship',
328 'entity' => 'Relationship',
329 'bao' => 'CRM_Contact_BAO_Relationship',
332 'type' => 'CheckBox',
337 'name' => 'description',
338 'type' => CRM_Utils_Type
::T_STRING
,
339 'title' => ts('Relationship Description'),
340 'description' => ts('Optional verbose description for the relationship.'),
342 'size' => CRM_Utils_Type
::HUGE
,
343 'where' => 'civicrm_relationship.description',
344 'table_name' => 'civicrm_relationship',
345 'entity' => 'Relationship',
346 'bao' => 'CRM_Contact_BAO_Relationship',
353 'is_permission_a_b' => [
354 'name' => 'is_permission_a_b',
355 'type' => CRM_Utils_Type
::T_INT
,
356 'title' => ts('Contact A has Permission Over Contact B'),
357 'description' => ts('Permission that Contact A has to view/update Contact B'),
359 'where' => 'civicrm_relationship.is_permission_a_b',
361 'table_name' => 'civicrm_relationship',
362 'entity' => 'Relationship',
363 'bao' => 'CRM_Contact_BAO_Relationship',
368 'pseudoconstant' => [
369 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
373 'is_permission_b_a' => [
374 'name' => 'is_permission_b_a',
375 'type' => CRM_Utils_Type
::T_INT
,
376 'title' => ts('Contact B has Permission Over Contact A'),
377 'description' => ts('Permission that Contact B has to view/update Contact A'),
379 'where' => 'civicrm_relationship.is_permission_b_a',
381 'table_name' => 'civicrm_relationship',
382 'entity' => 'Relationship',
383 'bao' => 'CRM_Contact_BAO_Relationship',
388 'pseudoconstant' => [
389 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
395 'type' => CRM_Utils_Type
::T_INT
,
396 'title' => ts('Case ID'),
397 'description' => ts('FK to civicrm_case'),
398 'where' => 'civicrm_relationship.case_id',
400 'table_name' => 'civicrm_relationship',
401 'entity' => 'Relationship',
402 'bao' => 'CRM_Contact_BAO_Relationship',
404 'FKClassName' => 'CRM_Case_DAO_Case',
405 'component' => 'CiviCase',
407 'label' => ts("Case"),
412 'name' => 'created_date',
413 'type' => CRM_Utils_Type
::T_TIMESTAMP
,
414 'title' => ts('Created Date'),
415 'description' => ts('Relationship created date.'),
417 'where' => 'civicrm_relationship.created_date',
418 'default' => 'CURRENT_TIMESTAMP',
419 'table_name' => 'civicrm_relationship',
420 'entity' => 'Relationship',
421 'bao' => 'CRM_Contact_BAO_Relationship',
426 'name' => 'modified_date',
427 'type' => CRM_Utils_Type
::T_TIMESTAMP
,
428 'title' => ts('Relationship Modified Date'),
429 'description' => ts('Relationship last modified.'),
431 'where' => 'civicrm_relationship.modified_date',
432 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
433 'table_name' => 'civicrm_relationship',
434 'entity' => 'Relationship',
435 'bao' => 'CRM_Contact_BAO_Relationship',
441 CRM_Core_DAO_AllCoreTables
::invoke(__CLASS__
, 'fields_callback', Civi
::$statics[__CLASS__
]['fields']);
443 return Civi
::$statics[__CLASS__
]['fields'];
447 * Return a mapping from field-name to the corresponding key (as used in fields()).
450 * Array(string $name => string $uniqueName).
452 public static function &fieldKeys() {
453 if (!isset(Civi
::$statics[__CLASS__
]['fieldKeys'])) {
454 Civi
::$statics[__CLASS__
]['fieldKeys'] = array_flip(CRM_Utils_Array
::collect('name', self
::fields()));
456 return Civi
::$statics[__CLASS__
]['fieldKeys'];
460 * Returns the names of this table
464 public static function getTableName() {
465 return self
::$_tableName;
469 * Returns if this table needs to be logged
473 public function getLog() {
478 * Returns the list of fields that can be imported
480 * @param bool $prefix
484 public static function &import($prefix = FALSE) {
485 $r = CRM_Core_DAO_AllCoreTables
::getImports(__CLASS__
, 'relationship', $prefix, []);
490 * Returns the list of fields that can be exported
492 * @param bool $prefix
496 public static function &export($prefix = FALSE) {
497 $r = CRM_Core_DAO_AllCoreTables
::getExports(__CLASS__
, 'relationship', $prefix, []);
502 * Returns the list of indices
504 * @param bool $localize
508 public static function indices($localize = TRUE) {
510 return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables
::multilingualize(__CLASS__
, $indices) : $indices;