Skip to content

Commit

Permalink
refs #4053 use similar code for themes and plugins / install and update
Browse files Browse the repository at this point in the history
  • Loading branch information
tsteur committed Sep 21, 2013
1 parent c08f6c1 commit 65a62b8
Showing 1 changed file with 36 additions and 93 deletions.
129 changes: 36 additions & 93 deletions plugins/CorePluginsAdmin/Controller.php
Expand Up @@ -24,19 +24,18 @@
use Piwik\PluginsManager;

/**
*
* @package CorePluginsAdmin
*/
class Controller extends \Piwik\Controller\Admin
{
private $validSortMethods = array('popular', 'newest', 'alpha');
private $defaultSortMethod = 'popular';

public function updatePlugin()
private function createUpdateOrInstallView($template, $nonceName)
{
Piwik::checkUserIsSuperUser();

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

$pluginName = Common::getRequestVar('pluginName', '', 'string');
Expand All @@ -49,68 +48,38 @@ public function updatePlugin()

$view->plugin = array('name' => $pluginName);

if (!Nonce::verifyNonce('CorePluginsAdmin.updatePlugin', $nonce)) {
if (!Nonce::verifyNonce('CorePluginsAdmin.' . $nonceName, $nonce)) {
$view->errorMessage = Piwik_Translate('ExceptionNonceMismatch');
echo $view->render();
return;
return $view;
}

Nonce::discardNonce('CorePluginsAdmin.updatePlugin');
Nonce::discardNonce('CorePluginsAdmin.' . $nonceName);

try {
$pluginInstaller = new PluginInstaller($pluginName);
$pluginInstaller->installOrUpdatePluginFromMarketplace();

} catch (PluginInstallerException $e) {
$view->errorMessage = $e->getMessage();
echo $view->render();
return;
return $view;
}

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

return $view;
}

public function updatePlugin()
{
$view = $this->createUpdateOrInstallView('updatePlugin', 'updatePlugin');
echo $view->render();
}

public function installPlugin()
{
Piwik::checkUserIsSuperUser();

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

$pluginName = Common::getRequestVar('pluginName', '', 'string');
$pluginName = strip_tags($pluginName);
$nonce = Common::getRequestVar('nonce', '', 'string');

if (empty($pluginName)) {
throw new \Exception('Plugin parameter is missing');
}

$view->plugin = array('name' => $pluginName);

if (!Nonce::verifyNonce('CorePluginsAdmin.installPlugin', $nonce)) {
$view->errorMessage = Piwik_Translate('ExceptionNonceMismatch');
echo $view->render();
return;
}

Nonce::discardNonce('CorePluginsAdmin.installPlugin');

try {
$pluginInstaller = new PluginInstaller($pluginName);
$pluginInstaller->installOrUpdatePluginFromMarketplace();

} catch (PluginInstallerException $e) {
$view->errorMessage = $e->getMessage();
echo $view->render();
return;
}

$marketplace = new MarketplaceApiClient();
$view->plugin = $marketplace->getPluginInfo($pluginName);
$view->nonce = Nonce::getNonce('CorePluginsAdmin.activatePlugin');
$view = $this->createUpdateOrInstallView('installPlugin', 'installPlugin');
$view->nonce = Nonce::getNonce('CorePluginsAdmin.activatePlugin');

echo $view->render();
}
Expand All @@ -131,7 +100,7 @@ public function pluginDetails()
echo $view->render();
}

public function browsePlugins()
private function createBrowsePluginsOrThemesView($template, $themesOnly)
{
$query = Common::getRequestVar('query', '', 'string', $_POST);
$query = strip_tags($query);
Expand All @@ -141,41 +110,29 @@ public function browsePlugins()
$sort = $this->defaultSortMethod;
}

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

$marketplace = new Marketplace();
$view->plugins = $marketplace->searchPlugins($query, $sort, $themesOnly = false);
$view->plugins = $marketplace->searchPlugins($query, $sort, $themesOnly);

$view->query = $query;
$view->sort = $sort;
$view->installNonce = Nonce::getNonce('CorePluginsAdmin.installPlugin');
$view->updateNonce = Nonce::getNonce('CorePluginsAdmin.updatePlugin');
$view->isSuperUser = Piwik::isUserIsSuperUser();

return $view;
}

public function browsePlugins()
{
$view = $this->createBrowsePluginsOrThemesView('browsePlugins', $themesOnly = false);
echo $view->render();
}

public function browseThemes()
{
$query = Common::getRequestVar('query', '', 'string', $_POST);
$query = strip_tags($query);
$sort = Common::getRequestVar('sort', $this->defaultSortMethod, 'string');

if (!in_array($sort, $this->validSortMethods)) {
$sort = $this->defaultSortMethod;
}

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

$marketplace = new Marketplace();
$view->plugins = $marketplace->searchPlugins($query, $sort, $themesOnly = true);

$view->query = $query;
$view->sort = $sort;
$view->installNonce = Nonce::getNonce('CorePluginsAdmin.installPlugin');
$view->updateNonce = Nonce::getNonce('CorePluginsAdmin.updatePlugin');
$view->isSuperUser = Piwik::isUserIsSuperUser();

$view = $this->createBrowsePluginsOrThemesView('browseThemes', $themesOnly = true);
echo $view->render();
}

Expand All @@ -185,14 +142,15 @@ function extend()
echo $view->render();
}

function plugins()
private function createPluginsOrThemesView($template, $themesOnly)
{
Piwik::checkUserIsSuperUser();

$activated = Common::getRequestVar('activated', false, 'integer', $_GET);
$pluginName = Common::getRequestVar('pluginName', '', 'string');
$pluginName = strip_tags($pluginName);

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

$view->activatedPluginName = '';
if ($activated && $pluginName) {
Expand All @@ -201,38 +159,23 @@ function plugins()

$view->updateNonce = Nonce::getNonce('CorePluginsAdmin.updatePlugin');
$view->activateNonce = Nonce::getNonce('CorePluginsAdmin.activatePlugin');
$view->pluginsInfo = $this->getPluginsInfo();
$view->pluginsInfo = $this->getPluginsInfo($themesOnly);

$marketplace = new Marketplace();
$view->pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly = false);
$view->pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly);

return $view;
}

function plugins()
{
$view = $this->createPluginsOrThemesView('plugins', $themesOnly = false);
echo $view->render();
}

function themes()
{
Piwik::checkUserIsSuperUser();

$activated = Common::getRequestVar('activated', false, 'integer', $_GET);
$pluginName = Common::getRequestVar('pluginName', '', 'string');
$pluginName = strip_tags($pluginName);

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

$view->activatedPluginName = '';
if ($activated && $pluginName) {
$view->activatedPluginName = $pluginName;
}

$pluginsInfo = $this->getPluginsInfo($themesOnly = true);

$view->updateNonce = Nonce::getNonce('CorePluginsAdmin.updatePlugin');
$view->activateNonce = Nonce::getNonce('CorePluginsAdmin.activatePlugin');
$view->pluginsInfo = $pluginsInfo;

$marketplace = new Marketplace();
$view->pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($pluginsInfo, $themesOnly = true);

$view = $this->createPluginsOrThemesView('themes', $themesOnly = true);
echo $view->render();
}

Expand Down

0 comments on commit 65a62b8

Please sign in to comment.