1
0
mirror of https://github.com/chylex/Nextcloud-News.git synced 2025-08-18 20:25:00 +02:00
Files
.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
Sean Molenaar 78dce7ffe1 DB: Updates should use set()
Issue GH-1211

Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
2021-03-31 22:39:00 +02:00

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;
}
}