Add Filter options to the TestFeed command
This commit is contained in:
parent
78ed53d529
commit
6b053d5cb4
@ -8,6 +8,7 @@ use Symfony\Component\Console\{Attribute\AsCommand,
|
|||||||
Command\Command,
|
Command\Command,
|
||||||
Input\InputArgument,
|
Input\InputArgument,
|
||||||
Input\InputInterface,
|
Input\InputInterface,
|
||||||
|
Input\InputOption,
|
||||||
Output\OutputInterface};
|
Output\OutputInterface};
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Doctrine\ORM\EntityManager;
|
use Doctrine\ORM\EntityManager;
|
||||||
@ -29,9 +30,13 @@ class TestFeed extends Command
|
|||||||
|
|
||||||
protected function configure(): void
|
protected function configure(): void
|
||||||
{
|
{
|
||||||
|
$optional_array = InputOption::VALUE_IS_ARRAY|InputOption::VALUE_OPTIONAL;
|
||||||
$this
|
$this
|
||||||
->addArgument("url", InputArgument::REQUIRED, "The URL of the feed to test")
|
->addArgument("url", InputArgument::REQUIRED, "The URL of the feed to test")
|
||||||
->addArgument("title", InputArgument::REQUIRED, "The title of the feed to test");
|
->addArgument("title", InputArgument::REQUIRED, "The title of the feed to test")
|
||||||
|
->addOption("filter", "f", $optional_array, "Filter Types to apply to the feed", [])
|
||||||
|
->addOption("target", "t", $optional_array, "Targets to apply the filters to", [])
|
||||||
|
->addOption("value", "a", $optional_array, "Values to apply the filters to", []);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||||
@ -50,9 +55,13 @@ class TestFeed extends Command
|
|||||||
$feed->url = $url;
|
$feed->url = $url;
|
||||||
$feed->title = $title;
|
$feed->title = $title;
|
||||||
|
|
||||||
|
$filters = array_map(null, $input->getOption("target"), $input->getOption("filter"), $input->getOption("value"));
|
||||||
|
|
||||||
$feed->feedFilters = new ArrayCollection();
|
$feed->feedFilters = new ArrayCollection();
|
||||||
$feed->feedFilters->add( new FeedFilter(FilterTarget::TITLE, FilterType::INCLUDE, "[No Ads]", $feed));
|
|
||||||
$feed->feedFilters->add( new FeedFilter(FilterTarget::TITLE, FilterType::EXCLUDE, "S2", $feed));
|
foreach ($filters as $filter) {
|
||||||
|
$feed->feedFilters->add(new FeedFilter(FilterTarget::from($filter[0]), FilterType::from($filter[1]), $filter[2], $feed));
|
||||||
|
}
|
||||||
|
|
||||||
$this->em->persist($feed);
|
$this->em->persist($feed);
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
|
Loading…
Reference in New Issue
Block a user