crm_core-8.x-3.x-dev/modules/crm_core_user_sync/crm_core_user_sync.module

modules/crm_core_user_sync/crm_core_user_sync.module
<?php

/**
 * @file
 * CRM Core User Synchronization module.
 */

use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\crm_core_contact\Entity\Individual;
use Drupal\crm_core_contact\IndividualInterface;
use Drupal\crm_core_user_sync\Entity\Relation;
use Drupal\user\UserInterface;

/**
 * Implements hook_user_insert().
 */
function crm_core_user_sync_user_insert(UserInterface $account) {
  $auto_sync_user_create = \Drupal::config('crm_core_user_sync.settings')->get('auto_sync_user_create');
  if ($auto_sync_user_create) {
    \Drupal::service('crm_core_user_sync.relation')->relate($account);
  }
}

/**
 * Implements hook_user_update().
 */
function crm_core_user_sync_user_update(UserInterface $account) {
  // User update only ensures that for the given user account there is a
  // corresponding contact record.
  /** @var \Drupal\crm_core_user_sync\CrmCoreUserSyncRelation $service */
  $service = \Drupal::service('crm_core_user_sync.relation');
  $related_contact_id = $service->getIndividualIdFromUserId($account->id());
  if (empty($related_contact_id)) {
    $auto_sync_user_create = \Drupal::config('crm_core_user_sync.settings')->get('auto_sync_user_create');
    if ($auto_sync_user_create) {
      $service->relate($account);
    }
  }
}

/**
 * Implements hook_user_delete().
 */
function crm_core_user_sync_user_delete(UserInterface $account) {
  /** @var \Drupal\crm_core_user_sync\CrmCoreUserSyncRelation $service */
  $service = \Drupal::service('crm_core_user_sync.relation');
  $relation_id = $service->getRelationIdFromUserId($account->id());
  if ($relation_id) {
    $relation = Relation::load($relation_id);
    $relation->delete();
  }
}

/**
 * Implements hook_crm_core_individual_delete().
 */
function crm_core_user_sync_crm_core_individual_delete(IndividualInterface $individual) {
  /** @var \Drupal\crm_core_user_sync\CrmCoreUserSyncRelation $service */
  $service = \Drupal::service('crm_core_user_sync.relation');
  $relation_id = $service->getRelationIdFromIndividualId($individual->id());
  if ($relation_id) {
    $relation = Relation::load($relation_id);
    $relation->delete();
  }
}

/**
 * Implements hook_entity_extra_field_info().
 */
function crm_core_user_sync_entity_extra_field_info() {
  $contact_show = \Drupal::config('crm_core_user_sync.settings')->get('contact_show');
  if ($contact_show) {
    $fields['user']['user']['display']['contact_information'] = [
      'label' => t('Contact information'),
      'description' => t('Display related contact information'),
      'weight' => 0,
    ];

    return $fields;
  }
}

/**
 * Implements hook_user_view().
 */
function crm_core_user_sync_user_view(array &$build, UserInterface $account, EntityViewDisplayInterface $display) {
  $contact_show = \Drupal::config('crm_core_user_sync.settings')->get('contact_show');
  if ($contact_show) {
    if ($display->getComponent('contact_information')) {
      /** @var \Drupal\crm_core_user_sync\CrmCoreUserSyncRelation $service */
      $service = \Drupal::service('crm_core_user_sync.relation');
      $individual_id = $service->getIndividualIdFromUserId($account->id());
      if ($individual_id) {
        $individual = Individual::load($individual_id);
        $build['contact_information'] = [
          '#type' => 'item',
          '#title' => t('Contact Information'),
          '#markup' => '<h4 class="label">' . t('Contact name') . '</h4> ' . $individual->label(),
        ];
      }
    }
  }
}

/**
 * Implements hook_views_data_alter().
 *
 * @todo Remove once https://www.drupal.org/project/drupal/issues/2706431 is
 * resolved.
 */
function crm_core_user_sync_views_data_alter(array &$data) {
  $title = t('CRM User Sync Relation');
  $data['users_field_data']['crm_core_user_sync_relation'] = [
    'title' => $title,
    'help' => t('Adds relation to CRM User Sync Relation that point to current user.'),
    'relationship' => [
      'base' => 'crm_core_user_sync_relation',
      'base field' => 'user_id',
      'field' => 'uid',
      'id' => 'standard',
      'label' => $title,
    ],
  ];

  $data['users_field_data']['crm_core_user_sync_form'] = [
    'title' => t('Contact relation'),
    'help' => t("Provides a link to the user's contact relation form."),
    'field' => [
      'id' => 'crm_core_user_contact',
    ],
  ];

  $data['crm_core_individual']['crm_core_user_sync_relation'] = [
    'title' => $title,
    'help' => t('Adds relation to CRM User Sync Relation that point to current individual.'),
    'relationship' => [
      'base' => 'crm_core_user_sync_relation',
      'base field' => 'individual_id',
      'field' => 'individual_id',
      'id' => 'standard',
      'label' => $title,
    ],
  ];

  $data['crm_core_individual']['crm_core_user_sync_form'] = [
    'title' => t('User relation'),
    'help' => t("Provides a link to the individual's user relation form."),
    'field' => [
      'id' => 'crm_core_user_contact',
      'field_name' => 'user',
    ],
  ];

}

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

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