You are here

class Order in Ubercart 8.4

Defines the order entity class.

Plugin annotation


@ContentEntityType(
  id = "uc_order",
  label = @Translation("Order"),
  label_singular = @Translation("order"),
  label_plural = @Translation("orders"),
  label_count = @PluralTranslation(
    singular = "@count order",
    plural = "@count orders",
  ),
  module = "uc_order",
  handlers = {
    "view_builder" = "Drupal\uc_order\OrderViewBuilder",
    "access" = "Drupal\uc_order\OrderAccessControlHandler",
    "views_data" = "Drupal\uc_order\OrderViewsData",
    "form" = {
      "default" = "Drupal\uc_order\OrderForm",
      "delete" = "Drupal\uc_order\Form\OrderDeleteForm",
      "edit" = "Drupal\uc_order\OrderForm"
    },
    "route_provider" = {
      "html" = "Drupal\uc_order\Entity\OrderRouteProvider",
    },
  },
  base_table = "uc_orders",
  entity_keys = {
    "id" = "order_id",
  },
  field_ui_base_route = "uc_order.workflow",
  links = {
    "canonical" = "/admin/store/orders/{uc_order}",
    "delete-form" = "/admin/store/orders/{uc_order}/delete",
    "edit-form" = "/admin/store/orders/{uc_order}/edit",
    "admin-form" = "/admin/store/orders",
  }
)

Hierarchy

Expanded class hierarchy of Order

33 files declare their use of Order
Actions.php in uc_order/src/Plugin/views/field/Actions.php
CashOnDeliveryTest.php in payment/uc_payment_pack/tests/src/Functional/CashOnDeliveryTest.php
CheckoutController.php in uc_cart/src/Controller/CheckoutController.php
CheckTest.php in payment/uc_payment_pack/tests/src/Functional/CheckTest.php
CustomerAdminTest.php in uc_order/tests/src/Functional/CustomerAdminTest.php

... See full list

29 string references to 'Order'
AjaxTest::addPaymentZoneCondition in uc_store/tests/src/FunctionalJavascript/AjaxTest.php
Sets a zone-based condition for a particular payment method.
CheckoutCompleteEventTest::testCheckoutCompleteEvent in uc_cart/tests/src/Unit/Integration/Event/CheckoutCompleteEventTest.php
Tests the event metadata.
CheckoutReviewOrderEventTest::testCheckoutReviewOrderEvent in uc_cart/tests/src/Unit/Integration/Event/CheckoutReviewOrderEventTest.php
Tests the event metadata.
CheckoutStartEventTest::testCheckoutStartEvent in uc_cart/tests/src/Unit/Integration/Event/CheckoutStartEventTest.php
Tests the event metadata.
NotifyGrantEventTest::testNotifyGrantEvent in uc_file/tests/src/Unit/Integration/Event/NotifyGrantEventTest.php
Tests the event metadata.

... See full list

File

uc_order/src/Entity/Order.php, line 56

Namespace

Drupal\uc_order\Entity
View source
class Order extends ContentEntityBase implements OrderInterface {
  use EntityChangedTrait;

  /**
   * Order products.
   *
   * @var \Drupal\uc_order\OrderProductInterface[]
   */
  public $products = [];

  /**
   * Order line items.
   *
   * @var array
   */
  public $line_items = [];

  /**
   * {@inheritdoc}
   */
  public function label($langcode = NULL) {
    return t('Order @order_id', [
      '@order_id' => $this
        ->id(),
    ]);
  }

  /**
   * {@inheritdoc}
   */
  public function uuid() {
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public static function postLoad(EntityStorageInterface $storage, array &$orders) {
    parent::postLoad($storage, $orders);
    foreach ($orders as $id => $order) {

      // Need to use \Drupal:: because we're in a static function.
      $order->products = \Drupal::entityTypeManager()
        ->getStorage('uc_order_product')
        ->loadByProperties([
        'order_id' => $id,
      ]);

      // Load line items... has to be last after everything has been loaded.
      $order->line_items = $order
        ->getLineItems();
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function preCreate(EntityStorageInterface $storage, array &$values) {
    parent::preCreate($storage, $values);

    // Set default values.
    $store_config = \Drupal::config('uc_store.settings');
    $values += [
      'order_status' => uc_order_state_default('in_checkout'),
      'currency' => $store_config
        ->get('currency.code'),
      'billing_country' => $store_config
        ->get('address.country'),
      'delivery_country' => $store_config
        ->get('address.country'),
      'created' => REQUEST_TIME,
    ];

    // Take the primary email address from the user, if necessary.
    if (empty($values['primary_email']) && !empty($values['uid'])) {
      if ($account = User::load($values['uid'])) {
        $values['primary_email'] = $account
          ->getEmail();
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public function preSave(EntityStorageInterface $storage) {
    parent::preSave($storage);
    $this->order_total->value = $this
      ->getTotal();
    $this->product_count->value = $this
      ->getProductCount();
    $this->host->value = \Drupal::request()
      ->getClientIp();
    $this
      ->setChangedTime(REQUEST_TIME);
  }

  /**
   * {@inheritdoc}
   */
  public function postSave(EntityStorageInterface $storage, $update = TRUE) {
    parent::postSave($storage, $update);
    foreach ($this->products as $product) {
      \Drupal::moduleHandler()
        ->alter('uc_order_product', $product, $this);
      uc_order_product_save($this
        ->id(), $product);
    }

    // Record a log entry if the order status has changed.
    if ($update && $this
      ->getStatusId() != $this->original
      ->getStatusId()) {
      $this
        ->logChanges([
        (string) t('Order status') => [
          'old' => $this->original
            ->getStatus()
            ->getName(),
          'new' => $this
            ->getStatus()
            ->getName(),
        ],
      ]);

      /* rules_invoke_event('uc_order_status_update', $this->original, $this); */
      $event = new OrderStatusUpdateEvent($this->original, $this);
      \Drupal::service('event_dispatcher')
        ->dispatch($event::EVENT_NAME, $event);
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function postDelete(EntityStorageInterface $storage, array $orders) {
    parent::postDelete($storage, $orders);

    // Delete data from the appropriate Ubercart order tables.
    $ids = array_keys($orders);
    $result = \Drupal::entityQuery('uc_order_product')
      ->condition('order_id', $ids, 'IN')
      ->execute();
    if (!empty($result)) {
      entity_delete_multiple('uc_order_product', array_keys($result));
    }
    \Drupal::database()
      ->delete('uc_order_comments')
      ->condition('order_id', $ids, 'IN')
      ->execute();
    \Drupal::database()
      ->delete('uc_order_admin_comments')
      ->condition('order_id', $ids, 'IN')
      ->execute();
    \Drupal::database()
      ->delete('uc_order_log')
      ->condition('order_id', $ids, 'IN')
      ->execute();
    foreach ($orders as $order_id => $order) {

      // Delete line items for the order.
      uc_order_delete_line_item($order_id, TRUE);

      // Log the action in the database.
      \Drupal::logger('uc_order')
        ->notice('Order @order_id deleted by user @uid.', [
        '@order_id' => $order_id,
        '@uid' => \Drupal::currentUser()
          ->id(),
      ]);

      /* rules_invoke_event('uc_order_delete', $order); */
      $event = new OrderDeletedEvent($order);
      \Drupal::service('event_dispatcher')
        ->dispatch($event::EVENT_NAME, $event);
    }
  }

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

  /**
   * {@inheritdoc}
   */
  public function setCreatedTime($timestamp) {
    $this
      ->set('created', $timestamp);
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getLineItems() {
    $items = [];
    $result = \Drupal::database()
      ->query("SELECT * FROM {uc_order_line_items} WHERE order_id = :id", [
      ':id' => $this
        ->id(),
    ]);
    foreach ($result as $row) {
      $items[] = [
        'line_item_id' => $row->line_item_id,
        'type' => $row->type,
        'title' => $row->title,
        'amount' => $row->amount,
        'weight' => $row->weight,
        'data' => unserialize($row->data),
      ];
    }
    $line_item_manager = \Drupal::service('plugin.manager.uc_order.line_item');
    foreach ($line_item_manager
      ->getDefinitions() as $type) {
      if (!$type['stored'] && !$type['display_only']) {
        $result = $line_item_manager
          ->createInstance($type['id'])
          ->load($this);
        if ($result !== FALSE && is_array($result)) {
          foreach ($result as $line) {
            $items[] = [
              'line_item_id' => $line['id'],
              'type' => $type['id'],
              'title' => $line['title'],
              'amount' => $line['amount'],
              'weight' => isset($line['weight']) ? $line['weight'] : $type['weight'],
              'data' => isset($line['data']) ? $line['data'] : [],
            ];
          }
        }
      }
    }
    usort($items, 'Drupal\\Component\\Utility\\SortArray::sortByWeightElement');
    return $items;
  }

  /**
   * {@inheritdoc}
   */
  public function getDisplayLineItems() {
    $line_items = $this
      ->getLineItems();
    $line_item_manager = \Drupal::service('plugin.manager.uc_order.line_item');
    foreach ($line_item_manager
      ->getDefinitions() as $item) {
      if ($item['display_only']) {
        $result = $line_item_manager
          ->createInstance($item['id'])
          ->display($this);
        if (is_array($result)) {
          foreach ($result as $line) {
            $line_items[] = [
              'line_item_id' => $line['id'],
              'type' => $item['id'],
              'title' => $line['title'],
              'amount' => $line['amount'],
              'weight' => isset($line['weight']) ? $line['weight'] : $item['weight'],
              'data' => isset($line['data']) ? $line['data'] : [],
            ];
          }
        }
      }
    }
    foreach ($line_items as &$item) {
      $item['formatted_amount'] = uc_currency_format($item['amount']);
    }
    usort($line_items, 'Drupal\\Component\\Utility\\SortArray::sortByWeightElement');
    return $line_items;
  }

  /**
   * {@inheritdoc}
   */
  public function getOwner() {
    return $this
      ->get('uid')->entity;
  }

  /**
   * {@inheritdoc}
   */
  public function setOwner(UserInterface $account) {
    $this
      ->set('uid', $account
      ->id());
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getOwnerId() {
    return $this
      ->get('uid')->target_id;
  }

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

  /**
   * {@inheritdoc}
   */
  public function getStatus() {
    return $this
      ->get('order_status')->entity;
  }

  /**
   * {@inheritdoc}
   */
  public function getStatusId() {
    return $this
      ->get('order_status')->target_id;
  }

  /**
   * {@inheritdoc}
   */
  public function setStatusId($status) {
    $this
      ->set('order_status', $status);
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getStateId() {
    return $this
      ->getStatus()
      ->getState();
  }

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

  /**
   * {@inheritdoc}
   */
  public function setEmail($email) {
    $this
      ->set('primary_email', $email);
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getSubtotal() {
    $subtotal = 0;
    foreach ($this->products as $product) {
      $subtotal += $product->price->value * $product->qty->value;
    }
    return $subtotal;
  }

  /**
   * {@inheritdoc}
   */
  public function getTotal() {
    $total = $this
      ->getSubtotal();
    $definitions = \Drupal::service('plugin.manager.uc_order.line_item')
      ->getDefinitions();
    foreach ($this->line_items as $item) {
      if (!empty($definitions[$item['type']]['calculated'])) {
        $total += $item['amount'];
      }
    }
    return $total;
  }

  /**
   * {@inheritdoc}
   */
  public function getProductCount() {
    $count = 0;
    foreach ($this->products as $product) {
      $count += $product->qty->value;
    }
    return $count;
  }

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

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

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

  /**
   * {@inheritdoc}
   */
  public function getAddress($type) {
    $address = Address::create();
    $address
      ->setFirstName($this
      ->get($type . '_first_name')->value)
      ->setLastName($this
      ->get($type . '_last_name')->value)
      ->setCompany($this
      ->get($type . '_company')->value)
      ->setStreet1($this
      ->get($type . '_street1')->value)
      ->setStreet2($this
      ->get($type . '_street2')->value)
      ->setCity($this
      ->get($type . '_city')->value)
      ->setZone($this
      ->get($type . '_zone')->value)
      ->setCountry($this
      ->get($type . '_country')->value)
      ->setPostalCode($this
      ->get($type . '_postal_code')->value)
      ->setPhone($this
      ->get($type . '_phone')->value);
    return $address;
  }

  /**
   * {@inheritdoc}
   */
  public function setAddress($type, Address $address) {
    $this
      ->set($type . '_first_name', $address
      ->getFirstName());
    $this
      ->set($type . '_last_name', $address
      ->getLastName());
    $this
      ->set($type . '_company', $address
      ->getCompany());
    $this
      ->set($type . '_street1', $address
      ->getStreet1());
    $this
      ->set($type . '_street2', $address
      ->getStreet2());
    $this
      ->set($type . '_city', $address
      ->getCity());
    $this
      ->set($type . '_zone', $address
      ->getZone());
    $this
      ->set($type . '_country', $address
      ->getCountry());
    $this
      ->set($type . '_postal_code', $address
      ->getPostalCode());
    $this
      ->set($type . '_phone', $address
      ->getPhone());
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function isShippable() {
    foreach ($this->products as $product) {
      if (uc_order_product_is_shippable($product)) {
        return TRUE;
      }
    }
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function logChanges(array $changes) {
    if (!empty($changes)) {
      foreach ($changes as $key => $value) {
        if (is_array($value)) {
          $entry = t('@key changed from %old to %new.', [
            '@key' => $key,
            '%old' => $value['old'],
            '%new' => $value['new'],
          ]);
        }
        else {
          $entry = (string) $value;
        }
        $markup = [
          '#markup' => $entry,
        ];
        \Drupal::database()
          ->insert('uc_order_log')
          ->fields([
          'order_id' => $this
            ->id(),
          'uid' => \Drupal::currentUser()
            ->id(),
          'changes' => \Drupal::service('renderer')
            ->renderPlain($markup),
          'created' => REQUEST_TIME,
        ])
          ->execute();
      }
    }
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
    $fields['order_id'] = BaseFieldDefinition::create('integer')
      ->setLabel(t('Order ID'))
      ->setDescription(t('The order ID.'))
      ->setReadOnly(TRUE)
      ->setSetting('unsigned', TRUE);
    $fields['uid'] = BaseFieldDefinition::create('entity_reference')
      ->setLabel(t('Customer'))
      ->setDescription(t('The user that placed the order.'))
      ->setSetting('target_type', 'user')
      ->setDefaultValueCallback('Drupal\\uc_order\\Entity\\Order::getCurrentUserId');
    $fields['order_status'] = BaseFieldDefinition::create('entity_reference')
      ->setLabel(t('Order status'))
      ->setDescription(t('The uc_order_status entity ID indicating the order status'))
      ->setSetting('target_type', 'uc_order_status')
      ->setSetting('default_value', '')
      ->setSetting('max_length', 32);
    $fields['order_total'] = BaseFieldDefinition::create('decimal')
      ->setLabel(t('Order total'))
      ->setDescription(t('The total amount to be paid for the order.'))
      ->setSetting('default_value', 0.0)
      ->setSetting('precision', 16)
      ->setSetting('scale', 5);
    $fields['product_count'] = BaseFieldDefinition::create('integer')
      ->setLabel(t('Product count'))
      ->setDescription(t('The total product quantity of the order.'))
      ->setSetting('default_value', 0)
      ->setSetting('unsigned', TRUE);
    $fields['primary_email'] = BaseFieldDefinition::create('email')
      ->setLabel(t('E-mail address'))
      ->setDescription(t('The email address of the customer.'))
      ->setSetting('default_value', '')
      ->setSetting('max_length', 96);
    $fields['delivery_first_name'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery first name'))
      ->setDescription(t('The first name of the person receiving shipment.'))
      ->setSetting('default_value', '');
    $fields['delivery_last_name'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery last name'))
      ->setDescription(t('The last name of the person receiving shipment.'))
      ->setSetting('default_value', '');
    $fields['delivery_phone'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery phone'))
      ->setDescription(t('The phone number at the delivery location.'))
      ->setSetting('default_value', '');
    $fields['delivery_company'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery company'))
      ->setDescription(t('The company at the delivery location.'))
      ->setSetting('default_value', '');
    $fields['delivery_street1'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery street 1'))
      ->setDescription(t('The street address of the delivery location.'))
      ->setSetting('default_value', '');
    $fields['delivery_street2'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery street 2'))
      ->setDescription(t('The second line of the street address.'))
      ->setSetting('default_value', '');
    $fields['delivery_city'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery city'))
      ->setDescription(t('The city of the delivery location.'))
      ->setSetting('default_value', '');
    $fields['delivery_zone'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery state/province'))
      ->setDescription(t('The state/zone/province id of the delivery location.'))
      ->setSetting('default_value', '');
    $fields['delivery_postal_code'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery postal code'))
      ->setDescription(t('The postal code of the delivery location.'))
      ->setSetting('default_value', '');
    $fields['delivery_country'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Delivery country'))
      ->setDescription(t('The country ID of the delivery location.'))
      ->setSetting('size', 'medium')
      ->setSetting('default_value', '');
    $fields['billing_first_name'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing first name'))
      ->setDescription(t('The first name of the person paying for the order.'))
      ->setSetting('default_value', '');
    $fields['billing_last_name'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing last name'))
      ->setDescription(t('The last name of the person paying for the order.'))
      ->setSetting('default_value', '');
    $fields['billing_phone'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing phone'))
      ->setDescription(t('The phone number for the billing address.'))
      ->setSetting('default_value', '');
    $fields['billing_company'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing company'))
      ->setDescription(t('The company of the billing address.'))
      ->setSetting('default_value', '');
    $fields['billing_street1'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing street 1'))
      ->setDescription(t('The street address where the bill will be sent.'))
      ->setSetting('default_value', '');
    $fields['billing_street2'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing street 2'))
      ->setDescription(t('The second line of the street address.'))
      ->setSetting('default_value', '');
    $fields['billing_city'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing city'))
      ->setDescription(t('The city where the bill will be sent.'))
      ->setSetting('default_value', '');
    $fields['billing_zone'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing state/province'))
      ->setDescription(t('The state/zone/province ID where the bill will be sent.'))
      ->setSetting('default_value', '')
      ->setSetting('size', 'medium');
    $fields['billing_postal_code'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing postal code'))
      ->setDescription(t('The postal code where the bill will be sent.'))
      ->setSetting('default_value', '');
    $fields['billing_country'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Billing country'))
      ->setDescription(t('The country ID where the bill will be sent.'))
      ->setSetting('default_value', '')
      ->setSetting('size', 'medium');
    $fields['payment_method'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Payment method'))
      ->setDescription(t('The method of payment.'))
      ->setSetting('default_value', '')
      ->setSetting('max_length', 32);
    $fields['data'] = BaseFieldDefinition::create('map')
      ->setLabel(t('Data'))
      ->setDescription(t('A serialized array of extra data.'));
    $fields['created'] = BaseFieldDefinition::create('created')
      ->setLabel(t('Created'))
      ->setDescription(t('The time that the order was created.'));
    $fields['changed'] = BaseFieldDefinition::create('changed')
      ->setLabel(t('Changed'))
      ->setDescription(t('The time that the order was last edited.'));
    $fields['host'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Host'))
      ->setDescription(t('Host IP address of the person paying for the order.'))
      ->setSetting('default_value', '');
    $fields['currency'] = BaseFieldDefinition::create('string')
      ->setLabel(t('Currency'))
      ->setDescription(t('The ISO currency code for the order.'))
      ->setPropertyConstraints('value', [
      'Length' => [
        'max' => 3,
      ],
    ])
      ->setSetting('default_value', '')
      ->setSetting('max_length', 3);
    return $fields;
  }

  /**
   * Default value callback for 'uid' base field definition.
   *
   * @see ::baseFieldDefinitions()
   *
   * @return array
   *   An array of default values.
   */
  public static function getCurrentUserId() {
    return [
      \Drupal::currentUser()
        ->id(),
    ];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CacheableDependencyTrait::$cacheContexts protected property Cache contexts.
CacheableDependencyTrait::$cacheMaxAge protected property Cache max-age.
CacheableDependencyTrait::$cacheTags protected property Cache tags.
CacheableDependencyTrait::setCacheability protected function Sets cacheability; useful for value object constructors.
ContentEntityBase::$activeLangcode protected property Language code identifying the entity active language.
ContentEntityBase::$defaultLangcode protected property Local cache for the default language code.
ContentEntityBase::$defaultLangcodeKey protected property The default langcode entity key.
ContentEntityBase::$enforceRevisionTranslationAffected protected property Whether the revision translation affected flag has been enforced.
ContentEntityBase::$entityKeys protected property Holds untranslatable entity keys such as the ID, bundle, and revision ID.
ContentEntityBase::$fieldDefinitions protected property Local cache for field definitions.
ContentEntityBase::$fields protected property The array of fields, each being an instance of FieldItemListInterface.
ContentEntityBase::$fieldsToSkipFromTranslationChangesCheck protected static property Local cache for fields to skip from the checking for translation changes.
ContentEntityBase::$isDefaultRevision protected property Indicates whether this is the default revision.
ContentEntityBase::$langcodeKey protected property The language entity key.
ContentEntityBase::$languages protected property Local cache for the available language objects.
ContentEntityBase::$loadedRevisionId protected property The loaded revision ID before the new revision was set.
ContentEntityBase::$newRevision protected property Boolean indicating whether a new revision should be created on save.
ContentEntityBase::$revisionTranslationAffectedKey protected property The revision translation affected entity key.
ContentEntityBase::$translatableEntityKeys protected property Holds translatable entity keys such as the label.
ContentEntityBase::$translationInitialize protected property A flag indicating whether a translation object is being initialized.
ContentEntityBase::$translations protected property An array of entity translation metadata.
ContentEntityBase::$validated protected property Whether entity validation was performed.
ContentEntityBase::$validationRequired protected property Whether entity validation is required before saving the entity.
ContentEntityBase::$values protected property The plain data values of the contained fields.
ContentEntityBase::access public function Checks data value access. Overrides EntityBase::access 1
ContentEntityBase::addTranslation public function Adds a new translation to the translatable object. Overrides TranslatableInterface::addTranslation
ContentEntityBase::bundle public function Gets the bundle of the entity. Overrides EntityBase::bundle
ContentEntityBase::bundleFieldDefinitions public static function Provides field definitions for a specific bundle. Overrides FieldableEntityInterface::bundleFieldDefinitions 4
ContentEntityBase::clearTranslationCache protected function Clear entity translation object cache to remove stale references.
ContentEntityBase::createDuplicate public function Creates a duplicate of the entity. Overrides EntityBase::createDuplicate 1
ContentEntityBase::get public function Gets a field item list. Overrides FieldableEntityInterface::get
ContentEntityBase::getEntityKey protected function Gets the value of the given entity key, if defined. 1
ContentEntityBase::getFieldDefinition public function Gets the definition of a contained field. Overrides FieldableEntityInterface::getFieldDefinition
ContentEntityBase::getFieldDefinitions public function Gets an array of field definitions of all contained fields. Overrides FieldableEntityInterface::getFieldDefinitions
ContentEntityBase::getFields public function Gets an array of all field item lists. Overrides FieldableEntityInterface::getFields
ContentEntityBase::getFieldsToSkipFromTranslationChangesCheck protected function Returns an array of field names to skip in ::hasTranslationChanges. 1
ContentEntityBase::getIterator public function
ContentEntityBase::getLanguages protected function
ContentEntityBase::getLoadedRevisionId public function Gets the loaded Revision ID of the entity. Overrides RevisionableInterface::getLoadedRevisionId
ContentEntityBase::getRevisionId public function Gets the revision identifier of the entity. Overrides RevisionableInterface::getRevisionId
ContentEntityBase::getTranslatableFields public function Gets an array of field item lists for translatable fields. Overrides FieldableEntityInterface::getTranslatableFields
ContentEntityBase::getTranslatedField protected function Gets a translated field.
ContentEntityBase::getTranslation public function Gets a translation of the data. Overrides TranslatableInterface::getTranslation
ContentEntityBase::getTranslationLanguages public function Returns the languages the data is translated to. Overrides TranslatableInterface::getTranslationLanguages
ContentEntityBase::getTranslationStatus public function Returns the translation status. Overrides TranslationStatusInterface::getTranslationStatus
ContentEntityBase::getUntranslated public function Returns the translatable object referring to the original language. Overrides TranslatableInterface::getUntranslated
ContentEntityBase::hasField public function Determines whether the entity has a field with the given name. Overrides FieldableEntityInterface::hasField
ContentEntityBase::hasTranslation public function Checks there is a translation for the given language code. Overrides TranslatableInterface::hasTranslation
ContentEntityBase::hasTranslationChanges public function Determines if the current translation of the entity has unsaved changes. Overrides TranslatableInterface::hasTranslationChanges
ContentEntityBase::id public function Gets the identifier. Overrides EntityBase::id
ContentEntityBase::initializeTranslation protected function Instantiates a translation object for an existing translation.
ContentEntityBase::isDefaultRevision public function Checks if this entity is the default revision. Overrides RevisionableInterface::isDefaultRevision
ContentEntityBase::isDefaultTranslation public function Checks whether the translation is the default one. Overrides TranslatableInterface::isDefaultTranslation
ContentEntityBase::isDefaultTranslationAffectedOnly public function Checks if untranslatable fields should affect only the default translation. Overrides TranslatableRevisionableInterface::isDefaultTranslationAffectedOnly
ContentEntityBase::isLatestRevision public function Checks if this entity is the latest revision. Overrides RevisionableInterface::isLatestRevision
ContentEntityBase::isLatestTranslationAffectedRevision public function Checks whether this is the latest revision affecting this translation. Overrides TranslatableRevisionableInterface::isLatestTranslationAffectedRevision
ContentEntityBase::isNewRevision public function Determines whether a new revision should be created on save. Overrides RevisionableInterface::isNewRevision
ContentEntityBase::isNewTranslation public function Checks whether the translation is new. Overrides TranslatableInterface::isNewTranslation
ContentEntityBase::isRevisionTranslationAffected public function Checks whether the current translation is affected by the current revision. Overrides TranslatableRevisionableInterface::isRevisionTranslationAffected
ContentEntityBase::isRevisionTranslationAffectedEnforced public function Checks if the revision translation affected flag value has been enforced. Overrides TranslatableRevisionableInterface::isRevisionTranslationAffectedEnforced
ContentEntityBase::isTranslatable public function Returns the translation support status. Overrides TranslatableInterface::isTranslatable
ContentEntityBase::isValidationRequired public function Checks whether entity validation is required before saving the entity. Overrides FieldableEntityInterface::isValidationRequired
ContentEntityBase::language public function Gets the language of the entity. Overrides EntityBase::language
ContentEntityBase::onChange public function Reacts to changes to a field. Overrides FieldableEntityInterface::onChange
ContentEntityBase::postCreate public function Acts on a created entity before hooks are invoked. Overrides EntityBase::postCreate
ContentEntityBase::preSaveRevision public function Acts on a revision before it gets saved. Overrides RevisionableInterface::preSaveRevision 2
ContentEntityBase::referencedEntities public function Gets a list of entities referenced by this entity. Overrides EntityBase::referencedEntities 1
ContentEntityBase::removeTranslation public function Removes the translation identified by the given language code. Overrides TranslatableInterface::removeTranslation
ContentEntityBase::set public function Sets a field value. Overrides FieldableEntityInterface::set
ContentEntityBase::setDefaultLangcode protected function Populates the local cache for the default language code.
ContentEntityBase::setNewRevision public function Enforces an entity to be saved as a new revision. Overrides RevisionableInterface::setNewRevision
ContentEntityBase::setRevisionTranslationAffected public function Marks the current revision translation as affected. Overrides TranslatableRevisionableInterface::setRevisionTranslationAffected
ContentEntityBase::setRevisionTranslationAffectedEnforced public function Enforces the revision translation affected flag value. Overrides TranslatableRevisionableInterface::setRevisionTranslationAffectedEnforced
ContentEntityBase::setValidationRequired public function Sets whether entity validation is required before saving the entity. Overrides FieldableEntityInterface::setValidationRequired
ContentEntityBase::toArray public function Gets an array of all property values. Overrides EntityBase::toArray
ContentEntityBase::updateFieldLangcodes protected function Updates language for already instantiated fields.
ContentEntityBase::updateLoadedRevisionId public function Updates the loaded Revision ID with the revision ID. Overrides RevisionableInterface::updateLoadedRevisionId
ContentEntityBase::updateOriginalValues public function Updates the original values with the interim changes.
ContentEntityBase::validate public function Validates the currently set values. Overrides FieldableEntityInterface::validate
ContentEntityBase::wasDefaultRevision public function Checks whether the entity object was a default revision when it was saved. Overrides RevisionableInterface::wasDefaultRevision
ContentEntityBase::__clone public function Magic method: Implements a deep clone.
ContentEntityBase::__construct public function Constructs an Entity object. Overrides EntityBase::__construct
ContentEntityBase::__get public function Implements the magic method for getting object properties.
ContentEntityBase::__isset public function Implements the magic method for isset().
ContentEntityBase::__set public function Implements the magic method for setting object properties.
ContentEntityBase::__sleep public function Overrides EntityBase::__sleep
ContentEntityBase::__unset public function Implements the magic method for unset().
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function Aliased as: traitSleep 1
DependencySerializationTrait::__wakeup public function 2
EntityBase::$enforceIsNew protected property Boolean indicating whether the entity should be forced to be new.
EntityBase::$entityTypeId protected property The entity type.
EntityBase::$typedData protected property A typed data object wrapping this entity.
EntityBase::create public static function Constructs a new entity object, without permanently saving it. Overrides EntityInterface::create
EntityBase::delete public function Deletes an entity permanently. Overrides EntityInterface::delete 2
EntityBase::enforceIsNew public function Enforces an entity to be new. Overrides EntityInterface::enforceIsNew
EntityBase::entityManager Deprecated protected function Gets the entity manager.
EntityBase::entityTypeBundleInfo protected function Gets the entity type bundle info service.
EntityBase::entityTypeManager protected function Gets the entity type manager.
EntityBase::getCacheContexts public function The cache contexts associated with this object. Overrides CacheableDependencyTrait::getCacheContexts
EntityBase::getCacheMaxAge public function The maximum age for which this object may be cached. Overrides CacheableDependencyTrait::getCacheMaxAge
EntityBase::getCacheTags public function The cache tags associated with this object. Overrides CacheableDependencyTrait::getCacheTags
EntityBase::getCacheTagsToInvalidate public function Returns the cache tags that should be used to invalidate caches. Overrides EntityInterface::getCacheTagsToInvalidate 2
EntityBase::getConfigDependencyKey public function Gets the key that is used to store configuration dependencies. Overrides EntityInterface::getConfigDependencyKey
EntityBase::getConfigDependencyName public function Gets the configuration dependency name. Overrides EntityInterface::getConfigDependencyName 1
EntityBase::getConfigTarget public function Gets the configuration target identifier for the entity. Overrides EntityInterface::getConfigTarget 1
EntityBase::getEntityType public function Gets the entity type definition. Overrides EntityInterface::getEntityType
EntityBase::getEntityTypeId public function Gets the ID of the type of the entity. Overrides EntityInterface::getEntityTypeId
EntityBase::getListCacheTagsToInvalidate protected function The list cache tags to invalidate for this entity.
EntityBase::getOriginalId public function Gets the original ID. Overrides EntityInterface::getOriginalId 1
EntityBase::getTypedData public function Gets a typed data object for this entity object. Overrides EntityInterface::getTypedData
EntityBase::hasLinkTemplate public function Indicates if a link template exists for a given key. Overrides EntityInterface::hasLinkTemplate
EntityBase::invalidateTagsOnDelete protected static function Invalidates an entity's cache tags upon delete. 1
EntityBase::invalidateTagsOnSave protected function Invalidates an entity's cache tags upon save. 1
EntityBase::isNew public function Determines whether the entity is new. Overrides EntityInterface::isNew 2
EntityBase::languageManager protected function Gets the language manager.
EntityBase::link public function Deprecated way of generating a link to the entity. See toLink(). Overrides EntityInterface::link 1
EntityBase::linkTemplates protected function Gets an array link templates. 1
EntityBase::load public static function Loads an entity. Overrides EntityInterface::load
EntityBase::loadMultiple public static function Loads one or more entities. Overrides EntityInterface::loadMultiple
EntityBase::preDelete public static function Acts on entities before they are deleted and before hooks are invoked. Overrides EntityInterface::preDelete 4
EntityBase::save public function Saves an entity permanently. Overrides EntityInterface::save 3
EntityBase::setOriginalId public function Sets the original ID. Overrides EntityInterface::setOriginalId 1
EntityBase::toLink public function Generates the HTML for a link to this entity. Overrides EntityInterface::toLink
EntityBase::toUrl public function Gets the URL object for the entity. Overrides EntityInterface::toUrl 2
EntityBase::uriRelationships public function Gets a list of URI relationships supported by this entity. Overrides EntityInterface::uriRelationships
EntityBase::url public function Gets the public URL for this entity. Overrides EntityInterface::url 2
EntityBase::urlInfo public function Gets the URL object for the entity. Overrides EntityInterface::urlInfo 1
EntityBase::urlRouteParameters protected function Gets an array of placeholders for this entity. 2
EntityBase::uuidGenerator protected function Gets the UUID generator.
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.
EntityChangesDetectionTrait::getFieldsToSkipFromTranslationChangesCheck protected function Returns an array of field names to skip when checking for changes. Aliased as: traitGetFieldsToSkipFromTranslationChangesCheck
Order::$line_items public property Order line items.
Order::$products public property Order products.
Order::baseFieldDefinitions public static function Provides base field definitions for an entity type. Overrides ContentEntityBase::baseFieldDefinitions
Order::getAddress public function Returns an address attached to the order. Overrides OrderInterface::getAddress
Order::getCreatedTime public function Gets the order creation timestamp. Overrides OrderInterface::getCreatedTime
Order::getCurrency public function Returns the order currency code. Overrides OrderInterface::getCurrency
Order::getCurrentUserId public static function Default value callback for 'uid' base field definition.
Order::getDisplayLineItems public function Returns an order's line items ordered by weight, prepared for display. Overrides OrderInterface::getDisplayLineItems
Order::getEmail public function Returns the order e-mail address. Overrides OrderInterface::getEmail
Order::getLineItems public function Returns an array containing an order's line items ordered by weight. Overrides OrderInterface::getLineItems
Order::getOwner public function Returns the entity owner's user entity. Overrides EntityOwnerInterface::getOwner
Order::getOwnerId public function Returns the entity owner's user ID. Overrides EntityOwnerInterface::getOwnerId
Order::getPaymentMethodId public function Returns the order payment method. Overrides OrderInterface::getPaymentMethodId
Order::getProductCount public function Returns the number of products in an order. Overrides OrderInterface::getProductCount
Order::getStateId public function Returns the order state ID. Overrides OrderInterface::getStateId
Order::getStatus public function Returns the order status. Overrides OrderInterface::getStatus
Order::getStatusId public function Returns the order status ID. Overrides OrderInterface::getStatusId
Order::getSubtotal public function Returns the order subtotal amount (products only). Overrides OrderInterface::getSubtotal
Order::getTotal public function Returns the order total amount (including all line items). Overrides OrderInterface::getTotal
Order::isShippable public function Returns whether an order is considered shippable or not. Overrides OrderInterface::isShippable
Order::label public function Gets the label of the entity. Overrides ContentEntityBase::label
Order::logChanges public function Logs changes made to an order. Overrides OrderInterface::logChanges
Order::postDelete public static function Acts on deleted entities before the delete hook is invoked. Overrides EntityBase::postDelete
Order::postLoad public static function Acts on loaded entities. Overrides EntityBase::postLoad
Order::postSave public function Acts on a saved entity before the insert or update hook is invoked. Overrides ContentEntityBase::postSave
Order::preCreate public static function Changes the values of an entity before it is created. Overrides EntityBase::preCreate
Order::preSave public function Acts on an entity before the presave hook is invoked. Overrides ContentEntityBase::preSave
Order::setAddress public function Sets an address attached to the order. Overrides OrderInterface::setAddress
Order::setCreatedTime public function Sets the order creation timestamp. Overrides OrderInterface::setCreatedTime
Order::setEmail public function Sets the order e-mail address. Overrides OrderInterface::setEmail
Order::setOwner public function Sets the entity owner's user entity. Overrides EntityOwnerInterface::setOwner
Order::setOwnerId public function Sets the entity owner's user ID. Overrides EntityOwnerInterface::setOwnerId
Order::setPaymentMethodId public function Sets the order payment method. Overrides OrderInterface::setPaymentMethodId
Order::setStatusId public function Sets the order status ID. Overrides OrderInterface::setStatusId
Order::uuid public function Gets the entity UUID (Universally Unique Identifier). Overrides ContentEntityBase::uuid
RefinableCacheableDependencyTrait::addCacheableDependency public function 1
RefinableCacheableDependencyTrait::addCacheContexts public function
RefinableCacheableDependencyTrait::addCacheTags public function
RefinableCacheableDependencyTrait::mergeCacheMaxAge public function
SynchronizableEntityTrait::$isSyncing protected property Whether this entity is being created, updated or deleted through a synchronization process.
SynchronizableEntityTrait::isSyncing public function
SynchronizableEntityTrait::setSyncing public function
TranslationStatusInterface::TRANSLATION_CREATED constant Status code identifying a newly created translation.
TranslationStatusInterface::TRANSLATION_EXISTING constant Status code identifying an existing translation.
TranslationStatusInterface::TRANSLATION_REMOVED constant Status code identifying a removed translation.