You are here

ProfileStorage.php in Profile 8

Namespace

Drupal\profile

File

src/ProfileStorage.php
View source
<?php

namespace Drupal\profile;

use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
use Drupal\Core\Session\AccountInterface;

/**
 * Defines the entity storage for profile.
 */
class ProfileStorage extends SqlContentEntityStorage implements ProfileStorageInterface {

  /**
   * {@inheritdoc}
   */
  public function loadMultipleByUser(AccountInterface $account, $profile_type_id, $published = TRUE) {
    $query = $this
      ->getQuery();
    $query
      ->condition('uid', $account
      ->id())
      ->condition('type', $profile_type_id)
      ->condition('status', $published)
      ->sort('is_default', 'DESC')
      ->sort('profile_id', 'DESC')
      ->accessCheck(FALSE);
    $result = $query
      ->execute();
    return $result ? $this
      ->loadMultiple($result) : [];
  }

  /**
   * {@inheritdoc}
   */
  public function loadByUser(AccountInterface $account, $profile_type_id) {
    $query = $this
      ->getQuery();
    $query
      ->condition('uid', $account
      ->id())
      ->condition('type', $profile_type_id)
      ->condition('status', TRUE)
      ->sort('is_default', 'DESC')
      ->sort('profile_id', 'DESC')
      ->range(0, 1)
      ->accessCheck(FALSE);
    $result = $query
      ->execute();
    return $result ? $this
      ->load(reset($result)) : NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function loadDefaultByUser(AccountInterface $account, $profile_type_id) {
    $result = $this
      ->loadByProperties([
      'uid' => $account
        ->id(),
      'type' => $profile_type_id,
      'status' => TRUE,
      'is_default' => TRUE,
    ]);
    return !empty($result) ? reset($result) : NULL;
  }

}

Classes

Namesort descending Description
ProfileStorage Defines the entity storage for profile.