Merge pull request #12443 from nupplaphil/bug/dba_definition

Include DBA/View definitions from Hooks again
This commit is contained in:
Hypolite Petovan 2022-12-16 17:05:16 -05:00 committed by GitHub
commit f37750d679
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 15 deletions

View File

@ -27,6 +27,8 @@ use Friendica\App\BaseURL;
use Friendica\Capabilities\ICanCreateResponses; use Friendica\Capabilities\ICanCreateResponses;
use Friendica\Core\Config\Factory\Config; use Friendica\Core\Config\Factory\Config;
use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Database\Definition\DbaDefinition;
use Friendica\Database\Definition\ViewDefinition;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Module\Maintenance; use Friendica\Module\Maintenance;
use Friendica\Security\Authentication; use Friendica\Security\Authentication;
@ -337,27 +339,29 @@ class App
* @param App\Arguments $args The Friendica Arguments of the call * @param App\Arguments $args The Friendica Arguments of the call
* @param IManagePersonalConfigValues $pConfig Personal configuration * @param IManagePersonalConfigValues $pConfig Personal configuration
* @param IHandleUserSessions $session The (User)Session handler * @param IHandleUserSessions $session The (User)Session handler
* @param DbaDefinition $dbaDefinition
* @param ViewDefinition $viewDefinition
*/ */
public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig, IHandleUserSessions $session) public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig, IHandleUserSessions $session, DbaDefinition $dbaDefinition, ViewDefinition $viewDefinition)
{ {
$this->database = $database; $this->database = $database;
$this->config = $config; $this->config = $config;
$this->mode = $mode; $this->mode = $mode;
$this->baseURL = $baseURL; $this->baseURL = $baseURL;
$this->profiler = $profiler; $this->profiler = $profiler;
$this->logger = $logger; $this->logger = $logger;
$this->l10n = $l10n; $this->l10n = $l10n;
$this->args = $args; $this->args = $args;
$this->pConfig = $pConfig; $this->pConfig = $pConfig;
$this->session = $session; $this->session = $session;
$this->load(); $this->load($dbaDefinition, $viewDefinition);
} }
/** /**
* Load the whole app instance * Load the whole app instance
*/ */
public function load() protected function load(DbaDefinition $dbaDefinition, ViewDefinition $viewDefinition)
{ {
set_time_limit(0); set_time_limit(0);
@ -386,6 +390,10 @@ class App
Core\Hook::loadHooks(); Core\Hook::loadHooks();
$loader = (new Config())->createConfigFileLoader($this->getBasePath(), $_SERVER); $loader = (new Config())->createConfigFileLoader($this->getBasePath(), $_SERVER);
Core\Hook::callAll('load_config', $loader); Core\Hook::callAll('load_config', $loader);
// Hooks are now working, reload the whole definitions with hook enabled
$dbaDefinition->load(true);
$viewDefinition->load(true);
} }
$this->loadDefaultTimezone(); $this->loadDefaultTimezone();

View File

@ -249,7 +249,8 @@ class DBStructure
// Get the definition // Get the definition
if (is_null($definition)) { if (is_null($definition)) {
$definition = DI::dbaDefinition()->getAll(); // just for Update purpose, reload the DBA definition with addons to explicit get the whole definition
$definition = DI::dbaDefinition()->load(true)->getAll();
} }
// MySQL >= 5.7.4 doesn't support the IGNORE keyword in ALTER TABLE statements // MySQL >= 5.7.4 doesn't support the IGNORE keyword in ALTER TABLE statements

View File

@ -49,7 +49,8 @@ class View
} }
} }
$definition = DI::viewDefinition()->getAll(); // just for Create purpose, reload the view definition with addons to explicit get the whole definition
$definition = DI::viewDefinition()->load(true)->getAll();
foreach ($definition as $name => $structure) { foreach ($definition as $name => $structure) {
if (self::isView($name)) { if (self::isView($name)) {