1313use dmstr \modules \pages \helpers \PageHelper ;
1414use dmstr \modules \pages \Module as PagesModule ;
1515use dosamigos \translateable \TranslateableBehavior ;
16+ use kartik \tree \models \TreeQuery ;
1617use rmrevin \yii \fontawesome \FA ;
1718use Yii ;
1819use yii \caching \TagDependency ;
@@ -265,6 +266,38 @@ public function createUrl($additionalParams = [])
265266 return Url::to ($ this ->createRoute ($ additionalParams ));
266267 }
267268
269+ /**
270+ * get Root node by given domainId
271+ *
272+ * @param $domainId
273+ *
274+ * @return Tree|null
275+ */
276+ public static function getRootByDomainId ($ domainId )
277+ {
278+ $ rootCondition [self ::ATTR_DOMAIN_ID ] = $ domainId ;
279+ $ rootCondition [self ::ATTR_ACCESS_DOMAIN ] = [self ::GLOBAL_ACCESS_DOMAIN , mb_strtolower (\Yii::$ app ->language )];
280+ return self ::findOne ($ rootCondition );
281+ }
282+
283+ /**
284+ * return activeQuery that select children for given root Node
285+ *
286+ * @param Tree $rootNode
287+ *
288+ * @return TreeQuery
289+ */
290+ public static function getLeavesFromRoot (Tree $ rootNode )
291+ {
292+ $ leavesQuery = $ rootNode ->children ()->andWhere (
293+ [
294+ self ::ATTR_ACTIVE => self ::ACTIVE ,
295+ self ::ATTR_ACCESS_DOMAIN => [self ::GLOBAL_ACCESS_DOMAIN , mb_strtolower (\Yii::$ app ->language )],
296+ ]
297+ );
298+ return $ leavesQuery ->with ('translationsMeta ' );
299+ }
300+
268301 /**
269302 * Build array with active and visible menu nodes for the current application language
270303 *
@@ -286,9 +319,7 @@ public static function getMenuItems($domainId, $checkUserPermissions = false, ar
286319
287320 Yii::trace (['Building menu items ' , $ cacheKey ], __METHOD__ );
288321 // Get root node by domain id
289- $ rootCondition [self ::ATTR_DOMAIN_ID ] = $ domainId ;
290- $ rootCondition [self ::ATTR_ACCESS_DOMAIN ] = [self ::GLOBAL_ACCESS_DOMAIN , mb_strtolower (\Yii::$ app ->language )];
291- $ rootNode = self ::findOne ($ rootCondition );
322+ $ rootNode = self ::getRootByDomainId ($ domainId );
292323
293324 if ($ rootNode === null ) {
294325 return [];
@@ -303,15 +334,7 @@ public static function getMenuItems($domainId, $checkUserPermissions = false, ar
303334 */
304335
305336 // Get all leaves from this root node
306- $ leavesQuery = $ rootNode ->children ()->andWhere (
307- [
308- self ::ATTR_ACTIVE => self ::ACTIVE ,
309- self ::ATTR_ACCESS_DOMAIN => [self ::GLOBAL_ACCESS_DOMAIN , mb_strtolower (\Yii::$ app ->language )],
310- ]
311- );
312- $ leavesQuery ->with ('translationsMeta ' );
313- $ leaves = $ leavesQuery ->all ();
314-
337+ $ leaves = self ::getLeavesFromRoot ($ rootNode )->all ();
315338 if ($ leaves === null ) {
316339 return [];
317340 }
0 commit comments