These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace Popstas\Transmission\Console\Command; |
||
4 | |||
5 | use Popstas\Transmission\Console\TransmissionClient; |
||
6 | use Symfony\Component\Console\Input\ArrayInput; |
||
7 | use Symfony\Component\Console\Input\InputArgument; |
||
8 | use Symfony\Component\Console\Input\InputInterface; |
||
9 | use Symfony\Component\Console\Input\InputOption; |
||
10 | use Symfony\Component\Console\Output\OutputInterface; |
||
11 | |||
12 | class TorrentAdd extends Command |
||
13 | { |
||
14 | protected function configure() |
||
15 | { |
||
16 | parent::configure(); |
||
17 | $this |
||
18 | ->setName('torrent-add') |
||
19 | ->setAliases(['ta']) |
||
20 | ->setDescription('Add torrents to Transmission') |
||
21 | ->addOption('yes', 'y', InputOption::VALUE_NONE, 'Don\'t ask confirmation') |
||
22 | ->addArgument('torrent-files', InputArgument::IS_ARRAY, 'List of torrent files to add') |
||
23 | ->setHelp(<<<EOT |
||
24 | ## Add torrents |
||
25 | |||
26 | By default, Transmission may to freeze if you add several torrents at same time. |
||
27 | Therefore, preferred way to add torrents - with `torrent-add`. |
||
28 | After each add file command sleeps for 10 seconds for give time to freeze Transmission. |
||
29 | After that command waits for Transmission answer and add next file, etc. |
||
30 | |||
31 | ``` |
||
32 | transmission-cli torrent-add file|url [file2] [fileX] |
||
33 | ``` |
||
34 | EOT |
||
35 | ); |
||
36 | } |
||
37 | |||
38 | protected function execute(InputInterface $input, OutputInterface $output) |
||
39 | { |
||
40 | $client = $this->getApplication()->getClient(); |
||
41 | $config = $this->getApplication()->getConfig(); |
||
42 | |||
43 | $torrentFiles = $input->getArgument('torrent-files'); |
||
44 | foreach ($torrentFiles as $torrentFile) { |
||
45 | $this->addFile($input, $output, $client, $torrentFile); |
||
46 | } |
||
47 | |||
48 | $output->writeln('All torrents added.'); |
||
49 | |||
50 | if (!$config->get('allow-duplicates')) { |
||
51 | $this->removeDuplicates($input, $output); |
||
52 | } |
||
53 | } |
||
54 | |||
55 | private function addFile(InputInterface $input, OutputInterface $output, TransmissionClient $client, $torrentFile) |
||
56 | { |
||
57 | $this->dryRun($input, $output, function () use ($torrentFile, $client, $input, $output) { |
||
58 | $torrentAdded = $client->addTorrent($torrentFile); |
||
59 | if ($torrentAdded) { |
||
0 ignored issues
–
show
|
|||
60 | if (isset($torrentAdded['duplicate'])) { |
||
61 | $output->writeln($torrentFile . ' was not added. Probably it was added before.'); |
||
62 | } else { |
||
63 | $output->writeln($torrentFile . ' added. Waiting for Transmission...'); |
||
64 | $client->waitForTransmission(10); |
||
65 | } |
||
66 | } |
||
67 | }, 'dry-run, don\'t really add torrents'); |
||
68 | } |
||
69 | |||
70 | private function removeDuplicates(InputInterface $input, OutputInterface $output) |
||
71 | { |
||
72 | $config = $this->getApplication()->getConfig(); |
||
73 | |||
74 | $command = $this->getApplication()->find('torrent-remove-duplicates'); |
||
75 | $arguments = array( |
||
76 | 'command' => 'torrent-remove-duplicates', |
||
77 | '--transmission-host' => $config->get('transmission-host'), |
||
78 | '--yes' => $input->getOption('yes'), |
||
79 | '--dry-run' => $input->getOption('dry-run') |
||
80 | ); |
||
81 | $commandInput = new ArrayInput($arguments); |
||
82 | $command->run($commandInput, $output); |
||
83 | } |
||
84 | } |
||
85 |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.