summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2023-10-27 22:07:28 +0300
committerAndrew Dolgov <[email protected]>2023-10-27 22:07:28 +0300
commit5920ac814c0a72b8c348650b09597ed8793a54c9 (patch)
treea52a8f755ea033a6c96f8a1c1633d81b68ab5c45
parent8c9c69921f8552e49291df9e2503709aaa564270 (diff)
replace some dirname horrors with a separate unit-tested method
-rw-r--r--classes/Config.php9
-rw-r--r--classes/PluginHost.php4
-rw-r--r--classes/Pref_Prefs.php11
-rw-r--r--tests/SelfDirTest.php12
4 files changed, 26 insertions, 10 deletions
diff --git a/classes/Config.php b/classes/Config.php
index 2c2cd4d65..e6e19ba09 100644
--- a/classes/Config.php
+++ b/classes/Config.php
@@ -319,7 +319,7 @@ class Config {
* @return array<string, mixed>|string
*/
private function _get_version(bool $as_string = true) {
- $root_dir = dirname(__DIR__);
+ $root_dir = self::get_self_dir();
if (empty($this->version)) {
$this->version["status"] = -1;
@@ -413,7 +413,7 @@ class Config {
private function _get_migrations() : Db_Migrations {
if (empty($this->migrations)) {
$this->migrations = new Db_Migrations();
- $this->migrations->initialize(dirname(__DIR__) . "/sql", "ttrss_version", true, self::SCHEMA_VERSION);
+ $this->migrations->initialize(self::get_self_dir() . "/sql", "ttrss_version", true, self::SCHEMA_VERSION);
}
return $this->migrations;
@@ -703,4 +703,9 @@ class Config {
static function get_user_agent(): string {
return sprintf(self::get(self::HTTP_USER_AGENT), self::get_version());
}
+
+ static function get_self_dir() : string {
+ return dirname(__DIR__); # we're in classes/Config.php
+ }
+
}
diff --git a/classes/PluginHost.php b/classes/PluginHost.php
index 7778c008f..700e0e8f5 100644
--- a/classes/PluginHost.php
+++ b/classes/PluginHost.php
@@ -459,10 +459,10 @@ class PluginHost {
$span->addEvent("$class_file: load");
// try system plugin directory first
- $file = dirname(__DIR__) . "/plugins/$class_file/init.php";
+ $file = Config::get_self_dir() . "/plugins/$class_file/init.php";
if (!file_exists($file)) {
- $file = dirname(__DIR__) . "/plugins.local/$class_file/init.php";
+ $file = Config::get_self_dir() . "/plugins.local/$class_file/init.php";
if (!file_exists($file)) {
continue;
diff --git a/classes/Pref_Prefs.php b/classes/Pref_Prefs.php
index da0ee54f7..5aa2382dd 100644
--- a/classes/Pref_Prefs.php
+++ b/classes/Pref_Prefs.php
@@ -1061,7 +1061,7 @@ class Pref_Prefs extends Handler_Protected {
* @return array<int, array{'plugin': string, 'rv': array{'stdout': false|string, 'stderr': false|string, 'git_status': int, 'need_update': bool}|null}>
*/
static function _get_updated_plugins(): array {
- $root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
+ $root_dir = Config::get_self_dir();
$plugin_dirs = array_filter(glob("$root_dir/plugins.local/*"), "is_dir");
$rv = [];
@@ -1185,7 +1185,7 @@ class Pref_Prefs extends Handler_Protected {
$plugin_name = basename(clean($_REQUEST['plugin']));
$status = 0;
- $plugin_dir = dirname(dirname(__DIR__)) . "/plugins.local/$plugin_name";
+ $plugin_dir = Config::get_self_dir() . "/plugins.local/$plugin_name";
if (is_dir($plugin_dir)) {
$status = $this->_recursive_rmdir($plugin_dir);
@@ -1199,7 +1199,7 @@ class Pref_Prefs extends Handler_Protected {
if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN && Config::get(Config::ENABLE_PLUGIN_INSTALLER)) {
$plugin_name = basename(clean($_REQUEST['plugin']));
$all_plugins = $this->_get_available_plugins();
- $plugin_dir = dirname(dirname(__DIR__)) . "/plugins.local";
+ $plugin_dir = Config::get_self_dir() . "/plugins.local";
$work_dir = "$plugin_dir/plugin-installer";
@@ -1306,7 +1306,7 @@ class Pref_Prefs extends Handler_Protected {
function checkForPluginUpdates(): void {
if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN && Config::get(Config::CHECK_FOR_UPDATES) && Config::get(Config::CHECK_FOR_PLUGIN_UPDATES)) {
$plugin_name = $_REQUEST["name"] ?? "";
- $root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
+ $root_dir = Config::get_self_dir();
$rv = empty($plugin_name) ? self::_get_updated_plugins() : [
["plugin" => $plugin_name, "rv" => self::_plugin_needs_update($root_dir, $plugin_name)],
@@ -1324,8 +1324,7 @@ class Pref_Prefs extends Handler_Protected {
$plugins = array_filter($plugins, 'strlen');
}
- # we're in classes/pref/
- $root_dir = dirname(dirname(__DIR__));
+ $root_dir = Config::get_self_dir();
$rv = [];
diff --git a/tests/SelfDirTest.php b/tests/SelfDirTest.php
new file mode 100644
index 000000000..5b7396a66
--- /dev/null
+++ b/tests/SelfDirTest.php
@@ -0,0 +1,12 @@
+<?php
+
+use PHPUnit\Framework\TestCase;
+
+final class ConfigTest extends TestCase {
+ public function test_get_self_dir(): void {
+ $this->assertEquals(
+ dirname(__DIR__), # we're in (app)/tests/
+ Config::get_self_dir()
+ );
+ }
+}