1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Stats; |
4
|
|
|
|
5
|
|
|
use Joomla\Application\AbstractCliApplication; |
6
|
|
|
use Joomla\Application\Cli\CliOutput; |
7
|
|
|
use Joomla\DI\ContainerAwareInterface; |
8
|
|
|
use Joomla\DI\ContainerAwareTrait; |
9
|
|
|
use Joomla\Input\Cli; |
10
|
|
|
use Joomla\Registry\Registry; |
11
|
|
|
|
12
|
|
|
/** |
13
|
|
|
* CLI application for the stats server |
14
|
|
|
* |
15
|
|
|
* @since 1.0 |
16
|
|
|
*/ |
17
|
|
|
class CliApplication extends AbstractCliApplication implements ContainerAwareInterface |
18
|
|
|
{ |
19
|
|
|
use ContainerAwareTrait; |
20
|
|
|
|
21
|
|
|
/** |
22
|
|
|
* The application's console object |
23
|
|
|
* |
24
|
|
|
* @var Console |
25
|
|
|
* @since 1.0 |
26
|
|
|
*/ |
27
|
|
|
private $console; |
28
|
|
|
|
29
|
|
|
/** |
30
|
|
|
* CliApplication constructor. |
31
|
|
|
* |
32
|
|
|
* @param Input\Cli $input The application's input object. |
33
|
|
|
* @param Registry $config The application's configuration. |
34
|
|
|
* @param CliOutput $output The application's output object. |
35
|
|
|
* @param Console $console The application's console object. |
36
|
|
|
*/ |
37
|
|
|
public function __construct(Cli $input, Registry $config, CliOutput $output, Console $console) |
38
|
|
|
{ |
39
|
|
|
parent::__construct($input, $config, $output); |
40
|
|
|
|
41
|
|
|
$this->console = $console; |
42
|
|
|
} |
43
|
|
|
|
44
|
|
|
/** |
45
|
|
|
* Method to run the application routines. |
46
|
|
|
* |
47
|
|
|
* @return void |
48
|
|
|
* |
49
|
|
|
* @since 1.0 |
50
|
|
|
* @throws \InvalidArgumentException |
51
|
|
|
*/ |
52
|
|
|
protected function doExecute() |
53
|
|
|
{ |
54
|
|
|
$args = $this->input->args; |
|
|
|
|
55
|
|
|
|
56
|
|
|
$command = !empty($args[0]) ? $args[0] : 'help'; |
57
|
|
|
$commands = $this->getConsole()->getCommands(); |
58
|
|
|
|
59
|
|
|
if (!array_key_exists($command, $commands)) |
60
|
|
|
{ |
61
|
|
|
throw new \InvalidArgumentException(sprintf('The "%s" command is not valid.', $command)); |
62
|
|
|
} |
63
|
|
|
|
64
|
|
|
// Execute the command |
65
|
|
|
$commands[$command]->execute(); |
66
|
|
|
} |
67
|
|
|
|
68
|
|
|
/** |
69
|
|
|
* Get the application's console object |
70
|
|
|
* |
71
|
|
|
* @return Console |
72
|
|
|
* |
73
|
|
|
* @since 1.0 |
74
|
|
|
*/ |
75
|
|
|
public function getConsole() |
76
|
|
|
{ |
77
|
|
|
return $this->console; |
78
|
|
|
} |
79
|
|
|
|
80
|
|
|
/** |
81
|
|
|
* Output a nicely formatted title for the application. |
82
|
|
|
* |
83
|
|
|
* @param string $title The title to display. |
84
|
|
|
* @param string $subTitle A subtitle. |
85
|
|
|
* @param integer $width Total width in chars. |
86
|
|
|
* |
87
|
|
|
* @return $this |
88
|
|
|
* |
89
|
|
|
* @since 1.0 |
90
|
|
|
*/ |
91
|
|
|
public function outputTitle($title, $subTitle = '', $width = 60) |
92
|
|
|
{ |
93
|
|
|
$this->out(str_repeat('-', $width)); |
94
|
|
|
$this->out(str_repeat(' ', $width / 2 - (strlen($title) / 2)) . '<title>' . $title . '</title>'); |
95
|
|
|
|
96
|
|
|
if ($subTitle) |
97
|
|
|
{ |
98
|
|
|
$this->out(str_repeat(' ', $width / 2 - (strlen($subTitle) / 2)) . '<b>' . $subTitle . '</b>'); |
99
|
|
|
} |
100
|
|
|
|
101
|
|
|
$this->out(str_repeat('-', $width)); |
102
|
|
|
|
103
|
|
|
return $this; |
104
|
|
|
} |
105
|
|
|
} |
106
|
|
|
|
An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.
If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.