Skip to content
Snippets Groups Projects
Commit e752bdac authored by totten's avatar totten
Browse files

RelationshipVortex - Add schema files (incl start_date, end_date, etal)

This is the more maximal variant of the schema which includes mirrors for most fields.
parent e8b2a714
Branches
Tags
No related merge requests found
<?php
/**
* @package CRM
* @copyright CiviCRM LLC https://civicrm.org/licensing
*
* Generated from xml/schema/CRM/Contact/RelationshipVortex.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
* (GenCodeChecksum:01ed7a8f57a4438462decea08a76138a)
*/
/**
* Database access object for the RelationshipVortex entity.
*/
class CRM_Contact_DAO_RelationshipVortex extends CRM_Core_DAO {
/**
* Static instance to hold the table name.
*
* @var string
*/
public static $_tableName = 'civicrm_relationship_vtx';
/**
* Icon associated with this entity.
*
* @var string
*/
public static $_icon = 'fa-handshake-o';
/**
* Should CiviCRM log any modifications to this table in the civicrm_log table.
*
* @var bool
*/
public static $_log = FALSE;
/**
* Relationship Vortex ID
*
* @var int
*/
public $id;
/**
* id of the relationship (FK to civicrm_relationship.id)
*
* @var int
*/
public $relationship_id;
/**
* id of the relationship type
*
* @var int
*/
public $relationship_type_id;
/**
* The vortex record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.
*
* @var string
*/
public $orientation;
/**
* id of the first contact
*
* @var int
*/
public $near_contact_id;
/**
* name for relationship of near_contact to far_contact.
*
* @var string
*/
public $near_relation;
/**
* id of the second contact
*
* @var int
*/
public $far_contact_id;
/**
* name for relationship of far_contact to near_contact.
*
* @var string
*/
public $far_relation;
/**
* is the relationship active ?
*
* @var bool
*/
public $is_active;
/**
* date when the relationship started
*
* @var date
*/
public $start_date;
/**
* date when the relationship ended
*
* @var date
*/
public $end_date;
/**
* FK to civicrm_case
*
* @var int
*/
public $case_id;
/**
* Class constructor.
*/
public function __construct() {
$this->__table = 'civicrm_relationship_vtx';
parent::__construct();
}
/**
* Returns localized title of this entity.
*/
public static function getEntityTitle() {
return ts('Relationship Vortexes');
}
/**
* Returns foreign keys and entity references.
*
* @return array
* [CRM_Core_Reference_Interface]
*/
public static function getReferenceColumns() {
if (!isset(Civi::$statics[__CLASS__]['links'])) {
Civi::$statics[__CLASS__]['links'] = static::createReferenceColumns(__CLASS__);
Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'relationship_id', 'civicrm_relationship', 'id');
Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'relationship_type_id', 'civicrm_relationship_type', 'id');
Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'near_contact_id', 'civicrm_contact', 'id');
Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'far_contact_id', 'civicrm_contact', 'id');
Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'case_id', 'civicrm_case', 'id');
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']);
}
return Civi::$statics[__CLASS__]['links'];
}
/**
* Returns all the column names of this table
*
* @return array
*/
public static function &fields() {
if (!isset(Civi::$statics[__CLASS__]['fields'])) {
Civi::$statics[__CLASS__]['fields'] = [
'id' => [
'name' => 'id',
'type' => CRM_Utils_Type::T_INT,
'title' => ts('Relationship Vortex ID'),
'description' => ts('Relationship Vortex ID'),
'required' => TRUE,
'where' => 'civicrm_relationship_vtx.id',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'add' => '5.29',
],
'relationship_id' => [
'name' => 'relationship_id',
'type' => CRM_Utils_Type::T_INT,
'title' => ts('Relationship'),
'description' => ts('id of the relationship (FK to civicrm_relationship.id)'),
'required' => TRUE,
'where' => 'civicrm_relationship_vtx.relationship_id',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'FKClassName' => 'CRM_Contact_DAO_Relationship',
'add' => '5.29',
],
'relationship_type_id' => [
'name' => 'relationship_type_id',
'type' => CRM_Utils_Type::T_INT,
'title' => ts('Relationship Type'),
'description' => ts('id of the relationship type'),
'required' => TRUE,
'where' => 'civicrm_relationship_vtx.relationship_type_id',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'FKClassName' => 'CRM_Contact_DAO_RelationshipType',
'add' => '5.29',
],
'orientation' => [
'name' => 'orientation',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Orientation (a_b or b_a)'),
'description' => ts('The vortex record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.'),
'required' => TRUE,
'maxlength' => 3,
'size' => CRM_Utils_Type::FOUR,
'where' => 'civicrm_relationship_vtx.orientation',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'add' => '5.29',
],
'near_contact_id' => [
'name' => 'near_contact_id',
'type' => CRM_Utils_Type::T_INT,
'title' => ts('Contact ID (Near side)'),
'description' => ts('id of the first contact'),
'required' => TRUE,
'where' => 'civicrm_relationship_vtx.near_contact_id',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'FKClassName' => 'CRM_Contact_DAO_Contact',
'add' => '5.29',
],
'near_relation' => [
'name' => 'near_relation',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Relationship Name (Near side)'),
'description' => ts('name for relationship of near_contact to far_contact.'),
'maxlength' => 64,
'size' => CRM_Utils_Type::BIG,
'where' => 'civicrm_relationship_vtx.near_relation',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'add' => '5.29',
],
'far_contact_id' => [
'name' => 'far_contact_id',
'type' => CRM_Utils_Type::T_INT,
'title' => ts('Contact ID (Far side)'),
'description' => ts('id of the second contact'),
'required' => TRUE,
'where' => 'civicrm_relationship_vtx.far_contact_id',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'FKClassName' => 'CRM_Contact_DAO_Contact',
'html' => [
'type' => 'EntityRef',
],
'add' => '5.29',
],
'far_relation' => [
'name' => 'far_relation',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Relationship Name (Near side)'),
'description' => ts('name for relationship of far_contact to near_contact.'),
'maxlength' => 64,
'size' => CRM_Utils_Type::BIG,
'where' => 'civicrm_relationship_vtx.far_relation',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'add' => '5.29',
],
'is_active' => [
'name' => 'is_active',
'type' => CRM_Utils_Type::T_BOOLEAN,
'title' => ts('Relationship Is Active'),
'description' => ts('is the relationship active ?'),
'where' => 'civicrm_relationship_vtx.is_active',
'default' => '1',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'html' => [
'type' => 'CheckBox',
],
'add' => '5.29',
],
'relationship_start_date' => [
'name' => 'start_date',
'type' => CRM_Utils_Type::T_DATE,
'title' => ts('Relationship Start Date'),
'description' => ts('date when the relationship started'),
'where' => 'civicrm_relationship_vtx.start_date',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'html' => [
'type' => 'Select Date',
'formatType' => 'activityDate',
],
'add' => '5.29',
],
'relationship_end_date' => [
'name' => 'end_date',
'type' => CRM_Utils_Type::T_DATE,
'title' => ts('Relationship End Date'),
'description' => ts('date when the relationship ended'),
'where' => 'civicrm_relationship_vtx.end_date',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'html' => [
'type' => 'Select Date',
'formatType' => 'activityDate',
],
'add' => '5.29',
],
'case_id' => [
'name' => 'case_id',
'type' => CRM_Utils_Type::T_INT,
'title' => ts('Relationship Case'),
'description' => ts('FK to civicrm_case'),
'where' => 'civicrm_relationship_vtx.case_id',
'default' => 'NULL',
'table_name' => 'civicrm_relationship_vtx',
'entity' => 'RelationshipVortex',
'bao' => 'CRM_Contact_BAO_RelationshipVortex',
'localizable' => 0,
'FKClassName' => 'CRM_Case_DAO_Case',
'add' => '5.29',
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
}
return Civi::$statics[__CLASS__]['fields'];
}
/**
* Return a mapping from field-name to the corresponding key (as used in fields()).
*
* @return array
* Array(string $name => string $uniqueName).
*/
public static function &fieldKeys() {
if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) {
Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields()));
}
return Civi::$statics[__CLASS__]['fieldKeys'];
}
/**
* Returns the names of this table
*
* @return string
*/
public static function getTableName() {
return self::$_tableName;
}
/**
* Returns if this table needs to be logged
*
* @return bool
*/
public function getLog() {
return self::$_log;
}
/**
* Returns the list of fields that can be imported
*
* @param bool $prefix
*
* @return array
*/
public static function &import($prefix = FALSE) {
$r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'relationship_vtx', $prefix, []);
return $r;
}
/**
* Returns the list of fields that can be exported
*
* @param bool $prefix
*
* @return array
*/
public static function &export($prefix = FALSE) {
$r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'relationship_vtx', $prefix, []);
return $r;
}
/**
* Returns the list of indices
*
* @param bool $localize
*
* @return array
*/
public static function indices($localize = TRUE) {
$indices = [
'UI_relationship' => [
'name' => 'UI_relationship',
'field' => [
0 => 'relationship_id',
1 => 'orientation',
],
'localizable' => FALSE,
'unique' => TRUE,
'sig' => 'civicrm_relationship_vtx::1::relationship_id::orientation',
],
'index_nearid_nearrelation' => [
'name' => 'index_nearid_nearrelation',
'field' => [
0 => 'near_contact_id',
1 => 'near_relation',
],
'localizable' => FALSE,
'sig' => 'civicrm_relationship_vtx::0::near_contact_id::near_relation',
],
'index_nearid_farrelation' => [
'name' => 'index_nearid_farrelation',
'field' => [
0 => 'near_contact_id',
1 => 'far_relation',
],
'localizable' => FALSE,
'sig' => 'civicrm_relationship_vtx::0::near_contact_id::far_relation',
],
'index_near_relation' => [
'name' => 'index_near_relation',
'field' => [
0 => 'near_relation',
],
'localizable' => FALSE,
'sig' => 'civicrm_relationship_vtx::0::near_relation',
],
];
return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices;
}
}
......@@ -567,6 +567,11 @@ return [
'class' => 'CRM_Contact_DAO_Relationship',
'table' => 'civicrm_relationship',
],
'CRM_Contact_DAO_RelationshipVortex' => [
'name' => 'RelationshipVortex',
'class' => 'CRM_Contact_DAO_RelationshipVortex',
'table' => 'civicrm_relationship_vtx',
],
'CRM_Mailing_DAO_Mailing' => [
'name' => 'Mailing',
'class' => 'CRM_Mailing_DAO_Mailing',
......
<?xml version="1.0" encoding="iso-8859-1" ?>
<table>
<base>CRM/Contact</base>
<class>RelationshipVortex</class>
<name>civicrm_relationship_vtx</name>
<comment>The vortex permutes information from the relationship table to facilitate querying. Every relationship is mapped to multiple records in the vortex. Joins should begin on the near side and extract info from the far side.</comment>
<add>5.29</add>
<log>false</log>
<icon>fa-handshake-o</icon>
<field>
<name>id</name>
<type>int unsigned</type>
<title>Relationship Vortex ID</title>
<required>true</required>
<comment>Relationship Vortex ID</comment>
<add>5.29</add>
</field>
<primaryKey>
<name>id</name>
<autoincrement>true</autoincrement>
</primaryKey>
<field>
<name>relationship_id</name>
<type>int unsigned</type>
<title>Relationship</title>
<required>true</required>
<comment>id of the relationship (FK to civicrm_relationship.id)</comment>
<add>5.29</add>
</field>
<foreignKey>
<name>relationship_id</name>
<table>civicrm_relationship</table>
<key>id</key>
<add>5.29</add>
<onDelete>CASCADE</onDelete>
</foreignKey>
<field>
<name>relationship_type_id</name>
<type>int unsigned</type>
<title>Relationship Type</title>
<required>true</required>
<comment>id of the relationship type</comment>
<add>5.29</add>
</field>
<foreignKey>
<name>relationship_type_id</name>
<table>civicrm_relationship_type</table>
<key>id</key>
<add>5.29</add>
<onDelete>CASCADE</onDelete>
</foreignKey>
<field>
<name>orientation</name>
<type>char</type>
<length>3</length>
<title>Orientation (a_b or b_a)</title>
<required>true</required>
<default></default>
<comment>The vortex record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.</comment>
<add>5.29</add>
</field>
<field>
<name>near_contact_id</name>
<type>int unsigned</type>
<title>Contact ID (Near side)</title>
<required>true</required>
<comment>id of the first contact</comment>
<add>5.29</add>
</field>
<foreignKey>
<name>near_contact_id</name>
<table>civicrm_contact</table>
<key>id</key>
<add>5.29</add>
<onDelete>CASCADE</onDelete>
</foreignKey>
<field>
<name>near_relation</name>
<type>varchar</type>
<title>Relationship Name (Near side)</title>
<length>64</length>
<comment>name for relationship of near_contact to far_contact.</comment>
<add>5.29</add>
</field>
<field>
<name>far_contact_id</name>
<type>int unsigned</type>
<title>Contact ID (Far side)</title>
<required>true</required>
<comment>id of the second contact</comment>
<add>5.29</add>
<html>
<type>EntityRef</type>
</html>
</field>
<foreignKey>
<name>far_contact_id</name>
<table>civicrm_contact</table>
<key>id</key>
<add>5.29</add>
<onDelete>CASCADE</onDelete>
</foreignKey>
<field>
<name>far_relation</name>
<type>varchar</type>
<title>Relationship Name (Near side)</title>
<length>64</length>
<comment>name for relationship of far_contact to near_contact.</comment>
<add>5.29</add>
</field>
<index>
<name>UI_relationship</name>
<fieldName>relationship_id</fieldName>
<fieldName>orientation</fieldName>
<unique>true</unique>
<add>5.29</add>
</index>
<index>
<!-- Ex: select ... from contact inner join vtx on contact.id=vtx.near_contact_id and near_relation = 'Parent of' -->
<name>index_nearid_nearrelation</name>
<fieldName>near_contact_id</fieldName>
<fieldName>near_relation</fieldName>
<add>5.29</add>
</index>
<index>
<!-- Ex: select ... from contact inner join vtx on contact.id=vtx.near_contact_id and far_relation = 'Child of' -->
<name>index_nearid_farrelation</name>
<fieldName>near_contact_id</fieldName>
<fieldName>far_relation</fieldName>
<add>5.29</add>
</index>
<index>
<!-- Ex: select relation, count(*) from vtx group by relation -->
<name>index_near_relation</name>
<fieldName>near_relation</fieldName>
<add>5.29</add>
</index>
<!-- Passive mirror fields -->
<field>
<name>is_active</name>
<type>boolean</type>
<title>Relationship Is Active</title>
<default>1</default>
<comment>is the relationship active ?</comment>
<add>5.29</add>
<html>
<type>CheckBox</type>
</html>
</field>
<field>
<name>start_date</name>
<uniqueName>relationship_start_date</uniqueName>
<type>date</type>
<title>Relationship Start Date</title>
<comment>date when the relationship started</comment>
<add>5.29</add>
<html>
<type>Select Date</type>
<formatType>activityDate</formatType>
</html>
</field>
<field>
<name>end_date</name>
<uniqueName>relationship_end_date</uniqueName>
<type>date</type>
<title>Relationship End Date</title>
<comment>date when the relationship ended</comment>
<add>5.29</add>
<html>
<type>Select Date</type>
<formatType>activityDate</formatType>
</html>
</field>
<field>
<name>case_id</name>
<type>int unsigned</type>
<title>Relationship Case</title>
<default>NULL</default>
<comment>FK to civicrm_case</comment>
<add>5.29</add>
</field>
<foreignKey>
<name>case_id</name>
<table>civicrm_case</table>
<key>id</key>
<add>5.29</add>
<onDelete>CASCADE</onDelete>
</foreignKey>
</table>
......@@ -13,6 +13,7 @@
<xi:include href="GroupOrganization.xml" parse="xml" />
<xi:include href="Relationship.xml" parse="xml" />
<xi:include href="RelationshipType.xml" parse="xml" />
<xi:include href="RelationshipVortex.xml" parse="xml" />
<xi:include href="SavedSearch.xml" parse="xml" />
<xi:include href="ContactType.xml" parse="xml" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment