CRM-14901 Add in entity_table whitelists for uf_join, entity_tag, mailing_group and...
authorSeamus Lee <seamuslee001@gmail.com>
Sun, 17 Jan 2016 23:53:39 +0000 (23:53 +0000)
committerSeamus Lee <seamuslee001@gmail.com>
Mon, 25 Jan 2016 04:50:23 +0000 (04:50 +0000)
CRM/Core/BAO/Note.php
CRM/Core/BAO/UFJoin.php
CRM/Mailing/BAO/Mailing.php
xml/schema/Core/EntityTag.xml
xml/schema/Core/Note.xml
xml/schema/Core/UFJoin.xml
xml/schema/Mailing/MailingGroup.xml

index ef7dff898ccdfeded5dfe2d29f666d7919a8ba76..da068241b6e836deeb225eccd623795f4573b86d 100644 (file)
@@ -574,4 +574,19 @@ WHERE participant.contact_id = %1 AND  note.entity_table = 'civicrm_participant'
     }
   }
 
+  /**
+   * Whitelist of possible values for the entity_table field
+   * @return array
+   */
+  public static function entityTables() {
+    $tables = array(
+      'civicrm_relationship',
+      'civicrm_contact',
+      'civicrm_participant',
+      'civicrm_contribution',
+    );
+    // Identical keys & values
+    return array_combine($tables, $tables);
+  }
+
 }
index ba9dbf3fa269d9c92b165600a7014932f0cc4df0..92bd4cf9cd975d89e440468df73ed41638dfface 100644 (file)
@@ -180,4 +180,17 @@ class CRM_Core_BAO_UFJoin extends CRM_Core_DAO_UFJoin {
     return array($first, $second, $firstActive, $secondActive);
   }
 
+  /**
+   * Whitelist of possible values for the entity_table field
+   * @return array
+   */
+  public static function entityTables() {
+    $tables = array(
+      'civicrm_event',
+      'civicrm_contribution_page',
+    );
+    // Identical keys & values
+    return array_combine($tables, $tables);
+  }
+
 }
index 31fd72c736196f11d1998e3de15fdae594e3b85a..7c3eff86f547a65e336ebb701a763ed55edf1364 100644 (file)
@@ -3133,4 +3133,17 @@ AND        m.id = %1
     return $fieldPerms;
   }
 
+  /**
+   * Whitelist of possible values for the entity_table field
+   * @return array
+   */
+  public static function mailingGroupEntityTables() {
+    $tables = array(
+      'civicrm_group',
+      'civicrm_mailing',
+    );
+    // Identical keys & values
+    return array_combine($tables, $tables);
+  }
+
 }
index 0539e4ed7ed89309bcb49066b39db5478c325841..1f3543dcf0a12ecc31b6cb2d5cd9095c8bee9bae 100644 (file)
@@ -40,6 +40,9 @@
     <title>Entity Table</title>
     <length>64</length>
     <comment>physical tablename for entity being joined to file, e.g. civicrm_contact</comment>
+    <pseudoconstant>
+      <optionGroupName>tag_used_for</optionGroupName>
+    </pseudoconstant>
     <add>3.2</add>
   </field>
   <field>
index 128da7796ed6d016a851205d72883ca52cf0dd66..b6e60dfb17f8ef51cc33b1f3ee82ec50a1b99ff3 100644 (file)
@@ -26,6 +26,9 @@
     <length>64</length>
     <required>true</required>
     <comment>Name of table where item being referenced is stored.</comment>
+    <pseudoconstant>
+      <callback>CRM_Core_BAO_Note::entityTables</callback>
+    </pseudoconstant>
     <add>1.1</add>
   </field>
   <field>
index c3add7f1366551289e0f308edda259d520cb03e1..86e447825b49c67d3202c7ea2c6f58ad39e8eb52 100644 (file)
@@ -42,6 +42,7 @@
     <type>varchar</type>
     <length>64</length>
     <comment>Name of table where item being referenced is stored. Modules which only need a single collection of uf_join instances may choose not to populate entity_table and entity_id.</comment>
+    <pseudoconstant>CRM_Core_BAO_UFJoin::entityTables</pseudoconstant>
     <add>1.3</add>
   </field>
   <field>
index 3bb7ec4fa6c53e75f4784b3a6b3188573db6bbfd..7e586e859d612f8187ade66a46f34f3a61536ccc 100644 (file)
@@ -49,6 +49,7 @@
     <length>64</length>
     <required>true</required>
     <comment>Name of table where item being referenced is stored.</comment>
+    <pseudoconstant>CRM_Mailing_BAO_Mailing::mailingGroupEntityTables</pseudoconstant>
   </field>
   <field>
     <name>entity_id</name>