smsplatform-1.0.x-dev/modules/smsplatform_sendtophone/smsplatform_sendtophone.module

modules/smsplatform_sendtophone/smsplatform_sendtophone.module
<?php

/**
 * @file
 * Provides hooks for Send To Phone.
 */

declare(strict_types=1);

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Drupal\node\NodeInterface;
use Drupal\smsplatform\Exception\PhoneNumberSettingsException;
use Drupal\user\Entity\User;

/**
 * Implements hook_page_attachments().
 *
 * @todo Need to optimize this later.
 */
function smsplatform_sendtophone_page_attachments(array &$attachments) {
  $attachments['#attached']['library'][] = 'smsplatform_sendtophone/default';
}

/**
 * Implements hook_node_links_alter().
 */
function smsplatform_sendtophone_node_links_alter(array &$links, NodeInterface $node, array &$context) {
  /** @var \Drupal\smsplatform\Provider\PhoneNumberProviderInterface $phone_number_provider */
  $phone_number_provider = \Drupal::service('smsplatform.phonenumber');
  /** @var \Drupal\user\UserInterface $user */
  $user = User::load(\Drupal::currentUser()->id());

  $phone_numbers = [];
  try {
    $phone_numbers = $phone_number_provider->getPhoneNumbers($user);
  }
  catch (PhoneNumberSettingsException $e) {

  }

  $types = \Drupal::config('smsplatform_sendtophone.settings')->get('content_types');
  $build = [];
  if (in_array($node->bundle(), $types)) {
    if ($user->hasPermission('send to any number') || count($phone_numbers)) {
      // Only show "send to phone" link if user is permitted to do so.
      $url = Url::fromRoute(
        'smsplatform_sendtophone.page',
        ['type' => 'node', 'extra' => $node->id()],
        ['query' => \Drupal::destination()->getAsArray()]
      );

      $build['smsplatform_sendtophone'] = [
        'title' => t('Send to phone'),
        'url' => $url,
        'attributes' => [
          'class' => 'sms-sendtophone',
          'title' => 'Send a link via SMS.',
        ],
      ];
    }
    elseif ($user->isAuthenticated()) {
      // Show messages to encourage users to register their mobile number.
      if (!count($phone_numbers)) {
        $build['smsplatform_sendtophone'] = [
          'title' => t('Set up and confirm your mobile number to send to phone.'),
          'url' => Url::fromRoute('entity.user.edit_form', ['user' => $user->id()]),
        ];
      }
    }
    $links['smsplatform_sendtophone'] = [
      '#theme' => 'links__node__smsplatform_sendtophone',
      '#links' => $build,
      '#attributes' => ['class' => ['links', 'inline']],
    ];
  }

}

/**
 * Implements hook_form_alter().
 */
function smsplatform_sendtophone_form_alter(&$form, FormStateInterface &$form_state, $form_id) {
  if ($form_id == 'smsplatform_sendtophone_inline_form' || $form_id == 'smsplatform_sendtophone_node_form' || $form_id == 'smsplatform_sendtophone_cck_form') {
    if (!\Drupal::currentUser()->hasPermission('send to any number')) {
      // Makes number field plain text.
      $form['sms']['number']['#type'] = 'item';
      $form['sms']['number']['#value'] = $form['sms']['number']['#default_value'];
    }
  }
}

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

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