class MappedObject in Salesforce Suite 8.3
Same name and namespace in other branches
- 8.4 modules/salesforce_mapping/src/Entity/MappedObject.php \Drupal\salesforce_mapping\Entity\MappedObject
- 5.0.x modules/salesforce_mapping/src/Entity/MappedObject.php \Drupal\salesforce_mapping\Entity\MappedObject
Defines a Salesforce Mapped Object entity class.
Mapped Objects are content entities, since they're defined by references to other content entities.
Plugin annotation
@ContentEntityType(
id = "salesforce_mapped_object",
label = @Translation("Salesforce Mapped Object"),
module = "salesforce_mapping",
handlers = {
"storage" = "Drupal\salesforce_mapping\MappedObjectStorage",
"storage_schema" = "Drupal\salesforce_mapping\MappedObjectStorageSchema",
"view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
"views_data" = "Drupal\views\EntityViewsData",
"list_builder" = "Drupal\salesforce_mapping\MappedObjectList",
"form" = {
"default" = "Drupal\salesforce_mapping\Form\MappedObjectForm",
"add" = "Drupal\salesforce_mapping\Form\MappedObjectForm",
"edit" = "Drupal\salesforce_mapping\Form\MappedObjectForm",
"delete" = "Drupal\salesforce_mapping\Form\MappedObjectDeleteForm",
},
"access" = "Drupal\salesforce_mapping\MappedObjectAccessControlHandler",
},
base_table = "salesforce_mapped_object",
revision_table = "salesforce_mapped_object_revision",
admin_permission = "administer salesforce mapping",
links = {
"canonical" = "/admin/content/salesforce/{salesforce_mapped_object}",
"add-form" = "/admin/content/salesforce/add",
"edit-form" = "/admin/content/salesforce/{salesforce_mapped_object}/edit",
"delete-form" = "/admin/content/salesforce/{salesforce_mapped_object}/delete"
},
entity_keys = {
"id" = "id",
"entity_id" = "drupal_entity__target_id",
"salesforce_id" = "salesforce_id",
"revision" = "revision_id",
"label" = "salesforce_id"
},
constraints = {
"MappingSfid" = {},
"MappingEntity" = {},
"MappingEntityType" = {}
}
)
Hierarchy
- class \Drupal\Core\Entity\EntityBase implements EntityInterface uses RefinableCacheableDependencyTrait, DependencySerializationTrait
- class \Drupal\Core\Entity\ContentEntityBase implements \Drupal\Core\Entity\IteratorAggregate, ContentEntityInterface, TranslationStatusInterface uses EntityChangesDetectionTrait, SynchronizableEntityTrait
- class \Drupal\Core\Entity\RevisionableContentEntityBase implements RevisionLogInterface uses RevisionLogEntityTrait
- class \Drupal\salesforce_mapping\Entity\MappedObject implements MappedObjectInterface uses EntityChangedTrait
- class \Drupal\Core\Entity\RevisionableContentEntityBase implements RevisionLogInterface uses RevisionLogEntityTrait
- class \Drupal\Core\Entity\ContentEntityBase implements \Drupal\Core\Entity\IteratorAggregate, ContentEntityInterface, TranslationStatusInterface uses EntityChangesDetectionTrait, SynchronizableEntityTrait
Expanded class hierarchy of MappedObject
5 files declare their use of MappedObject
- MappedObjectTest.php in modules/
salesforce_mapping/ tests/ src/ Unit/ MappedObjectTest.php - PushParamsTest.php in modules/
salesforce_mapping/ tests/ src/ Functional/ PushParamsTest.php - PushQueueTest.php in modules/
salesforce_push/ tests/ src/ Functional/ PushQueueTest.php - Rest.php in modules/
salesforce_push/ src/ Plugin/ SalesforcePushQueueProcessor/ Rest.php - salesforce_push.module in modules/
salesforce_push/ salesforce_push.module - Push updates to Salesforce when a Drupal entity is updated.
File
- modules/
salesforce_mapping/ src/ Entity/ MappedObject.php, line 74
Namespace
Drupal\salesforce_mapping\EntityView source
class MappedObject extends RevisionableContentEntityBase implements MappedObjectInterface {
use EntityChangedTrait;
/**
* Salesforce Object.
*
* @var \Drupal\salesforce\SObject
*/
protected $sfObject = NULL;
/**
* Drupal entity stub, as its in the process of being created during pulls.
*
* @var \Drupal\Core\Entity\FieldableEntityInterface
*/
protected $drupalEntityStub = NULL;
/**
* Overrides ContentEntityBase::__construct().
*/
public function __construct(array $values) {
// @TODO: Revisit this language stuff
// Drupal adds a layer of abstraction for translation purposes, even though
// we're talking about numeric identifiers that aren't language-dependent
// in any way, so we have to build our own constructor in order to allow
// callers to ignore this layer.
foreach ($values as &$value) {
if (!is_array($value)) {
$value = [
LanguageInterface::LANGCODE_DEFAULT => $value,
];
}
}
parent::__construct($values, 'salesforce_mapped_object');
}
/**
* {@inheritdoc}
*/
public function save() {
$this->changed = $this
->getRequestTime();
if ($this
->isNew()) {
$this->created = $this
->getRequestTime();
}
return parent::save();
}
/**
* {@inheritdoc}
*/
public function postSave(EntityStorageInterface $storage, $update = TRUE) {
if ($update) {
$this
->pruneRevisions($storage);
}
return parent::postSave($storage, $update);
}
/**
* {@inheritdoc}
*/
public function pruneRevisions(EntityStorageInterface $storage) {
$limit = $this
->config('salesforce.settings')
->get('limit_mapped_object_revisions');
if ($limit <= 0) {
// Limit 0 means no limit.
return;
}
$count = $storage
->getQuery()
->allRevisions()
->condition('id', $this
->id())
->count()
->execute();
// Query for any revision id beyond the limit.
if ($count <= $limit) {
return;
}
$vids_to_delete = $storage
->getQuery()
->allRevisions()
->condition('id', $this
->id())
->range($limit, $count)
->sort('changed', 'DESC')
->execute();
if (empty($vids_to_delete)) {
return;
}
foreach ($vids_to_delete as $vid => $dummy) {
/** @var \Drupal\Core\Entity\RevisionableInterface $revision */
if ($revision = $storage
->loadRevision($vid)) {
// Prevent deletion if this is the default revision.
if ($revision
->isDefaultRevision()) {
continue;
}
}
$storage
->deleteRevision($vid);
}
return $this;
}
/**
* {@inheritdoc}
*/
public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
$i = 0;
if (\Drupal::moduleHandler()
->moduleExists('dynamic_entity_reference')) {
$fields['drupal_entity'] = BaseFieldDefinition::create('dynamic_entity_reference')
->setLabel(t('Mapped Entity'))
->setDescription(t('Reference to the Drupal entity mapped by this mapped object.'))
->setRevisionable(FALSE)
->setCardinality(1)
->setDisplayOptions('form', [
'type' => 'dynamic_entity_reference_default',
'weight' => $i,
])
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'dynamic_entity_reference_label',
'weight' => $i++,
])
->setDisplayConfigurable('form', TRUE)
->setDisplayConfigurable('view', TRUE);
}
$fields['salesforce_mapping'] = BaseFieldDefinition::create('entity_reference')
->setLabel(t('Salesforce mapping'))
->setDescription(t('Salesforce mapping used to push/pull this mapped object'))
->setRevisionable(TRUE)
->setSetting('max_length', EntityTypeInterface::ID_MAX_LENGTH)
->setSetting('target_type', 'salesforce_mapping')
->setSetting('handler', 'default')
->setRequired(TRUE)
->setDisplayOptions('form', [
'type' => 'options_select',
'weight' => $i,
])
->setSettings([
'allowed_values' => [],
])
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'string',
'weight' => $i++,
]);
// @TODO make this work with Drupal\salesforce\SFID (?)
$fields['salesforce_id'] = BaseFieldDefinition::create('string')
->setLabel(t('Salesforce ID'))
->setDescription(t('Reference to the mapped Salesforce object (SObject)'))
->setRevisionable(TRUE)
->setTranslatable(FALSE)
->setSetting('is_ascii', TRUE)
->setSetting('max_length', SFID::MAX_LENGTH)
->setDisplayOptions('form', [
'type' => 'string_textfield',
'weight' => $i++,
])
->setDisplayOptions('view', [
'type' => 'hidden',
]);
$fields['salesforce_link'] = BaseFieldDefinition::create('salesforce_link')
->setLabel('Salesforce Record')
->setDescription(t('Link to salesforce record'))
->setRevisionable(FALSE)
->setTranslatable(FALSE)
->setComputed(TRUE)
->setClass(SalesforceLinkItemList::class)
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'string',
'weight' => $i++,
]);
$fields['created'] = BaseFieldDefinition::create('created')
->setLabel(t('Authored on'))
->setDescription(t('The time that the object mapping was created.'))
->setRevisionable(TRUE)
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'timestamp',
'weight' => $i++,
]);
$fields['changed'] = BaseFieldDefinition::create('changed')
->setLabel(t('Changed'))
->setDescription(t('The time that the object mapping was last edited.'))
->setRevisionable(TRUE)
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'string',
'weight' => $i++,
]);
$fields['entity_updated'] = BaseFieldDefinition::create('timestamp')
->setLabel(t('Drupal Entity Updated'))
->setDescription(t('The Unix timestamp when the mapped Drupal entity was last updated.'))
->setRevisionable(TRUE)
->setDefaultValue(0)
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'string',
'weight' => $i++,
]);
$fields['last_sync_status'] = BaseFieldDefinition::create('boolean')
->setLabel(t('Status of most recent sync'))
->setDescription(t('Indicates whether most recent sync was successful or not.'))
->setRevisionable(TRUE);
$fields['last_sync_action'] = BaseFieldDefinition::create('string')
->setLabel(t('Action of most recent sync'))
->setDescription(t('Indicates acion which triggered most recent sync for this mapped object'))
->setSetting('is_ascii', TRUE)
->setSetting('max_length', MappingConstants::SALESFORCE_MAPPING_TRIGGER_MAX_LENGTH)
->setRevisionable(TRUE);
$fields['force_pull'] = BaseFieldDefinition::create('boolean')
->setLabel(t('Force Pull'))
->setDescription(t('Whether to ignore entity timestamps and force an update on the next pull for this record.'))
->setRevisionable(FALSE);
// @see ContentEntityBase::baseFieldDefinitions
// and RevisionLogEntityTrait::revisionLogBaseFieldDefinitions
$fields += parent::baseFieldDefinitions($entity_type);
return $fields;
}
/**
* {@inheritdoc}
*/
public function getChanged() {
return $this
->get('entity_updated')->value;
}
/**
* {@inheritdoc}
*/
public function getMapping() {
return $this->salesforce_mapping->entity;
}
/**
* {@inheritdoc}
*/
public function getMappedEntity() {
return $this->drupal_entity->entity;
}
/**
* {@inheritdoc}
*/
public function setDrupalEntity(EntityInterface $entity = NULL) {
$this
->set('drupal_entity', $entity);
return $this;
}
/**
* {@inheritdoc}
*/
public function client() {
return \Drupal::service('salesforce.client');
}
/**
* {@inheritdoc}
*/
public function eventDispatcher() {
return \Drupal::service('event_dispatcher');
}
/**
* {@inheritdoc}
*/
public function config($name) {
return \Drupal::service('config.factory')
->get($name);
}
/**
* {@inheritdoc}
*/
public function getSalesforceUrl() {
return $this
->client()
->getInstanceUrl() . '/' . $this->salesforce_id->value;
}
/**
* {@inheritdoc}
*/
public function sfid() {
return $this->salesforce_id->value;
}
/**
* {@inheritdoc}
*/
public function push() {
// @TODO need error handling, logging, and hook invocations within this function, where we can provide full context, or short of that clear documentation on how callers should handle errors and exceptions. At the very least, we need to make sure to include $params in some kind of exception if we're not going to handle it inside this function.
$mapping = $this
->getMapping();
$drupal_entity = $this
->getMappedEntity();
// Previously hook_salesforce_push_params_alter.
$params = new PushParams($mapping, $drupal_entity);
$this
->eventDispatcher()
->dispatch(SalesforceEvents::PUSH_PARAMS, new SalesforcePushParamsEvent($this, $params));
// @TODO is this the right place for this logic to live?
// Cases:
// 1. Already mapped to an existing Salesforce object + always_upsert not
// set? Update.
// 2. Not mapped, but upsert key is defined? Upsert.
// 3. Not mapped & no upsert key? Create.
$result = FALSE;
$action = '';
if ($this
->sfid() && !$mapping
->alwaysUpsert()) {
$action = 'update';
$result = $this
->client()
->objectUpdate($mapping
->getSalesforceObjectType(), $this
->sfid(), $params
->getParams());
}
elseif ($mapping
->hasKey()) {
$action = 'upsert';
$result = $this
->client()
->objectUpsert($mapping
->getSalesforceObjectType(), $mapping
->getKeyField(), $mapping
->getKeyValue($drupal_entity), $params
->getParams());
}
else {
$action = 'create';
$result = $this
->client()
->objectCreate($mapping
->getSalesforceObjectType(), $params
->getParams());
}
if ($drupal_entity instanceof EntityChangedInterface) {
$this
->set('entity_updated', $drupal_entity
->getChangedTime());
}
// @TODO: catch EntityStorageException ? Others ?
if ($result instanceof SFID) {
$this
->set('salesforce_id', (string) $result);
}
// @TODO setNewRevision not chainable, per https://www.drupal.org/node/2839075
$this
->setNewRevision(TRUE);
$this
->set('last_sync_action', 'push_' . $action)
->set('last_sync_status', TRUE)
->set('revision_log_message', '')
->save();
// Previously hook_salesforce_push_success.
$this
->eventDispatcher()
->dispatch(SalesforceEvents::PUSH_SUCCESS, new SalesforcePushParamsEvent($this, $params));
return $result;
}
/**
* {@inheritdoc}
*/
public function pushDelete() {
$mapping = $this
->getMapping();
$this
->client()
->objectDelete($mapping
->getSalesforceObjectType(), $this
->sfid());
$this
->setNewRevision(TRUE);
$this
->set('last_sync_action', 'push_delete')
->set('last_sync_status', TRUE)
->save();
return $this;
}
/**
* {@inheritdoc}
*/
public function setDrupalEntityStub(EntityInterface $entity = NULL) {
$this->drupalEntityStub = $entity;
return $this;
}
/**
* {@inheritdoc}
*/
public function getDrupalEntityStub() {
return $this->drupalEntityStub;
}
/**
* {@inheritdoc}
*/
public function setSalesforceRecord(SObject $sfObject) {
$this->sfObject = $sfObject;
return $this;
}
/**
* {@inheritdoc}
*/
public function getSalesforceRecord() {
return $this->sfObject;
}
/**
* {@inheritdoc}
*/
public function pull() {
$mapping = $this
->getMapping();
// If the pull isn't coming from a cron job.
if ($this->sfObject == NULL) {
if ($this
->sfid()) {
$this->sfObject = $this
->client()
->objectRead($mapping
->getSalesforceObjectType(), $this
->sfid());
}
elseif ($mapping
->hasKey()) {
$this->sfObject = $this
->client()
->objectReadbyExternalId($mapping
->getSalesforceObjectType(), $mapping
->getKeyField(), $mapping
->getKeyValue($this
->getMappedEntity()));
$this
->set('salesforce_id', (string) $this->sfObject
->id());
}
}
// No object found means there's nothing to pull.
if (!$this->sfObject instanceof SObject) {
throw new SalesforceException('Nothing to pull. Please specify a Salesforce ID, or choose a mapping with an Upsert Key defined.');
}
// @TODO better way to handle push/pull:
$fields = $mapping
->getPullFields();
/** @var \Drupal\Core\Entity\FieldableEntityInterface $drupal_entity */
$drupal_entity = $this
->getMappedEntity() ?: $this
->getDrupalEntityStub();
/** @var \Drupal\salesforce_mapping\SalesforceMappingFieldPluginInterface $field */
foreach ($fields as $field) {
try {
$value = $field
->pullValue($this->sfObject, $drupal_entity, $mapping);
} catch (\Exception $e) {
// Field missing from SObject? Skip it.
$message = 'Field @sobj.@sffield not found on @sfid';
$args = [
'@sobj' => $mapping
->getSalesforceObjectType(),
'@sffield' => $field
->config('salesforce_field'),
'@sfid' => $this
->sfid(),
];
$this
->eventDispatcher()
->dispatch(SalesforceEvents::NOTICE, new SalesforceNoticeEvent($e, $message, $args));
continue;
}
$this
->eventDispatcher()
->dispatch(SalesforceEvents::PULL_ENTITY_VALUE, new SalesforcePullEntityValueEvent($value, $field, $this));
try {
// If $value is TypedData, it should have been set during pullValue().
if (!$value instanceof TypedDataInterface) {
$drupal_field = $field
->get('drupal_field_value');
$drupal_entity
->set($drupal_field, $value);
}
} catch (\Exception $e) {
$message = 'Exception during pull for @sfobj.@sffield @sfid to @dobj.@dprop @did with value @v';
$args = [
'@sfobj' => $mapping
->getSalesforceObjectType(),
'@sffield' => $field
->config('salesforce_field'),
'@sfid' => $this
->sfid(),
'@dobj' => $drupal_entity
->getEntityTypeId(),
'@dprop' => $field
->get('drupal_field_value'),
'@did' => $drupal_entity
->id(),
'@v' => $value,
];
$this
->eventDispatcher()
->dispatch(SalesforceEvents::WARNING, new SalesforceWarningEvent($e, $message, $args));
continue;
}
}
// @TODO: Event dispatching and entity saving should not be happening in this context, but inside a controller. This class needs to be more model-like.
$this
->eventDispatcher()
->dispatch(SalesforceEvents::PULL_PRESAVE, new SalesforcePullEvent($this, $drupal_entity
->isNew() ? MappingConstants::SALESFORCE_MAPPING_SYNC_SF_CREATE : MappingConstants::SALESFORCE_MAPPING_SYNC_SF_UPDATE));
// Set a flag here to indicate that a pull is happening, to avoid
// triggering a push.
$drupal_entity->salesforce_pull = TRUE;
$drupal_entity
->save();
// Update mapping object.
$this
->set('drupal_entity', $drupal_entity)
->set('entity_updated', $this
->getRequestTime())
->set('last_sync_action', 'pull')
->set('last_sync_status', TRUE)
->set('force_pull', 0)
->save();
return $this;
}
/**
* Testable func to return the request time server variable.
*
* @return int
* The request time.
*/
protected function getRequestTime() {
return \Drupal::time()
->getRequestTime();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CacheableDependencyTrait:: |
protected | property | Cache contexts. | |
CacheableDependencyTrait:: |
protected | property | Cache max-age. | |
CacheableDependencyTrait:: |
protected | property | Cache tags. | |
CacheableDependencyTrait:: |
protected | function | Sets cacheability; useful for value object constructors. | |
ContentEntityBase:: |
protected | property | Language code identifying the entity active language. | |
ContentEntityBase:: |
protected | property | Local cache for the default language code. | |
ContentEntityBase:: |
protected | property | The default langcode entity key. | |
ContentEntityBase:: |
protected | property | Whether the revision translation affected flag has been enforced. | |
ContentEntityBase:: |
protected | property | Holds untranslatable entity keys such as the ID, bundle, and revision ID. | |
ContentEntityBase:: |
protected | property | Local cache for field definitions. | |
ContentEntityBase:: |
protected | property | The array of fields, each being an instance of FieldItemListInterface. | |
ContentEntityBase:: |
protected static | property | Local cache for fields to skip from the checking for translation changes. | |
ContentEntityBase:: |
protected | property | Indicates whether this is the default revision. | |
ContentEntityBase:: |
protected | property | The language entity key. | |
ContentEntityBase:: |
protected | property | Local cache for the available language objects. | |
ContentEntityBase:: |
protected | property | The loaded revision ID before the new revision was set. | |
ContentEntityBase:: |
protected | property | Boolean indicating whether a new revision should be created on save. | |
ContentEntityBase:: |
protected | property | The revision translation affected entity key. | |
ContentEntityBase:: |
protected | property | Holds translatable entity keys such as the label. | |
ContentEntityBase:: |
protected | property | A flag indicating whether a translation object is being initialized. | |
ContentEntityBase:: |
protected | property | An array of entity translation metadata. | |
ContentEntityBase:: |
protected | property | Whether entity validation was performed. | |
ContentEntityBase:: |
protected | property | Whether entity validation is required before saving the entity. | |
ContentEntityBase:: |
protected | property | The plain data values of the contained fields. | |
ContentEntityBase:: |
public | function |
Checks data value access. Overrides EntityBase:: |
1 |
ContentEntityBase:: |
public | function |
Adds a new translation to the translatable object. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Gets the bundle of the entity. Overrides EntityBase:: |
|
ContentEntityBase:: |
public static | function |
Provides field definitions for a specific bundle. Overrides FieldableEntityInterface:: |
4 |
ContentEntityBase:: |
protected | function | Clear entity translation object cache to remove stale references. | |
ContentEntityBase:: |
public | function |
Creates a duplicate of the entity. Overrides EntityBase:: |
1 |
ContentEntityBase:: |
public | function |
Gets a field item list. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
protected | function | Gets the value of the given entity key, if defined. | 1 |
ContentEntityBase:: |
public | function |
Gets the definition of a contained field. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
public | function |
Gets an array of field definitions of all contained fields. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
public | function |
Gets an array of all field item lists. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
protected | function | Returns an array of field names to skip in ::hasTranslationChanges. | 1 |
ContentEntityBase:: |
public | function | ||
ContentEntityBase:: |
protected | function | ||
ContentEntityBase:: |
public | function |
Gets the loaded Revision ID of the entity. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Gets the revision identifier of the entity. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Gets an array of field item lists for translatable fields. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
protected | function | Gets a translated field. | |
ContentEntityBase:: |
public | function |
Gets a translation of the data. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Returns the languages the data is translated to. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Returns the translation status. Overrides TranslationStatusInterface:: |
|
ContentEntityBase:: |
public | function |
Returns the translatable object referring to the original language. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Determines whether the entity has a field with the given name. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
public | function |
Checks there is a translation for the given language code. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Determines if the current translation of the entity has unsaved changes. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Gets the identifier. Overrides EntityBase:: |
|
ContentEntityBase:: |
protected | function | Instantiates a translation object for an existing translation. | |
ContentEntityBase:: |
public | function |
Checks if this entity is the default revision. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks whether the translation is the default one. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks if untranslatable fields should affect only the default translation. Overrides TranslatableRevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks if this entity is the latest revision. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks whether this is the latest revision affecting this translation. Overrides TranslatableRevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Determines whether a new revision should be created on save. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks whether the translation is new. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks whether the current translation is affected by the current revision. Overrides TranslatableRevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks if the revision translation affected flag value has been enforced. Overrides TranslatableRevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Returns the translation support status. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Checks whether entity validation is required before saving the entity. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
public | function |
Gets the label of the entity. Overrides EntityBase:: |
2 |
ContentEntityBase:: |
public | function |
Gets the language of the entity. Overrides EntityBase:: |
|
ContentEntityBase:: |
public | function |
Reacts to changes to a field. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
public | function |
Acts on a created entity before hooks are invoked. Overrides EntityBase:: |
|
ContentEntityBase:: |
public | function |
Acts on an entity before the presave hook is invoked. Overrides EntityBase:: |
5 |
ContentEntityBase:: |
public | function |
Acts on a revision before it gets saved. Overrides RevisionableInterface:: |
2 |
ContentEntityBase:: |
public | function |
Gets a list of entities referenced by this entity. Overrides EntityBase:: |
1 |
ContentEntityBase:: |
public | function |
Removes the translation identified by the given language code. Overrides TranslatableInterface:: |
|
ContentEntityBase:: |
public | function |
Sets a field value. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
protected | function | Populates the local cache for the default language code. | |
ContentEntityBase:: |
public | function |
Enforces an entity to be saved as a new revision. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Marks the current revision translation as affected. Overrides TranslatableRevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Enforces the revision translation affected flag value. Overrides TranslatableRevisionableInterface:: |
|
ContentEntityBase:: |
public | function |
Sets whether entity validation is required before saving the entity. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
public | function |
Gets an array of all property values. Overrides EntityBase:: |
|
ContentEntityBase:: |
protected | function | Updates language for already instantiated fields. | |
ContentEntityBase:: |
public | function |
Updates the loaded Revision ID with the revision ID. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function | Updates the original values with the interim changes. | |
ContentEntityBase:: |
public | function |
Gets the entity UUID (Universally Unique Identifier). Overrides EntityBase:: |
|
ContentEntityBase:: |
public | function |
Validates the currently set values. Overrides FieldableEntityInterface:: |
|
ContentEntityBase:: |
public | function |
Checks whether the entity object was a default revision when it was saved. Overrides RevisionableInterface:: |
|
ContentEntityBase:: |
public | function | Magic method: Implements a deep clone. | |
ContentEntityBase:: |
public | function | Implements the magic method for getting object properties. | |
ContentEntityBase:: |
public | function | Implements the magic method for isset(). | |
ContentEntityBase:: |
public | function | Implements the magic method for setting object properties. | |
ContentEntityBase:: |
public | function |
Overrides EntityBase:: |
|
ContentEntityBase:: |
public | function | Implements the magic method for unset(). | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | Aliased as: traitSleep | 1 |
DependencySerializationTrait:: |
public | function | 2 | |
EntityBase:: |
protected | property | Boolean indicating whether the entity should be forced to be new. | |
EntityBase:: |
protected | property | The entity type. | |
EntityBase:: |
protected | property | A typed data object wrapping this entity. | |
EntityBase:: |
public static | function |
Constructs a new entity object, without permanently saving it. Overrides EntityInterface:: |
|
EntityBase:: |
public | function |
Deletes an entity permanently. Overrides EntityInterface:: |
2 |
EntityBase:: |
public | function |
Enforces an entity to be new. Overrides EntityInterface:: |
|
EntityBase:: |
protected | function | Gets the entity manager. | |
EntityBase:: |
protected | function | Gets the entity type bundle info service. | |
EntityBase:: |
protected | function | Gets the entity type manager. | |
EntityBase:: |
public | function |
The cache contexts associated with this object. Overrides CacheableDependencyTrait:: |
|
EntityBase:: |
public | function |
The maximum age for which this object may be cached. Overrides CacheableDependencyTrait:: |
|
EntityBase:: |
public | function |
The cache tags associated with this object. Overrides CacheableDependencyTrait:: |
|
EntityBase:: |
public | function |
Returns the cache tags that should be used to invalidate caches. Overrides EntityInterface:: |
2 |
EntityBase:: |
public | function |
Gets the key that is used to store configuration dependencies. Overrides EntityInterface:: |
|
EntityBase:: |
public | function |
Gets the configuration dependency name. Overrides EntityInterface:: |
1 |
EntityBase:: |
public | function |
Gets the configuration target identifier for the entity. Overrides EntityInterface:: |
1 |
EntityBase:: |
public | function |
Gets the entity type definition. Overrides EntityInterface:: |
|
EntityBase:: |
public | function |
Gets the ID of the type of the entity. Overrides EntityInterface:: |
|
EntityBase:: |
protected | function | The list cache tags to invalidate for this entity. | |
EntityBase:: |
public | function |
Gets the original ID. Overrides EntityInterface:: |
1 |
EntityBase:: |
public | function |
Gets a typed data object for this entity object. Overrides EntityInterface:: |
|
EntityBase:: |
public | function |
Indicates if a link template exists for a given key. Overrides EntityInterface:: |
|
EntityBase:: |
protected static | function | Invalidates an entity's cache tags upon delete. | 1 |
EntityBase:: |
protected | function | Invalidates an entity's cache tags upon save. | 1 |
EntityBase:: |
public | function |
Determines whether the entity is new. Overrides EntityInterface:: |
2 |
EntityBase:: |
protected | function | Gets the language manager. | |
EntityBase:: |
public | function |
Deprecated way of generating a link to the entity. See toLink(). Overrides EntityInterface:: |
1 |
EntityBase:: |
protected | function | Gets an array link templates. | 1 |
EntityBase:: |
public static | function |
Loads an entity. Overrides EntityInterface:: |
|
EntityBase:: |
public static | function |
Loads one or more entities. Overrides EntityInterface:: |
|
EntityBase:: |
public static | function |
Acts on deleted entities before the delete hook is invoked. Overrides EntityInterface:: |
16 |
EntityBase:: |
public static | function |
Acts on loaded entities. Overrides EntityInterface:: |
2 |
EntityBase:: |
public static | function |
Changes the values of an entity before it is created. Overrides EntityInterface:: |
5 |
EntityBase:: |
public static | function |
Acts on entities before they are deleted and before hooks are invoked. Overrides EntityInterface:: |
4 |
EntityBase:: |
public | function |
Sets the original ID. Overrides EntityInterface:: |
1 |
EntityBase:: |
public | function |
Generates the HTML for a link to this entity. Overrides EntityInterface:: |
|
EntityBase:: |
public | function |
Gets the URL object for the entity. Overrides EntityInterface:: |
2 |
EntityBase:: |
public | function |
Gets a list of URI relationships supported by this entity. Overrides EntityInterface:: |
|
EntityBase:: |
public | function |
Gets the public URL for this entity. Overrides EntityInterface:: |
2 |
EntityBase:: |
public | function |
Gets the URL object for the entity. Overrides EntityInterface:: |
1 |
EntityBase:: |
protected | function | Gets an array of placeholders for this entity. | 2 |
EntityBase:: |
protected | function | Gets the UUID generator. | |
EntityChangedTrait:: |
public | function | Gets the timestamp of the last entity change for the current translation. | |
EntityChangedTrait:: |
public | function | Returns the timestamp of the last entity change across all translations. | |
EntityChangedTrait:: |
public | function | Sets the timestamp of the last entity change for the current translation. | |
EntityChangesDetectionTrait:: |
protected | function | Returns an array of field names to skip when checking for changes. Aliased as: traitGetFieldsToSkipFromTranslationChangesCheck | |
MappedObject:: |
protected | property | Drupal entity stub, as its in the process of being created during pulls. | |
MappedObject:: |
protected | property | Salesforce Object. | |
MappedObject:: |
public static | function |
Provides base field definitions for an entity type. Overrides RevisionableContentEntityBase:: |
|
MappedObject:: |
public | function |
Wrapper for salesforce.client service. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Wrapper for config getter. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Wrapper for Drupal core event_dispatcher service. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Return a numeric timestamp for comparing to Salesforce record timestamp. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Wrapper for drupalEntityStub. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Get the mapped Drupal entity. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Get the attached mapping entity. Overrides MappedObjectInterface:: |
|
MappedObject:: |
protected | function | Testable func to return the request time server variable. | |
MappedObject:: |
public | function |
Get the mapped Salesforce record, only available during pull. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Get a salesforce url for the linked record. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Acts on a saved entity before the insert or update hook is invoked. Overrides ContentEntityBase:: |
|
MappedObject:: |
public | function |
Based on the Mapped Object revision limit, delete old revisions. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Pull the mapped SF object data from Salesforce. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Push data to Salesforce. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Delete the mapped SF object in Salesforce. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Saves an entity permanently. Overrides EntityBase:: |
|
MappedObject:: |
public | function |
Set a Drupal entity for this mapped object. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Attach a Drupal entity to the mapped object. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Assign Salesforce data to this mapped object, in preparation for saving. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Getter for salesforce_id. Overrides MappedObjectInterface:: |
|
MappedObject:: |
public | function |
Overrides ContentEntityBase::__construct(). Overrides ContentEntityBase:: |
|
RefinableCacheableDependencyTrait:: |
public | function | 1 | |
RefinableCacheableDependencyTrait:: |
public | function | ||
RefinableCacheableDependencyTrait:: |
public | function | ||
RefinableCacheableDependencyTrait:: |
public | function | ||
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionCreationTime(). | 1 |
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionLogMessage(). | 1 |
RevisionLogEntityTrait:: |
protected static | function | Gets the name of a revision metadata field. | |
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUser(). | 1 |
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::getRevisionUserId(). | 1 |
RevisionLogEntityTrait:: |
public static | function | Provides revision-related base field definitions for an entity type. | |
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionCreationTime(). | 1 |
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionLogMessage(). | 1 |
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUser(). | 1 |
RevisionLogEntityTrait:: |
public | function | Implements \Drupal\Core\Entity\RevisionLogInterface::setRevisionUserId(). | 1 |
SynchronizableEntityTrait:: |
protected | property | Whether this entity is being created, updated or deleted through a synchronization process. | |
SynchronizableEntityTrait:: |
public | function | ||
SynchronizableEntityTrait:: |
public | function | ||
TranslationStatusInterface:: |
constant | Status code identifying a newly created translation. | ||
TranslationStatusInterface:: |
constant | Status code identifying an existing translation. | ||
TranslationStatusInterface:: |
constant | Status code identifying a removed translation. |