/** * Get all children by id * * @param int $id * @return array */ protected static function findChildren($settings = []) { $default_settings = ['id' => 0, 'ids' => [], 'menu-id' => 0]; $settings = array_merge($default_settings, $settings); if (!in_array($settings['id'], $settings['ids'])) { $settings['ids'][] = $settings['id']; } $query = new Query(); $results = $query->select('id')->from(MenuItem::tableName())->where(['parent_id' => $settings['id'], 'menu_id' => $settings['menu-id']])->all(); foreach ($results as $result) { $settings['ids'][] = $result['id']; $settings['ids'] = Menu::findChildren(['id' => $result['id'], 'ids' => $settings['ids'], 'menu-id' => $settings['menu-id']]); } return $settings['ids']; }
/** * Checks if a page is used in a menu * * @return boolean */ public function isUsedInMenu() { return (new \yii\db\Query())->select('id')->from(\infoweb\menu\models\MenuItem::tableName())->where(['entity' => \infoweb\menu\models\MenuItem::ENTITY_PAGE, 'entity_id' => $this->id])->exists(); }