Хак "Добавление настройки приватности профиля - показывать профиль только назначенным группам" для v. 1.10.7.006 от 10 января 2019 г. 1.X

311
Хак, описанный здесь, допилен до текущей версии.

Постановка задачи

Любители Первой ветки всю личку порвали мне просьбами - поднять ранее написанный мною хак до текущей версии. Напомню, он выше 1.10.5 не работал. Наконец, их желание сбылось - я нашел время, и допилил код до актуальной версии. Кроме этого, проделана еще кое-какая работа по модификации модулей, которые продолжали бессовестно показывать скрытые в компоненте аватары и фамилии.

Состав хака

Измененные файлы:
admin/components/users/backend.php
components/users/frontend.php
components/users/model.php
core/cms.php
languages/ru/admin/components/users.php
languages/ru/components/users.php
modules/mod_blogs/module.php
modules/mod_lastreg/module.php
modules/mod_actions/module.php
modules/mod_respect/module.php
modules/mod_whoonline/module.php
templates/_default_/components/com_users_edit_profile.tpl
templates/_default_/components/com_users_not_allow.tpl
templates/_default_/modules/mod_blogs.tpl
templates/_default_/modules/mod_lastreg.tpl
templates/_default_/modules/mod_actions.tpl
templates/_default_/modules/mod_respect.tpl
templates/_default_/modules/mod_whoonline.tpl

Применение хака к сайту

Хак тестировался на свежеустановленной версии 1.10.7.006 от 10 января 2019 г. Если вы вносили в упомянутые файлы свои правки, настоятельно рекомендую эти файлы смержить.
Будьте внимательны: этот хак не предназначен для более ранних версий!

1. Перед началом заливки хака ОБЯЗАТЕЛЬНО снимите резервную копию и дамп базы данных!

2. Залейте хак в корень сайта с заменой. Файл с документацией readme.txt можно не заливать (в нем содержится этот текст и sql-запрос для БД)

3. Зайдите в phpmyadmin и выполните запрос:
Код SQL:
  1. ALTER TABLE `cms_user_profiles` ADD `groups_view` VARCHAR( 300 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `allow_who` ;
По внешнему виду и настройкам вид сайта после применения хака ничем не отличается от этого описания. Поэтому прошу пройти по ссылке и ознакомится с инструкциями по настройкам.

Как скачать хак

Из моего профиля даром, то есть бесплатно.
Ссылка.

Удачи в сайтостроении! Ваш Странник.
Исправление ошибки с куками в версии 1.10.7.006 от 10 января 2019 года | Хак "Принять правила сайта при регистрации" для v. 1.10.7.006 от 10 января 2019 г.
Комментарии (17)
abasia 16 апреля 2019 в 14:43 +1
Благодарю Вас Кирилл Эдуардович!
Кирилл Эдуардович (Странник) 16 апреля 2019 в 15:12 +1
О! Самые нетерпеливые себя уже спалили))))
Пожалуйста.
abasia 16 апреля 2019 в 15:26 +1
abasia 18 апреля 2019 в 12:38 +1
К сожалению, хак не рабочий, может файлы от старой версии в архив попали, ведёт себя так же, когда архив старого хака мержил со сборкой:
1. дефолтный аватар в профиле не выводится при блокировке

2. если включить в настройке "Перечисленным группам" любую группу, для показа, то все профили, для всех групп, блокируются, видеть профили может только админ и переключение назад настроек блокировку не снимает.

p.s. может я чего туплю и не понимаю как пользоваться, пробовал и заливать с заменой и мержить.
abasia 18 апреля 2019 в 12:44 +1
Ещё при вводе запроса в базу, такое сообщение всплывает:
Не могу подтвердить этой ошибки. Снес в таблице cms_user_profiles поле groups_view, чтобы попробовать применить sql-запрос из файла readme.txt
Поле создалось без всяких ошибок. Это значит, текст sql-запроса составлен правильно.

Откройте базу данных, таблицу cms_user_profiles и скажите мне, появилось ли после поля allow_who поле groups_view. Если не создалось, хак, работать, конечно не будет. В этом случае придется создать поле вручную. Напишите мне, что и как.
abasia 18 апреля 2019 в 17:01 0
Поле groups_view есть и в него данные пишутся, но, зашёл админом в настройку своего профиля на фронте, поставил показывать свой профиль только группе админов, теперь все профили стали не доступны всем кроме самого админа.
Может я логику не понимаю, я думал, что каждый пользователь может в своём профиле настроить какие группы могут видеть его профиль, админ понятно, что видит всех.
Снова захожу админом в настройки своего профиля и ставлю показывать профиль всем, сохраняю и все профили всех пользователей остаются закрытыми "Пользователь ограничил доступ к этой странице настройками безопасности" хотя я итими пользователями даже не авторизовывался на сайте. Пробую всё локально на опенсервере, на последней сборке и разных версиях php.
abasia 18 апреля 2019 в 17:09 0
Ошибся... Поле groups_view есть но в него данные НЕ пишутся, в поле allow_who у всех стоит all.
Свои профили пользователи видят, но профили друг друга закрыты, хотя везде стоит "Показывать всем", админ видит все профили.
abasia 18 апреля 2019 в 17:24 0
Зашёл каждым пользователем в свой профиль и выставил показ группам в поле groups_view прописались номера групп, но на фронте все профили остались закрыты от просмотра , даже теми кому разрешено. Что-то я видимо туплю)))
Логика такая: Если настройка

выбрана Да, то аватар и никнейм показываются зареганым, но не попавшим в группу показа,
если нет, то не попавшим в группу показа выставляются логин и картинка /images/users/avatars/nopic.png

Незареганым в любом случае показывается форма авторизации.

Кста, еще на один косяк наткнулся уже сам - страничку /users надо сделать в стиле хака. А то ей пофигу на настройки - показывает аватар и никнейм кому не надо... Этим уже завтра займусь
abasia 18 апреля 2019 в 20:02 0
Всё, сдаюсь, чтобы не делал заставить работать хак не смог, стоит тронуть выбор групп и после этого профили навсегда становятся закрыты и вернуть прежнее состояние не возможно, может видеть только админ свой и чужие профили, а сами пользователи только свои, для гостей все профили закрыты.
Я продолжаю работать. Подождите некоторое время.
abasia 19 апреля 2019 в 15:14 0
Конечно жду joke
Здравствуйте. Спасибо за тщательное тестирование хака. Вот что надо поправить:

1. Вы правы, в архив попал код от старого хака. Откройте файл templates/_default_/components/com_users_not_allow.tpl,
найдите строчку
Код TPL:
  1. <img alt="{$LANG.NO_VIEW}" class="media-object" src="/images/users/avatars/nopic.jpg" />
и замените ее на строчку
Код TPL:
  1. <img alt="{$LANG.NO_VIEW}" class="media-object" src="/images/users/avatars/nopic.png" />
другими словами, поменяйте расширение файла рисунка.

2. Данная регулировка блокируется более глобальной регулировкой в админке: Админка->Компоненты->Профили пользователей, ругулировка "Показывать аватар и никнейм запрещенным в профиле пользователя группам" попробуйте переключить на Да и напишите мне, все ли получилось.
Кирилл Эдуардович (Странник) 18 апреля 2019 в 16:00 +1
Всем скачавшим у меня хак просьба скачать его заново по ссылке под статьей. В текст кода попала ошибка, обнаруженная abasia, в этой ссылке она устранена.
abasia 18 апреля 2019 в 16:40 0
Пробую, отпишусь.
Народ, прошу всех, кто хочет скачать у меня этот хак, воздержаться от его установки на свой сайт. Обсуждая с abasia логику показа профиля группам, мы пришли к выводу, что текущий хак никуда не годится и надо все переделать. Так что ждите. Я этим занимаюсь. Будет новая публикация.