Год искал решение и кое как нашел доделал. Но он с косяками и кривое. Может кто-нибудь поможет довести до ума.
<?php
// check if friends code
$account = user_load(array('uid' => $node->uid));
$owner = $node->name;
$current_relationships = user_relationships_load(array('between' => array($user->uid, arg(1))), array('sort' => 'rtid'));
$rid = $current_relationships['1']['0']->rid;
//if users are friends and relationship has been approved
if ($relationships = user_relationships_load(array('between' => array($user->uid, $uid),'approved' => 1))) {
// set a value of friends to 1 to allow content to be displayed below.
$friends = 1;
if (
$relationships = user_relationships_load(array('between' => array($user->uid, $uid),'approved' => 0))) {
// set a value of friends to 1 to allow content to be displayed below.
$friends = 0;
} elseif(
$user->uid != $uid) {
print
"<a href=/user/" . $user->uid . "/relationships/" . $rid . "/remove?destination=user/$uid/ class=\"user_relationships_popup_link\">".t('Remove ' . $owner . ' as Friend')." </a>";
$friends = 1;
} else {
$friends = 0;
}
}
elseif (
$user->uid != $uid) {
$friends = 0;
print
"<a href=\"/relationship/$uid/request/1?destination=user/$uid\" class=\"user_relationships_popup_link\">".t('Add ' . $owner . ' as Friend')."</a>";
} else {
$friends = 1;
}
?>
На сайте добавлено одна взаимосвязь Друг.
1. При нахождении у себя в профиле ссылки о добавлении/удалении взаимосвязи ДРУГ нет.
2. В чужом профиле если юзер не добавлен выводиться ссылка добавить. При добавлении (без подтверждения) - ВСЕ ТАКЖЕ ССЫЛКА на добавление (КАК бы ее заменить на фразу типа- запрос на добавление в друзья отправлен (ссылка на страницу не подтвержденных друзей).
3. После подтверждения - появляется ссылка удалить.
Вопрос как допилить код что бы можно было использовать и другие взаимосвязи.
Комментарии
Вот такой вариант подходит?
<?php //$ownerGl - это объект пользователя, профиль которого мы в данный момент просматриваем
//Загружаем объект массив объектов связи текущего юзера и владельца профиля
$current_relationships = user_relationships_load(array('between' => array($user->uid, $ownerGl->uid)));//Если связей будет несколько, т онужно будет переделать проверку не на первый элемент, а циклом!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$current_relationship_object = array_shift($current_relationships); //Объект связи есть
if(isset($current_relationship_object)){
//Проверяем подтверждена ли связь
if($current_relationship_object->approved == 1){
echo 'Это ваш друг<br />';
print theme('user_relationships_remove_link', $user->uid, $current_relationship_object->rid);
}
if($current_relationship_object->approved == 0){
echo 'Этот пользователь еще не подтвердил запрос на дружбу (выводим ссылку "отменить запрос")<br />';
print theme('user_relationships_pending_request_cancel_link', $user->uid, $current_relationship_object->rid);
}
//Объекта связи нет
}else{
//Если связи между юзером и владельцем профиля нет и это разные пользователи, выводим ссылку добавления
if($user->uid != $ownerGl->uid){
$rel_type = user_relationships_type_load(1);
print theme('user_relationships_request_relationship_direct_link', $ownerGl, $rel_type);
}
}
?>
Я извиняюсь за "кривоту" кода. Сам только приступил к созданию кастомного профиля.
Если связей предусмотренно несколько, может работать неправильно (скорее всего и будет работать неправильно)
Вообще посмотрите inc-файл user_relationships_ui.theme модуля user_relationships. Он находится в /sites/all/modules/user_relationships/user_relationships_ui
не не канает...
1. в своем профиле тоже есть
2. пишется просто Сделать Друг из... при клике зависает... аякс... ибо не известно что за друган...
Не понял, что вы имеете ввиду
Так происходит, потому что у вас не определена переменная $ownerGl, как раз таки она и отвечает на вопрос "что за друган?"
Назначал я ее примерно так при инициализации модуля. В моем случае профили кастомные пользователей располагаются по пути profile/1, profile/2, и.т.п. (profile/{uid})
<?php
/*
$ownerGl - владелец просматриваемого материала, профиля и т.д.
*/
global $ownerGl; /*
* Назначение владельца $ownerGl
*/
function law_profile_pages_init() {
global $user;
global $ownerGl;
if(
arg(1) == '' || !ctype_digit(arg(1)) ) return $ownerGl = user_load($user->uid);if(
arg(0) == 'node' ){$current = node_load(arg(1));
return $ownerGl = user_load($current->uid);
}
return
$ownerGl = user_load(arg(1));}
?>
не у меня кастомый профили располагаются как и все остальные... /users/никнейм
и куда эту функцию пихать???
---
не могли бы вы привести к нормальному виду мой код там все работает как надо. не выводит только фразу в ожидании подтверждения... и все.
ну видимо я не так вас понял. Я думал вы имеете ввиду полностью свой профиль пользователя, который не имеет ничего общего со стандартным.
law_profile_pages_init() - это hook_init. Т.е. у вас она должна называться имя_вашего_модуля_init(). Мой модуль называется law_profile_pages, отсюда и название ф-и.
Вообще переменная $ownerGl сделана для удобства, чтобы постоянно не выцеплять аргументы из урла.
Код ваш поправлять я не буду, потому что по сути я вам привел то же самое, но не самостоятельно писал ссылки, а с помощью ф-й темизации модуля user_relationships.
Фразу (а точнее ссылку на отмену связи), когда юзер ожидает подтверждения выводит ф-я
<?php
theme('user_relationships_pending_request_cancel_link', $user->uid, $current_relationship_object->rid);
?>
$current_relationship_object->rid - айдишник неподтвержденной связи.
да я это понял.
Все решил. Посидел пару часиков по эксперменентировал с операторами if else и elseif