Commit 9d407d2369f2d27242cc823bb4b14a327c530448
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
Showing
1 changed file
with
7 additions
and
2 deletions
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 |