You are here

function cms_content_sync_get_publish_changes_operations in CMS Content Sync 8

Same name and namespace in other branches
  1. 2.1.x cms_content_sync.module \cms_content_sync_get_publish_changes_operations()
  2. 2.0.x cms_content_sync.module \cms_content_sync_get_publish_changes_operations()

Returns operations for "push changes" action.

2 calls to cms_content_sync_get_publish_changes_operations()
cms_content_sync_entity_operation_alter in ./cms_content_sync.module
Implements hook_entity_operation_alter().
cms_content_sync_form_menu_edit_form_alter in ./cms_content_sync.module
Implements hook_form_menu_edit_form_alter().

File

./cms_content_sync.module, line 1793
Module file for cms_content_sync.

Code

function cms_content_sync_get_publish_changes_operations(EntityInterface $entity) {
  if (!Drupal::currentUser()
    ->hasPermission('publish cms content sync changes')) {
    return [];
  }
  $operations = [];

  /** @var \Drupal\Core\Routing\RedirectDestinationInterface $redirect_destination */
  $redirect_destination = Drupal::service('redirect.destination');
  $flows = PushIntent::getFlowsForEntity($entity, PushIntent::PUSH_MANUALLY);
  if (!count($flows)) {
    return [];
  }
  foreach ($flows as $flow) {
    $route_parameters = [
      'flow_id' => $flow
        ->id(),
      'entity' => $entity
        ->id(),
      'entity_type' => $entity
        ->getEntityTypeId(),
    ];
    $operations['publish_changes_' . $flow
      ->id()] = [
      'title' => t('Push changes - %name', [
        '%name' => $flow->name,
      ]),
      'weight' => 150,
      'url' => Url::fromRoute('cms_content_sync.publish_changes', $route_parameters),
      'query' => $redirect_destination
        ->getAsArray(),
    ];
  }
  return $operations;
}