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

2074
Этот хак позволяет пользователю настроить разрешение показывать свой профиль определенным группам.

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

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

Однако мне заказали сайт, где в ТЗ было прямо прописано ограничивать показ профиля определенным группам. Например, на сайте есть группа Ламеры и есть группа Чайники. Требовалось сделать так, чтобы Ламеры могли увидеть профиль, а Чайники - нет, если пользователь так возжелал.

Вы же меня знаете. Я давно отношусь к Первой ветке Инстанта как к конструктору, из которого можно сделать все что хочешь. Попросили меня сделать такой хак - я сделал, а теперь делюсь с вами.

Я отлично понимаю, что хаки - это зло. Зло в том смысле, что доступны только квалифицированным пользователям, которые хотя бы умеют смотреть код. Но, к сожалению, данную работу оформить в виде плагина не получается. Ну никак. Сорри.

Как выглядит сайт после применения хака

1. В админке компонента "Профили пользователя" появилась дополнительная регулировка:
Хак \"Добавление настройки приватности профиля - показывать профиль только назначенным группам\" для v. 1.10.4 и v. 1.10.5

Эта регулировка админа.

Если радиокнопка стоит на Да, то в Профиле пользователя, который запрещен к показу, выводится аватар, который юзер загрузил в свой профиль и никнейм этого юзера. По сути, это стандартная настройка движка.

Если радиокнопка стоит на Нет, то в запрещенном к показу профиле, вместо аватара пользователя, выводится стандартная картинка Инстанта, которая показывается, когда юзер еще не загрузил аватар. Аналогично, вместо никнейма (часто это бывает Фамилия, Имя, Отчество) выводится логин юзера, под которым он зарегистрировался на сайте. Такая вот конспирация ))))

2. В Профиле пользователя (Нажать под профилем шестеренку, закладка Приватность) выпадающий список заменен на радиокнопки. В остальном стандартный функционал движка сохранен:
Хак \"Добавление настройки приватности профиля - показывать профиль только назначенным группам\" для v. 1.10.4 и v. 1.10.5


Однако, как мы видим, появилась еще одна настройка "Перечисленным группам":
Хак \"Добавление настройки приватности профиля - показывать профиль только назначенным группам\" для v. 1.10.4 и v. 1.10.5

Если нажать на нее, появится выпадающий список, с перечнем созданных на сайте групп. Удерживая клавишу Ctrl, можно выбрать несколько групп. Если пользователь не включил показ своего профиля админам, пусть обломится - админы все равно увидят его профиль. Хе-хе.

ЗАМЕЧАНИЕ. Поскольку хак ограничивает показ профиля, может случиться так, что пользователь не сможет зайти в собственный профиль. Чтобы обойти это ограничение (свой профиль пользователю посмотреть все-таки нужно) я добавил одну строчку в ядро (файл core/cms.php). Трогать ядро - последнее дело, я это отлично понимаю. Эта строчка содержит исключение для компонента users, у которого теперь хакнутая система показа профиля. Пришлось на это пойти, чтобы пользователь свой профиль мог все-таки увидеть.

Совместимость с версиями

Хак тестировался на 1.10.4. Просмотрев код буквально вчера выложенной версии 1.10.5, я пришел к выводу, что хак можно использовать и на этой версии, с одним ограничением: файл components/users/frontend.php придется смержить - это обязательное требование. Для версии 1.10.6 хак мною не тестировался, за отсутствием у меня времени.

ЗАМЕЧАНИЕ ДЛЯ БЛОНДИНОК. Смержить - это запустить программу сравнения файлов и папок. Таких программ множество. Например, могу порекомендовать бесплатную программу WinMerge. Есть и более продвинутый вариант Araxis Merge, но она платная. Даже у Великого и Ужасного Notepad ++ есть плагин Compare, позволяющий сравнить два файла ( в 90% случаев им и пользуюсь). Пользуйтесь тем, что больше нравится - суть одна. Хотя, конечно, блондинкам нечего в ядро лазить, кыш отсюда!

Изменяемые файлы

templates/_default_/components/com_users_edit_profile.tpl
templates/_default_/components/com_users_not_allow.tpl
languages/ru/admin/components/users.php
languages/ru/components/users.php
components/users/frontend.php
components/users/model.php
core/cms.php
admin/components/users/backend.php

Установка хака на сайт

1. Естественно, в обязательном порядке (и под угрозой расстрела в случае невыполнения) сделайте бекап файлов и снимите с базы дамп.

2. Распакуйте архив в любое место.

3. В архиве, кроме папок, находится файлик с инструкцией и три картинки. В том случае, если Вы уверены, что в перечисленных файлах нет других хаков, можете заливать содержимое архива в корень сайта с заменой, кроме, естественно, readme.txt и картинок. Если Вы не уверены, то перечисленные файлы следует смержить.

4. Если на Вашем сайте шаблон, отличный от дефолтного, то два файла:
templates/_default_/components/com_users_edit_profile.tpl
templates/_default_/components/com_users_not_allow.tpl
следует перекинуть из дефолтного шаблона в текущий.

5. В инструкции лежит текст sql-запроса, который нужно сделать к базе, чтобы подключить хак. Сюда дублирую этот запрос:
ALTER TABLE `cms_user_profiles` ADD `groups_view` VARCHAR( 300 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `allow_who` ;

6. Наслаждаться.

Как скачать.

Скачать можно:
без показа профиля самому пользователю,
показывать профиль самому пользователю,
даром, то есть бесплатно.

Куда говорить спасибо

wmr 342960323367
яд 410011913797936


Удачи в сайтостроении!
Хак доработки стандартной доски объявлений для 1.10.4 | Модуль ротации иконки сайта favicon.ico
Комментарии (20)
qwest 21 ноября 2014 в 21:32 +1
В коробку бы такую функцию.
Кирилл Эдуардович (Странник) 21 ноября 2014 в 22:02 +1
Я сам удивляюсь, как мы до 1.10.5 дожили, а такой фишки не запилили))) Теперь есть!
DELLитант 21 ноября 2014 в 23:16 +1
А для второй ветки такого не планируете?
Кирилл Эдуардович (Странник) 21 ноября 2014 в 23:24 +2
вторая ветка еще очень сырая. я ее даже не рассматриваю как движок для построения сайтов. как перспективная разработка - это да. но сайты делаю на первой ветке
Олег Васильевич я 22 ноября 2014 в 00:03 +1
Скрытый текст виден только зарегистрированным пользователям
Кирилл Эдуардович (Странник) 22 ноября 2014 в 00:17 +1
Какие шутки. Я такую штуку подумываю в платной версии сделать. Не знаю еще, надо подумать хорошенько
Олег Васильевич я 22 ноября 2014 в 01:07 +2
Я такую штуку подумываю в платной версии сделать
shock
mullo 23 ноября 2014 в 20:45 +1
Esho bi hak chornij spisok polzovatelei.
Кирилл Эдуардович (Странник) 23 ноября 2014 в 22:56 +1
будет в платной версии.
pikasso 9 января 2015 в 13:19 +1
Скажите а на 1.10.3 можно это применить?
Кирилл Эдуардович (Странник) 12 февраля 2015 в 13:55 +1
Признаться, не могу ответить сразу. Надо сравнивать код указанных файлов. По причине катастрофической нехватки времени признаю - я код не сравнивал.
Доротея 11 февраля 2015 в 23:33 +2
To be continue? или Happy End? smile
Кирилл Эдуардович (Странник) 12 февраля 2015 в 13:53 +1
*строго смотрит на хулиганку Доротею* Я так на куски разрываюсь а она мне: хэпи энд, хэпи энд!
Майкл 10 мая 2015 в 10:08 +1
На 1.10.6 хак работает?
Должен работать, но однозначно сказать не могу, поскольку на 1.10.6 не тестировал.
Рекомендую, всем скачавшим у меня этот хак, забрать у меня более продвинутый его вариант - с показом профиля владельцу профиля..
Майкл 24 мая 2015 в 22:22 +1
Что то у меня не заработало в 1.10.6. У кого заработало?
К сожалению, дружище, я не могу распылять время на допиливание хака, предназначенного для 1.10.4, до 1.10.6. В настоящее время я работаю над другими, более интересными для себя задачами. Прошу понять меня правильно)))
abasia 12 апреля 2019 в 14:39 0
Архив хака тут но допиливать надо, чтобы работал.
abasia 15 сентября 2018 в 16:30 0
Архив не доступен (((