Skip to content
Extraits de code Groupes Projets
Valider 9471c1e9 rédigé par Thomas Steur's avatar Thomas Steur
Parcourir les fichiers

cleanup viewdatatable class, API logic did not belong into viewDataTable

parent 1116ccf0
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -28,7 +28,7 @@ use ReflectionMethod;
*
* @package Piwik
* @subpackage Piwik_API
* @method \Piwik\API\Proxy getInstance()
* @static \Piwik\API\Proxy getInstance()
*/
class Proxy extends Singleton
{
......@@ -265,6 +265,19 @@ class Proxy extends Singleton
return str_replace(array('\\Piwik\\Plugins\\', '\\API'), '', $className);
}
public function isExistingApiAction($pluginName, $apiAction)
{
$namespacedApiClassName = "\\Piwik\\Plugins\\$pluginName\\API";
$api = $namespacedApiClassName::getInstance();
return !method_exists($api, $apiAction);
}
public function buildApiActionName($pluginName, $apiAction)
{
return sprintf("%s.%s", $pluginName, $apiAction);
}
/**
* Sets whether to hide '@ignore'd functions from method metadata or not.
*
......
......@@ -15,4 +15,5 @@ use Piwik\Singleton;
abstract class API extends Singleton
{
}
......@@ -10,6 +10,7 @@
*/
namespace Piwik;
use Piwik\API\Proxy;
use Piwik\API\Request;
use Piwik\Plugins\API\API;
use Piwik\Plugin\Visualization;
......@@ -55,7 +56,7 @@ class ViewDataTable
*
* @var array
*/
public static $reportPropertiesCache = null;
private static $reportPropertiesCache = null;
/**
* Returns a Piwik_ViewDataTable_* object.
......@@ -69,18 +70,19 @@ class ViewDataTable
* @param string|bool $controllerAction
* @param bool $forceDefault
*
* @throws \Exception
* @return \Piwik\Plugin\ViewDataTable|\Piwik\Plugin\Visualization|\Piwik\Plugins\CoreVisualizations\Visualizations\Sparkline;
*/
static public function factory($defaultType = null, $apiAction = false, $controllerAction = false, $forceDefault = false)
public static function factory($defaultType = null, $apiAction = false, $controllerAction = false, $forceDefault = false)
{
if ($controllerAction === false) {
if (false === $controllerAction) {
$controllerAction = $apiAction;
}
$defaultReportProperties = self::getDefaultPropertiesForReport($apiAction);
if (!empty($defaultReportProperties['default_view_type'])
&& !$forceDefault
) {
if (!$forceDefault
&& !empty($defaultReportProperties['default_view_type'])) {
$defaultType = $defaultReportProperties['default_view_type'];
}
......@@ -105,7 +107,7 @@ class ViewDataTable
*/
public static function getAvailableVisualizations()
{
/** @var \Piwik\Plugin\ViewDataTable[] $visualizations */
/** @var string[] $visualizations */
$visualizations = array();
/**
......@@ -145,11 +147,13 @@ class ViewDataTable
public static function getNonCoreVisualizations()
{
$result = array();
foreach (\Piwik\ViewDataTable::getAvailableVisualizations() as $vizId => $vizClass) {
if (strpos($vizClass, 'Piwik\\Plugins\\CoreVisualizations') === false) {
foreach (static::getAvailableVisualizations() as $vizId => $vizClass) {
if (false === strpos($vizClass, 'Piwik\\Plugins\\CoreVisualizations')) {
$result[$vizId] = $vizClass;
}
}
return $result;
}
......@@ -162,17 +166,19 @@ class ViewDataTable
* @throws \Exception
* @return string|null See $fetch.
*/
static public function renderReport($pluginName, $apiAction, $fetch = true)
public static function renderReport($pluginName, $apiAction, $fetch = true)
{
$namespacedApiClassName = "\\Piwik\\Plugins\\$pluginName\\API";
$api = $namespacedApiClassName::getInstance();
/** @var Proxy $apiProxy */
$apiProxy = Proxy::getInstance();
if (!method_exists($api, $apiAction)) {
throw new \Exception("$namespacedApiClassName Invalid action name '$apiAction' for '$pluginName' plugin.");
if (!$apiProxy->isExistingApiAction($pluginName, $apiAction)) {
throw new \Exception("Invalid action name '$apiAction' for '$pluginName' plugin.");
}
$view = static::factory(null, $pluginName . '.' . $apiAction);
$rendered = $view->render();
$apiAction = $apiProxy->buildApiActionName($pluginName, $apiAction);
$view = static::factory(null, $apiAction);
$rendered = $view->render();
if ($fetch) {
return $rendered;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter