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'; }