@@ -77,8 +77,8 @@ public function __construct($api) {
77
77
$ this ->addSpecField ($ field ['name ' ], $ field );
78
78
}
79
79
80
- $ tableName = CoreUtil::getTableName ($ this ->getEntity ());
81
- $ this ->query = \CRM_Utils_SQL_Select::from ($ tableName . ' ' . self ::MAIN_TABLE_ALIAS );
80
+ $ tableExpr = CoreUtil::getTableExpr ($ this ->getEntity ());
81
+ $ this ->query = \CRM_Utils_SQL_Select::from ($ tableExpr . ' ' . self ::MAIN_TABLE_ALIAS );
82
82
83
83
$ this ->fillEntityValues ();
84
84
@@ -486,7 +486,8 @@ private function addExplicitJoins() {
486
486
$ this ->addSpecField ($ alias . '. ' . $ field ['name ' ], $ field );
487
487
}
488
488
$ tableName = CoreUtil::getTableName ($ entity );
489
- $ this ->startNewJoin ($ tableName , $ alias );
489
+ $ tableExpr = CoreUtil::getTableExpr ($ entity );
490
+ $ this ->startNewJoin ($ tableExpr , $ alias );
490
491
// Save join info to be retrieved by $this->getExplicitJoin()
491
492
$ joinOn = array_filter (array_filter ($ join , 'is_array ' ));
492
493
$ this ->explicitJoins [$ alias ] = [
@@ -601,8 +602,9 @@ protected function addBridgeJoin($joinTree, $joinEntity, $alias) {
601
602
602
603
$ bridgeAlias = $ alias . '_via_ ' . strtolower ($ bridgeEntity );
603
604
604
- $ joinTable = CoreUtil::getTableName ($ joinEntity );
605
- [$ bridgeTable , $ baseRef , $ joinRef ] = $ this ->getBridgeRefs ($ bridgeEntity , $ joinEntity );
605
+ $ joinTableExpr = CoreUtil::getTableExpr ($ joinEntity );
606
+ $ bridgeTableExpr = CoreUtil::getTableExpr ($ bridgeEntity );
607
+ [$ baseRef , $ joinRef ] = $ this ->getBridgeRefs ($ bridgeEntity , $ joinEntity );
606
608
607
609
$ this ->registerBridgeJoinFields ($ bridgeEntity , $ joinRef , $ baseRef , $ alias , $ bridgeAlias );
608
610
@@ -630,12 +632,12 @@ protected function addBridgeJoin($joinTree, $joinEntity, $alias) {
630
632
// Info needed for joining custom fields extending the bridge entity
631
633
$ this ->explicitJoins [$ alias ]['bridge_table_alias ' ] = $ bridgeAlias ;
632
634
// Invert the join so all nested joins will link to the bridge entity
633
- $ this ->openJoin ['table ' ] = $ bridgeTable ;
635
+ $ this ->openJoin ['table ' ] = $ bridgeTableExpr ;
634
636
$ this ->openJoin ['alias ' ] = $ bridgeAlias ;
635
637
636
638
// Add main table as inner join
637
639
$ innerConditions = array_merge ($ linkConditions , $ acls );
638
- $ this ->addJoin ('INNER ' , $ joinTable , $ alias , $ bridgeAlias , $ innerConditions );
640
+ $ this ->addJoin ('INNER ' , $ joinTableExpr , $ alias , $ bridgeAlias , $ innerConditions );
639
641
return array_merge ($ outerConditions , $ bridgeConditions );
640
642
}
641
643
@@ -652,7 +654,6 @@ private function getBridgeRefs(string $bridgeEntity, string $joinEntity): array
652
654
/** @var \CRM_Core_DAO $bridgeDAO */
653
655
$ bridgeDAO = CoreUtil::getInfoItem ($ bridgeEntity , 'dao ' );
654
656
$ bridgeEntityFields = \Civi \API \Request::create ($ bridgeEntity , 'get ' , ['version ' => 4 , 'checkPermissions ' => $ this ->getCheckPermissions ()])->entityFields ();
655
- $ bridgeTable = $ bridgeDAO ::getTableName ();
656
657
657
658
// Get the 2 bridge reference columns as CRM_Core_Reference_* objects
658
659
$ referenceColumns = $ bridgeDAO ::getReferenceColumns ();
@@ -664,7 +665,7 @@ private function getBridgeRefs(string $bridgeEntity, string $joinEntity): array
664
665
}
665
666
foreach ($ bridgeDAO ::getReferenceColumns () as $ baseRef ) {
666
667
if ($ baseRef ->getReferenceKey () === $ bridges [$ refKey ]['to ' ]) {
667
- return [$ bridgeTable , $ baseRef , $ joinRef ];
668
+ return [$ baseRef , $ joinRef ];
668
669
}
669
670
}
670
671
}
@@ -887,43 +888,43 @@ protected function autoJoinFK($key) {
887
888
/**
888
889
* Begins a new join; as long as it's "open" then additional joins will nest inside it.
889
890
*/
890
- private function startNewJoin (string $ tableName , string $ joinAlias ): void {
891
+ private function startNewJoin (string $ tableExpr , string $ joinAlias ): void {
891
892
$ this ->openJoin = [
892
- 'table ' => $ tableName ,
893
+ 'table ' => $ tableExpr ,
893
894
'alias ' => $ joinAlias ,
894
895
'subjoins ' => [],
895
896
];
896
897
}
897
898
898
899
private function finishJoin (string $ side , $ conditions ): void {
899
900
$ tableAlias = $ this ->openJoin ['alias ' ];
900
- $ tableName = $ this ->openJoin ['table ' ];
901
+ $ tableExpr = $ this ->openJoin ['table ' ];
901
902
$ subjoinClause = '' ;
902
903
foreach ($ this ->openJoin ['subjoins ' ] as $ subjoin ) {
903
- $ subjoinClause .= " INNER JOIN ` {$ subjoin ['table ' ]}` ` {$ subjoin ['alias ' ]}` ON ( " . implode (' AND ' , $ subjoin ['conditions ' ]) . ") " ;
904
+ $ subjoinClause .= " INNER JOIN {$ subjoin ['table ' ]} ` {$ subjoin ['alias ' ]}` ON ( " . implode (' AND ' , $ subjoin ['conditions ' ]) . ") " ;
904
905
}
905
- $ this ->query ->join ($ tableAlias , "$ side JOIN (` $ tableName ` `$ tableAlias` $ subjoinClause) ON " . implode (' AND ' , $ conditions ));
906
+ $ this ->query ->join ($ tableAlias , "$ side JOIN ( $ tableExpr ` $ tableAlias` $ subjoinClause) ON " . implode (' AND ' , $ conditions ));
906
907
$ this ->openJoin = NULL ;
907
908
}
908
909
909
910
/**
910
911
* @param string $side
911
- * @param string $tableName
912
+ * @param string $tableExpr
912
913
* @param string $tableAlias
913
914
* @param string $baseTableAlias
914
915
* @param array $conditions
915
916
*/
916
- private function addJoin (string $ side , string $ tableName , string $ tableAlias , string $ baseTableAlias , array $ conditions ): void {
917
+ private function addJoin (string $ side , string $ tableExpr , string $ tableAlias , string $ baseTableAlias , array $ conditions ): void {
917
918
// If this join is based off the current open join, incorporate it
918
919
if ($ baseTableAlias === ($ this ->openJoin ['alias ' ] ?? NULL )) {
919
920
$ this ->openJoin ['subjoins ' ][] = [
920
- 'table ' => $ tableName ,
921
+ 'table ' => $ tableExpr ,
921
922
'alias ' => $ tableAlias ,
922
923
'conditions ' => $ conditions ,
923
924
];
924
925
}
925
926
else {
926
- $ this ->query ->join ($ tableAlias , "$ side JOIN ` $ tableName ` `$ tableAlias` ON " . implode (' AND ' , $ conditions ));
927
+ $ this ->query ->join ($ tableAlias , "$ side JOIN $ tableExpr ` $ tableAlias` ON " . implode (' AND ' , $ conditions ));
927
928
}
928
929
}
929
930
0 commit comments