You are here

function HeartbeatActivity::__construct in Heartbeat 6.4

Same name and namespace in other branches
  1. 6.3 includes/heartbeatactivity.inc \HeartbeatActivity::__construct()
  2. 7 includes/heartbeatactivity.inc \HeartbeatActivity::__construct()

constructor

Parameters

$data Array or Object with fields that can match this object: Data for the message, some are converted. It's possible to give a sql-result set as data which will adapt to a heartbeatActivity object.

$template HeartbeatMessageTemplate: holds the template data.

File

includes/heartbeatactivity.inc, line 66
HeartbeatActivity object Defines one heartbeat activity object.

Class

HeartbeatActivity
Class defines an activity message object

Code

function __construct($data, HeartbeatMessageTemplate $template) {
  $this->template = $template;
  $this->additions = new stdClass();
  $this->message_id = $this->template->message_id;
  if (is_object($data)) {
    $data = (array) $data;
  }
  if (isset($data['uaid'])) {
    $this->uaid = $data['uaid'];
  }
  if (isset($data['count'])) {
    $this->count = $data['count'];
  }

  // Only load the user if it's needed.
  if (empty($data['mail'])) {
    $this->actor = heartbeat_user_load($data['uid']);
  }
  else {
    $account = new stdClass();
    $message_actor_data = unserialize($data['data']);
    unset($data['data']);
    $account->data = $message_actor_data;
    $account->heartbeat_activity_settings = isset($message_actor_data['heartbeat_activity_settings']) ? $message_actor_data['heartbeat_activity_settings'] : array();
    foreach (user_fields() as $field) {
      if (isset($data[$field])) {
        $account->{$field} = $data[$field];
      }
    }
    $this->actor = $account;
  }
  $this->uid = $data['uid'];
  $this->uid_target = $data['uid_target'];
  $this->nid = $data['nid'];
  $this->nid_info = !empty($data['nid_info']) ? unserialize($data['nid_info']) : array();
  $this->nid_target = isset($data['nid_target']) ? (int) $data['nid_target'] : 0;
  $this->nid_target_info = !empty($data['nid_target_info']) ? unserialize($data['nid_target_info']) : array();
  $this->timestamp = !empty($data['timestamp']) ? $data['timestamp'] : $_SERVER['REQUEST_TIME'];

  // For performance reasons, one activity has knowlegde of the comment count.
  $this->additions->comment_count = isset($data['uaid_comments']) ? $data['uaid_comments'] : 0;
  $this->access = (int) $data['access'];
  if (isset($data['message'])) {
    $this->message = $data['message'];
  }
  else {
    $this->message = $this->template->message;
  }
  if (!empty($data['message_concat'])) {
    $this->message_concat = $data['message_concat'];
  }
  else {
    $this->message_concat = $this->template->message_concat;
  }
  $this
    ->set_variables($data['variables']);
  if (isset($data['extra']['duplicate'])) {
    $this->variables['duplicate'] = $data['extra']['duplicate'];
  }
}