Как убрать возможность добавления в друзья определенной роли в модуле User Relationships

Главные вкладки

Аватар пользователя rezus13 rezus13 8 ноября 2013 в 11:49

Привет сообществу Друпала!
Кто работал с модулем 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 и т.д. не работает в данном случае или я что-то не правильно делаю.

Подскажите как убрать ссылочку.

Комментарии

Аватар пользователя serega111 serega111 8 ноября 2013 в 13:10

А в настройках прав доступа не пробовали отключить возможность для роли Y запрашивать отношение Дружба? Там должно быть что то типа Request Дружба relationship

Аватар пользователя rezus13 rezus13 8 ноября 2013 в 20:53

Нет. Не вариант. Проблема в том, что если вырубить пункт Request блабла relationships в настройках прав пользователей, то пользователь не сможет принять приглашение в друзья. А мне нужно, чтобы он мог принимать или отклонять приглашение, но сам приглашать не мог.

Аватар пользователя rezus13 rezus13 11 ноября 2013 в 13:12

Решено!
Немного покопавшись в модуле - решил проблему.
Кому интересно, то в файле 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;
?>

В итоге ссылка на добавление в друзья у роли «название_вашей_роли» пропадет