diff --git a/administrator/components/com_banners/src/Table/BannerTable.php b/administrator/components/com_banners/src/Table/BannerTable.php index 03a0016ee3803..f0805e909039d 100644 --- a/administrator/components/com_banners/src/Table/BannerTable.php +++ b/administrator/components/com_banners/src/Table/BannerTable.php @@ -18,6 +18,7 @@ use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; @@ -43,15 +44,16 @@ class BannerTable extends Table implements VersionableTableInterface /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_banners.banner'; - parent::__construct('#__banners', 'id', $db); + parent::__construct('#__banners', 'id', $db, $dispatcher); $this->created = Factory::getDate()->toSql(); $this->setColumnAlias('published', 'state'); @@ -252,16 +254,14 @@ public function store($updateNulls = true) parent::store($updateNulls); } else { // Get the old row - /** @var BannerTable $oldrow */ - $oldrow = Table::getInstance('BannerTable', __NAMESPACE__ . '\\', ['dbo' => $db]); + $oldrow = new self($db, $this->getDispatcher()); if (!$oldrow->load($this->id) && $oldrow->getError()) { $this->setError($oldrow->getError()); } // Verify that the alias is unique - /** @var BannerTable $table */ - $table = Table::getInstance('BannerTable', __NAMESPACE__ . '\\', ['dbo' => $db]); + $table = new self($db, $this->getDispatcher()); if ($table->load(['alias' => $this->alias, 'catid' => $this->catid]) && ($table->id != $this->id || $this->id == 0)) { $this->setError(Text::_('COM_BANNERS_ERROR_UNIQUE_ALIAS')); @@ -317,8 +317,7 @@ public function stick($pks = null, $state = 1, $userId = 0) } // Get an instance of the table - /** @var BannerTable $table */ - $table = Table::getInstance('BannerTable', __NAMESPACE__ . '\\', ['dbo' => $this->_db]); + $table = new self($this->getDbo(), $this->getDispatcher()); // For all keys foreach ($pks as $pk) { diff --git a/administrator/components/com_banners/src/Table/ClientTable.php b/administrator/components/com_banners/src/Table/ClientTable.php index dab3cece34ddb..783304748ad43 100644 --- a/administrator/components/com_banners/src/Table/ClientTable.php +++ b/administrator/components/com_banners/src/Table/ClientTable.php @@ -14,6 +14,7 @@ use Joomla\CMS\Table\Table; use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -37,17 +38,18 @@ class ClientTable extends Table implements VersionableTableInterface /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_banners.client'; $this->setColumnAlias('published', 'state'); - parent::__construct('#__banner_clients', 'id', $db); + parent::__construct('#__banner_clients', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_contact/src/Table/ContactTable.php b/administrator/components/com_contact/src/Table/ContactTable.php index a4a020113e844..3c73159455e47 100644 --- a/administrator/components/com_contact/src/Table/ContactTable.php +++ b/administrator/components/com_contact/src/Table/ContactTable.php @@ -22,6 +22,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects @@ -57,15 +58,16 @@ class ContactTable extends Table implements VersionableTableInterface, TaggableT /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_contact.contact'; - parent::__construct('#__contact_details', 'id', $db); + parent::__construct('#__contact_details', 'id', $db, $dispatcher); $this->setColumnAlias('title', 'name'); } @@ -119,7 +121,7 @@ public function store($updateNulls = true) } // Verify that the alias is unique - $table = Table::getInstance('ContactTable', __NAMESPACE__ . '\\', ['dbo' => $this->getDbo()]); + $table = new self($this->getDbo(), $this->getDispatcher()); if ($table->load(['alias' => $this->alias, 'catid' => $this->catid]) && ($table->id != $this->id || $this->id == 0)) { // Is the existing contact trashed? @@ -255,7 +257,7 @@ public function generateAlias() /** - * Get the type alias for the history table + * Get the type alias for the history and tags mapping table * * @return string The alias as described above * diff --git a/administrator/components/com_content/src/Table/FeaturedTable.php b/administrator/components/com_content/src/Table/FeaturedTable.php index 5a41405263b42..7328ac2eb47c0 100644 --- a/administrator/components/com_content/src/Table/FeaturedTable.php +++ b/administrator/components/com_content/src/Table/FeaturedTable.php @@ -12,6 +12,7 @@ use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -27,12 +28,13 @@ class FeaturedTable extends Table /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.6 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__content_frontpage', 'content_id', $db); + parent::__construct('#__content_frontpage', 'content_id', $db, $dispatcher); } } diff --git a/administrator/components/com_fields/src/Table/FieldTable.php b/administrator/components/com_fields/src/Table/FieldTable.php index ca9879f57db3c..99a1705025453 100644 --- a/administrator/components/com_fields/src/Table/FieldTable.php +++ b/administrator/components/com_fields/src/Table/FieldTable.php @@ -18,6 +18,7 @@ use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; use Joomla\String\StringHelper; @@ -45,13 +46,14 @@ class FieldTable extends Table implements CurrentUserInterface /** * Class constructor. * - * @param DatabaseDriver $db DatabaseDriver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.7.0 */ - public function __construct($db = null) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__fields', 'id', $db); + parent::__construct('#__fields', 'id', $db, $dispatcher); $this->setColumnAlias('published', 'state'); } @@ -150,7 +152,7 @@ public function check() $this->name = str_replace(',', '-', $this->name); // Verify that the name is unique - $table = new static($this->_db); + $table = new self($this->_db, $this->getDispatcher()); if ($table->load(['name' => $this->name]) && ($table->id != $this->id || $this->id == 0)) { $this->setError(Text::_('COM_FIELDS_ERROR_UNIQUE_NAME')); diff --git a/administrator/components/com_fields/src/Table/GroupTable.php b/administrator/components/com_fields/src/Table/GroupTable.php index 488516d4ebd1c..b2270bc09cb81 100644 --- a/administrator/components/com_fields/src/Table/GroupTable.php +++ b/administrator/components/com_fields/src/Table/GroupTable.php @@ -17,6 +17,7 @@ use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects @@ -43,13 +44,14 @@ class GroupTable extends Table implements CurrentUserInterface /** * Class constructor. * - * @param DatabaseDriver $db DatabaseDriver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.7.0 */ - public function __construct($db = null) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__fields_groups', 'id', $db); + parent::__construct('#__fields_groups', 'id', $db, $dispatcher); $this->setColumnAlias('published', 'state'); } diff --git a/administrator/components/com_finder/src/Table/FilterTable.php b/administrator/components/com_finder/src/Table/FilterTable.php index 287fd9dfd810b..330b5d64bfc18 100644 --- a/administrator/components/com_finder/src/Table/FilterTable.php +++ b/administrator/components/com_finder/src/Table/FilterTable.php @@ -17,6 +17,7 @@ use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects @@ -51,13 +52,14 @@ class FilterTable extends Table implements CurrentUserInterface /** * Constructor * - * @param DatabaseDriver $db Database Driver connector object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 2.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__finder_filters', 'filter_id', $db); + parent::__construct('#__finder_filters', 'filter_id', $db, $dispatcher); $this->setColumnAlias('published', 'state'); } @@ -158,7 +160,7 @@ public function store($updateNulls = true) } // Verify that the alias is unique - $table = new static($this->getDbo()); + $table = new self($this->getDbo(), $this->getDispatcher()); if ($table->load(['alias' => $this->alias]) && ($table->filter_id != $this->filter_id || $this->filter_id == 0)) { $this->setError(Text::_('COM_FINDER_FILTER_ERROR_UNIQUE_ALIAS')); diff --git a/administrator/components/com_finder/src/Table/LinkTable.php b/administrator/components/com_finder/src/Table/LinkTable.php index dc38656c8bf19..9400f72dc339c 100644 --- a/administrator/components/com_finder/src/Table/LinkTable.php +++ b/administrator/components/com_finder/src/Table/LinkTable.php @@ -12,6 +12,7 @@ use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -35,13 +36,14 @@ class LinkTable extends Table /** * Constructor * - * @param DatabaseDriver $db Database Driver connector object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 2.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__finder_links', 'link_id', $db); + parent::__construct('#__finder_links', 'link_id', $db, $dispatcher); } /** diff --git a/administrator/components/com_finder/src/Table/MapTable.php b/administrator/components/com_finder/src/Table/MapTable.php index f823f8f418b94..ef90337062b83 100644 --- a/administrator/components/com_finder/src/Table/MapTable.php +++ b/administrator/components/com_finder/src/Table/MapTable.php @@ -15,6 +15,7 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\Table\Nested; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -30,13 +31,14 @@ class MapTable extends Nested /** * Constructor * - * @param DatabaseDriver $db Database Driver connector object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 2.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__finder_taxonomy', 'id', $db); + parent::__construct('#__finder_taxonomy', 'id', $db, $dispatcher); $this->setColumnAlias('published', 'state'); $this->access = (int) Factory::getApplication()->get('access'); diff --git a/administrator/components/com_guidedtours/src/Table/StepTable.php b/administrator/components/com_guidedtours/src/Table/StepTable.php index df31d503587fe..b856b75a8dd13 100644 --- a/administrator/components/com_guidedtours/src/Table/StepTable.php +++ b/administrator/components/com_guidedtours/src/Table/StepTable.php @@ -15,6 +15,7 @@ use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -40,13 +41,14 @@ class StepTable extends Table implements CurrentUserInterface /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 4.3.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__guidedtour_steps', 'id', $db); + parent::__construct('#__guidedtour_steps', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_guidedtours/src/Table/TourTable.php b/administrator/components/com_guidedtours/src/Table/TourTable.php index 5373c4f0730b8..88e7e1ce58cf2 100644 --- a/administrator/components/com_guidedtours/src/Table/TourTable.php +++ b/administrator/components/com_guidedtours/src/Table/TourTable.php @@ -17,6 +17,7 @@ use Joomla\CMS\User\CurrentUserInterface; use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects @@ -51,13 +52,14 @@ class TourTable extends Table implements CurrentUserInterface /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 4.3.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__guidedtours', 'id', $db); + parent::__construct('#__guidedtours', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_installer/src/Table/UpdatesiteTable.php b/administrator/components/com_installer/src/Table/UpdatesiteTable.php index 31b4102daddbb..31e3e0f2bc1d9 100644 --- a/administrator/components/com_installer/src/Table/UpdatesiteTable.php +++ b/administrator/components/com_installer/src/Table/UpdatesiteTable.php @@ -12,6 +12,7 @@ use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -36,14 +37,15 @@ class UpdatesiteTable extends Table /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 4.0.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_installer.downloadkey'; - parent::__construct('#__update_sites', 'update_site_id', $db); + parent::__construct('#__update_sites', 'update_site_id', $db, $dispatcher); } } diff --git a/administrator/components/com_mails/src/Table/TemplateTable.php b/administrator/components/com_mails/src/Table/TemplateTable.php index d6a911c522137..5a9d958ee2669 100644 --- a/administrator/components/com_mails/src/Table/TemplateTable.php +++ b/administrator/components/com_mails/src/Table/TemplateTable.php @@ -12,6 +12,7 @@ use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -35,12 +36,13 @@ class TemplateTable extends Table /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 4.0.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__mail_templates', ['template_id', 'language'], $db); + parent::__construct('#__mail_templates', ['template_id', 'language'], $db, $dispatcher); } } diff --git a/administrator/components/com_messages/src/Table/MessageTable.php b/administrator/components/com_messages/src/Table/MessageTable.php index 961bcd88e4a69..b427ffe45aa97 100644 --- a/administrator/components/com_messages/src/Table/MessageTable.php +++ b/administrator/components/com_messages/src/Table/MessageTable.php @@ -14,6 +14,7 @@ use Joomla\CMS\Table\Table; use Joomla\CMS\User\User; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -29,13 +30,14 @@ class MessageTable extends Table /** * Constructor * - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__messages', 'message_id', $db); + parent::__construct('#__messages', 'message_id', $db, $dispatcher); $this->setColumnAlias('published', 'state'); } diff --git a/administrator/components/com_newsfeeds/src/Table/NewsfeedTable.php b/administrator/components/com_newsfeeds/src/Table/NewsfeedTable.php index e480b1a851d76..327afc27bbd08 100644 --- a/administrator/components/com_newsfeeds/src/Table/NewsfeedTable.php +++ b/administrator/components/com_newsfeeds/src/Table/NewsfeedTable.php @@ -21,6 +21,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects @@ -56,12 +57,15 @@ class NewsfeedTable extends Table implements VersionableTableInterface, Taggable /** * Constructor * - * @param DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table + * + * @since 1.6 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_newsfeeds.newsfeed'; - parent::__construct('#__newsfeeds', 'id', $db); + parent::__construct('#__newsfeeds', 'id', $db, $dispatcher); $this->setColumnAlias('title', 'name'); } diff --git a/administrator/components/com_privacy/src/Table/ConsentTable.php b/administrator/components/com_privacy/src/Table/ConsentTable.php index 541ad180e561d..1d60521fc9502 100644 --- a/administrator/components/com_privacy/src/Table/ConsentTable.php +++ b/administrator/components/com_privacy/src/Table/ConsentTable.php @@ -13,6 +13,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -33,13 +34,14 @@ class ConsentTable extends Table /** * The class constructor. * - * @param DatabaseDriver $db DatabaseInterface connector object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.9.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__privacy_consents', 'id', $db); + parent::__construct('#__privacy_consents', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_privacy/src/Table/RequestTable.php b/administrator/components/com_privacy/src/Table/RequestTable.php index ef2d32cf0a43f..deee846c6f8cf 100644 --- a/administrator/components/com_privacy/src/Table/RequestTable.php +++ b/administrator/components/com_privacy/src/Table/RequestTable.php @@ -13,6 +13,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -44,13 +45,14 @@ class RequestTable extends Table /** * The class constructor. * - * @param DatabaseDriver $db DatabaseDriver connector object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.9.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__privacy_requests', 'id', $db); + parent::__construct('#__privacy_requests', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_redirect/src/Table/LinkTable.php b/administrator/components/com_redirect/src/Table/LinkTable.php index 2f3b443180878..fc9c545482093 100644 --- a/administrator/components/com_redirect/src/Table/LinkTable.php +++ b/administrator/components/com_redirect/src/Table/LinkTable.php @@ -15,6 +15,7 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -30,13 +31,14 @@ class LinkTable extends Table /** * Constructor * - * @param DatabaseDriver $db Database object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.6 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__redirect_links', 'id', $db); + parent::__construct('#__redirect_links', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_scheduler/src/Table/TaskTable.php b/administrator/components/com_scheduler/src/Table/TaskTable.php index b7aecb8bee50c..5a778142d7e22 100644 --- a/administrator/components/com_scheduler/src/Table/TaskTable.php +++ b/administrator/components/com_scheduler/src/Table/TaskTable.php @@ -20,6 +20,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; use Joomla\Database\Exception\QueryTypeAlreadyDefinedException; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -76,15 +77,16 @@ class TaskTable extends Table implements CurrentUserInterface /** * TaskTable constructor override, needed to pass the DB table name and primary key to {@see Table::__construct()}. * - * @param DatabaseDriver $db A database connector object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * - * @since 4.1.0 + * @since 4.1.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->setColumnAlias('published', 'state'); - parent::__construct('#__scheduler_tasks', 'id', $db); + parent::__construct('#__scheduler_tasks', 'id', $db, $dispatcher); } /** @@ -101,7 +103,7 @@ public function check(): bool try { parent::check(); } catch (\Exception $e) { - Factory::getApplication()->enqueueMessage($e->getMessage()); + $this->setError($e->getMessage()); return false; } diff --git a/administrator/components/com_tags/src/Table/TagTable.php b/administrator/components/com_tags/src/Table/TagTable.php index 4acefc5592d67..76eaad2d792f9 100644 --- a/administrator/components/com_tags/src/Table/TagTable.php +++ b/administrator/components/com_tags/src/Table/TagTable.php @@ -19,6 +19,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects @@ -53,13 +54,16 @@ class TagTable extends Nested implements VersionableTableInterface, CurrentUserI /** * Constructor * - * @param DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table + * + * @since 3.1.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_tags.tag'; - parent::__construct('#__tags', 'id', $db); + parent::__construct('#__tags', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_templates/src/Table/StyleTable.php b/administrator/components/com_templates/src/Table/StyleTable.php index 2df322ea2b8ab..78ee4222a7a8a 100644 --- a/administrator/components/com_templates/src/Table/StyleTable.php +++ b/administrator/components/com_templates/src/Table/StyleTable.php @@ -14,6 +14,7 @@ use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects @@ -30,13 +31,14 @@ class StyleTable extends Table /** * Constructor * - * @param DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.6 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__template_styles', 'id', $db); + parent::__construct('#__template_styles', 'id', $db, $dispatcher); } /** diff --git a/administrator/components/com_users/src/Table/MfaTable.php b/administrator/components/com_users/src/Table/MfaTable.php index 81c967ca5a51f..dea65df85958e 100644 --- a/administrator/components/com_users/src/Table/MfaTable.php +++ b/administrator/components/com_users/src/Table/MfaTable.php @@ -79,8 +79,8 @@ class MfaTable extends Table implements CurrentUserInterface, UserFactoryAwareIn /** * Table constructor * - * @param DatabaseDriver $db Database driver object - * @param DispatcherInterface|null $dispatcher Events dispatcher object + * @param DatabaseDriver $db Database driver object + * @param ?DispatcherInterface $dispatcher Events dispatcher object * * @since 4.2.0 */ diff --git a/administrator/components/com_users/src/Table/NoteTable.php b/administrator/components/com_users/src/Table/NoteTable.php index 1d970ea828c42..8a6c393a99a42 100644 --- a/administrator/components/com_users/src/Table/NoteTable.php +++ b/administrator/components/com_users/src/Table/NoteTable.php @@ -16,6 +16,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -41,14 +42,15 @@ class NoteTable extends Table implements VersionableTableInterface, CurrentUserI /** * Constructor * - * @param DatabaseDriver $db Database object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * - * @since 2.5 + * @since 2.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_users.note'; - parent::__construct('#__user_notes', 'id', $db); + parent::__construct('#__user_notes', 'id', $db, $dispatcher); $this->setColumnAlias('published', 'state'); } diff --git a/administrator/components/com_workflow/src/Table/StageTable.php b/administrator/components/com_workflow/src/Table/StageTable.php index 0b9599afac0bb..cb289536f9c9b 100644 --- a/administrator/components/com_workflow/src/Table/StageTable.php +++ b/administrator/components/com_workflow/src/Table/StageTable.php @@ -13,9 +13,11 @@ use Joomla\CMS\Access\Rules; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; +use Joomla\CMS\Table\Asset; use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -38,13 +40,14 @@ class StageTable extends Table protected $_supportNullValue = true; /** - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 4.0.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__workflow_stages', 'id', $db); + parent::__construct('#__workflow_stages', 'id', $db, $dispatcher); } /** @@ -173,7 +176,7 @@ public function check() */ public function store($updateNulls = true) { - $table = new StageTable($this->getDbo()); + $table = new StageTable($this->getDbo(), $this->getDispatcher()); if ($this->default == '1') { // Verify that the default is unique for this workflow @@ -222,7 +225,7 @@ public function bind($src, $ignore = []) protected function _getAssetName() { $k = $this->_tbl_key; - $workflow = new WorkflowTable($this->getDbo()); + $workflow = new WorkflowTable($this->getDbo(), $this->getDispatcher()); $workflow->load($this->workflow_id); $parts = explode('.', $workflow->extension); @@ -256,9 +259,9 @@ protected function _getAssetTitle() */ protected function _getAssetParentId(Table $table = null, $id = null) { - $asset = self::getInstance('Asset', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $asset = new Asset($this->getDbo(), $this->getDispatcher()); - $workflow = new WorkflowTable($this->getDbo()); + $workflow = new WorkflowTable($this->getDbo(), $this->getDispatcher()); $workflow->load($this->workflow_id); $parts = explode('.', $workflow->extension); diff --git a/administrator/components/com_workflow/src/Table/TransitionTable.php b/administrator/components/com_workflow/src/Table/TransitionTable.php index dda495c933b7b..99ce16d800f1d 100644 --- a/administrator/components/com_workflow/src/Table/TransitionTable.php +++ b/administrator/components/com_workflow/src/Table/TransitionTable.php @@ -11,8 +11,10 @@ namespace Joomla\Component\Workflow\Administrator\Table; use Joomla\CMS\Access\Rules; +use Joomla\CMS\Table\Asset; use Joomla\CMS\Table\Table; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -46,13 +48,14 @@ class TransitionTable extends Table ]; /** - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 4.0.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__workflow_transitions', 'id', $db); + parent::__construct('#__workflow_transitions', 'id', $db, $dispatcher); } /** @@ -91,7 +94,7 @@ public function bind($src, $ignore = []) protected function _getAssetName() { $k = $this->_tbl_key; - $workflow = new WorkflowTable($this->getDbo()); + $workflow = new WorkflowTable($this->getDbo(), $this->getDispatcher()); $workflow->load($this->workflow_id); $parts = explode('.', $workflow->extension); @@ -125,9 +128,9 @@ protected function _getAssetTitle() */ protected function _getAssetParentId(Table $table = null, $id = null) { - $asset = self::getInstance('Asset', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $asset = new Asset($this->getDbo(), $this->getDispatcher()); - $workflow = new WorkflowTable($this->getDbo()); + $workflow = new WorkflowTable($this->getDbo(), $this->getDispatcher()); $workflow->load($this->workflow_id); $parts = explode('.', $workflow->extension); diff --git a/administrator/components/com_workflow/src/Table/WorkflowTable.php b/administrator/components/com_workflow/src/Table/WorkflowTable.php index c5ff156344ffb..e119d1a05369d 100644 --- a/administrator/components/com_workflow/src/Table/WorkflowTable.php +++ b/administrator/components/com_workflow/src/Table/WorkflowTable.php @@ -18,6 +18,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -42,15 +43,16 @@ class WorkflowTable extends Table implements CurrentUserInterface protected $_supportNullValue = true; /** - * @param DatabaseDriver $db Database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 4.0.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = '{extension}.workflow'; - parent::__construct('#__workflows', 'id', $db); + parent::__construct('#__workflows', 'id', $db, $dispatcher); } /** @@ -179,7 +181,7 @@ public function store($updateNulls = true) $date = Factory::getDate(); $user = $this->getCurrentUser(); - $table = new WorkflowTable($this->getDbo()); + $table = new self($this->getDbo(), $this->getDispatcher()); if ($this->id) { // Existing item diff --git a/libraries/src/Table/Asset.php b/libraries/src/Table/Asset.php index 3517fdeddc5c9..9c8d733fd6887 100644 --- a/libraries/src/Table/Asset.php +++ b/libraries/src/Table/Asset.php @@ -11,6 +11,7 @@ use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -58,13 +59,14 @@ class Asset extends Nested /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.7.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__assets', 'id', $db); + parent::__construct('#__assets', 'id', $db, $dispatcher); } /** diff --git a/libraries/src/Table/Category.php b/libraries/src/Table/Category.php index 8d8cf125646ba..542c11a536baa 100644 --- a/libraries/src/Table/Category.php +++ b/libraries/src/Table/Category.php @@ -20,6 +20,7 @@ use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects @@ -47,11 +48,12 @@ class Category extends Nested implements VersionableTableInterface, TaggableTabl /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { /** * @deprecated 4.0 will be removed in 6.0 @@ -59,7 +61,7 @@ public function __construct(DatabaseDriver $db) * the introduction of the getTypeAlias function. */ $this->typeAlias = '{extension}.category'; - parent::__construct('#__categories', 'id', $db); + parent::__construct('#__categories', 'id', $db, $dispatcher); $this->access = (int) Factory::getApplication()->get('access'); } @@ -257,7 +259,7 @@ public function store($updateNulls = true) } // Verify that the alias is unique - $table = Table::getInstance('Category', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new Category($this->getDbo(), $this->getDispatcher()); if ( $table->load(['alias' => $this->alias, 'parent_id' => (int) $this->parent_id, 'extension' => $this->extension]) diff --git a/libraries/src/Table/Content.php b/libraries/src/Table/Content.php index cc6106d0271ed..2603c4b803029 100644 --- a/libraries/src/Table/Content.php +++ b/libraries/src/Table/Content.php @@ -20,6 +20,7 @@ use Joomla\CMS\Versioning\VersionableTableInterface; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; use Joomla\String\StringHelper; @@ -48,15 +49,16 @@ class Content extends Table implements VersionableTableInterface, TaggableTableI /** * Constructor * - * @param DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { $this->typeAlias = 'com_content.article'; - parent::__construct('#__content', 'id', $db); + parent::__construct('#__content', 'id', $db, $dispatcher); // Set the alias since the column is called state $this->setColumnAlias('published', 'state'); @@ -346,7 +348,7 @@ public function store($updateNulls = true) } // Verify that the alias is unique - $table = Table::getInstance('Content', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new self($this->getDbo(), $this->getDispatcher()); if ($table->load(['alias' => $this->alias, 'catid' => $this->catid]) && ($table->id != $this->id || $this->id == 0)) { // Is the existing article trashed? diff --git a/libraries/src/Table/ContentHistory.php b/libraries/src/Table/ContentHistory.php index 0b592e7fa6804..5e4a7a0e350ec 100644 --- a/libraries/src/Table/ContentHistory.php +++ b/libraries/src/Table/ContentHistory.php @@ -14,6 +14,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -50,13 +51,14 @@ class ContentHistory extends Table implements CurrentUserInterface /** * Constructor * - * @param DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.1 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__history', 'version_id', $db); + parent::__construct('#__history', 'version_id', $db, $dispatcher); $this->ignoreChanges = [ 'modified_by', 'modified_user_id', @@ -83,7 +85,7 @@ public function __construct(DatabaseDriver $db) public function store($updateNulls = false) { $this->set('character_count', \strlen($this->get('version_data'))); - $typeTable = Table::getInstance('ContentType', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $typeTable = new ContentType($this->getDbo(), $this->getDispatcher()); $typeAlias = explode('.', $this->item_id); array_pop($typeAlias); $typeTable->load(['type_alias' => implode('.', $typeAlias)]); diff --git a/libraries/src/Table/ContentType.php b/libraries/src/Table/ContentType.php index a2009d64836d9..a6677f5d92184 100644 --- a/libraries/src/Table/ContentType.php +++ b/libraries/src/Table/ContentType.php @@ -11,6 +11,7 @@ use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -26,13 +27,14 @@ class ContentType extends Table /** * Constructor * - * @param DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.1 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__content_types', 'type_id', $db); + parent::__construct('#__content_types', 'type_id', $db, $dispatcher); } /** @@ -79,7 +81,7 @@ public function check() public function store($updateNulls = false) { // Verify that the alias is unique - $table = Table::getInstance('ContentType', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new self($this->getDbo(), $this->getDispatcher()); if ($table->load(['type_alias' => $this->type_alias]) && ($table->type_id != $this->type_id || $this->type_id == 0)) { $this->setError(Text::_('COM_TAGS_ERROR_UNIQUE_ALIAS')); @@ -115,7 +117,7 @@ public function fieldmapExpand($assoc = true) */ public function getTypeId($typeAlias) { - $db = $this->_db; + $db = $this->getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName('type_id')) ->from($db->quoteName($this->_tbl)) diff --git a/libraries/src/Table/CoreContent.php b/libraries/src/Table/CoreContent.php index 08553eaa32b6a..da10b490d5440 100644 --- a/libraries/src/Table/CoreContent.php +++ b/libraries/src/Table/CoreContent.php @@ -17,6 +17,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects @@ -51,13 +52,14 @@ class CoreContent extends Table implements CurrentUserInterface /** * Constructor * - * @param DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.1 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__ucm_content', 'core_content_id', $db); + parent::__construct('#__ucm_content', 'core_content_id', $db, $dispatcher); $this->setColumnAlias('published', 'core_state'); $this->setColumnAlias('checked_out', 'core_checked_out_user_id'); @@ -164,7 +166,7 @@ public function check() */ public function delete($pk = null) { - $baseTable = Table::getInstance('Ucm', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $baseTable = new Ucm($this->getDbo(), $this->getDispatcher()); return parent::delete($pk) && $baseTable->delete($pk); } diff --git a/libraries/src/Table/Extension.php b/libraries/src/Table/Extension.php index dbf53400a95e5..881c6fb01979c 100644 --- a/libraries/src/Table/Extension.php +++ b/libraries/src/Table/Extension.php @@ -11,6 +11,7 @@ use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -50,13 +51,14 @@ class Extension extends Table /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.7.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__extensions', 'extension_id', $db); + parent::__construct('#__extensions', 'extension_id', $db, $dispatcher); // Set the alias since the column is called enabled $this->setColumnAlias('published', 'enabled'); diff --git a/libraries/src/Table/Language.php b/libraries/src/Table/Language.php index 1d6462cc00ff3..a3744c9a8d173 100644 --- a/libraries/src/Table/Language.php +++ b/libraries/src/Table/Language.php @@ -11,6 +11,7 @@ use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -26,13 +27,14 @@ class Language extends Table /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.7.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__languages', 'lang_id', $db); + parent::__construct('#__languages', 'lang_id', $db, $dispatcher); } /** @@ -72,7 +74,7 @@ public function check() */ public function store($updateNulls = false) { - $table = Table::getInstance('Language', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new self($this->getDbo(), $this->getDispatcher()); // Verify that the language code is unique if ($table->load(['lang_code' => $this->lang_code]) && ($table->lang_id != $this->lang_id || $this->lang_id == 0)) { @@ -141,7 +143,7 @@ protected function _getAssetTitle() protected function _getAssetParentId(Table $table = null, $id = null) { $assetId = null; - $asset = Table::getInstance('asset'); + $asset = new Asset($this->getDbo(), $this->getDispatcher()); if ($asset->loadByName('com_languages')) { $assetId = $asset->id; diff --git a/libraries/src/Table/Menu.php b/libraries/src/Table/Menu.php index b140068d6afa2..1f2b002b3e86c 100644 --- a/libraries/src/Table/Menu.php +++ b/libraries/src/Table/Menu.php @@ -17,6 +17,7 @@ use Joomla\CMS\Router\Route; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects @@ -41,13 +42,14 @@ class Menu extends Nested /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__menu', 'id', $db); + parent::__construct('#__menu', 'id', $db, $dispatcher); // Set the default access level. $this->access = (int) Factory::getApplication()->get('access'); @@ -172,7 +174,7 @@ public function store($updateNulls = true) $db = $this->getDbo(); // Verify that the alias is unique - $table = Table::getInstance('Menu', '\\Joomla\\CMS\\Table\\', ['dbo' => $db]); + $table = new self($db, $this->getDispatcher()); $originalAlias = trim($this->alias); $this->alias = !$originalAlias ? $this->title : $originalAlias; @@ -240,7 +242,7 @@ public function store($updateNulls = true) // The alias already exists. Enqueue an error message. if ($error) { - $menuTypeTable = Table::getInstance('MenuType', '\\Joomla\\CMS\\Table\\', ['dbo' => $db]); + $menuTypeTable = new MenuType($this->getDbo(), $this->getDispatcher()); $menuTypeTable->load(['menutype' => $table->menutype]); $url = Route::_('index.php?option=com_menus&task=item.edit&id=' . (int) $table->id); diff --git a/libraries/src/Table/MenuType.php b/libraries/src/Table/MenuType.php index 71ed580eeefaa..c2bbcb2767d06 100644 --- a/libraries/src/Table/MenuType.php +++ b/libraries/src/Table/MenuType.php @@ -15,6 +15,7 @@ use Joomla\CMS\User\CurrentUserTrait; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -32,13 +33,14 @@ class MenuType extends Table implements CurrentUserInterface /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.6 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__menu_types', 'id', $db); + parent::__construct('#__menu_types', 'id', $db, $dispatcher); } /** @@ -113,7 +115,7 @@ public function store($updateNulls = false) $notIn = [0, $userId]; // Get the old value of the table - $table = Table::getInstance('Menutype', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new Menutype($this->getDbo(), $this->getDispatcher()); $table->load($this->id); // Verify that no items are checked out @@ -205,7 +207,7 @@ public function delete($pk = null) $star = '*'; // Get the old value of the table - $table = Table::getInstance('Menutype', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new Menutype($this->getDbo(), $this->getDispatcher()); $table->load($pk); // Verify that no items are checked out diff --git a/libraries/src/Table/Module.php b/libraries/src/Table/Module.php index 43dfc34dd89b7..9ca13aff69f16 100644 --- a/libraries/src/Table/Module.php +++ b/libraries/src/Table/Module.php @@ -13,6 +13,7 @@ use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects @@ -37,13 +38,14 @@ class Module extends Table /** * Constructor. * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.5 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__modules', 'id', $db); + parent::__construct('#__modules', 'id', $db, $dispatcher); $this->access = (int) Factory::getApplication()->get('access'); } diff --git a/libraries/src/Table/Nested.php b/libraries/src/Table/Nested.php index 2adccdeb3f6f2..ff1e7b4f89d9b 100644 --- a/libraries/src/Table/Nested.php +++ b/libraries/src/Table/Nested.php @@ -527,10 +527,8 @@ public function delete($pk = null, $children = true) // If tracking assets, remove the asset first. if ($this->_trackAssets) { - $name = $this->_getAssetName(); - - /** @var Asset $asset */ - $asset = Table::getInstance('Asset', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $name = $this->_getAssetName(); + $asset = new Asset($this->getDbo(), $this->getDispatcher()); if ($asset->loadByName($name)) { // Delete the node in assets table. diff --git a/libraries/src/Table/Table.php b/libraries/src/Table/Table.php index 9962d729d1e40..a6e809806260d 100644 --- a/libraries/src/Table/Table.php +++ b/libraries/src/Table/Table.php @@ -435,8 +435,7 @@ protected function _getAssetTitle() protected function _getAssetParentId(Table $table = null, $id = null) { // For simple cases, parent to the asset root. - /** @var Asset $assets */ - $assets = self::getInstance('Asset', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $assets = new Asset($this->getDbo(), $this->getDispatcher()); $rootId = $assets->getRootId(); if (!empty($rootId)) { @@ -896,9 +895,8 @@ public function store($updateNulls = false) $parentId = $this->_getAssetParentId(); $name = $this->_getAssetName(); $title = $this->_getAssetTitle(); + $asset = new Asset($this->getDbo(), $this->getDispatcher()); - /** @var Asset $asset */ - $asset = self::getInstance('Asset', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); $asset->loadByName($name); // Re-inject the asset id. @@ -1056,9 +1054,7 @@ public function delete($pk = null) if ($this->_trackAssets) { // Get the asset name $name = $this->_getAssetName(); - - /** @var Asset $asset */ - $asset = self::getInstance('Asset'); + $asset = new Asset($this->getDbo(), $this->getDispatcher()); if ($asset->loadByName($name)) { if (!$asset->delete()) { diff --git a/libraries/src/Table/Ucm.php b/libraries/src/Table/Ucm.php index cb5f07a39d87c..b52a93d493812 100644 --- a/libraries/src/Table/Ucm.php +++ b/libraries/src/Table/Ucm.php @@ -10,6 +10,9 @@ namespace Joomla\CMS\Table; // phpcs:disable PSR1.Files.SideEffects +use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; + \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects @@ -23,12 +26,13 @@ class Ucm extends Table /** * Constructor * - * @param \Joomla\Database\DatabaseDriver $db A database connector object + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.1 */ - public function __construct($db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__ucm_base', 'ucm_id', $db); + parent::__construct('#__ucm_base', 'ucm_id', $db, $dispatcher); } } diff --git a/libraries/src/Table/Update.php b/libraries/src/Table/Update.php index cf92537ced23c..dcf2df51b6809 100644 --- a/libraries/src/Table/Update.php +++ b/libraries/src/Table/Update.php @@ -11,6 +11,7 @@ use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -35,13 +36,14 @@ class Update extends Table /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.7.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__updates', 'update_id', $db); + parent::__construct('#__updates', 'update_id', $db, $dispatcher); } /** diff --git a/libraries/src/Table/UpdateSite.php b/libraries/src/Table/UpdateSite.php index 120380e25bcf1..98e864e3d24ee 100644 --- a/libraries/src/Table/UpdateSite.php +++ b/libraries/src/Table/UpdateSite.php @@ -11,6 +11,7 @@ use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -27,13 +28,14 @@ class UpdateSite extends Table /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 3.4 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__update_sites', 'update_site_id', $db); + parent::__construct('#__update_sites', 'update_site_id', $db, $dispatcher); } /** diff --git a/libraries/src/Table/User.php b/libraries/src/Table/User.php index 189ef453cad90..18af9b9433d86 100644 --- a/libraries/src/Table/User.php +++ b/libraries/src/Table/User.php @@ -16,6 +16,7 @@ use Joomla\CMS\String\PunycodeHelper; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; use Joomla\Registry\Registry; use Joomla\String\StringHelper; use Joomla\Utilities\ArrayHelper; @@ -50,13 +51,14 @@ class User extends Table /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.7.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__users', 'id', $db); + parent::__construct('#__users', 'id', $db, $dispatcher); // Initialise. $this->id = 0; diff --git a/libraries/src/Table/Usergroup.php b/libraries/src/Table/Usergroup.php index 3533bf75c8d0b..824a88af0a49d 100644 --- a/libraries/src/Table/Usergroup.php +++ b/libraries/src/Table/Usergroup.php @@ -13,6 +13,7 @@ use Joomla\Database\DatabaseDriver; use Joomla\Database\Exception\ExecutionFailureException; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -28,13 +29,14 @@ class Usergroup extends Table /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.7.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__usergroups', 'id', $db); + parent::__construct('#__usergroups', 'id', $db, $dispatcher); } /** @@ -93,7 +95,7 @@ public function check() // We do not allow to move non public to root and public to non-root if (!empty($this->id)) { - $table = self::getInstance('Usergroup', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new self($this->getDbo(), $this->getDispatcher()); $table->load($this->id); @@ -111,7 +113,7 @@ public function check() // The new parent_id has to be a valid group if ($this->parent_id) { - $table = self::getInstance('Usergroup', '\\Joomla\\CMS\\Table\\', ['dbo' => $this->getDbo()]); + $table = new self($this->getDbo(), $this->getDispatcher()); $table->load($this->parent_id); if ($table->id != $this->parent_id) { diff --git a/libraries/src/Table/ViewLevel.php b/libraries/src/Table/ViewLevel.php index 143c371b161e9..e6d76b93ba78d 100644 --- a/libraries/src/Table/ViewLevel.php +++ b/libraries/src/Table/ViewLevel.php @@ -12,6 +12,7 @@ use Joomla\CMS\Language\Text; use Joomla\Database\DatabaseDriver; use Joomla\Database\ParameterType; +use Joomla\Event\DispatcherInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -27,13 +28,14 @@ class ViewLevel extends Table /** * Constructor * - * @param DatabaseDriver $db Database driver object. + * @param DatabaseDriver $db Database connector object + * @param ?DispatcherInterface $dispatcher Event dispatcher for this table * * @since 1.7.0 */ - public function __construct(DatabaseDriver $db) + public function __construct(DatabaseDriver $db, DispatcherInterface $dispatcher = null) { - parent::__construct('#__viewlevels', 'id', $db); + parent::__construct('#__viewlevels', 'id', $db, $dispatcher); } /**