You are here

class Individual in CRM Core 8.2

Same name and namespace in other branches
  1. 8.3 modules/crm_core_contact/src/Entity/Individual.php \Drupal\crm_core_contact\Entity\Individual
  2. 8 modules/crm_core_contact/src/Entity/Individual.php \Drupal\crm_core_contact\Entity\Individual

CRM Individual Entity Class.

Plugin annotation


@ContentEntityType(
  id = "crm_core_individual",
  label = @Translation("CRM Core Individual"),
  bundle_label = @Translation("Individual type"),
  handlers = {
    "access" = "Drupal\crm_core_contact\IndividualAccessControlHandler",
    "form" = {
      "default" = "Drupal\crm_core_contact\Form\IndividualForm",
      "delete" = "Drupal\crm_core_contact\Form\IndividualDeleteForm",
    },
    "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
    "list_builder" = "Drupal\crm_core_contact\IndividualListBuilder",
    "views_data" = "Drupal\views\EntityViewsData",
    "route_provider" = {
      "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
      "revision" = "\Drupal\entity\Routing\RevisionRouteProvider",
    },
  },
  show_revision_ui = TRUE,
  admin_permission = "administer crm_core_individual entities",
  base_table = "crm_core_individual",
  revision_table = "crm_core_individual_revision",
  entity_keys = {
    "id" = "individual_id",
    "revision" = "revision_id",
    "bundle" = "type",
    "uuid" = "uuid",
    "langcode" = "langcode",
  },
  bundle_entity_type = "crm_core_individual_type",
  field_ui_base_route = "entity.crm_core_individual_type.edit_form",
  permission_granularity = "bundle",
  permission_labels = {
    "singular" = @Translation("Individual"),
    "plural" = @Translation("Individuals"),
  },
  links = {
    "add-page" = "/crm-core/individual/add",
    "add-form" = "/crm-core/individual/add/{crm_core_individual_type}",
    "canonical" = "/crm-core/individual/{crm_core_individual}",
    "collection" = "/crm-core/individual",
    "edit-form" = "/crm-core/individual/{crm_core_individual}/edit",
    "delete-form" = "/crm-core/individual/{crm_core_individual}/delete",
    "revision" = "/crm-core/individual/{crm_core_individual}/revisions/{crm_core_individual_revision}/view",
    "revision-revert-form" = "/crm-core/individual/{crm_core_individual}/revisions/{crm_core_individual_revision}/revert",
    "version-history" = "/crm-core/individual/{crm_core_individual}/revisions",
  }
)

Hierarchy

Expanded class hierarchy of Individual

7 files declare their use of Individual
ActivityEntityPreDeleteTest.php in modules/crm_core_activity/tests/src/Kernel/ActivityEntityPreDeleteTest.php
ActivityTypePluginTest.php in modules/crm_core_activity/tests/src/Kernel/ActivityTypePluginTest.php
ActivityUiTest.php in modules/crm_core_activity/src/Tests/ActivityUiTest.php
crm_core_user_sync.module in modules/crm_core_user_sync/crm_core_user_sync.module
FieldMatcherTest.php in modules/crm_core_match/tests/src/Kernel/FieldMatcherTest.php

... See full list

1 string reference to 'Individual'
crm_core_match.matcher.individual.yml in modules/crm_core_match/config/install/crm_core_match.matcher.individual.yml
modules/crm_core_match/config/install/crm_core_match.matcher.individual.yml

File

modules/crm_core_contact/src/Entity/Individual.php, line 66

Namespace

Drupal\crm_core_contact\Entity
View source
class Individual extends RevisionableContentEntityBase implements IndividualInterface {
  use EntityChangedTrait;
  use EntityOwnerTrait;

  /**
   * {@inheritdoc}
   */
  public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
    $fields = parent::baseFieldDefinitions($entity_type);
    $fields['created'] = BaseFieldDefinition::create('created')
      ->setLabel(t('Created'))
      ->setDescription(t('The time that the individual was created.'))
      ->setRevisionable(TRUE)
      ->setDisplayOptions('form', [
      'type' => 'datetime_timestamp',
      'weight' => -5,
    ])
      ->setDisplayConfigurable('form', TRUE);
    $fields['changed'] = BaseFieldDefinition::create('changed')
      ->setLabel(t('Changed'))
      ->setDescription(t('The time that the individual was last edited.'))
      ->setRevisionable(TRUE);
    $fields['uid'] = EntityOwnerTrait::getOwnerFieldDefinition()
      ->setDescription(t('The user that is the individual owner.'));
    $fields['name'] = BaseFieldDefinition::create('name')
      ->setLabel(t('Name'))
      ->setDescription(t('Name of the individual.'))
      ->setRevisionable(TRUE)
      ->setDisplayOptions('form', [
      'type' => 'name_default',
      'weight' => 0,
    ])
      ->setDisplayOptions('view', [
      'label' => 'hidden',
      'type' => 'name_default',
      'weight' => 0,
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', TRUE);
    $fields['sex'] = BaseFieldDefinition::create('list_string')
      ->setLabel(t('Sex'))
      ->setDescription(t('Sex of the individual.'))
      ->setSetting('allowed_values', [
      'unknown' => t('Unknown'),
      'female' => t('Female'),
      'male' => t('Male'),
      'other' => t('Other'),
    ])
      ->setDefaultValue('unknown')
      ->setDisplayOptions('form', [
      'type' => 'options_select',
      'weight' => 1,
    ]);
    $fields['birth_date'] = BaseFieldDefinition::create('datetime')
      ->setLabel(t('Birth date'))
      ->setDescription(t('Birth date of the individual.'))
      ->setRevisionable(TRUE)
      ->setSetting('datetime_type', [
      'datetime_type' => 'date',
    ])
      ->setDisplayOptions('form', [
      'type' => 'datetime_datelist',
      'weight' => 2,
    ]);
    $fields['email'] = BaseFieldDefinition::create('email_with_type')
      ->setLabel(t('Email'))
      ->setDescription(t('Email of the individual.'))
      ->setRevisionable(TRUE)
      ->setCardinality(FieldStorageConfigInterface::CARDINALITY_UNLIMITED)
      ->setSetting('email_types', [
      'private' => t('Private'),
      'corporate' => t('Corporate'),
    ])
      ->setDisplayOptions('form', [
      'type' => 'email_with_type',
      'weight' => 3,
    ]);
    return $fields;
  }

  /**
   * {@inheritdoc}
   */
  public function setMainEmail(array $email) {
    $this
      ->get('email')
      ->set(0, $email);
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getMainEmail() {
    return $this
      ->get('email')
      ->first()
      ->getValue();
  }

  /**
   * {@inheritdoc}
   */
  public function addEmail(array $email) {
    $this
      ->get('email')
      ->appendItem($email);
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getEmailList() {
    return $this
      ->get('email')
      ->getValue();
  }

  /**
   * {@inheritdoc}
   */
  public function setBirthDate($birth_date) {
    $this
      ->set('birth_date', $birth_date);
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getBirthDate() {
    return $this
      ->get('birth_date')->value;
  }

  /**
   * {@inheritdoc}
   */
  public function setSex($sex) {
    $this
      ->set('sex', $sex);
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getSex() {
    return $this
      ->get('sex')->value;
  }

  /**
   * {@inheritdoc}
   */
  public function preSaveRevision(EntityStorageInterface $storage, \stdClass $record) {
    parent::preSaveRevision($storage, $record);
    $account = \Drupal::currentUser();
    $record->uid = $account
      ->id();
  }

  /**
   * Gets the primary address.
   *
   * @return \Drupal\Core\Field\FieldItemListInterface|\Drupal\Core\TypedData\TypedDataInterface
   *   The address property object.
   */
  public function getPrimaryAddress() {
    return $this
      ->getPrimaryField('address');
  }

  /**
   * Gets the primary email.
   *
   * @return \Drupal\Core\Field\FieldItemListInterface|\Drupal\Core\TypedData\TypedDataInterface
   *   The email property object.
   */
  public function getPrimaryEmail() {
    return $this
      ->getPrimaryField('email');
  }

  /**
   * Gets the primary phone.
   *
   * @return \Drupal\Core\Field\FieldItemListInterface|\Drupal\Core\TypedData\TypedDataInterface
   *   The phone property object.
   */
  public function getPrimaryPhone() {
    return $this
      ->getPrimaryField('phone');
  }

  /**
   * Gets the primary field.
   *
   * @param string $field
   *   The primary field name.
   *
   * @return \Drupal\Core\Field\FieldItemListInterface|\Drupal\Core\TypedData\TypedDataInterface
   *   The primary field property object.
   *
   * @throws \InvalidArgumentException
   *   If no primary field is configured.
   *   If the configured primary field does not exist.
   */
  public function getPrimaryField($field) {
    $type = $this
      ->get('type')->entity;
    $name = empty($type->primary_fields[$field]) ? '' : $type->primary_fields[$field];
    return $this
      ->get($name);
  }

  /**
   * {@inheritdoc}
   */
  public function label() {
    $label = '';
    if ($item = $this
      ->get('name')
      ->first()) {
      $label = "{$item->given} {$item->family}";
    }
    if (empty(trim($label))) {
      $label = t('Nameless #@id', [
        '@id' => $this
          ->id(),
      ]);
    }
    \Drupal::moduleHandler()
      ->alter('crm_core_individual_label', $label, $this);
    return $label;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AccessibleInterface::access public function Checks data value access. 9
CacheableDependencyInterface::getCacheContexts public function The cache contexts associated with this object. 34
CacheableDependencyInterface::getCacheMaxAge public function The maximum age for which this object may be cached. 34
CacheableDependencyInterface::getCacheTags public function The cache tags associated with this object. 27
EntityChangedTrait::getChangedTime public function Gets the timestamp of the last entity change for the current translation.
EntityChangedTrait::getChangedTimeAcrossTranslations public function Returns the timestamp of the last entity change across all translations.
EntityChangedTrait::setChangedTime public function Sets the timestamp of the last entity change for the current translation.
EntityInterface::bundle public function Gets the bundle of the entity. 2
EntityInterface::create public static function Constructs a new entity object, without permanently saving it. 2
EntityInterface::createDuplicate public function Creates a duplicate of the entity. 2
EntityInterface::delete public function Deletes an entity permanently. 2
EntityInterface::enforceIsNew public function Enforces an entity to be new. 2
EntityInterface::getCacheTagsToInvalidate public function Returns the cache tags that should be used to invalidate caches. 2
EntityInterface::getConfigDependencyKey public function Gets the key that is used to store configuration dependencies. 2
EntityInterface::getConfigDependencyName public function Gets the configuration dependency name. 2
EntityInterface::getConfigTarget public function Gets the configuration target identifier for the entity. 2
EntityInterface::getEntityType public function Gets the entity type definition. 2
EntityInterface::getEntityTypeId public function Gets the ID of the type of the entity. 2
EntityInterface::getOriginalId public function Gets the original ID. 2
EntityInterface::getTypedData public function Gets a typed data object for this entity object. 2
EntityInterface::hasLinkTemplate public function Indicates if a link template exists for a given key. 2
EntityInterface::id public function Gets the identifier. 2
EntityInterface::isNew public function Determines whether the entity is new. 2
EntityInterface::language public function Gets the language of the entity. 2
EntityInterface::link Deprecated public function Deprecated way of generating a link to the entity. See toLink(). 2
EntityInterface::load public static function Loads an entity. 2
EntityInterface::loadMultiple public static function Loads one or more entities. 2
EntityInterface::postCreate public function Acts on a created entity before hooks are invoked. 2
EntityInterface::postDelete public static function Acts on deleted entities before the delete hook is invoked. 2
EntityInterface::postLoad public static function Acts on loaded entities. 3
EntityInterface::postSave public function Acts on a saved entity before the insert or update hook is invoked. 2
EntityInterface::preCreate public static function Changes the values of an entity before it is created. 2
EntityInterface::preDelete public static function Acts on entities before they are deleted and before hooks are invoked. 2
EntityInterface::preSave public function Acts on an entity before the presave hook is invoked. 2
EntityInterface::referencedEntities public function Gets a list of entities referenced by this entity. 2
EntityInterface::save public function Saves an entity permanently. 2
EntityInterface::setOriginalId public function Sets the original ID. 2
EntityInterface::toLink public function Generates the HTML for a link to this entity. 2
EntityInterface::toUrl public function Gets the URL object for the entity. 2
EntityInterface::uriRelationships public function Gets a list of URI relationships supported by this entity. 2
EntityInterface::url Deprecated public function Gets the public URL for this entity. 2
EntityInterface::urlInfo Deprecated public function Gets the URL object for the entity. 2
EntityInterface::uuid public function Gets the entity UUID (Universally Unique Identifier). 2
EntityOwnerTrait::getDefaultAuthorId public static function Default value callback for 'uid' base field definition.
EntityOwnerTrait::getOwner public function Returns the entity owner's user entity.
EntityOwnerTrait::getOwnerFieldDefinition public static function Defines 'uid' base field definition.
EntityOwnerTrait::getOwnerId public function Returns the entity owner's user ID.
EntityOwnerTrait::setOwner public function Sets the entity owner's user entity.
EntityOwnerTrait::setOwnerId public function Sets the entity owner's user ID.
FieldableEntityInterface::bundleFieldDefinitions public static function Provides field definitions for a specific bundle. 2
FieldableEntityInterface::get public function Gets a field item list. 1
FieldableEntityInterface::getFieldDefinition public function Gets the definition of a contained field. 1
FieldableEntityInterface::getFieldDefinitions public function Gets an array of field definitions of all contained fields. 1
FieldableEntityInterface::getFields public function Gets an array of all field item lists. 1
FieldableEntityInterface::getTranslatableFields public function Gets an array of field item lists for translatable fields. 1
FieldableEntityInterface::hasField public function Determines whether the entity has a field with the given name. 1
FieldableEntityInterface::isValidationRequired public function Checks whether entity validation is required before saving the entity. 1
FieldableEntityInterface::onChange public function Reacts to changes to a field. 1
FieldableEntityInterface::set public function Sets a field value. 1
FieldableEntityInterface::setValidationRequired public function Sets whether entity validation is required before saving the entity. 1
FieldableEntityInterface::toArray public function Gets an array of all field values. Overrides EntityInterface::toArray
FieldableEntityInterface::validate public function Validates the currently set values. 1
Individual::addEmail public function Sets email to email list. Overrides IndividualInterface::addEmail
Individual::baseFieldDefinitions public static function Provides base field definitions for an entity type. Overrides FieldableEntityInterface::baseFieldDefinitions
Individual::getBirthDate public function Gets birth date of individual. Overrides IndividualInterface::getBirthDate
Individual::getEmailList public function Gets email list for individual. Overrides IndividualInterface::getEmailList
Individual::getMainEmail public function Gets main email of individual. Overrides IndividualInterface::getMainEmail
Individual::getPrimaryAddress public function Gets the primary address.
Individual::getPrimaryEmail public function Gets the primary email.
Individual::getPrimaryField public function Gets the primary field.
Individual::getPrimaryPhone public function Gets the primary phone.
Individual::getSex public function Gets sex of individual. Overrides IndividualInterface::getSex
Individual::label public function Gets the label of the entity. Overrides EntityInterface::label
Individual::preSaveRevision public function Acts on a revision before it gets saved. Overrides RevisionableInterface::preSaveRevision
Individual::setBirthDate public function Sets birth date of individual. Overrides IndividualInterface::setBirthDate
Individual::setMainEmail public function Sets main email of individual. Overrides IndividualInterface::setMainEmail
Individual::setSex public function Sets sex field of individual. Overrides IndividualInterface::setSex
RefinableCacheableDependencyInterface::addCacheableDependency public function Adds a dependency on an object: merges its cacheability metadata. 1
RefinableCacheableDependencyInterface::addCacheContexts public function Adds cache contexts. 1
RefinableCacheableDependencyInterface::addCacheTags public function Adds cache tags. 1
RefinableCacheableDependencyInterface::mergeCacheMaxAge public function Merges the maximum age (in seconds) with the existing maximum age. 1
RevisionableInterface::getLoadedRevisionId public function Gets the loaded Revision ID of the entity. 1
RevisionableInterface::getRevisionId public function Gets the revision identifier of the entity. 1
RevisionableInterface::isDefaultRevision public function Checks if this entity is the default revision. 1
RevisionableInterface::isLatestRevision public function Checks if this entity is the latest revision. 1
RevisionableInterface::isNewRevision public function Determines whether a new revision should be created on save. 1
RevisionableInterface::setNewRevision public function Enforces an entity to be saved as a new revision. 1
RevisionableInterface::updateLoadedRevisionId public function Updates the loaded Revision ID with the revision ID. 1
RevisionableInterface::wasDefaultRevision public function Checks whether the entity object was a default revision when it was saved. 1
SynchronizableInterface::isSyncing public function Returns whether this entity is being changed as part of a synchronization. 1
SynchronizableInterface::setSyncing public function Sets the status of the synchronization flag. 1
TranslatableInterface::addTranslation public function Adds a new translation to the translatable object. 1
TranslatableInterface::getTranslation public function Gets a translation of the data. 1
TranslatableInterface::getTranslationLanguages public function Returns the languages the data is translated to. 1
TranslatableInterface::getUntranslated public function Returns the translatable object referring to the original language. 1
TranslatableInterface::hasTranslation public function Checks there is a translation for the given language code. 1
TranslatableInterface::hasTranslationChanges public function Determines if the current translation of the entity has unsaved changes. 1
TranslatableInterface::isDefaultTranslation public function Checks whether the translation is the default one. 1
TranslatableInterface::isNewTranslation public function Checks whether the translation is new. 1
TranslatableInterface::isTranslatable public function Returns the translation support status. 1
TranslatableInterface::removeTranslation public function Removes the translation identified by the given language code. 1
TranslatableRevisionableInterface::isDefaultTranslationAffectedOnly public function Checks if untranslatable fields should affect only the default translation. 1
TranslatableRevisionableInterface::isLatestTranslationAffectedRevision public function Checks whether this is the latest revision affecting this translation. 1
TranslatableRevisionableInterface::isRevisionTranslationAffected public function Checks whether the current translation is affected by the current revision. 1
TranslatableRevisionableInterface::isRevisionTranslationAffectedEnforced public function Checks if the revision translation affected flag value has been enforced. 1
TranslatableRevisionableInterface::setRevisionTranslationAffected public function Marks the current revision translation as affected. 1
TranslatableRevisionableInterface::setRevisionTranslationAffectedEnforced public function Enforces the revision translation affected flag value. 1