diff --git a/composer.json b/composer.json index 32617d6c8d70320afb79deef2edce50e8957e63b..20e1638924b78bcc1783ac9898eeaa1aeeb43652 100644 --- a/composer.json +++ b/composer.json @@ -71,7 +71,7 @@ "codeception/codeception": "5.1.2", "codeception/module-asserts": "3.0.0", "overtrue/phplint": "9.3.0", - "phpstan/phpstan": "1.11.0", + "phpstan/phpstan": "^2.0", "symfony/var-dumper": "6.4.7", "maximebf/debugbar": "1.22.3", "codeception/specify": "^2.0" diff --git a/composer.lock b/composer.lock index 7ebf09c08e4c90a41fb423c9cafb4e39d4da506c..7897e22c5d8504ec8ebc26cffd5441c808320524 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f64a6bfba9a1758196b21c6394535191", + "content-hash": "5bc2e4ef41517f46c14d02cfecdd95d9", "packages": [ { "name": "algo26-matthias/idna-convert", @@ -6516,20 +6516,20 @@ }, { "name": "phpstan/phpstan", - "version": "1.11.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "666cb1703742cea9cc80fee631f0940e1592fa6e" + "reference": "6c98c7600fc717b2c78c11ef60040d5b1e359c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/666cb1703742cea9cc80fee631f0940e1592fa6e", - "reference": "666cb1703742cea9cc80fee631f0940e1592fa6e", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6c98c7600fc717b2c78c11ef60040d5b1e359c82", + "reference": "6c98c7600fc717b2c78c11ef60040d5b1e359c82", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -6570,7 +6570,7 @@ "type": "github" } ], - "time": "2024-05-13T06:02:22+00:00" + "time": "2024-11-17T14:17:00+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8742,9 +8742,10 @@ "ext-pcre": "*", "ext-pdo": "*", "ext-mbstring": "*", - "ext-dom": "*" + "ext-dom": "*", + "ext-iconv": "*" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "php": "8.1" }, diff --git a/lib/bootstrap.php b/lib/bootstrap.php index 2e762c5a142649269c81747fc70500488681e6b1..2f8448ddf7a9382839141db652bf7a460ec5d78a 100644 --- a/lib/bootstrap.php +++ b/lib/bootstrap.php @@ -112,7 +112,7 @@ if ($GLOBALS['ASSETS_URL'][0] === '/') { $GLOBALS['ASSETS_URL'] = $GLOBALS['ABSOLUTE_URI_STUDIP'] . $GLOBALS['ASSETS_URL']; } -require 'config.inc.php'; +require $GLOBALS['STUDIP_BASE_PATH'] . '/config/config.inc.php'; require 'lib/helpers.php'; require 'lib/phplib/page_open.php'; diff --git a/lib/models/Course.php b/lib/models/Course.php index 690fbc20d1c6c75c3ac3f79f5569021ffa2899ce..bf5b7385ec2b29acbd517413bf8da18871094e1e 100644 --- a/lib/models/Course.php +++ b/lib/models/Course.php @@ -1781,26 +1781,28 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe public function getFullName($format = 'default') { $template = [ - 'name' => '%1$s', - 'name-semester' => '%1$s (%4$s)', - 'number-name' => '%3$s %1$s', - 'number-name-semester' => '%3$s %1$s (%4$s)', - 'number-type-name' => '%3$s %2$s: %1$s', - 'sem-duration-name' => '%4$s', - 'type' => '%2$s', - 'type-name' => '%2$s: %1$s', - 'type-number-name' => '%2$s: %3$s %1$s', + 'name' => '%{name}', + 'name-semester' => '%{name} (%{semester})', + 'number-name' => '%{number} %{name}', + 'number-name-semester' => '%{number} %{name} (%{semester})', + 'number-type-name' => '%{number} %{type}: %{name}', + 'sem-duration-name' => '%{semester}', + 'type' => '%{type}', + 'type-name' => '%{type}: %{name}', + 'type-number-name' => '%{type}: %{number} %{name}', ]; if ($format === 'default' || !isset($template[$format])) { $format = Config::get()->IMPORTANT_SEMNUMBER ? 'type-number-name' : 'type-name'; } $sem_type = $this->getSemType(); - $data[0] = $this->name; - $data[1] = $sem_type['name']; - $data[2] = $this->veranstaltungsnummer; - $data[3] = $this->getTextualSemester(); - return trim(vsprintf($template[$format], array_map('trim', $data))); + $data = array_map('trim', [ + 'name' => $this->name, + 'type' => $sem_type['name'], + 'number' => $this->veranstaltungsnummer, + 'semester' => $this->getTextualSemester(), + ]); + return trim(studip_interpolate($template[$format], $data)); } /** diff --git a/lib/phplib/Seminar_Auth.php b/lib/phplib/Seminar_Auth.php index 17d8b897a222e8fb200095e99de77998402eeb75..4ca21bf4dbde52edf347f65bf1e0149d34d88631 100644 --- a/lib/phplib/Seminar_Auth.php +++ b/lib/phplib/Seminar_Auth.php @@ -442,7 +442,7 @@ class Seminar_Auth // init of output via I18N $_language_path = init_i18n($_SESSION['_language']); - include 'config.inc.php'; + include $GLOBALS['STUDIP_BASE_PATH'] . '/config/config.inc.php'; if (!empty($_SESSION['contrast'])) { PageLayout::addStylesheet('accessibility.css'); diff --git a/lib/seminar_open.php b/lib/seminar_open.php index cfed84762a3b6e02da71d71116b2eff9f8a38f5e..4fb856fc7248e185f0e39e1e56b60ff7273458df 100644 --- a/lib/seminar_open.php +++ b/lib/seminar_open.php @@ -125,7 +125,7 @@ if (!empty($_SESSION['contrast']) || UserConfig::get($GLOBALS['user']->id)->USER // init of output via I18N $_language_path = init_i18n($_SESSION['_language']); //force reload of config to get translated data -include 'config.inc.php'; +include $GLOBALS['STUDIP_BASE_PATH'] . '/config/config.inc.php'; // Try to select the course or institute given by the parameter 'cid' // in the current request. diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 2d66785205cdcca1ddfd1fd2b3b0a6003341f834..4576401f332c290a3f79a2ec988cbf1b16b5d2db 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -13,7 +13,6 @@ parameters: - lib - vendor excludePaths: - - lib/classes/ZipArchiveLegacyTrait.php - lib/ilias_interface/studip_referrer_7x.php - lib/ilias_interface/studip_referrer_8x.php tmpDir: .caches diff --git a/tests/functional/_bootstrap.php b/tests/functional/_bootstrap.php index cdc9db19668a8d3176957945d90179a40d6e0915..1897878bb1027067710866190006498d60d35adf 100644 --- a/tests/functional/_bootstrap.php +++ b/tests/functional/_bootstrap.php @@ -37,7 +37,7 @@ StudipFileloader::load( foreach($added_configs as $key => $value) { $GLOBALS[$key] = $value; } -require 'config/config.inc.php'; +require $GLOBALS['STUDIP_BASE_PATH'] . '/config/config.inc.php';; require_once __DIR__ . '/../../lib/bootstrap-autoload.php'; // Do not send mails of any kind during tests diff --git a/tests/jsonapi/_bootstrap.php b/tests/jsonapi/_bootstrap.php index 2b30aa91ce6dbeec7057a141dc0c93476bfb31c5..1fc5ba7ba0d71af6f124d8a675935a341f6fc6af 100644 --- a/tests/jsonapi/_bootstrap.php +++ b/tests/jsonapi/_bootstrap.php @@ -27,8 +27,8 @@ $CACHING_ENABLE = false; date_default_timezone_set('Europe/Berlin'); -require 'config.inc.php'; -require 'mvv_config.php'; +require $GLOBALS['STUDIP_BASE_PATH'] . '/config/config.inc.php';; +require $GLOBALS['STUDIP_BASE_PATH'] . '/config/mvv_config.php'; require_once __DIR__ . '/../../lib/bootstrap-autoload.php';