Completed
Push — develop ( 531ade...a739c1 )
by Tom
04:50
created

FlushCommand::configure()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 30
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 30
rs 8.8571
c 1
b 0
f 0
cc 1
eloc 18
nc 1
nop 0
1
<?php
2
3
namespace N98\Magento\Command\Cache;
4
5
use Symfony\Component\Console\Input\InputInterface;
6
use Symfony\Component\Console\Input\InputOption;
7
use Symfony\Component\Console\Output\OutputInterface;
8
9
class FlushCommand extends AbstractCacheCommand
10
{
11
    protected function configure()
12
    {
13
        $this
14
            ->setName('cache:flush')
15
            ->addOption(
16
                'reinit',
17
                null,
18
                InputOption::VALUE_NONE,
19
                'Reinitialise the config cache after flushing'
20
            )
21
            ->addOption(
22
                'no-reinit',
23
                null,
24
                InputOption::VALUE_NONE,
25
                "Don't reinitialise the config cache after flushing"
26
            )
27
            ->setDescription('Flush magento cache storage')
28
        ;
29
30
        $help = <<<HELP
31
Flush the entire cache.
32
33
   $ n98-magerun.phar cache:flush [--reinit --no-reinit]
34
35
Options:
36
    --reinit Reinitialise the config cache after flushing (Default)
37
    --no-reinit Don't reinitialise the config cache after flushing
38
HELP;
39
        $this->setHelp($help);
40
    }
41
42
    /**
43
     * @param InputInterface  $input
44
     * @param OutputInterface $output
45
     *
46
     * @return int|void
47
     */
48
    protected function execute(InputInterface $input, OutputInterface $output)
49
    {
50
        $this->detectMagento($output, true);
51
52
        $noReinitOption = $input->getOption('no-reinit');
53
        if (!$noReinitOption) {
54
            $this->banUseCache();
55
        }
56
57
        if (!$this->initMagento()) {
58
            return;
59
        }
60
61
        \Mage::app()->loadAreaPart('adminhtml', 'events');
62
        \Mage::dispatchEvent('adminhtml_cache_flush_all', array('output' => $output));
63
        $result = \Mage::app()->getCacheInstance()->flush();
64
        if ($result) {
65
            $output->writeln('<info>Cache cleared</info>');
66
        } else {
67
            $output->writeln('<error>Failed to clear Cache</error>');
68
        }
69
70
        if (!$noReinitOption) {
71
            $this->reinitCache();
72
        }
73
74
        /* Since Magento 1.10 we have an own cache handler for FPC */
75
        if ($this->isEnterpriseFullPageCachePresent()) {
76
            $result = \Enterprise_PageCache_Model_Cache::getCacheInstance()->flush();
77
            if ($result) {
78
                $output->writeln('<info>FPC cleared</info>');
79
            } else {
80
                $output->writeln('<error>Failed to clear FPC</error>');
81
            }
82
        }
83
    }
84
85
    protected function isEnterpriseFullPageCachePresent()
86
    {
87
        $isModuleEnabled = \Mage::helper('core')->isModuleEnabled('Enterprise_PageCache');
88
        return $this->_magentoEnterprise && $isModuleEnabled && version_compare(\Mage::getVersion(), '1.11.0.0', '>=');
89
    }
90
}
91