Advertising sustains the DA. Ads are hidden for members. Join today

Avatars in your Activity

Last updated on
30 April 2025

1) create a view field handler for the message field

/**
* Field handler to provide the activity message
*/
class my_module_views_handler_field_message extends activity_views_handler_field_message {
    function query() {
        return activity_views_handler_field_message::query();
    }
    function pre_render($values) {
        return activity_views_handler_field_message::pre_render($values);
    }
    function render($values) {
        $status = activity_views_handler_field_message::render($values);
        $status = _render_user_avatars($status);
        return $status;
    }
    function _render_user_avatars($status) {
        preg_match_all("@<a[^<]*profile[^<]*</a>@", $status, $result, PREG_SET_ORDER);
        foreach ($result as $matches) {
            foreach ($matches as $match) {
                $username = strip_tags($match);
                $user = user_load(array("name" => $username));
                $token = "<span class='user-picture-token'>".theme("user_picture", $user).theme("username", $user)."</span>";
                $status = str_replace($match, $token, $status);
            }
        }
        return $status;
    }
}

2) Register the handler

/**
* Implementation of hook_views_handlers().
*/
function my_module_views_handlers() {
  return array(
    'info' => array(
      'path' => drupal_get_path('module', 'my_module'),
    ),
    'handlers' => array(
      'my_module_views_handler_field_message' => array(
        'parent' => 'activity_views_handler_field_message',
      ),
    ),
  );
}

3) Hook in to the api, set to use the new handler

function my_module_views_api() {
    return array(
    'api' => 2,
    );
}

function my_module_views_data_alter(&$data) {
    $data['activity_messages']['message']['field']['handler'] = 'my_module_views_handler_field_message';
}

4) Rebuild cache and go
Go to admin/settings/performance and clear cache, then give it a go.

Help improve this page

Page status: Not set

You can: