Skip to content

Commit

Permalink
Don't hardcode plugins directory (#14043)
Browse files Browse the repository at this point in the history
* do not hard code plugins directory

* remove method that is not needed for now

* use plugins directory in more places
  • Loading branch information
tsteur authored and diosmosis committed Jan 30, 2019
1 parent cec026c commit faa8c38
Show file tree
Hide file tree
Showing 12 changed files with 47 additions and 29 deletions.
3 changes: 2 additions & 1 deletion core/API/Proxy.php
Expand Up @@ -13,6 +13,7 @@
use Piwik\Common;
use Piwik\Context;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Singleton;
use ReflectionClass;
use ReflectionMethod;
Expand Down Expand Up @@ -437,7 +438,7 @@ private function getRequestParametersArray($requiredParameters, $parametersReque
private function includeApiFile($fileName)
{
$module = self::getModuleNameFromClassName($fileName);
$path = PIWIK_INCLUDE_PATH . '/plugins/' . $module . '/API.php';
$path = Manager::getPluginsDirectory() . $module . '/API.php';

if (is_readable($path)) {
require_once $path; // prefixed by PIWIK_INCLUDE_PATH
Expand Down
3 changes: 2 additions & 1 deletion core/Columns/Updater.php
Expand Up @@ -14,6 +14,7 @@
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugin\Dimension\ConversionDimension;
use Piwik\Db;
use Piwik\Plugin\Manager;
use Piwik\Updater as PiwikUpdater;
use Piwik\Filesystem;
use Piwik\Cache as PiwikCache;
Expand Down Expand Up @@ -341,7 +342,7 @@ public function onNoUpdateAvailable($versionsThatWereChecked)

private static function getCurrentDimensionFileChanges()
{
$files = Filesystem::globr(PIWIK_INCLUDE_PATH . '/plugins/*/Columns', '*.php');
$files = Filesystem::globr(Manager::getPluginsDirectory() . '*/Columns', '*.php');

$times = array();
foreach ($files as $file) {
Expand Down
8 changes: 6 additions & 2 deletions core/Plugin.php
Expand Up @@ -10,6 +10,7 @@

use Piwik\Container\StaticContainer;
use Piwik\Plugin\Dependency;
use Piwik\Plugin\Manager;
use Piwik\Plugin\MetadataLoader;

/**
Expand Down Expand Up @@ -354,7 +355,9 @@ public function findComponent($componentName, $expectedSubclass)

$cacheId = 'Plugin' . $this->pluginName . $componentName . $expectedSubclass;

$componentFile = sprintf('%s/plugins/%s/%s.php', PIWIK_INCLUDE_PATH, $this->pluginName, $componentName);
$pluginsDir = Manager::getPluginsDirectory();

$componentFile = sprintf('%s%s/%s.php', $pluginsDir, $this->pluginName, $componentName);

if ($this->cache->contains($cacheId)) {
$classname = $this->cache->fetch($cacheId);
Expand Down Expand Up @@ -534,7 +537,8 @@ private function doFindMultipleComponents($directoryWithinPlugin, $expectedSubcl
{
$components = array();

$baseDir = PIWIK_INCLUDE_PATH . '/plugins/' . $this->pluginName . '/' . $directoryWithinPlugin;
$pluginsDir = Manager::getPluginsDirectory();
$baseDir = $pluginsDir . $this->pluginName . '/' . $directoryWithinPlugin;
$files = Filesystem::globr($baseDir, '*.php');

foreach ($files as $file) {
Expand Down
5 changes: 3 additions & 2 deletions core/Plugin/Manager.php
Expand Up @@ -459,7 +459,8 @@ private function clearCache($pluginName)

public static function deletePluginFromFilesystem($plugin)
{
Filesystem::unlinkRecursive(PIWIK_INCLUDE_PATH . '/plugins/' . $plugin, $deleteRootToo = true);
$pluginDir = self::getPluginsDirectory();
Filesystem::unlinkRecursive($pluginDir . $plugin, $deleteRootToo = true);
}

/**
Expand Down Expand Up @@ -693,7 +694,7 @@ public function isPluginThirdPartyAndBogus($pluginName)
return true;
}

$path = $this->getPluginsDirectory() . $pluginName;
$path = self::getPluginsDirectory() . $pluginName;
if (!$this->isManifestFileFound($path)) {
return true;
}
Expand Down
21 changes: 14 additions & 7 deletions core/Twig.php
Expand Up @@ -12,6 +12,7 @@
use Piwik\Container\StaticContainer;
use Piwik\DataTable\Filter\SafeDecodeLabel;
use Piwik\Metrics\Formatter;
use Piwik\Plugin\Manager;
use Piwik\Tracker\GoalManager;
use Piwik\View\RenderTokenParser;
use Piwik\Visualization\Sparkline;
Expand Down Expand Up @@ -313,7 +314,7 @@ protected function addFunction_linkTo()
private function getDefaultThemeLoader()
{
$themeLoader = new Twig_Loader_Filesystem(array(
sprintf("%s/plugins/%s/templates/", PIWIK_INCLUDE_PATH, \Piwik\Plugin\Manager::DEFAULT_THEME)
sprintf("%s%s/templates/", Manager::getPluginsDirectory(), \Piwik\Plugin\Manager::DEFAULT_THEME)
), PIWIK_DOCUMENT_ROOT.DIRECTORY_SEPARATOR);

return $themeLoader;
Expand All @@ -326,11 +327,12 @@ private function getDefaultThemeLoader()
*/
protected function getCustomThemeLoader(Plugin $theme)
{
if (!file_exists(sprintf("%s/plugins/%s/templates/", PIWIK_INCLUDE_PATH, $theme->getPluginName()))) {
$pluginsDir = Manager::getPluginsDirectory();
if (!file_exists(sprintf("%s%s/templates/", $pluginsDir, $theme->getPluginName()))) {
return false;
}
$themeLoader = new Twig_Loader_Filesystem(array(
sprintf("%s/plugins/%s/templates/", PIWIK_INCLUDE_PATH, $theme->getPluginName())
sprintf("%s%s/templates/", $pluginsDir, $theme->getPluginName())
), PIWIK_DOCUMENT_ROOT.DIRECTORY_SEPARATOR);

return $themeLoader;
Expand Down Expand Up @@ -519,10 +521,12 @@ private function addPluginNamespaces(Twig_Loader_Filesystem $loader)
{
$pluginManager = \Piwik\Plugin\Manager::getInstance();
$plugins = $pluginManager->getAllPluginsNames();

$pluginsDir = Manager::getPluginsDirectory();
foreach ($plugins as $name) {
$path = sprintf("%s/plugins/%s/templates/", PIWIK_INCLUDE_PATH, $name);
$path = sprintf("%s%s/templates/", $pluginsDir, $name);
if (is_dir($path)) {
$loader->addPath(PIWIK_INCLUDE_PATH . '/plugins/' . $name . '/templates', $name);
$loader->addPath($pluginsDir . $name . '/templates', $name);
}
}
}
Expand All @@ -536,10 +540,13 @@ private function addCustomPluginNamespaces(Twig_Loader_Filesystem $loader, $plug
{
$pluginManager = \Piwik\Plugin\Manager::getInstance();
$plugins = $pluginManager->getAllPluginsNames();

$pluginsDir = Manager::getPluginsDirectory();

foreach ($plugins as $name) {
$path = sprintf("%s/plugins/%s/templates/plugins/%s/", PIWIK_INCLUDE_PATH, $pluginName, $name);
$path = sprintf("%s%s/templates/plugins/%s/", $pluginsDir, $pluginName, $name);
if (is_dir($path)) {
$loader->addPath(PIWIK_INCLUDE_PATH . '/plugins/' . $pluginName . '/templates/plugins/'. $name, $name);
$loader->addPath($pluginsDir . $pluginName . '/templates/plugins/'. $name, $name);
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion core/Updater.php
Expand Up @@ -10,6 +10,7 @@

use Piwik\Columns\Updater as ColumnUpdater;
use Piwik\Container\StaticContainer;
use Piwik\Plugin\Manager;
use Piwik\Plugins\Installation\ServerFilesGenerator;
use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Db\Sql;
Expand Down Expand Up @@ -62,7 +63,7 @@ class Updater
public function __construct($pathUpdateFileCore = null, $pathUpdateFilePlugins = null, Columns\Updater $columnsUpdater = null)
{
$this->pathUpdateFileCore = $pathUpdateFileCore ?: PIWIK_INCLUDE_PATH . '/core/Updates/';
$this->pathUpdateFilePlugins = $pathUpdateFilePlugins ?: PIWIK_INCLUDE_PATH . '/plugins/%s/Updates/';
$this->pathUpdateFilePlugins = $pathUpdateFilePlugins ?: Manager::getPluginsDirectory() . '%s/Updates/';
$this->columnsUpdater = $columnsUpdater ?: new Columns\Updater();

self::$activeInstance = $this;
Expand Down
2 changes: 1 addition & 1 deletion plugins/CorePluginsAdmin/Controller.php
Expand Up @@ -480,7 +480,7 @@ public function uninstall($redirectAfter = true)
$uninstalled = $this->pluginManager->uninstallPlugin($pluginName);

if (!$uninstalled) {
$path = Filesystem::getPathToPiwikRoot() . '/plugins/' . $pluginName . '/';
$path = Plugin\Manager::getPluginsDirectory() . $pluginName . '/';
$messagePermissions = Filechecks::getErrorMessageMissingPermissions($path);

$messageIntro = $this->translator->translate("Warning: \"%s\" could not be uninstalled. Piwik did not have enough permission to delete the files in $path. ",
Expand Down
9 changes: 5 additions & 4 deletions plugins/CorePluginsAdmin/PluginInstaller.php
Expand Up @@ -15,6 +15,7 @@
use Piwik\Piwik;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugin\Dependency as PluginDependency;
use Piwik\Plugin\Manager;
use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Unzip;
use Piwik\Plugins\Marketplace\Api\Client;
Expand All @@ -25,7 +26,6 @@
class PluginInstaller
{
const PATH_TO_DOWNLOAD = '/latest/plugins/';
const PATH_TO_EXTRACT = '/plugins/';

private $pluginName;

Expand Down Expand Up @@ -131,7 +131,7 @@ private function makeSureFoldersAreWritable()
{
Filechecks::dieIfDirectoriesNotWritable(array(
StaticContainer::get('path.tmp') . self::PATH_TO_DOWNLOAD,
self::PATH_TO_EXTRACT
Manager::getPluginsDirectory()
));
}

Expand Down Expand Up @@ -294,11 +294,12 @@ private function fixPluginFolderIfNeeded($tmpPluginFolder)

private function copyPluginToDestination($tmpPluginFolder)
{
$pluginTargetPath = PIWIK_USER_PATH . self::PATH_TO_EXTRACT . $this->pluginName;
$pluginsDir = Manager::getPluginsDirectory();
$pluginTargetPath = $pluginsDir . $this->pluginName;

$this->removeFolderIfExists($pluginTargetPath);

Filesystem::copyRecursive($tmpPluginFolder, PIWIK_USER_PATH . self::PATH_TO_EXTRACT);
Filesystem::copyRecursive($tmpPluginFolder, $pluginsDir);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions plugins/LanguagesManager/API.php
Expand Up @@ -97,7 +97,7 @@ public function getAvailableLanguagesInfo($excludeNonCorePlugins=true)
$englishTranslation = json_decode($data, true);

// merge with plugin translations if any
$pluginFiles = glob(sprintf('%s/plugins/*/lang/en.json', PIWIK_INCLUDE_PATH));
$pluginFiles = glob(sprintf('%s*/lang/en.json', Manager::getPluginsDirectory()));
foreach ($pluginFiles as $file) {

preg_match('/\/plugins\/([^\/]+)\/lang/i', $file, $matches);
Expand All @@ -117,7 +117,7 @@ public function getAvailableLanguagesInfo($excludeNonCorePlugins=true)
$translations = json_decode($data, true);

// merge with plugin translations if any
$pluginFiles = glob(sprintf('%s/plugins/*/lang/%s.json', PIWIK_INCLUDE_PATH, $filename));
$pluginFiles = glob(sprintf('%s*/lang/%s.json', Manager::getPluginsDirectory(), $filename));
foreach ($pluginFiles as $file) {

preg_match('/\/plugins\/([^\/]+)\/lang/i', $file, $matches);
Expand Down Expand Up @@ -223,7 +223,7 @@ public function getPluginTranslationsForLanguage($pluginName, $languageCode)
return false;
}

$languageFile = PIWIK_INCLUDE_PATH . "/plugins/$pluginName/lang/$languageCode.json";
$languageFile = Manager::getPluginsDirectory() . "$pluginName/lang/$languageCode.json";

if (!file_exists($languageFile)) {
return false;
Expand Down
5 changes: 3 additions & 2 deletions plugins/LanguagesManager/Commands/PluginsWithTranslations.php
Expand Up @@ -9,6 +9,7 @@

namespace Piwik\Plugins\LanguagesManager\Commands;

use Piwik\Plugin\Manager;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

Expand All @@ -26,9 +27,9 @@ protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln("Following plugins contain their own translation files:");

$pluginFiles = glob(sprintf('%s/plugins/*/lang/en.json', PIWIK_INCLUDE_PATH));
$pluginFiles = glob(sprintf('%s*/lang/en.json', Manager::getPluginsDirectory()));
$pluginFiles = array_map(function($elem){
return str_replace(array(sprintf('%s/plugins/', PIWIK_INCLUDE_PATH), '/lang/en.json'), '', $elem);
return str_replace(array(Manager::getPluginsDirectory(), '/lang/en.json'), '', $elem);
}, $pluginFiles);

$output->writeln(join("\n", $pluginFiles));
Expand Down
8 changes: 4 additions & 4 deletions plugins/LanguagesManager/Commands/Update.php
Expand Up @@ -158,9 +158,9 @@ public static function getAllPlugins()
return $pluginsWithTranslations;
}

$pluginsWithTranslations = glob(sprintf('%s/plugins/*/lang/en.json', PIWIK_INCLUDE_PATH));
$pluginsWithTranslations = glob(sprintf('%s*/lang/en.json', Manager::getPluginsDirectory()));
$pluginsWithTranslations = array_map(function ($elem) {
return str_replace(array(sprintf('%s/plugins/', PIWIK_INCLUDE_PATH), '/lang/en.json'), '', $elem);
return str_replace(array(Manager::getPluginsDirectory(), '/lang/en.json'), '', $elem);
}, $pluginsWithTranslations);

return $pluginsWithTranslations;
Expand Down Expand Up @@ -189,9 +189,9 @@ public static function getPluginsInCore()

$pluginsNotInCore = array_merge($submodulePlugins, $newPlugins);

$pluginsWithTranslations = glob(sprintf('%s/plugins/*/lang/en.json', PIWIK_INCLUDE_PATH));
$pluginsWithTranslations = glob(sprintf('%s*/lang/en.json', Manager::getPluginsDirectory()));
$pluginsWithTranslations = array_map(function ($elem) {
return str_replace(array(sprintf('%s/plugins/', PIWIK_INCLUDE_PATH), '/lang/en.json'), '', $elem);
return str_replace(array(Manager::getPluginsDirectory(), '/lang/en.json'), '', $elem);
}, $pluginsWithTranslations);

$pluginsInCore = array_diff($pluginsWithTranslations, $pluginsNotInCore);
Expand Down
3 changes: 2 additions & 1 deletion plugins/LanguagesManager/TranslationWriter/Writer.php
Expand Up @@ -12,6 +12,7 @@
use Piwik\Container\StaticContainer;
use Piwik\Filesystem;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Filter\FilterAbstract;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Validate\ValidateAbstract;

Expand Down Expand Up @@ -201,7 +202,7 @@ protected function getTranslationPathBaseDirectory($base, $lang = null)
if ($base == 'tmp') {
return sprintf('%s/plugins/%s/lang/%s.json', StaticContainer::get('path.tmp'), $this->pluginName, $lang);
} else {
return sprintf('%s/plugins/%s/lang/%s.json', PIWIK_INCLUDE_PATH, $this->pluginName, $lang);
return sprintf('%s%s/lang/%s.json', Manager::getPluginsDirectory(), $this->pluginName, $lang);
}
}

Expand Down

0 comments on commit faa8c38

Please sign in to comment.