mirror of
https://github.com/chylex/Nextcloud-News.git
synced 2025-08-18 20:25:00 +02:00
.github
.tx
appinfo
bin
css
docs
img
js
l10n
lib
AppInfo
Command
Config
Debug
FeedItemList.php
FeedRead.php
FolderItemList.php
FolderRead.php
ItemList.php
ItemRead.php
Updater
ExploreGenerator.php
ShowFeed.php
Config
Controller
Cron
Db
Explore
Fetcher
Hooks
Migration
Plugin
Scraper
Search
Service
Settings
Utility
screenshots
templates
tests
.editorconfig
.gitignore
.mailmap
AUTHORS.md
CHANGELOG.md
CONTRIBUTING.md
COPYING
Makefile
README.md
composer.json
composer.lock
mkdocs.yml
phpstan.neon.dist
phpunit.xml
88 lines
2.4 KiB
PHP
88 lines
2.4 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace OCA\News\Command\Debug;
|
|
|
|
use OCA\News\Controller\ApiPayloadTrait;
|
|
use OCA\News\Db\ListType;
|
|
use OCA\News\Service\Exceptions\ServiceConflictException;
|
|
use OCA\News\Service\Exceptions\ServiceNotFoundException;
|
|
use OCA\News\Service\ItemServiceV2;
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
/**
|
|
* Class ItemRead
|
|
*
|
|
* @package OCA\News\Command
|
|
*/
|
|
class ItemRead extends Command
|
|
{
|
|
use ApiPayloadTrait;
|
|
|
|
/**
|
|
* @var ItemServiceV2 service for the items.
|
|
*/
|
|
protected $itemService;
|
|
|
|
public function __construct(ItemServiceV2 $itemService)
|
|
{
|
|
parent::__construct();
|
|
|
|
$this->itemService = $itemService;
|
|
}
|
|
|
|
/**
|
|
* Configure command
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function configure()
|
|
{
|
|
$this->setName('news:item:read')
|
|
->setDescription('Read item')
|
|
->addArgument('user-id', InputArgument::REQUIRED, 'User to modify the item for')
|
|
->addOption('id', 'i', InputOption::VALUE_REQUIRED, 'Item ID')
|
|
->addOption('read', 'r', InputOption::VALUE_NONE, 'Item read state');
|
|
}
|
|
|
|
/**
|
|
* Execute command
|
|
*
|
|
* @param InputInterface $input
|
|
* @param OutputInterface $output
|
|
*
|
|
* @return int|void
|
|
*/
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
{
|
|
$user = $input->getArgument('user-id');
|
|
$read = $input->getOption('read');
|
|
|
|
$id = $input->getOption('id');
|
|
if (!is_null($id) && !is_numeric($id)) {
|
|
$output->writeln('Invalid id!');
|
|
return 255;
|
|
}
|
|
|
|
|
|
try {
|
|
if (is_null($id)) {
|
|
$readItems = $this->itemService->readAll($user, $this->itemService->newest($user)->getId());
|
|
$output->writeln("Marked $readItems items as read", $output::VERBOSITY_VERBOSE);
|
|
} else {
|
|
$items = $this->itemService->read($user, intval($id), $read);
|
|
$output->writeln(json_encode($this->serialize($items), JSON_PRETTY_PRINT));
|
|
}
|
|
} catch (ServiceConflictException | ServiceNotFoundException $e) {
|
|
$output->writeln('Failed: ' . $e->getMessage());
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|