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

+33
2.76K

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

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

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

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

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

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

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

1. В админке компонента «Профили пользователя» появилась дополнительная регулировка:
Иллюстрация
Эта регулировка админа.

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

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

2. В Профиле пользователя (Нажать под профилем шестеренку, закладка Приватность) выпадающий список заменен на радиокнопки. В остальном стандартный функционал движка сохранен:
Иллюстрация

Однако, как мы видим, появилась еще одна настройка «Перечисленным группам»:
Иллюстрация
Если нажать на нее, появится выпадающий список, с перечнем созданных на сайте групп. Удерживая клавишу 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. Наслаждаться.

Как скачать.

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

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

Как водится, кармы добавьте :)


Удачи в сайтостроении!

+1
qwest qwest 9 лет назад #
В коробку бы такую функцию.
+1
Странник Странник 9 лет назад #
Я сам удивляюсь, как мы до 1.10.5 дожили, а такой фишки не запилили))) Теперь есть!
+1
DELLитант DELLитант 9 лет назад #
А для второй ветки такого не планируете?
+2
Странник Странник 9 лет назад #
вторая ветка еще очень сырая. я ее даже не рассматриваю как движок для построения сайтов. как перспективная разработка - это да. но сайты делаю на первой ветке
Олег Васильевич я Олег Васильевич я 9 лет назад #
Комментарий удален
+1
Странник Странник 9 лет назад #
Какие шутки. Я такую штуку подумываю в платной версии сделать. Не знаю еще, надо подумать хорошенько
Олег Васильевич я Олег Васильевич я 9 лет назад #
Комментарий удален
+1
mullo mullo 9 лет назад #
Esho bi hak chornij spisok polzovatelei.
+1
Странник Странник 9 лет назад #
будет в платной версии.
+1
pikasso pikasso 9 лет назад #
Скажите а на 1.10.3 можно это применить?
+1
Странник Странник 9 лет назад #
Признаться, не могу ответить сразу. Надо сравнивать код указанных файлов. По причине катастрофической нехватки времени признаю - я код не сравнивал.
+2
Доротея Доротея 9 лет назад #
To be continue? или Happy End? smile
+1
Странник Странник 9 лет назад #
*строго смотрит на хулиганку Доротею* Я так на куски разрываюсь а она мне: хэпи энд, хэпи энд!
+1
Майкл Майкл 8 лет назад #
На 1.10.6 хак работает?
+1
Странник Странник 8 лет назад #
Должен работать, но однозначно сказать не могу, поскольку на 1.10.6 не тестировал.
+1
Странник Странник 8 лет назад #
Рекомендую, всем скачавшим у меня этот хак, забрать у меня более продвинутый его вариант - с показом профиля владельцу профиля..
+1
Майкл Майкл 8 лет назад #
Что то у меня не заработало в 1.10.6. У кого заработало?
+1
Странник Странник 8 лет назад #
К сожалению, дружище, я не могу распылять время на допиливание хака, предназначенного для 1.10.4, до 1.10.6. В настоящее время я работаю над другими, более интересными для себя задачами. Прошу понять меня правильно)))
0
abasia abasia 5 лет назад #
Архив хака тут но допиливать надо, чтобы работал.
0
abasia abasia 5 лет назад #
Архив не доступен (((

Еще от автора

Адаптация компонента "Закладки" от 19 января 2011 к коробочной версии 1.10.7
На форуме появилась тема с пожеланиями адаптировать довольно старый компонент "Instant Bookmarks" Fuze к современным реалиям.
Утилита "Садовод" для версии InstantCMS 1.10.7.008
В этой краткой заметке описывается утилита "Садовод" для ремонта деревьев версии InstantCMS 1.10.7.008.
Изменение компонента "Баннеры" для будущей  версии 1.10.7.008
Данная статья рассказывает всем ждущим новую версию 008, что нового ожидается в будущем релизе версии 1.10.7.008.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.