-
Thomas Steur a rédigéThomas Steur a rédigé
Controller.php 6,58 Kio
<?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 ExampleUI
*/
namespace Piwik\Plugins\ExampleUI;
use Piwik\Common;
use Piwik\Notification;
use Piwik\Piwik;
use Piwik\View;
use Piwik\ViewDataTable\Factory;
/**
* @package ExampleUI
*/
class Controller extends \Piwik\Plugin\Controller
{
public function dataTables()
{
$controllerAction = $this->pluginName . '.' . __FUNCTION__;
$apiAction = 'ExampleUI.getTemperatures';
$view = Factory::build('table', $apiAction, $controllerAction);
$view->config->translations['value'] = 'Temperature in °C';
$view->config->translations['label'] = 'Hour of day';
$view->requestConfig->filter_sort_column = 'label';
$view->requestConfig->filter_sort_order = 'asc';
$view->requestConfig->filter_limit = 24;
$view->config->columns_to_display = array('label', 'value');
$view->config->y_axis_unit = '°C'; // useful if the user requests the bar graph
$view->config->show_exclude_low_population = false;
$view->config->show_table_all_columns = false;
$view->config->disable_row_evolution = true;
$view->config->max_graph_elements = 24;
$view->config->metrics_documentation = array('value' => 'Documentation for temperature metric');
echo $view->render();
}
public function evolutionGraph()
{
$view = new View('@ExampleUI/evolutiongraph');
$this->setPeriodVariablesView($view);
$view->evolutionGraph = $this->getEvolutionGraph(true, array('server1', 'server2'));
echo $view->render();
}
public function notifications()
{
$notification = new Notification('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
Notification\Manager::notify('ExampleUI_InfoSimple', $notification);
$notification = new Notification('Neque porro quisquam est qui dolorem ipsum quia dolor sit amet.');
$notification->title = 'Warning:';
$notification->context = Notification::CONTEXT_WARNING;
$notification->flags = null;
Notification\Manager::notify('ExampleUI_warningWithClose', $notification);
$notification = new Notification('Phasellus tincidunt arcu at justo faucibus, et lacinia est accumsan. ');
$notification->title = 'Well done';
$notification->context = Notification::CONTEXT_SUCCESS;
$notification->type = Notification::TYPE_TOAST;
Notification\Manager::notify('ExampleUI_successToast', $notification);
$notification = new Notification('Phasellus tincidunt arcu at justo <a href="#">faucibus</a>, et lacinia est accumsan. ');
$notification->context = Notification::CONTEXT_ERROR;
Notification\Manager::notify('ExampleUI_error', $notification);
$view = new View('@ExampleUI/notifications');
$this->setGeneralVariablesView($view);
echo $view->render();
}
public function getEvolutionGraph($fetch = false, array $columns = array())
{
if (empty($columns)) {
$columns = Common::getRequestVar('columns');
$columns = Piwik::getArrayFromApiParameter($columns);
}
$view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
$selectableColumns = array('server1', 'server2'), 'My documentation', 'ExampleUI.getTemperaturesEvolution');
$view->requestConfig->filter_sort_column = 'label';
return $this->renderView($view, $fetch);
}
public function barGraph()
{
$view = Factory::build(
'graphVerticalBar', 'ExampleUI.getTemperatures', $controllerAction = 'ExampleUI.barGraph');
$view->config->y_axis_unit = '°C';
$view->config->show_footer = false;
$view->config->translations['value'] = "Temperature";
$view->config->selectable_columns = array("value");
$view->config->max_graph_elements = 24;
echo $view->render();
}
public function pieGraph()
{
$view = Factory::build(
'graphPie', 'ExampleUI.getPlanetRatios', $controllerAction = 'ExampleUI.pieGraph');
$view->config->columns_to_display = array('value');
$view->config->translations['value'] = "times the diameter of Earth";
$view->config->show_footer_icons = false;
$view->config->selectable_columns = array("value");
$view->config->max_graph_elements = 10;
echo $view->render();
}
public function tagClouds()
{
echo "<h2>Simple tag cloud</h2>";
$this->echoSimpleTagClouds();
echo "<br /><br /><h2>Advanced tag cloud: with logos and links</h2>
<ul style='list-style-type:disc;margin-left:50px'>
<li>The logo size is proportional to the value returned by the API</li>
<li>The logo is linked to a specific URL</li>
</ul><br /><br />";
$this->echoAdvancedTagClouds();
}
public function echoSimpleTagClouds()
{
$view = Factory::build(
'cloud', 'ExampleUI.getPlanetRatios', $controllerAction = 'ExampleUI.echoSimpleTagClouds');
$view->config->columns_to_display = array('label', 'value');
$view->config->translations['value'] = "times the diameter of Earth";
$view->config->show_footer = false;
echo $view->render();
}
public function echoAdvancedTagClouds()
{
$view = Factory::build(
'cloud', 'ExampleUI.getPlanetRatiosWithLogos', $controllerAction = 'ExampleUI.echoAdvancedTagClouds');
$view->config->display_logo_instead_of_label = true;
$view->config->columns_to_display = array('label', 'value');
$view->config->translations['value'] = "times the diameter of Earth";
echo $view->render();
}
public function sparklines()
{
$view = new View('@ExampleUI/sparklines');
$view->urlSparkline1 = $this->getUrlSparkline('generateSparkline', array('server' => 'server1', 'rand' => mt_rand()));
$view->urlSparkline2 = $this->getUrlSparkline('generateSparkline', array('server' => 'server2', 'rand' => mt_rand()));
echo $view->render();
}
public function generateSparkline()
{
$view = Factory::build(
'sparkline', 'ExampleUI.getTemperaturesEvolution', $controllerAction = 'ExampleUI.generateSparkline');
$serverRequested = Common::getRequestVar('server', false);
if (false !== $serverRequested) {
$view->config->columns_to_display = array($serverRequested);
}
echo $view->render();
}
}