deepseek-1.x-dev/module/ai_auto_embedding/src/EventSubscriber/EntityUpdateSubscriber.php

module/ai_auto_embedding/src/EventSubscriber/EntityUpdateSubscriber.php
<?php

namespace Drupal\ai_auto_embedding\EventSubscriber;

use Drupal\ai_auto_embedding\Event\EntityUpdateEvent;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Queue\QueueFactory;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * {@inheritdoc}
 */
class EntityUpdateSubscriber implements EventSubscriberInterface {

  /**
   * {@inheritdoc}
   */
  public function __construct(
    protected ConfigFactoryInterface $configFactory,
    protected QueueFactory $queueFactory,
  ) {
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new self(
      $container->get('config.factory'),
      $container->get('queue'),
    );
  }

  /**
   * Handles the event when an entity is updated.
   *
   * @param \Drupal\ai_auto_embedding\Event\EntityUpdateEvent $event
   *   Config crud event.
   */
  public function entityUpdate(EntityUpdateEvent $event) {
    $configAI = $this->configFactory->get('deepseek.settings');
    $config = $this->configFactory->get('ai_auto_embedding.settings')->getRawData();
    if (!empty($config) && !empty($configAI->get('embedding'))) {
      $entity = $event->entity;
      $entity_type = $entity->getEntityTypeId();
      $entity_bundle = $entity->bundle();
      $key_index = "entity-$entity_bundle-$entity_type";
      if (!empty($config[$key_index])) {
        $view_mode = $config["view_mode-$entity_bundle-$entity_type"] ?? NULL;
        if ($view_mode) {
          $queue = $this->queueFactory->get('queue_embedding_entity');
          $queue->createItem([
            'id' => $entity->id(),
            'entity_type' => $entity_type,
            'bundle' => $entity_bundle,
            'view_mode' => $view_mode,
          ]);
        }
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    return [
      EntityUpdateEvent::EVENT_NAME => 'entityUpdate',
    ];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc