45 lines
1.4 KiB
PHP
45 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Services\HelpdeskImportService;
|
|
use Illuminate\Console\Command;
|
|
|
|
class ImportHelpdeskArticlesCommand extends Command
|
|
{
|
|
protected $signature = 'helpdesk:import
|
|
{--base-url=https://www.internettoday.nl/helpdesk : Base helpdesk URL}
|
|
{--limit= : Max number of article URLs to process}
|
|
{--dry-run : Only detect and parse, do not write to database}';
|
|
|
|
protected $description = 'Scrape InternetToday helpdesk categories/subcategories/articles and import into articles table.';
|
|
|
|
public function handle(HelpdeskImportService $service): int
|
|
{
|
|
$limitOption = $this->option('limit');
|
|
$limit = is_numeric($limitOption) ? (int) $limitOption : null;
|
|
|
|
$result = $service->import(
|
|
(string) $this->option('base-url'),
|
|
(bool) $this->option('dry-run'),
|
|
$limit
|
|
);
|
|
|
|
$this->info('Helpdesk import finished.');
|
|
$this->table(
|
|
['Metric', 'Value'],
|
|
[
|
|
['Categories', $result['categories']],
|
|
['Sections', $result['sections']],
|
|
['Article URLs', $result['article_urls']],
|
|
['Imported', $result['imported']],
|
|
['Updated', $result['updated']],
|
|
['Skipped', $result['skipped']],
|
|
['Dry Run', $result['dry_run'] ? 'yes' : 'no'],
|
|
]
|
|
);
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|