You are here

class PrivatemsgMessageController in Privatemsg 7

Same name and namespace in other branches
  1. 7.2 privatemsg.module \PrivatemsgMessageController

Private message controller, loads private messages.

Hierarchy

Expanded class hierarchy of PrivatemsgMessageController

1 string reference to 'PrivatemsgMessageController'
privatemsg_entity_info in ./privatemsg.module
Implements hook_entity_info().

File

./privatemsg.module, line 3095
Allows users to send private messages to other users.

View source
class PrivatemsgMessageController extends DrupalDefaultEntityController {
  protected $account = NULL;
  protected function attachLoad(&$messages, $revision_id = FALSE) {
    global $user;
    foreach ($messages as $message) {
      $message->user = $this->account ? $this->account : $user;

      // Load author of message.
      if (!($message->author = user_load($message->author))) {

        // If user does not exist, load anonymous user.
        $message->author = user_load(0);
      }
    }
    parent::attachLoad($messages, $revision_id);
  }
  protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {

    // Remove account from conditions.
    if (isset($conditions['account'])) {
      $this->account = $conditions['account'];
      unset($conditions['account']);
    }
    $query = parent::buildQuery($ids, $conditions, $revision_id);
    $query
      ->fields('pmi', array(
      'is_new',
      'thread_id',
    ));
    if ($this->account) {
      $query
        ->condition('pmi.recipient', $this->account->uid)
        ->condition('pmi.type', array(
        'hidden',
        'user',
      ));
    }
    else {

      // If no account is given, at least limit the result to a single row per
      // message.
      $query
        ->distinct();
    }
    $query
      ->join('pm_index', 'pmi', "base.mid = pmi.mid");
    return $query;
  }

  /**
   * {@inheritdoc}
   */
  protected function cacheGet($ids, $conditions = array()) {

    // Passing the account condition, which does not exist as a property to
    // parent::cacheGet() causes notices, remove it.
    // @todo Investigate if this causes any undesired side effects.
    if (isset($conditions['account'])) {
      unset($conditions['account']);
    }
    return parent::cacheGet($ids, $conditions);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DrupalDefaultEntityController::$cache protected property Whether this entity type should use the static cache.
DrupalDefaultEntityController::$entityCache protected property Static cache of entities, keyed by entity ID.
DrupalDefaultEntityController::$entityInfo protected property Array of information about the entity.
DrupalDefaultEntityController::$entityType protected property Entity type for this controller instance.
DrupalDefaultEntityController::$hookLoadArguments protected property Additional arguments to pass to hook_TYPE_load().
DrupalDefaultEntityController::$idKey protected property Name of the entity's ID field in the entity database table.
DrupalDefaultEntityController::$revisionKey protected property Name of entity's revision database table field, if it supports revisions.
DrupalDefaultEntityController::$revisionTable protected property The table that stores revisions, if the entity supports revisions.
DrupalDefaultEntityController::cacheSet protected function Stores entities in the static entity cache.
DrupalDefaultEntityController::cleanIds protected function Ensures integer entity IDs are valid.
DrupalDefaultEntityController::filterId protected function Callback for array_filter that removes non-integer IDs.
DrupalDefaultEntityController::load public function Implements DrupalEntityControllerInterface::load(). Overrides DrupalEntityControllerInterface::load
DrupalDefaultEntityController::resetCache public function Implements DrupalEntityControllerInterface::resetCache(). Overrides DrupalEntityControllerInterface::resetCache
DrupalDefaultEntityController::__construct public function Constructor: sets basic variables.
PrivatemsgMessageController::$account protected property
PrivatemsgMessageController::attachLoad protected function Attaches data to entities upon loading. Overrides DrupalDefaultEntityController::attachLoad
PrivatemsgMessageController::buildQuery protected function Builds the query to load the entity. Overrides DrupalDefaultEntityController::buildQuery
PrivatemsgMessageController::cacheGet protected function Gets entities from the static cache. Overrides DrupalDefaultEntityController::cacheGet