entity_activity-8.x-1.0-beta13/entity_activity.install

entity_activity.install
<?php

/**
 * @file
 */

use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\user\UserInterface;

/**
 * @file
 * Install, update and uninstall functions for the Entity Activity module.
 */

/**
 * Enable the core serialization module.
 */
function entity_activity_update_8101(&$sandbox) {
  $module_handler = \Drupal::moduleHandler();
  if (!$module_handler->moduleExists('serialization')) {
    /** @var \Drupal\Core\Extension\ModuleInstallerInterface $module_installer */
    $module_installer = \Drupal::service('module_installer');
    $module_installer->install(['serialization']);
  }
}

/**
 * Delete all subscriptions for which a source entity has been deleted.
 */
function entity_activity_update_8102(&$sandbox) {
  /** @var \Drupal\entity_activity\SubscriptionStorageInterface $subscriptions_storage */
  $subscriptions_storage = \Drupal::entityTypeManager()->getStorage('entity_activity_subscription');
  // Initialize some variables during the first pass through.
  if (!isset($sandbox['total'])) {
    $query = $subscriptions_storage->getQuery();
    $query->count();
    $total = $query->execute();
    $sandbox['total'] = $total;
    $sandbox['current'] = 0;
    $sandbox['items_deleted'] = 0;
  }
  // Do not continue if no subscriptions are found.
  if (empty($sandbox['total'])) {
    $sandbox['#finished'] = 1;
    return t('No Subscriptions to be processed.');
  }

  $subscriptions_per_batch = 50;
  $query = $subscriptions_storage->getQuery();
  $query->range($sandbox['current'] - $sandbox['items_deleted'], $subscriptions_per_batch);
  $query->sort('id', 'DESC');
  $result = $query->execute();
  foreach ($result as $id) {
    /** @var \Drupal\entity_activity\Entity\SubscriptionInterface $subscription */
    $subscription = $subscriptions_storage->load($id);
    $source_entity = \Drupal::entityTypeManager()
      ->getStorage($subscription->getSourceEntityTypeId())
      ->load($subscription->getSourceEntityId());
    if (!$source_entity instanceof ContentEntityInterface) {
      $subscription->delete();
      $sandbox['items_deleted']++;
      $sandbox['current']++;
    }
    else {
      $sandbox['current']++;
    }
  }
  $sandbox['#finished'] = ($sandbox['current'] / $sandbox['total']);
  return t('@count Subscriptions processed with a cumulative total of @items_deleted subscriptions deleted.', ['@count' => $sandbox['current'], '@items_deleted' => $sandbox['items_deleted']]);
}

/**
 * Delete all subscriptions for which the owner has been deleted.
 */
function entity_activity_update_8103(&$sandbox) {
  /** @var \Drupal\entity_activity\SubscriptionStorageInterface $subscriptions_storage */
  $subscription_storage = \Drupal::entityTypeManager()->getStorage('entity_activity_subscription');
  // Initialize some variables during the first pass through.
  if (!isset($sandbox['total'])) {
    $query = $subscription_storage->getQuery();
    $query->count();
    $total = $query->execute();
    $sandbox['total'] = $total;
    $sandbox['current'] = 0;
    $sandbox['items_deleted'] = 0;
  }
  // Do not continue if no subscriptions are found.
  if (empty($sandbox['total'])) {
    $sandbox['#finished'] = 1;
    return t('No Subscriptions to be processed.');
  }

  $subscriptions_per_batch = 50;
  $query = $subscription_storage->getQuery();
  $query->range($sandbox['current'] - $sandbox['items_deleted'], $subscriptions_per_batch);
  $query->sort('id', 'DESC');
  $result = $query->execute();
  foreach ($result as $id) {
    /** @var \Drupal\entity_activity\Entity\SubscriptionInterface $subscription */
    $subscription = $subscription_storage->load($id);
    $owner = $subscription->getOwner();
    if (!$owner instanceof UserInterface) {
      $subscription->delete();
      $sandbox['items_deleted']++;
      $sandbox['current']++;
    }
    else {
      $sandbox['current']++;
    }
  }
  $sandbox['#finished'] = ($sandbox['current'] / $sandbox['total']);
  return t('@count Subscriptions processed with a cumulative total of @items_deleted subscriptions deleted.', ['@count' => $sandbox['current'], '@items_deleted' => $sandbox['items_deleted']]);
}

/**
 * Delete all logs for which the owner has been deleted.
 */
function entity_activity_update_8104(&$sandbox) {
  /** @var \Drupal\entity_activity\LogStorageInterface $log_storage */
  $log_storage = \Drupal::entityTypeManager()->getStorage('entity_activity_log');
  // Initialize some variables during the first pass through.
  if (!isset($sandbox['total'])) {
    $query = $log_storage->getQuery();
    $query->count();
    $total = $query->execute();
    $sandbox['total'] = $total;
    $sandbox['current'] = 0;
    $sandbox['items_deleted'] = 0;
  }
  // Do not continue if no logs are found.
  if (empty($sandbox['total'])) {
    $sandbox['#finished'] = 1;
    return t('No Logs to be processed.');
  }

  $logs_per_batch = 50;
  $query = $log_storage->getQuery();
  $query->range($sandbox['current'] - $sandbox['items_deleted'], $logs_per_batch);
  $query->sort('id', 'DESC');
  $result = $query->execute();
  foreach ($result as $id) {
    /** @var \Drupal\entity_activity\Entity\LogInterface $log */
    $log = $log_storage->load($id);
    $owner = $log->getOwner();
    if (!$owner instanceof UserInterface) {
      $log->delete();
      $sandbox['items_deleted']++;
      $sandbox['current']++;
    }
    else {
      $sandbox['current']++;
    }
  }
  $sandbox['#finished'] = ($sandbox['current'] / $sandbox['total']);
  return t('@count Logs processed with a cumulative total of @items_deleted logs deleted.', ['@count' => $sandbox['current'], '@items_deleted' => $sandbox['items_deleted']]);
}

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

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