public function HeartbeatActivity::create_grouped_message in Heartbeat 6.4
Same name and namespace in other branches
- 7 includes/heartbeatactivity.inc \HeartbeatActivity::create_grouped_message()
File
- includes/heartbeatactivity.inc, line 189
- HeartbeatActivity object
Defines one heartbeat activity object.
Class
- HeartbeatActivity
- Class defines an activity message object
Code
public function create_grouped_message($candidates, $max_items_to_group = 5) {
global $base_url;
$message_template = $this
->rebuild_message(TRUE);
$message_extension = '';
$message_template = str_replace("%times%", $this->target_count, $message_template);
$message_template = str_replace("%count%", $this->target_count, $message_template);
$merged_string = '';
$remains = array();
$target = $this->template->concat_args['group_target'];
$beat = 'beat-item-' . $this->uaid;
$unique = $candidates['variables'];
$count = $candidates['count'];
if (!empty($this->template->concat_args['group_num_max'])) {
$max_items_to_group = $this->template->concat_args['group_num_max'];
}
if ($count > $max_items_to_group) {
$count = $max_items_to_group;
$unique = array_slice($unique, 0, $count);
$remains = array_slice($candidates['variables'], $count);
}
if (preg_match_all("|\\%(.*)\\%(.*)|U", $message_template, $matches)) {
if ($this->template->concat_args['show_remaining_items']) {
$hidden_remains = theme('heartbeat_activity_remaining', $beat, $target, $remains);
}
$placeholder = $matches[1][0];
$i = 1;
foreach ($unique as $stored_variables) {
if (isset($stored_variables["@" . $target])) {
if ($i == 1) {
$merged_string .= ' ' . $stored_variables["@" . $target];
}
elseif ($i < $count && $count > 2) {
if (isset($this->template->concat_args['merge_separator_t']) && strlen(strip_tags($this->template->concat_args['merge_separator_t'])) > 0) {
$merged_string .= ' ' . t($this->template->concat_args['merge_separator']);
}
else {
$merged_string .= ' ' . $this->template->concat_args['merge_separator'];
}
$merged_string .= ' ' . $stored_variables["@" . $target];
}
elseif ($i == $count || $count == 2) {
if (isset($this->template->concat_args['merge_end_separator_t']) && strlen(strip_tags($this->template->concat_args['merge_end_separator_t'])) > 0) {
$merged_string .= ' ' . t($this->template->concat_args['merge_end_separator']);
}
else {
$merged_string .= ' ' . $this->template->concat_args['merge_end_separator'];
}
if (count($remains) >= 1 && $hidden_remains != '') {
$merged_string .= ' ' . $stored_variables["@" . $target];
if ($this->template->concat_args['show_remaining_items']) {
$message_extension .= $hidden_remains;
$merged_string .= theme('hearbeat_activity_remain_link', $beat, count($remains));
}
}
else {
$merged_string .= ' ' . $stored_variables["@" . $target];
}
}
}
$i++;
}
$message_template = str_replace("%" . $placeholder . "%", $merged_string, $message_template);
if (isset($message_extension)) {
$message_template .= $message_extension;
}
}
$this->message = $message_template;
}