From e7a38af8d0b58045d846f6f10655f5b7b9ec07de Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Fri, 14 Feb 2025 23:52:31 +0100 Subject: [PATCH 1/9] Remove LegacyPropertyManagementTrait from Table class --- .../components/com_finder/src/Indexer/Taxonomy.php | 3 ++- .../components/com_finder/src/Table/MapTable.php | 3 ++- .../com_guidedtours/src/Model/TourModel.php | 2 +- .../com_languages/src/Model/LanguageModel.php | 2 +- .../com_mails/src/Model/TemplateModel.php | 4 ++-- .../components/com_menus/src/Model/ItemModel.php | 4 ++-- .../components/com_menus/src/Model/MenuModel.php | 2 +- .../com_modules/src/Model/ModuleModel.php | 2 +- .../com_plugins/src/Model/PluginModel.php | 2 +- .../com_templates/src/Model/StyleModel.php | 2 +- .../components/com_users/src/Model/GroupModel.php | 4 ++-- .../components/com_users/src/Model/UserModel.php | 14 +++++++------- .../com_workflow/src/Model/StagesModel.php | 3 ++- .../com_workflow/src/Model/TransitionModel.php | 3 ++- .../com_workflow/src/Model/TransitionsModel.php | 3 ++- components/com_contact/src/Model/FormModel.php | 2 +- components/com_content/src/Model/FormModel.php | 2 +- components/com_tags/src/Model/TagModel.php | 2 +- libraries/src/Table/Table.php | 8 +++----- libraries/src/User/User.php | 2 +- 20 files changed, 36 insertions(+), 33 deletions(-) diff --git a/administrator/components/com_finder/src/Indexer/Taxonomy.php b/administrator/components/com_finder/src/Indexer/Taxonomy.php index dedf5ee1ee6a7..275dde71223f8 100644 --- a/administrator/components/com_finder/src/Indexer/Taxonomy.php +++ b/administrator/components/com_finder/src/Indexer/Taxonomy.php @@ -13,6 +13,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\Tree\NodeInterface; use Joomla\Component\Finder\Administrator\Table\MapTable; +use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -256,7 +257,7 @@ protected static function storeNode($node, $parentId) $nodeTable->rebuildPath($nodeTable->id); // Add the node to the cache. - static::$nodes[$parentId . ':' . $nodeTable->title] = (object) $nodeTable->getProperties(); + static::$nodes[$parentId . ':' . $nodeTable->title] = (object) ArrayHelper::fromObject($nodeTable, false); return static::$nodes[$parentId . ':' . $nodeTable->title]->id; } diff --git a/administrator/components/com_finder/src/Table/MapTable.php b/administrator/components/com_finder/src/Table/MapTable.php index 9f3dada7cdcda..cd0e2c73c3cfc 100644 --- a/administrator/components/com_finder/src/Table/MapTable.php +++ b/administrator/components/com_finder/src/Table/MapTable.php @@ -16,6 +16,7 @@ use Joomla\CMS\Table\Nested; use Joomla\Database\DatabaseDriver; use Joomla\Event\DispatcherInterface; +use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -72,7 +73,7 @@ public function check() $this->alias = ApplicationHelper::stringURLSafe($this->title, $this->language); if (trim($this->alias) == '') { - $this->alias = md5(serialize($this->getProperties())); + $this->alias = md5(serialize(ArrayHelper::fromObject($this, false))); } return true; diff --git a/administrator/components/com_guidedtours/src/Model/TourModel.php b/administrator/components/com_guidedtours/src/Model/TourModel.php index 542aa4905ccc2..97a9666a5a4cb 100644 --- a/administrator/components/com_guidedtours/src/Model/TourModel.php +++ b/administrator/components/com_guidedtours/src/Model/TourModel.php @@ -221,7 +221,7 @@ public function getItem($pk = null) } // Convert to an object before adding other data. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $item = ArrayHelper::toObject($properties); if (property_exists($item, 'params')) { diff --git a/administrator/components/com_languages/src/Model/LanguageModel.php b/administrator/components/com_languages/src/Model/LanguageModel.php index 230e629ca078c..7ee2fbee4ab58 100644 --- a/administrator/components/com_languages/src/Model/LanguageModel.php +++ b/administrator/components/com_languages/src/Model/LanguageModel.php @@ -126,7 +126,7 @@ public function getItem($langId = null) $table->access = (int) Factory::getApplication()->get('access'); } - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $value = ArrayHelper::toObject($properties); return $value; diff --git a/administrator/components/com_mails/src/Model/TemplateModel.php b/administrator/components/com_mails/src/Model/TemplateModel.php index e1e9d212302db..c1b379d8f444f 100644 --- a/administrator/components/com_mails/src/Model/TemplateModel.php +++ b/administrator/components/com_mails/src/Model/TemplateModel.php @@ -176,7 +176,7 @@ public function getItem($pk = null) } // Convert to an object before adding other data. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $item = ArrayHelper::toObject($properties); if (property_exists($item, 'params')) { @@ -222,7 +222,7 @@ public function getMaster($pk = null) } // Convert to an object before adding other data. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $item = ArrayHelper::toObject($properties); if (property_exists($item, 'params')) { diff --git a/administrator/components/com_menus/src/Model/ItemModel.php b/administrator/components/com_menus/src/Model/ItemModel.php index 77e3721f2d267..0fdfc92348819 100644 --- a/administrator/components/com_menus/src/Model/ItemModel.php +++ b/administrator/components/com_menus/src/Model/ItemModel.php @@ -716,7 +716,7 @@ public function getItem($pk = null) $this->setState('item.type', $table->type); // Convert to the \Joomla\CMS\Object\CMSObject before adding the params. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $result = ArrayHelper::toObject($properties); // Convert the params field to an array. @@ -1025,7 +1025,7 @@ protected function getMenuType($menutype) $table->load(['menutype' => $menutype]); - return (object) $table->getProperties(); + return (object) ArrayHelper::fromObject($table, false); } /** diff --git a/administrator/components/com_menus/src/Model/MenuModel.php b/administrator/components/com_menus/src/Model/MenuModel.php index ddf02e9571032..e38fde1a9f1c2 100644 --- a/administrator/components/com_menus/src/Model/MenuModel.php +++ b/administrator/components/com_menus/src/Model/MenuModel.php @@ -141,7 +141,7 @@ public function getItem($itemId = null) return false; } - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $value = ArrayHelper::toObject($properties); return $value; diff --git a/administrator/components/com_modules/src/Model/ModuleModel.php b/administrator/components/com_modules/src/Model/ModuleModel.php index 972156ac7ba44..07634b599cabf 100644 --- a/administrator/components/com_modules/src/Model/ModuleModel.php +++ b/administrator/components/com_modules/src/Model/ModuleModel.php @@ -684,7 +684,7 @@ public function getItem($pk = null) } // Convert to an object before adding other data. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $this->_cache[$pk] = ArrayHelper::toObject($properties); // Convert the params field to an array. diff --git a/administrator/components/com_plugins/src/Model/PluginModel.php b/administrator/components/com_plugins/src/Model/PluginModel.php index e7d528f7eb8cb..cf25b2827b88c 100644 --- a/administrator/components/com_plugins/src/Model/PluginModel.php +++ b/administrator/components/com_plugins/src/Model/PluginModel.php @@ -177,7 +177,7 @@ public function getItem($pk = null) } // Convert to an object before adding other data. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $this->_cache[$cacheId] = ArrayHelper::toObject($properties); // Convert the params field to an array. diff --git a/administrator/components/com_templates/src/Model/StyleModel.php b/administrator/components/com_templates/src/Model/StyleModel.php index 894436f6b84a2..4094ad7b3b81c 100644 --- a/administrator/components/com_templates/src/Model/StyleModel.php +++ b/administrator/components/com_templates/src/Model/StyleModel.php @@ -347,7 +347,7 @@ public function getItem($pk = null) } // Convert to an object before adding other data. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $this->_cache[$pk] = ArrayHelper::toObject($properties); // Convert the params field to an array. diff --git a/administrator/components/com_users/src/Model/GroupModel.php b/administrator/components/com_users/src/Model/GroupModel.php index 0a29402b9e4e8..2dde4fa3fb432 100644 --- a/administrator/components/com_users/src/Model/GroupModel.php +++ b/administrator/components/com_users/src/Model/GroupModel.php @@ -283,7 +283,7 @@ public function delete(&$pks) if ($allow) { // Fire the before delete event. $beforeDeleteEvent = new UserGroupBeforeDeleteEvent($this->event_before_delete, [ - 'data' => $table->getProperties(), // @TODO: Remove data argument in Joomla 6, see UserGroupBeforeDeleteEvent + 'data' => ArrayHelper::fromObject($table, false), // @TODO: Remove data argument in Joomla 6, see UserGroupBeforeDeleteEvent 'context' => $context, 'subject' => $table, ]); @@ -303,7 +303,7 @@ public function delete(&$pks) // Trigger the after delete event. $dispatcher->dispatch($this->event_after_delete, new UserGroupAfterDeleteEvent($this->event_after_delete, [ - 'data' => $table->getProperties(), // @TODO: Remove data argument in Joomla 6, see UserGroupAfterDeleteEvent + 'data' => ArrayHelper::fromObject($table, false), // @TODO: Remove data argument in Joomla 6, see UserGroupAfterDeleteEvent 'deletingResult' => true, // @TODO: Remove deletingResult argument in Joomla 6, see UserGroupAfterDeleteEvent 'errorMessage' => $this->getError(), // @TODO: Remove errorMessage argument in Joomla 6, see UserGroupAfterDeleteEvent 'context' => $context, diff --git a/administrator/components/com_users/src/Model/UserModel.php b/administrator/components/com_users/src/Model/UserModel.php index 889add8c3d370..01af356e4a9b0 100644 --- a/administrator/components/com_users/src/Model/UserModel.php +++ b/administrator/components/com_users/src/Model/UserModel.php @@ -342,7 +342,7 @@ public function delete(&$pks) $user_to_delete = $this->getUserFactory()->loadUserById($pk); // Fire the before delete event. - Factory::getApplication()->triggerEvent($this->event_before_delete, [$table->getProperties()]); + Factory::getApplication()->triggerEvent($this->event_before_delete, [ArrayHelper::fromObject($table, false)]); if (!$table->delete($pk)) { $this->setError($table->getError()); @@ -402,7 +402,7 @@ public function block(&$pks, $value = 1) unset($pks[$i]); Factory::getApplication()->enqueueMessage(Text::_('COM_USERS_USERS_ERROR_CANNOT_BLOCK_SELF'), 'error'); } elseif ($table->load($pk)) { - $old = $table->getProperties(); + $old = ArrayHelper::fromObject($table, false); $allow = $user->authorise('core.edit.state', 'com_users'); // Don't allow non-super-admin to delete a super admin @@ -431,7 +431,7 @@ public function block(&$pks, $value = 1) } // Trigger the before save event. - $result = Factory::getApplication()->triggerEvent($this->event_before_save, [$old, false, $table->getProperties()]); + $result = Factory::getApplication()->triggerEvent($this->event_before_save, [$old, false, ArrayHelper::fromObject($table, false)]); if (\in_array(false, $result, true)) { // Plugin will have to raise its own error or throw an exception. @@ -450,7 +450,7 @@ public function block(&$pks, $value = 1) } // Trigger the after save event - Factory::getApplication()->triggerEvent($this->event_after_save, [$table->getProperties(), false, true, null]); + Factory::getApplication()->triggerEvent($this->event_after_save, [ArrayHelper::fromObject($table, false), false, true, null]); } catch (\Exception $e) { $this->setError($e->getMessage()); @@ -496,7 +496,7 @@ public function activate(&$pks) // Access checks. foreach ($pks as $i => $pk) { if ($table->load($pk)) { - $old = $table->getProperties(); + $old = ArrayHelper::fromObject($table, false); $allow = $user->authorise('core.edit.state', 'com_users'); // Don't allow non-super-admin to delete a super admin @@ -518,7 +518,7 @@ public function activate(&$pks) } // Trigger the before save event. - $result = Factory::getApplication()->triggerEvent($this->event_before_save, [$old, false, $table->getProperties()]); + $result = Factory::getApplication()->triggerEvent($this->event_before_save, [$old, false, ArrayHelper::fromObject($table, false)]); if (\in_array(false, $result, true)) { // Plugin will have to raise it's own error or throw an exception. @@ -533,7 +533,7 @@ public function activate(&$pks) } // Fire the after save event - Factory::getApplication()->triggerEvent($this->event_after_save, [$table->getProperties(), false, true, null]); + Factory::getApplication()->triggerEvent($this->event_after_save, [ArrayHelper::fromObject($table, false), false, true, null]); } catch (\Exception $e) { $this->setError($e->getMessage()); diff --git a/administrator/components/com_workflow/src/Model/StagesModel.php b/administrator/components/com_workflow/src/Model/StagesModel.php index bd26a985bc8ea..7d0d7f4e960fe 100644 --- a/administrator/components/com_workflow/src/Model/StagesModel.php +++ b/administrator/components/com_workflow/src/Model/StagesModel.php @@ -16,6 +16,7 @@ use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\ParameterType; use Joomla\Database\QueryInterface; +use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -198,6 +199,6 @@ public function getWorkflow() $table->load($workflowId); } - return (object) $table->getProperties(); + return (object) ArrayHelper::fromObject($table, false); } } diff --git a/administrator/components/com_workflow/src/Model/TransitionModel.php b/administrator/components/com_workflow/src/Model/TransitionModel.php index 78e31d884fd02..399996d39d653 100644 --- a/administrator/components/com_workflow/src/Model/TransitionModel.php +++ b/administrator/components/com_workflow/src/Model/TransitionModel.php @@ -17,6 +17,7 @@ use Joomla\CMS\Plugin\PluginHelper; use Joomla\Registry\Registry; use Joomla\String\StringHelper; +use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -301,7 +302,7 @@ public function getWorkflow() $workflow->load($workflow_id); - return (object) $workflow->getProperties(); + return (object) ArrayHelper::fromObject($workflow, false); } /** diff --git a/administrator/components/com_workflow/src/Model/TransitionsModel.php b/administrator/components/com_workflow/src/Model/TransitionsModel.php index 7a3171c9cc6ce..c815c59ecd104 100644 --- a/administrator/components/com_workflow/src/Model/TransitionsModel.php +++ b/administrator/components/com_workflow/src/Model/TransitionsModel.php @@ -16,6 +16,7 @@ use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\ParameterType; use Joomla\Database\QueryInterface; +use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -245,6 +246,6 @@ public function getWorkflow() $table->load($workflowId); } - return (object) $table->getProperties(); + return (object) ArrayHelper::fromObject($table, false); } } diff --git a/components/com_contact/src/Model/FormModel.php b/components/com_contact/src/Model/FormModel.php index 3b63c491c181b..9cb4c6a989699 100644 --- a/components/com_contact/src/Model/FormModel.php +++ b/components/com_contact/src/Model/FormModel.php @@ -105,7 +105,7 @@ public function getItem($itemId = null) return false; } - $properties = $table->getProperties(); + $properties = ArrayHelper::fromObject($table, false); $value = ArrayHelper::toObject($properties); // Convert field to Registry. diff --git a/components/com_content/src/Model/FormModel.php b/components/com_content/src/Model/FormModel.php index bd916c0946953..f1b9a949006fd 100644 --- a/components/com_content/src/Model/FormModel.php +++ b/components/com_content/src/Model/FormModel.php @@ -98,7 +98,7 @@ public function getItem($itemId = null) return false; } - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $value = ArrayHelper::toObject($properties); // Convert attrib field to Registry. diff --git a/components/com_tags/src/Model/TagModel.php b/components/com_tags/src/Model/TagModel.php index 5d288f2963dfb..48202b66c49d1 100644 --- a/components/com_tags/src/Model/TagModel.php +++ b/components/com_tags/src/Model/TagModel.php @@ -294,7 +294,7 @@ public function getItem($pk = null) } // Convert the Table to a clean object. - $properties = $table->getProperties(1); + $properties = ArrayHelper::fromObject($table, false); $this->item[] = ArrayHelper::toObject($properties); } catch (\RuntimeException $e) { $this->setError($e->getMessage()); diff --git a/libraries/src/Table/Table.php b/libraries/src/Table/Table.php index 3cd0a7bdd4aae..52ececc03c0fa 100644 --- a/libraries/src/Table/Table.php +++ b/libraries/src/Table/Table.php @@ -15,7 +15,6 @@ use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Object\LegacyErrorHandlingTrait; -use Joomla\CMS\Object\LegacyPropertyManagementTrait; use Joomla\Database\DatabaseInterface; use Joomla\Database\DatabaseQuery; use Joomla\Event\DispatcherAwareInterface; @@ -23,6 +22,7 @@ use Joomla\Event\DispatcherInterface; use Joomla\Filesystem\Path; use Joomla\String\StringHelper; +use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -39,8 +39,6 @@ abstract class Table extends \stdClass implements TableInterface, DispatcherAwar { use DispatcherAwareTrait; use LegacyErrorHandlingTrait; - use LegacyPropertyManagementTrait; - /** * Include paths for searching for Table classes. @@ -677,7 +675,7 @@ public function bind($src, $ignore = []) } // Bind the source value, excluding the ignored fields. - foreach ($this->getProperties() as $k => $v) { + foreach (ArrayHelper::fromObject($this, false) as $k => $v) { // Only process fields not in the ignore array. if (!\in_array($k, $ignore)) { if (\array_key_exists($k, $src)) { @@ -763,7 +761,7 @@ public function load($keys = null, $reset = true) $query = $this->_db->getQuery(true) ->select('*') ->from($this->_db->quoteName($this->_tbl)); - $fields = array_keys($this->getProperties()); + $fields = array_keys(ArrayHelper::fromObject($this, false)); foreach ($keys as $field => $value) { // Check that $field is in the table. diff --git a/libraries/src/User/User.php b/libraries/src/User/User.php index a8ae57b99db78..0bb3239f0204a 100644 --- a/libraries/src/User/User.php +++ b/libraries/src/User/User.php @@ -874,7 +874,7 @@ public function load($id) } // Assuming all is well at this point let's bind the data - foreach ($table->getProperties() as $key => $value) { + foreach (ArrayHelper::fromObject($table, false) as $key => $value) { $this->$key = $value; } From bc5366f645373f5e4e31a30f9886076e38555530 Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Wed, 19 Feb 2025 09:54:48 +0100 Subject: [PATCH 2/9] Fix Table unittests --- tests/Integration/Libraries/Cms/Table/TableTest.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/Integration/Libraries/Cms/Table/TableTest.php b/tests/Integration/Libraries/Cms/Table/TableTest.php index 9937ab281a166..6b4284a0a2771 100644 --- a/tests/Integration/Libraries/Cms/Table/TableTest.php +++ b/tests/Integration/Libraries/Cms/Table/TableTest.php @@ -209,7 +209,11 @@ public function testBindJSONEncodesFields() ], ]; - $this->object->set('_jsonEncode', ['params']); + $reflection = new ReflectionClass($this->object); + $reflection_property = $reflection->getProperty('_jsonEncode'); + $reflection_property->setAccessible(true); + + $reflection_property->setValue($this->object, ['params']); $this->object->bind($data); From 0bdf9e047627f97f41f7bafc6182b0a174f39375 Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Wed, 19 Feb 2025 10:12:02 +0100 Subject: [PATCH 3/9] Codestyle --- tests/Integration/Libraries/Cms/Table/TableTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Integration/Libraries/Cms/Table/TableTest.php b/tests/Integration/Libraries/Cms/Table/TableTest.php index 6b4284a0a2771..31750b920e53f 100644 --- a/tests/Integration/Libraries/Cms/Table/TableTest.php +++ b/tests/Integration/Libraries/Cms/Table/TableTest.php @@ -209,7 +209,7 @@ public function testBindJSONEncodesFields() ], ]; - $reflection = new ReflectionClass($this->object); + $reflection = new ReflectionClass($this->object); $reflection_property = $reflection->getProperty('_jsonEncode'); $reflection_property->setAccessible(true); From 5440879070d6827e6be7fc3ee68d550ce7a58e41 Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Wed, 19 Feb 2025 10:18:23 +0100 Subject: [PATCH 4/9] more fixes --- tests/Integration/Libraries/Cms/Table/TableTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Integration/Libraries/Cms/Table/TableTest.php b/tests/Integration/Libraries/Cms/Table/TableTest.php index 31750b920e53f..50ba0502f9043 100644 --- a/tests/Integration/Libraries/Cms/Table/TableTest.php +++ b/tests/Integration/Libraries/Cms/Table/TableTest.php @@ -16,6 +16,7 @@ use Joomla\Tests\Integration\DBTestInterface; use Joomla\Tests\Integration\DBTestTrait; use Joomla\Tests\Integration\IntegrationTestCase; +use ReflectionClass; /** * Test class for \Joomla\CMS\Table\Table. From f69f7350c58ea7ed02507843a40ce9ec962e77af Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Wed, 19 Feb 2025 10:54:14 +0100 Subject: [PATCH 5/9] codestyle again --- tests/Integration/Libraries/Cms/Table/TableTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/Integration/Libraries/Cms/Table/TableTest.php b/tests/Integration/Libraries/Cms/Table/TableTest.php index 50ba0502f9043..abef0abf7a68d 100644 --- a/tests/Integration/Libraries/Cms/Table/TableTest.php +++ b/tests/Integration/Libraries/Cms/Table/TableTest.php @@ -16,7 +16,6 @@ use Joomla\Tests\Integration\DBTestInterface; use Joomla\Tests\Integration\DBTestTrait; use Joomla\Tests\Integration\IntegrationTestCase; -use ReflectionClass; /** * Test class for \Joomla\CMS\Table\Table. @@ -210,7 +209,7 @@ public function testBindJSONEncodesFields() ], ]; - $reflection = new ReflectionClass($this->object); + $reflection = new \ReflectionClass($this->object); $reflection_property = $reflection->getProperty('_jsonEncode'); $reflection_property->setAccessible(true); From a5a80827f665bbb71be7d759ef6a2635e5c57c63 Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Thu, 8 May 2025 12:38:04 +0200 Subject: [PATCH 6/9] Update Table.php --- libraries/src/Table/Table.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/src/Table/Table.php b/libraries/src/Table/Table.php index 6936cd4041ccd..ae971630e1a83 100644 --- a/libraries/src/Table/Table.php +++ b/libraries/src/Table/Table.php @@ -15,6 +15,8 @@ use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Object\LegacyErrorHandlingTrait; +use Joomla\Database\DatabaseAwareInterface; +use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\DatabaseInterface; use Joomla\Database\DatabaseQuery; use Joomla\Database\Exception\DatabaseNotFoundException; From 2b39ce3fa513ec39244ebf610a00977483a58a8c Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Thu, 8 May 2025 14:40:33 +0200 Subject: [PATCH 7/9] Fixing access to table data --- plugins/content/joomla/src/Extension/Joomla.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/content/joomla/src/Extension/Joomla.php b/plugins/content/joomla/src/Extension/Joomla.php index 11007410781e2..9f57c2b9b8782 100644 --- a/plugins/content/joomla/src/Extension/Joomla.php +++ b/plugins/content/joomla/src/Extension/Joomla.php @@ -725,7 +725,7 @@ private function canDeleteCategories($data) $table = $tableInfo[$extension]['table_name']; // See if this category has any content items - $count = $this->countItemsInCategory($table, $data->get('id')); + $count = $this->countItemsInCategory($table, $data->id); // Return false if db error if ($count === false) { @@ -733,7 +733,7 @@ private function canDeleteCategories($data) } else { // Show error if items are found in the category if ($count > 0) { - $msg = Text::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title')) + $msg = Text::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->title) . ' ' . Text::plural('COM_CATEGORIES_N_ITEMS_ASSIGNED', $count); $this->getApplication()->enqueueMessage($msg, 'error'); $result = false; @@ -741,12 +741,12 @@ private function canDeleteCategories($data) // Check for items in any child categories (if it is a leaf, there are no child categories) if (!$data->isLeaf()) { - $count = $this->countItemsInChildren($table, $data->get('id'), $data); + $count = $this->countItemsInChildren($table, $data->id, $data); if ($count === false) { $result = false; } elseif ($count > 0) { - $msg = Text::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title')) + $msg = Text::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->title) . ' ' . Text::plural('COM_CATEGORIES_HAS_SUBCATEGORY_ITEMS', $count); $this->getApplication()->enqueueMessage($msg, 'error'); $result = false; From 0be29fc9bfd9fb2ba3af0dc3602ab873778a5a93 Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Thu, 8 May 2025 14:53:43 +0200 Subject: [PATCH 8/9] Reverting removal --- libraries/src/Table/Table.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/src/Table/Table.php b/libraries/src/Table/Table.php index ae971630e1a83..f9192660e901c 100644 --- a/libraries/src/Table/Table.php +++ b/libraries/src/Table/Table.php @@ -15,6 +15,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Object\LegacyErrorHandlingTrait; +use Joomla\CMS\Object\LegacyPropertyManagementTrait; use Joomla\Database\DatabaseAwareInterface; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\DatabaseInterface; @@ -43,6 +44,7 @@ abstract class Table extends \stdClass implements TableInterface, DispatcherAwar use DispatcherAwareTrait; use DatabaseAwareTrait; use LegacyErrorHandlingTrait; + use LegacyPropertyManagementTrait; /** * Include paths for searching for Table classes. From e639bbe9486f366996a9fd5d36c1aabd4f55fc17 Mon Sep 17 00:00:00 2001 From: Hannes Papenberg Date: Thu, 8 May 2025 14:55:37 +0200 Subject: [PATCH 9/9] Update Table.php --- libraries/src/Table/Table.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/src/Table/Table.php b/libraries/src/Table/Table.php index f9192660e901c..fc1c68aac6c89 100644 --- a/libraries/src/Table/Table.php +++ b/libraries/src/Table/Table.php @@ -815,7 +815,7 @@ public function load($keys = null, $reset = true) // Initialise the query. $query = $db->getQuery(true) ->select('*') - ->from($this->_db->quoteName($this->_tbl)); + ->from($db->quoteName($this->_tbl)); $fields = array_keys(ArrayHelper::fromObject($this, false)); foreach ($keys as $field => $value) {