View source
<?php
if (!variable_get('user_relationship_privatemsg_ops', FALSE)) {
variable_set('user_relationship_privatemsg_ops', array(
'request',
'cancel',
'approve',
'disapprove',
'remove',
));
}
require_once 'user_relationship_privatemsg_defaults.inc';
function user_relationship_privatemsg_send($op, $relationship) {
if ($op == 'request' && $relationship->approved || !variable_get("user_relationship_privatemsg_send_{$op}", TRUE)) {
return;
}
!$relationship->requester ? $relationship->requester = user_load(array(
'uid' => $relationship->requester_id,
)) : NULL;
!$relationship->requestee ? $relationship->requestee = user_load(array(
'uid' => $relationship->requestee_id,
)) : NULL;
$requester = $relationship->requester;
$requestee = $relationship->requestee;
$send_to = array();
switch ($op) {
case 'request':
case 'cancel':
$message_to[] = $requestee;
break;
case 'approve':
case 'disapprove':
$message_to[] = $requester;
break;
case 'remove':
$message_to[] = $requester;
if (!$relationship->is_oneway) {
$message_to[] = $requestee;
}
break;
default:
return;
}
$sender = user_load(array(
'uid' => variable_get('user_relationship_privatemsg_sender', 1),
));
foreach ($message_to as $target) {
if ($sender->uid == $target->uid) {
continue;
}
$replacements = user_relationship_privatemsg_replacements($relationship);
if ($op == 'remove') {
$replacements['@profile_uid'] = $target->uid;
}
$message_function = "user_relationship_privatemsg_{$op}_default";
$subject = t(variable_get("user_relationship_privatemsg_{$op}_subject", constant(strtoupper("user_relationship_privatemsg_{$op}_subject"))), $replacements);
$message = t(variable_get("user_relationship_privatemsg_{$op}_message", $message_function()), $replacements);
_privatemsg_send($sender, $target, $subject, $message, FILTER_FORMAT_DEFAULT, 0, 'user-relationship-notification');
}
}
function user_relationship_privatemsg_form_alter($form_id, &$form) {
global $user;
switch ($form_id) {
case 'privatemsg_new':
$relationships = user_relationships_load(array(
'requester_id' => $user->uid,
), FALSE, 'requestee_id', NULL, NULL, TRUE);
$contacts = array();
foreach ($relationships as $relationship_list) {
foreach ($relationship_list as $relationship) {
$contacts[$relationship->plural_name][$relationship->requestee_name] = $relationship->requestee_name;
}
}
$form['quick']['#options'] = array_merge($form['quick']['#options'], $contacts);
break;
case 'privatemsg_contacts_form':
$relationships = user_relationships_load(array(
'requester_id' => $user->uid,
), FALSE, 'rid', NULL, NULL, TRUE);
foreach ($relationships as $relationship) {
$form['contacts'][$relationship->requestee_id]['selected'] = array(
'#type' => 'checkbox',
);
$form['contacts'][$relationship->requestee_id]['name'] = array(
'#type' => 'value',
'#value' => $relationship->requestee_name,
);
$form['contacts'][$relationship->requestee_id]['contact'] = array(
'#type' => 'value',
'#value' => theme('privatemsg_username', (object) array(
'uid' => $relationship->requestee_id,
'name' => $relationship->requestee_name,
)),
);
$form['contacts'][$relationship->requestee_id]['operations'] = array(
'#type' => 'value',
'#value' => l(t('Write private message'), 'privatemsg/new/' . $relationship->requestee_id),
);
}
if ($relationships) {
$form['selected'] = array(
'#type' => 'fieldset',
'#collapsible' => FALSE,
'#collapsed' => FALSE,
'#prefix' => '<div class="container-inline">',
'#suffix' => '</div>',
);
$form['selected']['label'] = array(
'#value' => '<div><strong>' . t('With selected:') . '</strong> </div>',
);
$form['selected']['write_message'] = array(
'#type' => 'submit',
'#value' => t('Write private message'),
);
}
break;
case 'user_relationships_settings':
$relationship = user_relationships_types_load();
$relationship = array_pop($relationship);
$form['privatemsg'] = array(
'#type' => 'fieldset',
'#title' => t('Privatemsg Options'),
'#weight' => -10,
);
$sender = user_load(array(
'uid' => variable_get('user_relationship_privatemsg_sender', 1),
));
$form['privatemsg']['user_relationship_privatemsg_sender'] = array(
'#type' => 'textfield',
'#title' => t('Sender'),
'#size' => 50,
'#maxlength' => 64,
'#required' => TRUE,
'#default_value' => $sender->name,
'#autocomplete_path' => 'privatemsg/autocomplete',
);
$user_relationship_privatemsg_ops = variable_get('user_relationship_privatemsg_ops', array());
foreach ($user_relationship_privatemsg_ops as $op) {
$message_function = "user_relationship_privatemsg_{$op}_default";
$form['privatemsg'][$op] = array(
'#type' => 'fieldset',
'#title' => t(ucfirst($op)),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['privatemsg'][$op]["user_relationship_privatemsg_send_{$op}"] = array(
'#type' => 'checkbox',
'#title' => t('Send @op messages', array(
'@op' => $op,
)),
'#default_value' => variable_get("user_relationship_privatemsg_send_{$op}", TRUE),
);
$form['privatemsg'][$op]["user_relationship_privatemsg_{$op}_subject"] = array(
'#type' => 'textfield',
'#title' => t('@Op relationship email subject', array(
'@Op' => ucfirst($op),
)),
'#default_value' => variable_get("user_relationship_privatemsg_{$op}_subject", constant(strtoupper("user_relationship_privatemsg_{$op}_subject"))),
);
$form['privatemsg'][$op]["user_relationship_privatemsg_{$op}_message"] = array(
'#type' => 'textarea',
'#title' => t('@Op relationship email message', array(
'@Op' => ucfirst($op),
)),
'#default_value' => variable_get("user_relationship_privatemsg_{$op}_message", $message_function()),
'#description' => t('Replacement strings are: %macros', array(
'%macros' => implode(', ', array_keys(user_relationship_privatemsg_replacements($relationship))),
)),
);
}
break;
}
}
function user_relationship_privatemsg_user_relationships($type, &$relationship, $category = NULL) {
if (in_array($type, array(
'post-save',
'delete',
))) {
user_relationship_privatemsg_send($category, $relationship);
}
}