27
27
use Keyword \Model \Map \FolderAssociatedKeywordTableMap ;
28
28
use Propel \Runtime \ActiveQuery \Criteria ;
29
29
use Propel \Runtime \ActiveQuery \Join ;
30
+ use Propel \Runtime \Collection \ObjectCollection ;
30
31
use Thelia \Core \Template \Element \LoopResultRow ;
31
32
use Thelia \Core \Template \Loop \Argument \Argument ;
32
33
use Thelia \Core \Template \Loop \Folder ;
@@ -80,6 +81,8 @@ public function buildModelCriteria()
80
81
$ search = parent ::buildModelCriteria ();
81
82
82
83
$ keyword = KeywordQuery::create ();
84
+
85
+ /** @var ObjectCollection $results */
83
86
$ results = $ keyword
84
87
->findByCode ($ this ->getKeyword ())
85
88
;
@@ -90,8 +93,17 @@ public function buildModelCriteria()
90
93
}
91
94
92
95
$ folderIds = array ();
96
+ $ keywordListId = array ();
97
+ $ keywordIds = $ results ->getData ();
98
+
99
+ foreach ($ keywordIds as $ keyword ) {
100
+ $ keywordListId [] = $ keyword ->getId ();
101
+ }
102
+
103
+ $ keywordListId = implode (', ' , $ keywordListId );
93
104
94
105
foreach ($ results as $ result ) {
106
+
95
107
// If any content is associated with keyword
96
108
if (true === $ result ->getFolders ()->isEmpty ()) {
97
109
return null ;
@@ -109,7 +121,7 @@ public function buildModelCriteria()
109
121
$ join ->setJoinType (Criteria::INNER_JOIN );
110
122
111
123
$ search ->addJoinObject ($ join , 'folder_associated_keyword_join ' );
112
-
124
+ $ search -> addJoinCondition ( ' folder_associated_keyword_join ' , ' folder_associated_keyword.keyword_id IN ( ' . $ keywordListId . ' ) ' );
113
125
$ search ->addJoinCondition ('folder_associated_keyword_join ' ,'folder_associated_keyword.folder_id IN ( ' .$ folderIds .') ' );
114
126
$ search ->withColumn ('folder_associated_keyword.position ' , 'folder_position ' );
115
127
0 commit comments