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
|
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*
* @category Piwik
* @package PluginsFunctions
*/
/**
* @package PluginsFunctions
*/
class Piwik_WidgetsList
{
static protected $widgets = null;
static protected $hookCalled = false;
static function get()
{
if(!self::$hookCalled)
{
self::$hookCalled = true;
Piwik_PostEvent('WidgetsList.add');
}
return self::$widgets;
}
static function add($widgetCategory, $widgetName, $controllerName, $controllerAction, $customParameters)
{
$widgetCategory = Piwik_Translate($widgetCategory);
$widgetName = Piwik_Translate($widgetName);
$widgetUniqueId = 'widget' . $controllerName . $controllerAction;
foreach($customParameters as $name => $value)
{
if (is_array($value))
{
// use 'Array' for backward compatibility;
// could we switch to using $value[0]?
$value = 'Array';
}
$widgetUniqueId .= $name . $value;
}
self::$widgets[$widgetCategory][] = array(
'name' => $widgetName,
'uniqueId' => $widgetUniqueId,
'parameters' => array ( 'module' => $controllerName,
'action' => $controllerAction
) + $customParameters
);
}
static function isDefined($controllerName, $controllerAction)
{
$widgetsList = self::get();
foreach($widgetsList as $widgetCategory => $widgets)
{
foreach($widgets as $widget)
{
if($widget['parameters']['module'] == $controllerName
&& $widget['parameters']['action'] == $controllerAction)
{
return true;
}
}
}
return false;
}
}
function Piwik_GetWidgetsList()
{
return Piwik_WidgetsList::get();
}
function Piwik_AddWidget( $widgetCategory, $widgetName, $controllerName, $controllerAction, $customParameters = array())
{
Piwik_WidgetsList::add($widgetCategory, $widgetName, $controllerName, $controllerAction, $customParameters);
}
function Piwik_IsWidgetDefined($controllerName, $controllerAction)
{
return Piwik_WidgetsList::isDefined($controllerName, $controllerAction);
}
|