Привет сообществу Друпала!
Кто работал с модулем User Relationships может знает как убрать одну ссылочку. Модуль позволяет добавлять друг друга в друзья (черт побери как звучит то...).
Ситуация:
1. Есть юзера с ролью «Х» и есть юзера с ролью «Y»
2. Юзер с ролью «X» может добавить в друзья юзера с ролью «Y» путем захождения в его профайл и клацанием на ссылку добавления в друзья.
3. Тоже самое может и роль «Y».
Как замутить так, чтобы юзер с ролью «Y» не видел этой ссылки или не мог добавлять в друзья юзеров с ролью «Х»?
Есть код в файле user_relationships_ui.theme.inc :
<?php
/**
* Create a direct relationship link
*/
function theme_user_relationships_request_relationship_direct_link($variables) {
$relate_to = $variables['relate_to'];
$relationship_type = $variables['relationship_type'];
//safety, revert to a generic link
if (!isset($relationship_type)) {
return theme('user_relationships_request_relationship_link', array('relate_to' => $relate_to));
}
return l(
t("Become %name's rel_name", array('%name' => format_username($relate_to)) + user_relationships_type_translations($relationship_type)),
"relationship/{$relate_to->uid}/request/{$relationship_type->rtid}",
array(
'query' => drupal_get_destination(),
'html' => TRUE,
'attributes' => array('class' => array('user_relationships_popup_link')),
)
);
}?>
Он создает ссылку добавления в друзья и дествует для всех ролей.
Начал разбирать что по чём.
Вставил в template.php:
<?php
global $user;
if (in_array('roleY', $user->roles)) :
drupal_set_message('Вы не можете добавлять в друзья!');
/* А вот тут должен был быть код, который убирает ссылку, которая формируется в коде, что сверху */
endif;
?>
К сожалению, unset, hide и т.д. не работает в данном случае или я что-то не правильно делаю.
Подскажите как убрать ссылочку.
Комментарии
А в настройках прав доступа не пробовали отключить возможность для роли Y запрашивать отношение Дружба? Там должно быть что то типа Request Дружба relationship
Нет. Не вариант. Проблема в том, что если вырубить пункт Request блабла relationships в настройках прав пользователей, то пользователь не сможет принять приглашение в друзья. А мне нужно, чтобы он мог принимать или отклонять приглашение, но сам приглашать не мог.
Решено!
Немного покопавшись в модуле - решил проблему.
Кому интересно, то в файле user_relationships_ui.module на строке 53 после:
<?php
function user_relationships_ui_actions_between($viewer, $viewed, $action_types = array('add' => 1, 'remove' => 1, 'requested' => 1, 'received' => 1)) {
if ($viewer->uid == $viewed->uid) {
return;
}
?>
нужно вставить проверку на роль
<?php
global $user;
if (in_array('название_вашей_роли', $user->roles)) :
return FALSE;
endif;
?>
В итоге ссылка на добавление в друзья у роли «название_вашей_роли» пропадет