Skip to content

Commit

Permalink
Switch to event subscriber
Browse files Browse the repository at this point in the history
  • Loading branch information
flack committed Jan 4, 2025
1 parent 768d563 commit d599e6b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 18 deletions.
11 changes: 0 additions & 11 deletions lib/midcom/baseclasses/core/dbobject.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,6 @@ public static function update(midcom_core_dbaobject $object) : bool
*/
public static function update_post_ops(midcom_core_dbaobject $object)
{
if ($object->_use_rcs) {
midcom::get()->rcs->update($object, $object->get_rcs_message());
}

$object->_on_updated();

midcom::get()->dispatcher->dispatch(new dbaevent($object), dbaevent::UPDATE);
Expand Down Expand Up @@ -269,10 +265,6 @@ public static function create_post_ops(midcom_core_dbaobject $object)

$object->_on_created();
midcom::get()->dispatcher->dispatch(new dbaevent($object), dbaevent::CREATE);

if ($object->_use_rcs) {
midcom::get()->rcs->update($object, $object->get_rcs_message());
}
}

/**
Expand Down Expand Up @@ -385,9 +377,6 @@ public static function delete_post_ops(midcom_core_dbaobject $object)
{
$object->_on_deleted();
midcom::get()->dispatcher->dispatch(new dbaevent($object), dbaevent::DELETE);
if ($object->_use_rcs) {
midcom::get()->rcs->update($object, $object->get_rcs_message());
}
}

/**
Expand Down
25 changes: 18 additions & 7 deletions lib/midcom/services/rcs/main.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
* @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License
*/

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use midcom\events\dbaevent;

/**
* The RCS service gives a write only interface to different services wanting to save changes to objects.
*
Expand All @@ -19,10 +22,19 @@
*
* @package midcom.services.rcs
*/
class midcom_services_rcs
class midcom_services_rcs implements EventSubscriberInterface
{
private midcom_services_rcs_config $config;

public static function getSubscribedEvents()
{
return [
dbaevent::CREATE => ['update'],
dbaevent::UPDATE => ['update'],
dbaevent::DELETE => ['update']
];
}

public function __construct(midcom_config $config)
{
$this->config = new midcom_services_rcs_config($config);
Expand All @@ -44,19 +56,18 @@ public function load_backend(midcom_core_dbaobject $object) : midcom_services_rc
/**
* Create or update the RCS file for the object.
*/
public function update(midcom_core_dbaobject $object, string $message = '') : bool
public function update(dbaevent $event)
{
if (!$this->config->use_rcs()) {
return true;
$object = $event->get_object();
if (!$this->config->use_rcs() || !$object->_use_rcs) {
return;
}
$backend = $this->load_backend($object);
try {
$backend->update(midcom::get()->auth->user->id ?? 'NOBODY', $message);
return true;
$backend->update(midcom::get()->auth->user->id ?? 'NOBODY', $object->get_rcs_message());
} catch (midcom_error $e) {
debug_add('RCS: Could not save file!');
$e->log();
return false;
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/midcom/bundle/config/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ services:
class: midcom_services_rcs
arguments: ['@config']
public: true
tags:
- {name: 'kernel.event_subscriber'}

session:
class: midcom_services__sessioning
Expand Down

0 comments on commit d599e6b

Please sign in to comment.