multiversion-8.x-1.0-beta34/src/Workspace/ConflictTracker.php

src/Workspace/ConflictTracker.php
<?php

namespace Drupal\multiversion\Workspace;

use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
use Drupal\multiversion\Entity\WorkspaceInterface;

/**
 * The Conflict Tracker service.
 */
class ConflictTracker implements ConflictTrackerInterface {

  /**
   * The id of current workspace to query.
   *
   * @var string
   */
  protected $workspaceId;

  /**
   * The workspace manager service.
   *
   * @var \Drupal\multiversion\Workspace\WorkspaceManagerInterface
   */
  protected $workspaceManager;

  /**
   * The key value factory service.
   *
   * @var \Drupal\Core\KeyValueStore\KeyValueFactoryInterface
   */
  protected $keyValueFactory;

  /**
   * The prefix to use for workspace conflicts.
   *
   * @var string
   */
  protected $collectionPrefix = 'workspace.conflicts.';


  /**
   * @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory
   * @param \Drupal\multiversion\Workspace\WorkspaceManagerInterface $workspace_manager
   */
  public function __construct(KeyValueFactoryInterface $key_value_factory, WorkspaceManagerInterface $workspace_manager) {
    $this->keyValueFactory = $key_value_factory;
    $this->workspaceManager = $workspace_manager;
    // Set workspace to currently active workspace.
    $this->workspaceId = $this->workspaceManager->getActiveWorkspaceId();
  }

  /**
   * {@inheritdoc}
   */
  public function useWorkspace(WorkspaceInterface $workspace = null) {
    $this->workspaceId = 0;
    if ($workspace) {
      $this->workspaceId = $workspace->id();
    }
    return $this;
  }

  /**
   * @inheritDoc
   */
  public function add($uuid, array $revision_conflicts, $replace = FALSE) {
    if (!$replace) {
      $current_conflicts = $this->keyValueStore()->get($uuid);
      $revision_conflicts = array_merge($current_conflicts, $revision_conflicts);
    }
    $this->keyValueStore()->set($uuid, $revision_conflicts);
  }

  /**
   * @inheritDoc
   */
  public function resolveAll($uuid) {
    $this->keyValueStore()->delete($uuid);
  }

  /**
   * @inheritDoc
   */
  public function resolve($uuid, $revision_id) {
    $conflicts = $this->keyValueStore()->get($uuid);
    unset($conflicts[$revision_id]);
    $this->keyValueStore()->set($uuid, $conflicts);
  }

  /**
   * @inheritDoc
   */
  public function get($uuid) {
    return $this->keyValueStore()->get($uuid, []);
  }

  /**
   * @inheritDoc
   */
  public function getAll() {
    return $this->keyValueStore()->getAll();
  }

  /**
   * Gets the key value store used to store conflicts.
   *
   * @return \Drupal\Core\KeyValueStore\KeyValueStoreInterface
   */
  protected function keyValueStore() {
    return $this->keyValueFactory->get($this->collectionPrefix . $this->workspaceId);
  }

}

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

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