Commit 9d407d2369f2d27242cc823bb4b14a327c530448

Authored by nbm
1 parent 3c44a61a

Deal with searches criteria potentially adding joins to the advanced

search query.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3288 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php
@@ -63,12 +63,17 @@ function getAdvancedSearchResults($aOrigReq, $iStartIndex) { @@ -63,12 +63,17 @@ function getAdvancedSearchResults($aOrigReq, $iStartIndex) {
63 63
64 $aIDs = array_unique(array_map("criteriaNumber", array_keys($aReq))); 64 $aIDs = array_unique(array_map("criteriaNumber", array_keys($aReq)));
65 $aSQL = array(); 65 $aSQL = array();
  66 + $aJoinSQL = array();
66 foreach ($aIDs as $iID) { 67 foreach ($aIDs as $iID) {
67 $oCriterion =& Criteria::getCriterionByNumber($iID); 68 $oCriterion =& Criteria::getCriterionByNumber($iID);
68 $res = $oCriterion->searchSQL($aReq); 69 $res = $oCriterion->searchSQL($aReq);
69 if (!is_null($res)) { 70 if (!is_null($res)) {
70 $aSQL[] = $res; 71 $aSQL[] = $res;
71 } 72 }
  73 + $res = $oCriterion->searchJoinSQL();
  74 + if (!is_null($res)) {
  75 + $aJoinSQL[] = $res;
  76 + }
72 } 77 }
73 $aCritParams = array(); 78 $aCritParams = array();
74 $aCritQueries = array(); 79 $aCritQueries = array();
@@ -86,6 +91,7 @@ function getAdvancedSearchResults($aOrigReq, $iStartIndex) { @@ -86,6 +91,7 @@ function getAdvancedSearchResults($aOrigReq, $iStartIndex) {
86 } 91 }
87 92
88 $sSQLSearchString = join(" AND ", $aCritQueries); 93 $sSQLSearchString = join(" AND ", $aCritQueries);
  94 + $sJoinSQL = join(" ", $aJoinSQL);
89 95
90 $sQuery = DBUtil::compactQuery(" 96 $sQuery = DBUtil::compactQuery("
91 SELECT 97 SELECT
@@ -94,8 +100,7 @@ SELECT @@ -94,8 +100,7 @@ SELECT
94 FROM 100 FROM
95 $default->documents_table AS D 101 $default->documents_table AS D
96 INNER JOIN $default->folders_table AS F ON D.folder_id = F.id 102 INNER JOIN $default->folders_table AS F ON D.folder_id = F.id
97 - LEFT JOIN $default->document_fields_link_table AS DFL ON DFL.document_id = D.id  
98 - LEFT JOIN $default->document_fields_table AS DF ON DF.id = DFL.document_field_id 103 + $sJoinSQL
99 INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id 104 INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id
100 INNER JOIN $default->status_table AS SL on D.status_id=SL.id 105 INNER JOIN $default->status_table AS SL on D.status_id=SL.id
101 WHERE 106 WHERE