|
|
02.09.2012, 06:48
|
|
Гость
Гость
|
По умолчанию в списке друзей отображаются все кого юзер добавил в друзья.
А мне хотелось бы получить список тех, кого юзер добавил, и в ответ тот тоже добавил этого юзера. Т.е. оба пользователя друг друга добавили в друзья.
Если я правильно понимаю, единственный способ это сделать, переписать функцию nc_auth_get_all_relation
Цитата:/**
* Вернуть все отношения пользователя
*
* @param int User_ID - индетификатор пользователя. По умолчанию - текущий
* @return array [related_id] => type
*/
function nc_auth_get_all_relation($User_ID = 0, $reset = 0, $output_all = 0) {
global $db, $current_user;
// статические массивы
static $init; // флаги инициализации
static $relation; // результат выполнения функции
// приведение к целому типу
$User_ID = intval($User_ID);
// пользователь по умолчанию
if (!$User_ID) $User_ID = $current_user['User_ID'];
// результат в статичнском массиве нет
if (!$init[$User_ID] || $reset) {
$result = $db->get_results("SELECT a.`Related_ID`, a.`Type` as `ncRelType`, u.*
FROM `Auth_UserRelation` as `a`, `User` AS `u`
WHERE u.User_ID = a.Related_ID
AND a.`User_ID` = '".$User_ID."'", ARRAY_A);
$init[$User_ID] = true;
$relation[$User_ID] = array();
// проход по результату
if (!empty($result))
foreach ($result as $row) {
$relation[$User_ID][$row['Related_ID']] = $row;
}
}
if ($output_all) {
return $relation[$User_ID];
} else {
$res = array();
foreach ($relation[$User_ID] as $v)
$res[$v['Related_ID']] = $v['ncRelType'];
return $res;
}
} Подскажите, как изменить эту функцию...
|
|
|
03.09.2012, 11:30
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Ф-ию менять не обязательно, можно эту инфу получить отдельным запросом, что-то типа (проверяйте сами, я не тестил):
Код:
select u.*
from Auth_UserRelation r,
User u
where r.Related_ID = u.User_ID
and r.User_ID = $User_ID
and r.Type = $relation_type
and exists (
select 1
from Auth_UserRelation r2
where r2.User_ID = r.Related_ID
and r2.Related_ID = r.User_ID
and r2.Type = $relation_type
)
где
$User_ID - ИД юзера, для которого ищите
$relation_type - тип связи (сами подставьте значение, которое определяет, что юзеры = друзья)
Temet nosce...
|
|
|
03.09.2012, 15:15
|
|
Гость
Гость
|
А можно подробнее? Я в подобных запросах плохо понимаю...
Где его выполнять, и как?
|
|
|
03.09.2012, 17:17
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Где
- Выполнять можно где угодно - можно в макетах дизайна, можно в компонентах, либо в своих собственных пхп скриптах.
Как
- См. описание ф-ий listQuery(), $db->get_results()
А там уж сами смотрите, ф-ию nc_auth_get_all_relation() вы ж где-то выполняете и результат как-то обрабатываете...
Temet nosce...
|
|
|
04.09.2012, 15:29
|
|
Гость
Гость
|
Оказывается Кот и так умеет проверять взаимных друзей функцией nc_auth_is_mutual )))
Теперь у меня другая проблема... Как при просмотре страницы пользователя (action==full), отобразить всех юзеров, которые добавили его в друзья?
|