Skip to content

Commit

Permalink
refs #4053 coding style, prevent some possible errors
Browse files Browse the repository at this point in the history
  • Loading branch information
tsteur committed Sep 21, 2013
1 parent 19bb2e1 commit 98f04d0
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 61 deletions.
10 changes: 6 additions & 4 deletions plugins/CorePluginsAdmin/Controller.php
Expand Up @@ -36,7 +36,6 @@ private function createUpdateOrInstallView($template, $nonceName)
Piwik::checkUserIsSuperUser();

$view = $this->configureView('@CorePluginsAdmin/' . $template);
$view->errorMessage = '';

$pluginName = Common::getRequestVar('pluginName', '', 'string');
$pluginName = strip_tags($pluginName);
Expand Down Expand Up @@ -64,7 +63,7 @@ private function createUpdateOrInstallView($template, $nonceName)
return $view;
}

$marketplace = new MarketplaceApiClient();
$marketplace = new Marketplace();
$view->plugin = $marketplace->getPluginInfo($pluginName);

return $view;
Expand Down Expand Up @@ -94,10 +93,9 @@ public function pluginDetails()
}

$view = $this->configureView('@CorePluginsAdmin/pluginDetails');
$view->errorMessage = '';

try {
$marketplace = new MarketplaceApiClient();
$marketplace = new Marketplace();
$view->plugin = $marketplace->getPluginInfo($pluginName);
} catch (\Exception $e) {
$view->errorMessage = $e->getMessage();
Expand Down Expand Up @@ -188,9 +186,13 @@ function themes()
protected function configureView($template)
{
Piwik::checkUserIsNotAnonymous();

$view = new View($template);
$this->setBasicVariablesView($view);
$this->displayWarningIfConfigFileNotWritable($view);

$view->errorMessage = '';

return $view;
}

Expand Down
16 changes: 11 additions & 5 deletions plugins/CorePluginsAdmin/Marketplace.php
Expand Up @@ -30,6 +30,13 @@ public function __construct()
$this->client = new MarketplaceApiClient();
}

public function getPluginInfo($pluginName)
{
$marketplace = new MarketplaceApiClient();

return $marketplace->getPluginInfo($pluginName);
}

public function searchPlugins($query, $sort, $themesOnly)
{
if ($themesOnly) {
Expand All @@ -51,7 +58,7 @@ public function searchPlugins($query, $sort, $themesOnly)

private function hasPluginUpdate($plugin)
{
if (empty($plugin)) {
if (empty($plugin->name)) {
return false;
}

Expand Down Expand Up @@ -89,15 +96,14 @@ public function getPluginsHavingUpdate($themesOnly)
foreach ($pluginsHavingUpdate as $updatePlugin) {
foreach ($loadedPlugins as $loadedPlugin) {

if ($loadedPlugin->getPluginName() == $updatePlugin->name) {
if (!empty($updatePlugin->name) && $loadedPlugin->getPluginName() == $updatePlugin->name) {
$updatePlugin->currentVersion = $loadedPlugin->getVersion();
$updatePlugin->isActivated = $pluginManager->isPluginActivated($updatePlugin->name);
$updatePlugin->isActivated = $pluginManager->isPluginActivated($updatePlugin->name);
break;

}
}

}

return $pluginsHavingUpdate;
}

Expand Down
107 changes: 56 additions & 51 deletions plugins/CorePluginsAdmin/MarketplaceApiClient.php
Expand Up @@ -36,47 +36,6 @@ public static function clearAllCacheEntries()
$cache->deleteAll();
}

private function fetch($action, $params)
{
$query = http_build_query($params);
$result = $this->getCachedResult($action, $query);

if (false === $result) {
$endpoint = $this->domain . '/api/1.0/';
$url = sprintf('%s%s?%s', $endpoint, $action, $query);
$result = Http::sendHttpRequest($url, 5);
$this->cacheResult($action, $query, $result);
}

$result = json_decode($result);

if (!empty($result->error)) {
// TODO create own exception
throw new \Exception($result->error);
}

return $result;
}

private function getCachedResult($action, $query)
{
$cacheKey = $this->getCacheKey($action, $query);

return $this->cache->get($cacheKey);
}

private function cacheResult($action, $query, $result)
{
$cacheKey = $this->getCacheKey($action, $query);

$this->cache->set($cacheKey, $result);
}

private function getCacheKey($action, $query)
{
return sprintf('api.1.0.%s.%s', str_replace('/', '.', $action), md5($query));
}

public function getPluginInfo($name)
{
$action = sprintf('plugins/%s/info', $name);
Expand All @@ -88,14 +47,12 @@ public function download($pluginOrThemeName, $target)
{
$plugin = $this->getPluginInfo($pluginOrThemeName);

if (empty($plugin)) {
// TODO throw exception notExistingPlugin
return;
if (empty($plugin->versions)) {
return false;
}

$latestVersion = array_pop($plugin->versions);

$downloadUrl = $latestVersion->download;
$downloadUrl = $latestVersion->download;

$success = Http::fetchRemoteFile($this->domain . $downloadUrl, $target);

Expand All @@ -104,15 +61,14 @@ public function download($pluginOrThemeName, $target)

/**
* @param \Piwik\Plugin[] $plugins
* @return array|mixed
*/
public function checkUpdates($plugins)
{
$params = array();

foreach ($plugins as $plugin) {
$pluginName = $plugin->getPluginName();

$params[] = array('name' => $pluginName, 'version' => $plugin->getVersion());
$params[] = array('name' => $plugin->getPluginName(), 'version' => $plugin->getVersion());
}

$params = array('plugins' => $params);
Expand All @@ -128,15 +84,18 @@ public function checkUpdates($plugins)

/**
* @param \Piwik\Plugin[] $plugins
* @return array
*/
public function getInfoOfPluginsHavingUpdate($plugins)
{
$hasUpdates = $this->checkUpdates($plugins);

$pluginDetails = array();

foreach ($hasUpdates as $pluginHavingUpdate) {
$plugin = $this->getPluginInfo($pluginHavingUpdate->name);
if (!$plugin->isTheme) {

if (empty($plugin->isTheme)) {
$pluginDetails[] = $plugin;
}
}
Expand All @@ -146,6 +105,7 @@ public function getInfoOfPluginsHavingUpdate($plugins)

/**
* @param \Piwik\Plugin[] $plugins
* @return array
*/
public function getInfoOfThemesHavingUpdate($plugins)
{
Expand All @@ -154,7 +114,8 @@ public function getInfoOfThemesHavingUpdate($plugins)
$pluginDetails = array();
foreach ($hasUpdates as $pluginHavingUpdate) {
$plugin = $this->getPluginInfo($pluginHavingUpdate->name);
if ($plugin->isTheme) {

if (!empty($plugin->isTheme)) {
$pluginDetails[] = $plugin;
}
}
Expand Down Expand Up @@ -184,4 +145,48 @@ public function searchForThemes($keywords, $query, $sort)
return array();
}

private function fetch($action, $params)
{
$query = http_build_query($params);
$result = $this->getCachedResult($action, $query);

if (false === $result) {
$endpoint = $this->domain . '/api/1.0/';
$url = sprintf('%s%s?%s', $endpoint, $action, $query);
$result = Http::sendHttpRequest($url, 5);
$this->cacheResult($action, $query, $result);
}

$result = json_decode($result);

if (is_null($result)) {
throw new MarketplaceApiException('Failure during communication with marketplace, unable to read response');
}

if (!empty($result->error)) {
throw new MarketplaceApiException($result->error);
}

return $result;
}

private function getCachedResult($action, $query)
{
$cacheKey = $this->getCacheKey($action, $query);

return $this->cache->get($cacheKey);
}

private function cacheResult($action, $query, $result)
{
$cacheKey = $this->getCacheKey($action, $query);

$this->cache->set($cacheKey, $result);
}

private function getCacheKey($action, $query)
{
return sprintf('api.1.0.%s.%s', str_replace('/', '.', $action), md5($query));
}

}
20 changes: 20 additions & 0 deletions plugins/CorePluginsAdmin/MarketplaceApiException.php
@@ -0,0 +1,20 @@
<?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 CorePluginsAdmin
*/

namespace Piwik\Plugins\CorePluginsAdmin;

/**
* @package CorePluginsAdmin
*/
class MarketplaceApiException extends \Exception
{

}
2 changes: 1 addition & 1 deletion plugins/CorePluginsAdmin/templates/installPlugin.twig
Expand Up @@ -4,7 +4,7 @@

<div style="max-width:980px;">

<h2>Installing {{ plugin.name}}</h2>
<h2>Installing {{ plugin.name }}</h2>

{% if errorMessage %}
<div class="ajaxError" style="">{{ errorMessage }}</div>
Expand Down

0 comments on commit 98f04d0

Please sign in to comment.