Skip to content

Commit 889a0f1

Browse files
committed
move getter for rootNode and leaves from Tree::getMenuItems() to separate methods so we can reuse these in other places if needed (e.g. as refPage action params)
1 parent a8823f3 commit 889a0f1

File tree

1 file changed

+35
-12
lines changed

1 file changed

+35
-12
lines changed

models/Tree.php

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use dmstr\modules\pages\helpers\PageHelper;
1414
use dmstr\modules\pages\Module as PagesModule;
1515
use dosamigos\translateable\TranslateableBehavior;
16+
use kartik\tree\models\TreeQuery;
1617
use rmrevin\yii\fontawesome\FA;
1718
use Yii;
1819
use 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

Comments
 (0)