1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2023 webtrees development team 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <https://www.gnu.org/licenses/>. 16 */ 17 18declare(strict_types=1); 19 20namespace Fisharebest\Webtrees\Cli\Commands; 21 22use Fisharebest\Webtrees\Services\TreeService; 23use Symfony\Component\Console\Command\Command; 24use Symfony\Component\Console\Helper\Table; 25use Symfony\Component\Console\Input\InputInterface; 26use Symfony\Component\Console\Output\OutputInterface; 27 28class TreeList extends Command 29{ 30 public function __construct(private readonly TreeService $tree_service) 31 { 32 parent::__construct(); 33 } 34 35 protected function configure(): void 36 { 37 $this 38 ->setName(name: 'tree-list') 39 ->setDescription(description: 'List trees'); 40 } 41 42 protected function execute(InputInterface $input, OutputInterface $output): int 43 { 44 $trees = $this->tree_service->all()->sort(callback: fn ($a, $b) => $a->id() <=> $b->id()); 45 46 $table = new Table(output: $output); 47 48 $table->setHeaders(headers: ['ID', 'Name', 'Title', 'Imported']); 49 50 foreach ($trees as $tree) { 51 $table->addRow(row: [ 52 $tree->id(), 53 $tree->name(), 54 $tree->title(), 55 $tree->getPreference(setting_name: 'imported') ? 'Yes' : 'No' 56 ]); 57 } 58 59 $table->render(); 60 61 return Command::SUCCESS; 62 } 63} 64