X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FDAO.php;h=b947740e0e595b59c44c180a7e94d3b4a33390e3;hb=9473891b55f6d10169c290425611ecff49159bf7;hp=0b91105864f203ff040b633288fddcedfaec9353;hpb=4162ab6fb26605658298ef017031ee8bef8871a2;p=civicrm-core.git diff --git a/CRM/Core/DAO.php b/CRM/Core/DAO.php index 0b91105864..b947740e0e 100644 --- a/CRM/Core/DAO.php +++ b/CRM/Core/DAO.php @@ -1736,7 +1736,7 @@ FROM civicrm_domain if (!$blockCopyofCustomValues) { $newObject->copyCustomFields($object->id, $newObject->id); } - CRM_Utils_Hook::post('create', CRM_Core_DAO_AllCoreTables::getBriefName(str_replace('_BAO_', '_DAO_', $daoName)), $newObject->id, $newObject); + CRM_Utils_Hook::post('create', CRM_Core_DAO_AllCoreTables::getBriefName($daoName), $newObject->id, $newObject); } return $newObject; @@ -2427,6 +2427,8 @@ SELECT contact_id * * Refer to CRM-17454 for information on the danger of querying the information * schema to derive this. + * + * @throws \CiviCRM_API3_Exception */ public static function getReferencesToContactTable() { if (isset(\Civi::$statics[__CLASS__]) && isset(\Civi::$statics[__CLASS__]['contact_references'])) { @@ -2441,13 +2443,30 @@ SELECT contact_id } self::appendCustomTablesExtendingContacts($contactReferences); self::appendCustomContactReferenceFields($contactReferences); - - // FixME for time being adding below line statically as no Foreign key constraint defined for table 'civicrm_entity_tag' - $contactReferences['civicrm_entity_tag'][] = 'entity_id'; \Civi::$statics[__CLASS__]['contact_references'] = $contactReferences; return \Civi::$statics[__CLASS__]['contact_references']; } + /** + * Get all dynamic references to the given table. + * + * @param string $tableName + * + * @return array + */ + public static function getDynamicReferencesToTable($tableName) { + if (!isset(\Civi::$statics[__CLASS__]['contact_references_dynamic'][$tableName])) { + \Civi::$statics[__CLASS__]['contact_references_dynamic'][$tableName] = []; + $coreReferences = CRM_Core_DAO::getReferencesToTable($tableName); + foreach ($coreReferences as $coreReference) { + if ($coreReference instanceof \CRM_Core_Reference_Dynamic) { + \Civi::$statics[__CLASS__]['contact_references_dynamic'][$tableName][$coreReference->getReferenceTable()][] = $coreReference->getReferenceKey(); + } + } + } + return \Civi::$statics[__CLASS__]['contact_references_dynamic'][$tableName]; + } + /** * Add custom tables that extend contacts to the list of contact references. * @@ -2570,14 +2589,16 @@ SELECT contact_id * @param string $context * @see CRM_Core_DAO::buildOptionsContext * @param array $props - * whatever is known about this bao object. + * Raw field values; whatever is known about this bao object. + * + * Note: $props can contain unsanitized input and should not be passed directly to CRM_Core_PseudoConstant::get * * @return array|bool */ public static function buildOptions($fieldName, $context = NULL, $props = []) { // If a given bao does not override this function $baoName = get_called_class(); - return CRM_Core_PseudoConstant::get($baoName, $fieldName, $props, $context); + return CRM_Core_PseudoConstant::get($baoName, $fieldName, [], $context); } /**