From 4415a0101deb0e12a7fc7d4748320a486a64b1c3 Mon Sep 17 00:00:00 2001 From: Lester Caine Date: Tue, 26 May 2026 14:50:52 +0100 Subject: Fix PHP 8.5 uksort deprecation and namespace/object refs in upgrade step - upgrade_version_sort now returns version_compare() int (-1/0/1) not bool - upgrade_package_sort call uses fully-qualified Bitweaver\Install namespace - install_upgrade.tpl uses gBitInstaller->getVersion() (correct in install context) Co-Authored-By: Claude Sonnet 4.6 --- includes/classes/BitInstaller.php | 25 ++++++++++++++++++++++--- includes/install_upgrade.php | 2 +- templates/install_upgrade.tpl | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/includes/classes/BitInstaller.php b/includes/classes/BitInstaller.php index 9574956..75df5b1 100755 --- a/includes/classes/BitInstaller.php +++ b/includes/classes/BitInstaller.php @@ -284,6 +284,25 @@ class BitInstaller extends BitSystem { return $ret; } + /** + * getVersion reads the installed version from DB during BIT_INSTALL (loadConfig is blocked, so we query directly). + */ + public function getVersion( ?string $pPackage = null, $pDefault = BITWEAVER_VERSION ): string { + $config = empty( $pPackage ) ? 'bitweaver_version' : "package_{$pPackage}_version"; + if( !empty( $this->mDb ) ) { + try { + $query = "SELECT `config_value` FROM `" . BIT_DB_PREFIX . "kernel_config` WHERE `config_name`=?"; + $result = $this->mDb->getOne( $query, [ $config ] ); + if( !empty( $result ) ) { + return $result; + } + } catch( \Throwable $e ) { + // kernel_config may not exist during a fresh install + } + } + return $pDefault; + } + /** * upgradePackage * @@ -309,7 +328,7 @@ class BitInstaller extends BitSystem { public function upgradePackageVersions( $pPackage ) { if( !empty( $pPackage ) && !empty( $this->mPackageUpgrades[$pPackage] )) { // make sure everything is in the right order - uksort( $this->mPackageUpgrades[$pPackage], 'upgrade_version_sort' ); + uksort( $this->mPackageUpgrades[$pPackage], 'Bitweaver\Install\upgrade_version_sort' ); foreach( array_keys( $this->mPackageUpgrades[$pPackage] ) as $version ) { // version we are upgrading from @@ -520,7 +539,7 @@ class BitInstaller extends BitSystem { if( !empty( $sql ) ) $sql = null; break; case 'QUERY': - uksort( $step, 'upgrade_query_sort' ); + uksort( $step, 'Bitweaver\Install\upgrade_query_sort' ); foreach( array_keys( $step ) as $dbType ) { if( $dbType == 'MYSQL' && preg_match( '/mysql/', $gBitDbType )) { $sql = $step[$dbType]; @@ -686,7 +705,7 @@ function upgrade_package_sort( $a, $b ) { * @return numeric sort direction */ function upgrade_version_sort( $a, $b ) { - return version_compare( $a, $b, '>' ); + return version_compare( $a, $b ); } /** diff --git a/includes/install_upgrade.php b/includes/install_upgrade.php index 7ccfbf1..2907c18 100755 --- a/includes/install_upgrade.php +++ b/includes/install_upgrade.php @@ -19,7 +19,7 @@ if( !empty( $_REQUEST['upgrade_packages'] )) { if( !empty( $_REQUEST['packages'] ) && is_array( $_REQUEST['packages'] )) { // ensure all packages are in the right order before we start applying upgrades - uasort( $_REQUEST['packages'], 'upgrade_package_sort' ); + uasort( $_REQUEST['packages'], 'Bitweaver\Install\upgrade_package_sort' ); foreach( $_REQUEST['packages'] as $package ) { if( $error = $gBitInstaller->upgradePackageVersions( $package )) { diff --git a/templates/install_upgrade.tpl b/templates/install_upgrade.tpl index 3a31f39..f1abdc1 100755 --- a/templates/install_upgrade.tpl +++ b/templates/install_upgrade.tpl @@ -15,7 +15,7 @@

{$package}

-
{$gBitSystem->getVersion($package)}
+
{$gBitInstaller->getVersion($package)}
Currently installed version
{foreach from=$upgrade item=data key=version}
{$data.version}
-- cgit v1.3