-
Notifications
You must be signed in to change notification settings - Fork 10
/
Controller.php
122 lines (108 loc) · 3.3 KB
/
Controller.php
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
/**
* ExtraTools
*
* @link https://github.com/digitalist-se/extratools
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\ExtraTools;
use Piwik\Plugins\ExtraTools\Lib\Archivers;
use Piwik\Common;
use Piwik\Db;
use Piwik\Piwik;
/**
*
*/
class Controller extends \Piwik\Plugin\Controller
{
private static $rawPrefix = 'segment';
protected function getTable()
{
return Common::prefixTable(self::$rawPrefix);
}
public function index()
{
Piwik::checkUserHasSomeViewAccess();
$info = "<p>ExtraTools is an open source plugin for Matomo, developed and maintained by
<a href='https://www.digitalist.se'>Digitalist Open Tech</a> and the Matomo Community.
ExtraTools adds a lot of functionality to your Matomo instance, focusing on
automation in the backend, like installing, handling segments,
sites and more.</p>
<p>We are providing <a href='https://www.digitalist.se/blogg/our-matomo-saas'>professional services</a>,
<a href='https://github.com/digitalist-se/MatomoPlugins'>open source and licensed plugins</a>.</p>";
return $this->renderTemplate('index', array(
'info' => $info
));
}
public function docs()
{
Piwik::checkUserHasSomeViewAccess();
$info = "ExtraTools Docs";
return $this->renderTemplate('docs', array(
'info' => $info
));
}
public function phpinfo()
{
Piwik::checkUserHasSomeAdminAccess();
$api = new API();
// Get phpinfo
$info = $api->getPhpInfo();
return $this->renderTemplate('phpinfo', array(
'info' => $info
));
}
public function invalidatedarchives()
{
Piwik::checkUserHasSomeAdminAccess();
$result = [];
$archivers = $this->getArchivers();
foreach ($archivers as $out) {
if ($out['name'] == 'done') {
$out['name'] = 'All visits';
} else {
$hash = preg_replace('/^done/', '', $out['name']);
$name = $this->getSegmentName($hash);
$out['name'] = $name['name'];
}
switch ($out['period']) {
case 1:
$out['period'] = 'day';
break;
case 2:
$out['period'] = 'week';
break;
case 3:
$out['period'] = 'month';
break;
case 4:
$out['period'] = 'year';
break;
}
$result[] = $out;
}
return $this->renderTemplate('invalidatedarchives', array(
'archivers' => $result
));
}
public function getArchivers()
{
$list = new Archivers();
$out = $list->getAllInvalidations();
return $out;
}
public function getSegmentName($hash)
{
try {
$sql = "SELECT `name` FROM " . $this->getTable() . " WHERE `hash` = '" . $hash . "';";
$name = $this->getDb()->fetchRow($sql);
return $name;
} catch (\Exception $e) {
return false;
}
}
private function getDb()
{
return Db::get();
}
}