From 134e79ffb9266dab616ed851e78e3d254b412f72 Mon Sep 17 00:00:00 2001 From: Paul Mehrer Date: Mon, 24 Feb 2025 14:39:32 +0100 Subject: [PATCH] tweak(TB Numberable) fix missing update script case --- tine20/Tinebase/Setup/Update/17.php | 34 +++++++++++++++++++++++++++-- tine20/Tinebase/Setup/setup.xml | 2 +- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/tine20/Tinebase/Setup/Update/17.php b/tine20/Tinebase/Setup/Update/17.php index bdcced4f655..12586c5eb7b 100644 --- a/tine20/Tinebase/Setup/Update/17.php +++ b/tine20/Tinebase/Setup/Update/17.php @@ -35,6 +35,7 @@ class Tinebase_Setup_Update_17 extends Setup_Update_Abstract protected const RELEASE017_UPDATE014 = __CLASS__ . '::update014'; protected const RELEASE017_UPDATE015 = __CLASS__ . '::update015'; protected const RELEASE017_UPDATE016 = __CLASS__ . '::update016'; + protected const RELEASE017_UPDATE017 = __CLASS__ . '::update017'; static protected $_allUpdates = [ self::PRIO_TINEBASE_BEFORE_EVERYTHING => [ @@ -114,6 +115,10 @@ class Tinebase_Setup_Update_17 extends Setup_Update_Abstract self::CLASS_CONST => self::class, self::FUNCTION_CONST => 'update006', ], + self::RELEASE017_UPDATE017 => [ + self::CLASS_CONST => self::class, + self::FUNCTION_CONST => 'update017', + ], ], ]; @@ -419,19 +424,44 @@ public function update015(): void } public function update016(): void + { + $this->_numberableConfigUpdate(); + $this->addApplicationUpdate(Tinebase_Config::APP_NAME, '17.16', self::RELEASE017_UPDATE016); + } + + public function update017(): void + { + $this->_numberableConfigUpdate(); + $this->addApplicationUpdate(Tinebase_Config::APP_NAME, '17.17', self::RELEASE017_UPDATE017); + } + + protected function _numberableConfigUpdate(): void { $numCtrl = Tinebase_Controller_NumberableConfig::getInstance(); foreach ($numCtrl->getAll() as $numCfg) { $newNumCfg = $numCtrl->update(clone $numCfg); + $bucketKey = $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_MODEL} . '#' . $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_PROPERTY} . ($newNumCfg->{Tinebase_Model_NumberableConfig::FLD_ADDITIONAL_KEY} ? '#' . $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_ADDITIONAL_KEY} : '') . '#' . $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_PREFIX}; + if ($newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY} !== $bucketKey) { + $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY} = $bucketKey; + $newNumCfg = $numCtrl->update($newNumCfg); + } if ($newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY} !== $numCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY}) { $this->_db->update( SQL_TABLE_PREFIX . 'numberable', ['bucket' => $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY}], $this->_db->quoteInto('bucket = ?', $numCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY}) ); + + if (str_ends_with($newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY}, '#' . $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_PREFIX})) { + $bucketKey = substr($newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY}, 0, + strrpos($newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY}, '#' . $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_PREFIX})); + $this->_db->update( + SQL_TABLE_PREFIX . 'numberable', + ['bucket' => $newNumCfg->{Tinebase_Model_NumberableConfig::FLD_BUCKET_KEY}], + $this->_db->quoteInto('bucket = ?', $bucketKey) + ); + } } } - - $this->addApplicationUpdate(Tinebase_Config::APP_NAME, '17.16', self::RELEASE017_UPDATE016); } } diff --git a/tine20/Tinebase/Setup/setup.xml b/tine20/Tinebase/Setup/setup.xml index bc8c9d67920..e729cd8d643 100644 --- a/tine20/Tinebase/Setup/setup.xml +++ b/tine20/Tinebase/Setup/setup.xml @@ -1,7 +1,7 @@ Tinebase - 17.16 + 17.17 0 12.28