arch-8.x-1.x-dev/modules/product/src/Entity/Storage/ProductStorage.php

modules/product/src/Entity/Storage/ProductStorage.php
<?php

namespace Drupal\arch_product\Entity\Storage;

use Drupal\arch_product\Entity\ProductInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
use Drupal\Core\Language\LanguageInterface;
use Drupal\Core\Session\AccountInterface;

/**
 * Defines the storage handler class for products.
 *
 * This extends the base storage class, adding required special handling for
 * products entities.
 */
class ProductStorage extends SqlContentEntityStorage implements ProductStorageInterface {

  /**
   * {@inheritdoc}
   */
  public function revisionIds(ProductInterface $product) {
    return $this->database->query(
      'SELECT vid FROM {' . $this->getRevisionTable() . '} WHERE pid = :pid ORDER BY vid',
      [':pid' => $product->id()]
    )->fetchCol();
  }

  /**
   * {@inheritdoc}
   */
  public function userRevisionIds(AccountInterface $account) {
    return $this->database->query(
      'SELECT vid FROM {' . $this->getRevisionDataTable() . '} WHERE uid = :uid ORDER BY vid',
      [':uid' => $account->id()]
    )->fetchCol();
  }

  /**
   * {@inheritdoc}
   */
  public function countDefaultLanguageRevisions(ProductInterface $product) {
    return $this->database->query(
      'SELECT COUNT(*) FROM {' . $this->getRevisionDataTable() . '} WHERE pid = :pid AND default_langcode = 1',
      [':pid' => $product->id()]
    )->fetchField();
  }

  /**
   * {@inheritdoc}
   */
  public function updateType($old_type, $new_type) {
    return $this->database->update($this->getBaseTable())
      ->fields(['type' => $new_type])
      ->condition('type', $old_type)
      ->execute();
  }

  /**
   * {@inheritdoc}
   */
  public function clearRevisionsLanguage(LanguageInterface $language) {
    return $this->database->update($this->getRevisionTable())
      ->fields(['langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED])
      ->condition('langcode', $language->getId())
      ->execute();
  }

  /**
   * {@inheritdoc}
   */
  protected function doSave($id, EntityInterface $entity) {
    $is_new = $entity->isNew();
    $return = parent::doSave($id, $entity);

    if ($is_new) {
      $this->database->update($this->dataTable)
        ->fields(['group_id' => $entity->id()])
        ->condition('pid', $entity->id())
        ->execute();
    }

    return $return;
  }

}

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

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