You are here

public function FieldHandlerBase::pull in CMS Content Sync 2.1.x

Same name and namespace in other branches
  1. 8 src/Plugin/FieldHandlerBase.php \Drupal\cms_content_sync\Plugin\FieldHandlerBase::pull()
  2. 2.0.x src/Plugin/FieldHandlerBase.php \Drupal\cms_content_sync\Plugin\FieldHandlerBase::pull()

Parameters

\Drupal\cms_content_sync\SyncIntent $intent: The request containing all pushed data

Return value

bool Whether or not the content has been pulled. FALSE is a desired state, meaning the entity should not be pulled according to config.

Throws

\Drupal\cms_content_sync\Exception\SyncException

Overrides FieldHandlerInterface::pull

1 call to FieldHandlerBase::pull()
DefaultPathHandler::pull in src/Plugin/cms_content_sync/field_handler/DefaultPathHandler.php
8 methods override FieldHandlerBase::pull()
DefaultFileHandler::pull in src/Plugin/cms_content_sync/field_handler/DefaultFileHandler.php
DefaultFormattedTextHandler::pull in src/Plugin/cms_content_sync/field_handler/DefaultFormattedTextHandler.php
DefaultLayoutBuilderHandler::pull in src/Plugin/cms_content_sync/field_handler/DefaultLayoutBuilderHandler.php
DefaultLinkHandler::pull in src/Plugin/cms_content_sync/field_handler/DefaultLinkHandler.php
DefaultPanelizerHandler::pull in src/Plugin/cms_content_sync/field_handler/DefaultPanelizerHandler.php

... See full list

File

src/Plugin/FieldHandlerBase.php, line 154

Class

FieldHandlerBase
Common base class for field handler plugins.

Namespace

Drupal\cms_content_sync\Plugin

Code

public function pull(PullIntent $intent) {
  $action = $intent
    ->getAction();
  $entity = $intent
    ->getEntity();

  // Deletion doesn't require any action on field basis for static data.
  if (SyncIntent::ACTION_DELETE == $action) {
    return false;
  }
  if ($intent
    ->shouldMergeChanges() && !$this
    ->forceMergeOverwrite()) {
    return false;
  }
  if (PullIntent::PULL_AUTOMATICALLY != $this->settings['import']) {
    return false;
  }

  // These fields can't be changed.
  if (!$entity
    ->isNew()) {
    if ('default_langcode' === $this->fieldName) {
      return true;
    }
  }
  $data = $intent
    ->getProperty($this->fieldName);
  if (empty($data)) {
    $entity
      ->set($this->fieldName, null);
  }
  else {
    $entity
      ->set($this->fieldName, $data);
  }
  return true;
}