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:9857c3a39c853ba7abfeb246af8a70ec)
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 ?
107 * @var bool|string|null
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 ?'),
324 'where' => 'civicrm_relationship.is_active',
326 'table_name' => 'civicrm_relationship',
327 'entity' => 'Relationship',
328 'bao' => 'CRM_Contact_BAO_Relationship',
331 'type' => 'CheckBox',
336 'name' => 'description',
337 'type' => CRM_Utils_Type
::T_STRING
,
338 'title' => ts('Relationship Description'),
339 'description' => ts('Optional verbose description for the relationship.'),
341 'size' => CRM_Utils_Type
::HUGE
,
342 'where' => 'civicrm_relationship.description',
343 'table_name' => 'civicrm_relationship',
344 'entity' => 'Relationship',
345 'bao' => 'CRM_Contact_BAO_Relationship',
352 'is_permission_a_b' => [
353 'name' => 'is_permission_a_b',
354 'type' => CRM_Utils_Type
::T_INT
,
355 'title' => ts('Contact A has Permission Over Contact B'),
356 'description' => ts('Permission that Contact A has to view/update Contact B'),
358 'where' => 'civicrm_relationship.is_permission_a_b',
360 'table_name' => 'civicrm_relationship',
361 'entity' => 'Relationship',
362 'bao' => 'CRM_Contact_BAO_Relationship',
367 'pseudoconstant' => [
368 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
372 'is_permission_b_a' => [
373 'name' => 'is_permission_b_a',
374 'type' => CRM_Utils_Type
::T_INT
,
375 'title' => ts('Contact B has Permission Over Contact A'),
376 'description' => ts('Permission that Contact B has to view/update Contact A'),
378 'where' => 'civicrm_relationship.is_permission_b_a',
380 'table_name' => 'civicrm_relationship',
381 'entity' => 'Relationship',
382 'bao' => 'CRM_Contact_BAO_Relationship',
387 'pseudoconstant' => [
388 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
394 'type' => CRM_Utils_Type
::T_INT
,
395 'title' => ts('Case ID'),
396 'description' => ts('FK to civicrm_case'),
397 'where' => 'civicrm_relationship.case_id',
399 'table_name' => 'civicrm_relationship',
400 'entity' => 'Relationship',
401 'bao' => 'CRM_Contact_BAO_Relationship',
403 'FKClassName' => 'CRM_Case_DAO_Case',
404 'component' => 'CiviCase',
406 'label' => ts("Case"),
411 'name' => 'created_date',
412 'type' => CRM_Utils_Type
::T_TIMESTAMP
,
413 'title' => ts('Created Date'),
414 'description' => ts('Relationship created date.'),
416 'where' => 'civicrm_relationship.created_date',
417 'default' => 'CURRENT_TIMESTAMP',
418 'table_name' => 'civicrm_relationship',
419 'entity' => 'Relationship',
420 'bao' => 'CRM_Contact_BAO_Relationship',
425 'name' => 'modified_date',
426 'type' => CRM_Utils_Type
::T_TIMESTAMP
,
427 'title' => ts('Relationship Modified Date'),
428 'description' => ts('Relationship last modified.'),
430 'where' => 'civicrm_relationship.modified_date',
431 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
432 'table_name' => 'civicrm_relationship',
433 'entity' => 'Relationship',
434 'bao' => 'CRM_Contact_BAO_Relationship',
440 CRM_Core_DAO_AllCoreTables
::invoke(__CLASS__
, 'fields_callback', Civi
::$statics[__CLASS__
]['fields']);
442 return Civi
::$statics[__CLASS__
]['fields'];
446 * Return a mapping from field-name to the corresponding key (as used in fields()).
449 * Array(string $name => string $uniqueName).
451 public static function &fieldKeys() {
452 if (!isset(Civi
::$statics[__CLASS__
]['fieldKeys'])) {
453 Civi
::$statics[__CLASS__
]['fieldKeys'] = array_flip(CRM_Utils_Array
::collect('name', self
::fields()));
455 return Civi
::$statics[__CLASS__
]['fieldKeys'];
459 * Returns the names of this table
463 public static function getTableName() {
464 return self
::$_tableName;
468 * Returns if this table needs to be logged
472 public function getLog() {
477 * Returns the list of fields that can be imported
479 * @param bool $prefix
483 public static function &import($prefix = FALSE) {
484 $r = CRM_Core_DAO_AllCoreTables
::getImports(__CLASS__
, 'relationship', $prefix, []);
489 * Returns the list of fields that can be exported
491 * @param bool $prefix
495 public static function &export($prefix = FALSE) {
496 $r = CRM_Core_DAO_AllCoreTables
::getExports(__CLASS__
, 'relationship', $prefix, []);
501 * Returns the list of indices
503 * @param bool $localize
507 public static function indices($localize = TRUE) {
509 return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables
::multilingualize(__CLASS__
, $indices) : $indices;