uid);
$group->type = 'group-admin';
$groups[privatemsg_recipient_key($group)] = $group;
}
return $groups;
}
/**
* Load a number of groups based on their nid.
*/
function custom_privatemsg_group_members_load_multiple($nids) {
$result = db_query("SELECT title, nid AS recipient FROM {node} WHERE nid IN (" . db_placeholders($nids) . ")", $nids);
$groups = array();
while ($group = db_fetch_object($result)) {
// Unset uid so other modules don't think this is a user.
unset($group->uid);
$group->type = 'group-members';
$groups[privatemsg_recipient_key($group)] = $group;
}
return $groups;
}
/**
* Format a group admin to be displayed as a recipient.
*/
function theme_custom_privatemsg_group_admin_format($group, $options = array()) {
if (!isset($group->nid)) {
$group->nid = $group->recipient;
}
if (!empty($options['plain'])) {
$name = $group->nid;
if (!empty($options['unique'])) {
$name .= ' [group-admin]';
}
return $name;
}
return l($group->title, "node/{$group->nid}") . ' (' . t('Group Admin') . ')';
}
/**
* Format a group's members to be displayed as a recipient.
*/
function theme_custom_privatemsg_group_members_format($group, $options = array()) {
if (!isset($group->nid)) {
$group->nid = $group->recipient;
}
if (!empty($options['plain'])) {
$name = $group->nid;
if (!empty($options['unique'])) {
$name .= ' [group-members]';
}
return $name;
}
return l($group->title, "node/{$group->nid}") . ' (' . t('Group Members') . ')';
}
/**
* Loads group admin users with for a specific group.
*/
function custom_privatemsg_group_admin_load_recipients($recipient, $limit, $offset) {
$recipients = array();
$nid = isset($recipient->recipient) ? $recipient->recipient : $recipient->nid;
$result = db_query_range(og_list_users_sql(1, 1), $nid, $offset, $limit);
while ($row = db_fetch_object($result)) {
$recipients[] = $row->uid;
}
return $recipients;
}
/**
* Loads group member users with for a specific group.
*/
function custom_privatemsg_group_members_load_recipients($recipient, $limit, $offset) {
$recipients = array();
$nid = isset($recipient->recipient) ? $recipient->recipient : $recipient->nid;
$result = db_query_range(og_list_users_sql(1, 0), $nid, $offset, $limit);
while ($row = db_fetch_object($result)) {
$recipients[] = $row->uid;
}
return $recipients;
}
/**
* Return the number of admins for a given group.
*/
function custom_privatemsg_group_admin_count_recipients($recipient) {
$recipients = array();
$nid = isset($recipient->recipient) ? $recipient->recipient : $recipient->nid;
return db_result(db_query(og_list_users_sql(1, 1, NULL, TRUE), $nid));
}
/**
* Return the number of members for a given group.
*/
function custom_privatemsg_group_members_count_recipients($recipient) {
$recipients = array();
$nid = isset($recipient->recipient) ? $recipient->recipient : $recipient->nid;
return db_result(db_query(og_list_users_sql(1, 0, NULL, TRUE), $nid));
}
/**
* Provides autocomplete suggestions for group admin.
* Note: We are not using this, we are using the TextboxList version.
*/
function custom_privatemsg_group_admin_autocomplete($fragment, $names, $limit) {
$query = _privatemsg_assemble_query(array('autocomplete_group_admins', 'custom_privatemsg_group_admins'), $fragment, $names);
$result = db_query_range($query['query'], $fragment, 0, $limit);
// 3: Build proper suggestions and print.
$groups = array();
while ($group = db_fetch_object($result)) {
$group->type = 'group-admin';
$group->recipient = $group->nid;
$groups[privatemsg_recipient_key($group)] = $group;
}
return $groups;
}
/**
* Provides autocomplete suggestions for group members.
* Note: We are not using this, we are using the TextboxList version.
*/
function custom_privatemsg_group_members_autocomplete($fragment, $names, $limit) {
$query = _privatemsg_assemble_query(array('autocomplete_group_members', 'custom_privatemsg_group_members'), $fragment, $names);
$result = db_query_range($query['query'], $fragment, 0, $limit);
// 3: Build proper suggestions and print.
$groups = array();
while ($group = db_fetch_object($result)) {
$group->type = 'group-members';
$group->recipient = $group->nid;
$groups[privatemsg_recipient_key($group)] = $group;
}
return $groups;
}
/**
* Implements hook_privatemsg_name_lookup().
*/
function custom_privatemsg_privatemsg_name_lookup($string) {
// Remove optional group admin, and group member specifier.
$nid = trim(str_replace(array('[group-admin]', '[group-members]'), '', $string));
$result = db_query("SELECT *, nid AS recipient FROM {node} WHERE nid = %d AND type = 'group'", $nid);
if ($group = db_fetch_object($result)) {
// Unset uid so other modules don't think this is a user.
unset($group->uid);
$groups = array();
if (strpos($string, '[group-admin]') !== FALSE) {
$group->type = 'group-admin';
$groups[privatemsg_recipient_key($group)] = $group;
}
elseif (strpos($string, '[group-members]') !== FALSE) {
$group->type = 'group-members';
$groups[privatemsg_recipient_key($group)] = $group;
}
else {
$group->type = 'group-admin';
$groups[privatemsg_recipient_key($group)] = $group;
$group->type = 'group-members';
$groups[privatemsg_recipient_key($group)] = $group;
}
return $groups;
}
}
/**
* Query definition to search for group admin autocomplete suggestions.
*
* @param $fragments
* Query fragments array.
* @param $search
* Which search string is currently searched for.
* @param $names
* Array of names not to be used as suggestions.
*/
function custom_privatemsg_sql_autocomplete_group_admins(&$fragments, $search, $names) {
$fragments['primary_table'] = '{node} node';
$fragments['select'][] = 'node.*';
// Escape the % to get it through the placeholder replacement.
$fragments['where'][] = "node.nid = %d";
$fragments['query_args']['where'][] = $search;
if (!empty($names)) {
// If there are already names selected, exclude them from the suggestions.
$fragments['where'][] = "node.nid NOT IN (". db_placeholders($names) .")";
$fragments['query_args']['where'] += $names;
}
$fragments['order_by'][] = 'node.title ASC';
}
/**
* Query definition to search for group members autocomplete suggestions.
*
* @param $fragments
* Query fragments array.
* @param $search
* Which search string is currently searched for.
* @param $names
* Array of names not to be used as suggestions.
*/
function custom_privatemsg_sql_autocomplete_group_members(&$fragments, $search, $names) {
$fragments['primary_table'] = '{node} node';
$fragments['select'][] = 'node.*';
// Escape the % to get it through the placeholder replacement.
$fragments['where'][] = "node.nid = %d";
$fragments['query_args']['where'][] = $search;
if (!empty($names)) {
// If there are already names selected, exclude them from the suggestions.
$fragments['where'][] = "node.nid NOT IN (". db_placeholders($names) .")";
$fragments['query_args']['where'] += $names;
}
$fragments['order_by'][] = 'node.title ASC';
}