mirror of
https://github.com/wallabag/wallabag.git
synced 2024-06-17 04:30:43 +00:00
5c4993832e
By default, we assume the reading speed is 200 word per minute (WPM) when we save an entry. User can change that value in the config and the rendering is properly performed with the user reading speed. BUT, when the matching rule is applied, it uses the default reading time defined in the entry without applying the custom reading speed of the user. This should fix that bug. Also update the `wallabag:tag:all` to fix the bug when tagging all entries.
74 lines
2 KiB
PHP
74 lines
2 KiB
PHP
<?php
|
|
|
|
namespace Wallabag\CoreBundle\Command;
|
|
|
|
use Doctrine\ORM\NoResultException;
|
|
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
|
|
|
class TagAllCommand extends ContainerAwareCommand
|
|
{
|
|
protected function configure()
|
|
{
|
|
$this
|
|
->setName('wallabag:tag:all')
|
|
->setDescription('Tag all entries using the tagging rules.')
|
|
->addArgument(
|
|
'username',
|
|
InputArgument::REQUIRED,
|
|
'User to tag entries for.'
|
|
)
|
|
;
|
|
}
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
{
|
|
$io = new SymfonyStyle($input, $output);
|
|
|
|
try {
|
|
$user = $this->getUser($input->getArgument('username'));
|
|
} catch (NoResultException $e) {
|
|
$io->error(sprintf('User "%s" not found.', $input->getArgument('username')));
|
|
|
|
return 1;
|
|
}
|
|
$tagger = $this->getContainer()->get('wallabag_core.rule_based_tagger');
|
|
|
|
$io->text(sprintf('Tagging entries for user <info>%s</info>...', $user->getUserName()));
|
|
|
|
$entries = $tagger->tagAllForUser($user);
|
|
|
|
$io->text('Persist ' . \count($entries) . ' entries... ');
|
|
|
|
$em = $this->getDoctrine()->getManager();
|
|
foreach ($entries as $entry) {
|
|
$em->persist($entry);
|
|
}
|
|
$em->flush();
|
|
|
|
$io->success('Done.');
|
|
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Fetches a user from its username.
|
|
*
|
|
* @param string $username
|
|
*
|
|
* @return \Wallabag\UserBundle\Entity\User
|
|
*/
|
|
private function getUser($username)
|
|
{
|
|
return $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($username);
|
|
}
|
|
|
|
private function getDoctrine()
|
|
{
|
|
return $this->getContainer()->get('doctrine');
|
|
}
|
|
}
|