[NC] FriendsRequest

[NC] FriendsRequest 2.3.3

Нет прав для скачивания
Позволяет добавлять друзей.

baltun

Администратор
Сообщения
12.274
Реакции
3.078
Баллы
1.833
baltun разместил(а) новый ресурс:

[NC] FriendsRequest - Позволяет добавлять друзей.

Надстройка «Запрос друзей» улучшает взаимодействие в сообществе, добавляя надёжную систему управления друзьями. Пользователи могут отправлять запросы на добавление в друзья из профилей участников с помощью простой кнопки «Добавить друга». После отправки запросы появляются на специальной странице «Список друзей», где пользователи могут просматривать отправленные/полученные запросы и управлять дружескими отношениями. Получатели получают уведомления о новых запросах, принятии или отклонении...

Посмотреть страницу этого ресурса...
 
На 2.3.6 при открытии любого профиля вместо него лезет ошибка, которая дублируется в админке:

Код:
ErrorException: [E_WARNING] Undefined property: XF\Mvc\Reply\Reroute::$params • src/addons/NC/FriendsRequest/XF/Pub/Controller/Member.php:13
Сгенерирована пользователем: User12326 Мар 2025 в 17:31
Трассировка:
#0 src/addons/NC/FriendsRequest/XF/Pub/Controller/Member.php(13): XF::handlePhpError(2, '[E_WARNING] Und...', '/var/www/skitte...', 13)
#1 src/XF/Mvc/Dispatcher.php(362): NC\FriendsRequest\XF\Pub\Controller\Member->actionIndex(Object(XF\Mvc\ParameterBag))
#2 src/XF/Mvc/Dispatcher.php(264): XF\Mvc\Dispatcher->dispatchClass('XF:Member', 'Index', Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Member), NULL)
#3 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Member), NULL)
#4 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#5 src/XF/App.php(2826): XF\Mvc\Dispatcher->run()
#6 src/XF.php(806): XF\App->run()
#7 index.php(23): XF::runApp('XF\\Pub\\App')
#8 {main}

Плагин, похоже, не совместим с Signup abuse detection and blocking
 
Попробуйте (src\addons\NC\FriendsRequest\XF\Pub\Controller\Member.php) так было:
PHP:
class Member extends XFCP_Member
{
    public function actionIndex(ParameterBag $params)
    {
        $view = parent::actionIndex($params);

        // Проверяем, является ли $view объектом типа View
        if (!($view instanceof \XF\Mvc\Reply\View)) {
            // Если это не View, просто возвращаем $view как есть
            return $view;
        }

        $visitor = \XF::visitor();

        // Получаем параметры через метод getParams()
        $viewParams = $view->getParams();

        // Проверяем, существует ли ключ 'user' в параметрах
        if (!isset($viewParams['user'])) {
            // Если ключ 'user' отсутствует, возвращаем $view без изменений
            return $view;
        }

        $user = $viewParams['user'];

        if ($visitor->user_id && $visitor->user_id != $user->user_id)
        {
            $friendRepo = $this->repository('NC\FriendsRequest:Friend');
            $areFriends = $friendRepo->areFriends($visitor->user_id, $user->user_id);

            $requestRepo = $this->repository('NC\FriendsRequest:FriendRequest');
            $pendingRequest = $requestRepo->getRequestBetween($visitor->user_id, $user->user_id);

            // Устанавливаем новое значение friendStatus
            $viewParams['friendStatus'] = $areFriends ? 'friends' : ($pendingRequest ? 'pending' : 'none');
        }
        else
        {
            // Устанавливаем статус "self"
            $viewParams['friendStatus'] = 'self';
        }

        // Обновляем параметры через метод setParams()
        $view->setParams($viewParams);

        return $view;
    }
}
Должно все работать, в смысле не будет ошибки но будет работать ли функционал нужно проверить.
 
Последнее редактирование:
Попробуйте (src\addons\NC\FriendsRequest\XF\Pub\Controller\Member.php) так было:
PHP:
class Member extends XFCP_Member
{
    public function actionIndex(ParameterBag $params)
    {
        $view = parent::actionIndex($params);
        $visitor = \XF::visitor();
        $user = $view->params['user'];

        if ($visitor->user_id && $visitor->user_id != $user->user_id)
        {
            $friendRepo = $this->repository('NC\FriendsRequest:Friend');
            $areFriends = $friendRepo->areFriends($visitor->user_id, $user->user_id);

            $requestRepo = $this->repository('NC\FriendsRequest:FriendRequest');
            $pendingRequest = $requestRepo->getRequestBetween($visitor->user_id, $user->user_id);

            $view->params['friendStatus'] = $areFriends ? 'friends' : ($pendingRequest ? 'pending' : 'none');
        }
        else
        {
            $view->params['friendStatus'] = 'self';
        }

        return $view;
    }
}
Стало так:
PHP:
class Member extends XFCP_Member {

    public function actionIndex(ParameterBag $params) {
        $view = parent::actionIndex($params);

        // Проверяем, является ли $view объектом типа View
        if (!($view instanceof \XF\Mvc\Reply\View)) {
            // Если это не View, просто возвращаем $view как есть
            return $view;
        }

        $visitor = \XF::visitor();
        $user = $view->params['user'];

        if ($visitor->user_id && $visitor->user_id != $user->user_id) {
            $friendRepo = $this->repository('NC\FriendsRequest:Friend');
            $areFriends = $friendRepo->areFriends($visitor->user_id, $user->user_id);

            $requestRepo = $this->repository('NC\FriendsRequest:FriendRequest');
            $pendingRequest = $requestRepo->getRequestBetween($visitor->user_id, $user->user_id);

            $view->params['friendStatus'] = $areFriends ? 'friends' : ($pendingRequest ? 'pending' : 'none');
        } else {
            $view->params['friendStatus'] = 'self';
        }

        return $view;
    }
}
Должно все работать, в смысле не будет ошибки но будет работать ли функционал нужно проверить.
Работает конечно, но есть другие минусы.
Может у меня со стилем что то или что, но где принимаются заявки в друзья то там так сказать нету не каких стилей для более менее вывода.
 
Да нет вообще в плагине стиля и соответственно не оформлена страница вообще выглядит так:
Снимок экрана_27-3-2025_95954_localhost.jpeg
 
Назад
Верх Низ