From 217b08290f2a948af029cc4401b8bc82712fed6b Mon Sep 17 00:00:00 2001 From: bach Date: Wed, 23 Sep 2026 14:57:56 +0200 Subject: [PATCH] materio_simplenews & materio_graphql fix --- ...de.simplenews_subscriber.materio_block.yml | 13 - .../MaterioSchemaExtension.php | 26 -- ...de.simplenews_subscriber.materio_block.yml | 9 - .../materio_simplenews.module | 4 - .../Form/MaterioSubscriptionsBlockForm.php | 242 ------------------ .../MaterioSimplenewsSubscriptionBlock.php | 178 ------------- 6 files changed, 472 deletions(-) delete mode 100644 config/sync/core.entity_form_mode.simplenews_subscriber.materio_block.yml delete mode 100644 web/modules/custom/materio_simplenews/config/install/core.entity_form_mode.simplenews_subscriber.materio_block.yml delete mode 100644 web/modules/custom/materio_simplenews/src/Form/MaterioSubscriptionsBlockForm.php delete mode 100644 web/modules/custom/materio_simplenews/src/Plugin/Block/MaterioSimplenewsSubscriptionBlock.php diff --git a/config/sync/core.entity_form_mode.simplenews_subscriber.materio_block.yml b/config/sync/core.entity_form_mode.simplenews_subscriber.materio_block.yml deleted file mode 100644 index 0d9e7b4c..00000000 --- a/config/sync/core.entity_form_mode.simplenews_subscriber.materio_block.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: a97d0282-01c9-4b2e-8f91-24b0e3e6443c -langcode: en -status: true -dependencies: - module: - - simplenews -_core: - default_config_hash: leCpWOylvfK6ArYQp2n7dcGoAFC_A-X7qQm5FdYToWg -id: simplenews_subscriber.materio_block -label: Block -description: '' -targetEntityType: simplenews_subscriber -cache: true diff --git a/web/modules/custom/materio_graphql/src/Plugin/GraphQL/SchemaExtension/MaterioSchemaExtension.php b/web/modules/custom/materio_graphql/src/Plugin/GraphQL/SchemaExtension/MaterioSchemaExtension.php index ee708a4a..7e46ffec 100644 --- a/web/modules/custom/materio_graphql/src/Plugin/GraphQL/SchemaExtension/MaterioSchemaExtension.php +++ b/web/modules/custom/materio_graphql/src/Plugin/GraphQL/SchemaExtension/MaterioSchemaExtension.php @@ -4,7 +4,6 @@ namespace Drupal\materio_graphql\Plugin\GraphQL\SchemaExtension; use Drupal\graphql\GraphQL\ResolverBuilder; use Drupal\graphql\GraphQL\ResolverRegistryInterface; -use Drupal\graphql\GraphQL\Response\ResponseInterface; use Drupal\graphql\Plugin\GraphQL\SchemaExtension\SdlSchemaExtensionPluginBase; use Drupal\Core\Url; // use CommerceGuys\Addressing\Country\CountryRepository; @@ -103,12 +102,6 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase { $this->addVideolink($registry, $builder); $this->addImage($registry, $builder); - - // Response type resolver. - $registry->addTypeResolver('Response', [ - __CLASS__, - 'resolveResponse', - ]); } // ___ _ @@ -1617,24 +1610,5 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase { }) )); } - /** - * Resolves the response type. - * - * @param \Drupal\graphql\GraphQL\Response\ResponseInterface $response - * Response object. - * - * @return string - * Response type. - * - * @throws \Exception - * Invalid response type. - */ - public static function resolveResponse(ResponseInterface $response): string { - // Resolve content response. - if ($response instanceof MateriauResponse) { - return 'MateriauResponse'; - } - throw new \Exception('Invalid response type.'); - } } diff --git a/web/modules/custom/materio_simplenews/config/install/core.entity_form_mode.simplenews_subscriber.materio_block.yml b/web/modules/custom/materio_simplenews/config/install/core.entity_form_mode.simplenews_subscriber.materio_block.yml deleted file mode 100644 index a1a6c088..00000000 --- a/web/modules/custom/materio_simplenews/config/install/core.entity_form_mode.simplenews_subscriber.materio_block.yml +++ /dev/null @@ -1,9 +0,0 @@ -langcode: en -status: true -dependencies: - module: - - simplenews -id: simplenews_subscriber.materio_block -label: Materio Block -targetEntityType: simplenews_subscriber -cache: true diff --git a/web/modules/custom/materio_simplenews/materio_simplenews.module b/web/modules/custom/materio_simplenews/materio_simplenews.module index 4541f3ae..eb542979 100644 --- a/web/modules/custom/materio_simplenews/materio_simplenews.module +++ b/web/modules/custom/materio_simplenews/materio_simplenews.module @@ -2,10 +2,6 @@ use Drupal\Core\Form\FormStateInterface; -function materio_simplenews_entity_type_alter(array &$entity_types) { - $entity_types['simplenews_subscriber']->setFormClass('materio_block', '\Drupal\materio_simplenews\Form\MaterioSubscriptionsBlockForm'); -} - /** * Implements hook_form_alter(). * diff --git a/web/modules/custom/materio_simplenews/src/Form/MaterioSubscriptionsBlockForm.php b/web/modules/custom/materio_simplenews/src/Form/MaterioSubscriptionsBlockForm.php deleted file mode 100644 index 41908e48..00000000 --- a/web/modules/custom/materio_simplenews/src/Form/MaterioSubscriptionsBlockForm.php +++ /dev/null @@ -1,242 +0,0 @@ -uniqueId)) { - throw new \Exception('Unique ID must be set with setUniqueId.'); - } - return 'materio_simplenews_subscriptions_block_' . $this->uniqueId; - } - - /** - * {@inheritdoc} - */ - public function setUniqueId($id) { - $this->uniqueId = $id; - return $this; - } - - /** - * Set message. - * - * @param string $message - * Message to use as description for the block. - * - * @return $this - */ - public function setMessage($message) { - $this->message = $message; - return $this; - } - - /** - * Set the newsletters available to select from. - * - * @param string[] $newsletters - * Newsletter IDs available to select from. - * @param string[] $defaults - * (optional) Newsletter IDs selected by default. - * - * @return $this - */ - public function setNewsletterIds(array $newsletters, array $defaults = []) { - $visible = array_keys(simplenews_newsletter_get_visible()); - // Exclude newsletters already subscribed. - $subscribed = $this->entity->getSubscribedNewsletterIds(); - $this->newsletterIds = array_diff(array_intersect($newsletters, $visible), $subscribed); - $this->defaultNewsletterIds = array_diff(array_intersect($defaults, $visible), $subscribed); - return $this; - } - - /** - * Returns the newsletters available to select from. - * - * @return string[] - * The newsletter IDs available to select from, as an indexed array. - */ - public function getNewsletterIds() { - return $this->newsletterIds; - } - - /** - * Set whether to show "Manage existing" link. - * - * @param bool $show - * TRUE to show "Manage existing" link, FALSE to hide. - * - * @return $this - */ - public function setShowManage($show) { - $this->showManage = $show; - return $this; - } - - /** - * {@inheritdoc} - */ - public function form(array $form, FormStateInterface $form_state) { - $this->getSubscriptionWidget($form_state)->setAvailableNewsletterIds($this->newsletterIds); - - if (!$form_state->getUserInput()) { - // Set defaults. - foreach ($this->defaultNewsletterIds as $newsletter_id) { - $this->entity->subscribe($newsletter_id, SIMPLENEWS_SUBSCRIPTION_STATUS_SUBSCRIBED, 'website'); - } - } - - $form = parent::form($form, $form_state); - $form['subscriptions']['widget']['#title'] = $this->t('Manage your newsletter subscriptions'); - $form['subscriptions']['widget']['#description'] = $this->t('Select the newsletter(s) to which you want to subscribe.'); - $hidden_default_ids = array_diff($this->defaultNewsletterIds, $this->getNewsletterIds()); - $form['subscriptions']['widget']['#required'] = empty($hidden_default_ids); - $form['subscriptions']['widget']['#access'] = !empty($this->newsletterIds); - - - if (!$this->newsletterIds && !$this->defaultNewsletterIds) { - $this->message = $this->t('You are already subscribed'); - } - - if ($this->message) { - $form['message'] = [ - '#type' => 'item', - '#markup' => $this->message, - ]; - } - - unset($form['subscriptions']['widget']['#title']); - unset($form['subscriptions']['widget']['#description']); - unset($form['mail']['widget']['#title']); - unset($form['mail']['widget']['#description']); - unset($form['mail']['widget'][0]['#title']); - unset($form['mail']['widget'][0]['#title_display']); - unset($form['mail']['widget'][0]['#description']); - $form['mail']['widget'][0]['value']['#placeholder'] = t('email'); - unset($form['mail']['widget'][0]['value']['#title']); - unset($form['mail']['widget'][0]['value']['#description']); - - return $form; - } - - - /** - * {@inheritdoc} - */ - protected function actions(array $form, FormStateInterface $form_state) { - $actions = parent::actions($form, $form_state); - - $actions['submit']['#value'] = $this->t('Subscribe'); - if (!$this->newsletterIds && !$this->defaultNewsletterIds) { - $actions['submit']['#attributes']['disabled'] = TRUE; - } - - if ($this->showManage) { - $user = \Drupal::currentUser(); - $link = $user->isAuthenticated() ? Url::fromRoute('simplenews.newsletter_subscriptions_user', ['user' => $user->id()]) : Url::fromRoute('simplenews.newsletter_validate'); - $actions['manage'] = [ - '#title' => $this->t('Manage existing'), - '#type' => 'link', - '#url' => $link, - ]; - } - - return $actions; - } - - /** - * {@inheritdoc} - */ - public function validateForm(array &$form, FormStateInterface $form_state) { - $mail = $form_state->getValue(['mail', 0, 'value']); - if ($this->entity->isNew() && $subscriber = Subscriber::loadByMail($mail)) { - $this->setEntity($subscriber); - } - - parent::validateForm($form, $form_state); - - $mail = $form_state->getValue(['mail', 0, 'value']); - // Cannot subscribe blocked users. - if (($user = user_load_by_mail($mail)) && $user->isBlocked()) { - $message = $this->t('The email address %mail belongs to a blocked user.', ['%mail' => $mail]); - $form_state->setErrorByName('mail', $message); - } - } - - /** - * Submit callback that subscribes to selected newsletters. - * - * @param array $form - * The form structure. - * @param \Drupal\Core\Form\FormStateInterface $form_state - * The form state object. - */ - public function submitExtra(array $form, FormStateInterface $form_state) { - /** @var \Drupal\simplenews\Subscription\SubscriptionManagerInterface $subscription_manager */ - $subscription_manager = \Drupal::service('simplenews.subscription_manager'); - - // Subscribe the selected newsletters and any defaults that are hidden. - $selected_ids = $this->extractNewsletterIds($form_state, TRUE); - $hidden_default_ids = array_diff($this->defaultNewsletterIds, $this->getNewsletterIds()); - - foreach (array_unique(array_merge($selected_ids, $hidden_default_ids)) as $newsletter_id) { - $subscription_manager->subscribe($this->entity->getMail(), $newsletter_id, NULL, 'website'); - } - $sent = $subscription_manager->sendConfirmations(); - $this->messenger()->addMessage($this->getSubmitMessage($form_state, $sent)); - } - - /** - * {@inheritdoc} - */ - protected function getSubmitMessage(FormStateInterface $form_state, $confirm) { - if ($confirm) { - return $this->t('You will receive a confirmation e-mail shortly containing further instructions on how to complete your subscription.'); - } - return $this->t('You have been subscribed.'); - } - -} diff --git a/web/modules/custom/materio_simplenews/src/Plugin/Block/MaterioSimplenewsSubscriptionBlock.php b/web/modules/custom/materio_simplenews/src/Plugin/Block/MaterioSimplenewsSubscriptionBlock.php deleted file mode 100644 index 6f73bc3c..00000000 --- a/web/modules/custom/materio_simplenews/src/Plugin/Block/MaterioSimplenewsSubscriptionBlock.php +++ /dev/null @@ -1,178 +0,0 @@ -entityTypeManager = $entity_type_manager; - $this->formBuilder = $formBuilder; - } - - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { - return new static( - $configuration, - $plugin_id, - $plugin_definition, - $container->get('entity_type.manager'), - $container->get('form_builder') - ); - } - - - /** - * {@inheritdoc} - */ - public function defaultConfiguration() { - // By default, the block will contain 1 newsletter. - return array( - 'newsletters' => array(), - 'message' => t('Stay informed - subscribe to our newsletter.'), - 'unique_id' => '', - ); - } - - /** - * {@inheritdoc} - */ - protected function blockAccess(AccountInterface $account) { - // Only grant access to users with the 'subscribe to newsletters' permission. - return AccessResult::allowedIfHasPermission($account, 'subscribe to newsletters'); - } - - /** - * {@inheritdoc} - */ - public function blockForm($form, FormStateInterface $form_state) { - $newsletters = simplenews_newsletter_get_visible(); - foreach ($newsletters as $newsletter) { - $options[$newsletter->id()] = $newsletter->name; - } - - $form['newsletters'] = array( - '#type' => 'checkboxes', - '#title' => t('Newsletters'), - '#options' => $options, - '#required' => TRUE, - '#default_value' => $this->configuration['newsletters'], - ); - $form['message'] = array( - '#type' => 'textfield', - '#title' => t('Block message'), - '#size' => 60, - '#maxlength' => 255, - '#default_value' => $this->configuration['message'], - ); - $form['unique_id'] = array( - '#type' => 'textfield', - '#title' => t('Unique ID'), - '#size' => 60, - '#maxlength' => 255, - '#description' => t('Each subscription block must have a unique form ID. If no value is provided, a random ID will be generated. Use this to have a predictable, short ID, e.g. to configure this form use a CAPTCHA.'), - '#default_value' => $this->configuration['unique_id'], - ); - /*if (\Drupal::moduleHandler()->moduleExists('views')) { - $form['link_previous'] = array( - '#type' => 'checkbox', - '#title' => t('Display link to previous issues'), - '#return_value' => 1, - '#default_value' => variable_get('simplenews_block_l_' . $delta, 1), - '#description' => t('Link points to newsletter/newsletter_id, which is provided by the newsletter issue list default view.'), - ); - }*/ - /*if (\Drupal::moduleHandler()->moduleExists('views')) { - $form['rss_feed'] = array( - '#type' => 'checkbox', - '#title' => t('Display RSS-feed icon'), - '#return_value' => 1, - '#default_value' => variable_get('simplenews_block_r_' . $delta, 1), - '#description' => t('Link points to newsletter/feed/newsletter_id, which is provided by the newsletter issue list default view.'), - ); - }*/ - return $form; - } - - /** - * {@inheritdoc} - */ - public function blockSubmit($form, FormStateInterface $form_state) { - $this->configuration['newsletters'] = array_filter($form_state->getValue('newsletters')); - $this->configuration['message'] = $form_state->getValue('message'); - //$this->configuration['link_previous'] = $form_state->getValue('link_previous'); - //$this->configuration['rss_feed'] = $form_state->getValue('rss_feed'); - $this->configuration['unique_id'] = empty($form_state->getValue('unique_id')) ? \Drupal::service('uuid')->generate() : $form_state->getValue('unique_id'); -} - - /** - * {@inheritdoc} - */ - public function build() { - /** @var \Drupal\materio_simplenews\Form\MaterioSubscriptionsBlockForm $form_object */ - $form_object = $this->entityTypeManager->getFormObject('simplenews_subscriber', 'materio_block'); - $form_object->setUniqueId($this->configuration['unique_id']); - $form_object->setNewsletterIds($this->configuration['newsletters']); - $form_object->message = t($this->configuration['message']); - - // Set the entity on the form. - $user = \Drupal::currentUser(); - $form_object->setEntity(Subscriber::loadByUid($user->id(), 'create')); - - - return $this->formBuilder->getForm($form_object); - } - -}