1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
* @category Piwik_Plugins
* @package CoreConsole
*/
namespace Piwik\Plugins\CoreConsole;
use Piwik\Console\Command;
use Piwik\Filesystem;
/**
* @package CoreConsole
*/
class GeneratePluginBase extends Command
{
public function getPluginPath($pluginName)
{
return PIWIK_INCLUDE_PATH . '/plugins/' . ucfirst($pluginName);
}
private function createFolderWithinPluginIfNotExists($pluginName, $folder)
{
$pluginPath = $this->getPluginPath($pluginName);
if (!file_exists($pluginName . $folder)) {
Filesystem::mkdir($pluginPath . $folder, true);
}
}
protected function createFileWithinPluginIfNotExists($pluginName, $fileName, $content)
{
$pluginPath = $this->getPluginPath($pluginName);
if (!file_exists($pluginPath . $fileName)) {
file_put_contents($pluginPath . $fileName, $content);
}
}
/**
* @param string $templateName eg. 'controller' or 'api'
* @param string $pluginName
*/
protected function copyTemplateToPlugin($templateName, $pluginName)
{
$templateFolder = __DIR__ . '/templates/' . $templateName;
$files = Filesystem::globr($templateFolder, '*');
foreach ($files as $file) {
$fileNamePlugin = str_replace($templateFolder, '', $file);
if (is_dir($file)) {
$this->createFolderWithinPluginIfNotExists($pluginName, $fileNamePlugin);
} else {
$template = file_get_contents($file);
$template = str_replace('PLUGINNAME', $pluginName, $template);
$this->createFileWithinPluginIfNotExists($pluginName, $fileNamePlugin, $template);
}
}
}
protected function getPluginNamesHavingNotSpecificFile($filename)
{
$pluginDirs = \_glob(PIWIK_INCLUDE_PATH . '/plugins/*', GLOB_ONLYDIR);
$pluginNames = array();
foreach ($pluginDirs as $pluginDir) {
if (!file_exists($pluginDir . '/' . $filename)) {
$pluginNames[] = basename($pluginDir);
}
}
return $pluginNames;
}
}
|