Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как открыть(или почему нет) доступ(а) к полной новости находящейся в нескольких категорих?

Как открыть(или почему нет) доступ(а) к полной новости находящейся в нескольких категорих?


     05.11.2013    мультикатегории доступ группы пользователей    Все вопросы » Общие вопросы    2790

вопрос
Ситуация:

- Новость принадлежит к двум категориям Cat_1 и Cat_2,

- Группе пользователей UGroup_1 разрешен доступ только в категорию Cat_1 (Админпанель-Настройка групп пользователей-Новости-Доступные разделы)

- Группе пользователей UGroup_2 разрешен доступ только в категорию Cat_2 (так же)

Результат:

Пользователям из группы UGroup_1 доступно только краткое содержание новости, а при попытке просмотра полной - "Внимание, обнаружена ошибка UGroup_1 не имеют доступа для просмотра статей из данного раздела" и посмотреть полную новость можно, лишь открыв доступ группе UGroup_1 к категории Cat_2, те UGroup_1 должны обладать доступом во все категории к которым принадлежит новость, только тогда им доступна полная новость.

Пробовал менять порядок сортировки категорий, пробовал менять типы ЧПУ - всё не катит.
Пробовал создавать еще одну категорию Cat_12, добавлять ее к новости и разрешать доступ к ней группам UGroup_1 и UGroup_2, те чтобы была у обоих групп общая категория - тоже не катит.

Но ведь к краткому содержанию-то доступ есть! Что-же сделать, чтобы и полное было доступно? Помогите пожалуйста.

Ответил: Sander


Ма-ла-дец! Задавай умные вопросы, получай умные ответы, чтобы вырасти и стать таким же умным, как кто? ©
Цитата не к месту, но в то же время ее можно прилепить к любому вопросу на сайте :) Ну ладно, что-то я отвлекся немного от сути вопроса, пожалуй вернемся к ситуации описываемой в тексте который можно прочитать выше того, что я сейчас пишу. Читая этот текст вы наверное ожидаете увидеть краткий и лаконичный ответ на поставленный вопрос, и вы таки правы! Я дам этот ответ! Ведь по сути вопрос задан вполне правильно и доступным языком, чего не хватает определенной части аудитории данного сайта. Однако что же мы имеем, а имеем мы вполне стандартную ситуацию с не стандартным подходом. Хотя на сколько не стандартный, с некоторой точки зрения как раз все кардинально вплоть до наоборот, т.е. нестандартная ситуация со стандартным подходом к решению поставленной задачи. Ведь в исходном варианте мы имеем определенный набор категорий и групп пользователей, которые по каким-либо необъяснимым причинам имеют доступ только к определенным категориям, но в тоже время доступ к другим категориям им закрыт, в данном контексте просматривается толика дискриминации, не так ли? Но ведь это с какой стороны посмотреть, хотя пожалуй не важно, пофиг на них, ибо так решил админ. Так вот поможем же админам в их непосильной задаче по организации ограниченного доступа к секретным материалам сайта. Предлагаю для начала рассмотреть организацию доступа к закрытым категориям в dle на примере печеных пирожков с грибами. Человек видит этот вкусный пирожок и видит как местами из него торчат обугленные кусочки какого-то невероятно вкусного наркотического гриба. Но вот ведь незадача, жрать-то хочется, но вот на грибы у него невероятная аллергия. И получается, что короткая новость - это простой взгляд на пирожок со злосчастными грибами, а просмотр полной новости - это уже буквально сожрать описанный пирожок вместе с грибами. Вот и получается, что защитная реакция организма (dle), не дает человеку давиться грибами, а следственно и лакомиться самим пирожком, т.е. смотрим, но не кушаем. Аналогично можно рассмотреть ситуацию относительно второй группы пользователей, для наглядности назовем их грибниками, которые души не чают в грибах и готовы их употреблять в любое время года, в любых количествах и в любом виде. Однако в противовес аномальной любви к грибной продукции у них выработался определенный орган, который крайне негативно восприимчив к булочной продукции. И на примере пирожка получаем ту же ситуацию, что смотреть на выглядывающие поджаренные кусочки грибочечка он может, при этом терпит присутствие булки, но скушать сей продукт не в состоянии. Как бы ни парадоксально это не выглядело, но мы имеем двух мутировавших создания где один не есть грибы, другой не есть булочные изделия и пирожок который неизвестный садист предлагает им схавать. Кто-то может провести аналогию, что неизвестный садист - это админ... и, пожалуй, будет прав. Но ведь вопрос как поставлен, надо каким-то образом обойти защитную реакцию наших подопечных и удовлетворить садистские наклонности вопрошающего, дабы все же заставить грибофоба и булкофоба съесть продукцию извращенного кулинара. Маленькое лирическое отступление, я честно говоря удивлен, что вы до сих пор читаете этот бред засыпающего программиста, но пожалуйста, потерпите еще чуть чуть, сделайте разминку глаз и дочитайте повествование до конца, конец лирического отступления. На первый взгляд задача может показаться странной и почти не разрешимой, однако все легко решается подручными средствами, для этого нам понадобятся лишь прямые руки. Для начала связывает пациента, чтобы не дергался во время операции и плавным движением руки делаем вскрытие файла engine/modules/show.full.php ибо именно в этом органе происходит отсечка поглощаемого продукта. Разложив содержимое утроба по строкам мы с легкостью найдем строку: if( $allow_list[0] != "all" and ! in_array( $element, $allow_list ) ) $perm = 0; которая отвечает за запрет поглощения запрещенного продукта, дабы обмануть сию хитрую мешанину после найденного кусочка, с новой строки ставим такую строку: if( $allow_list[0] == "all" or in_array( $element, $allow_list ) ) $perm = 1; Вот таким не хитрым способом мы заставим булкофила жрать грибы и не кривиться, аналогичная ситуация будет и с грибофилом. Однако стоит отдельно заметить, что данным вмешательством мы не перестраиваем их организм полностью, а лишь расширяем возможности его желудка на совместное употребление всевозможных продуктов, которые он не мог есть раньше. Т.е. булкофил теперь вместе с булкой сможет кушать и грибы и тертую арбузную корку, а грибник вместе с грибами сожрет и кору столетнего дуба.
В заключение хотелось бы отдельно добавить, что практически у каждой ситуации есть легкое и элегантное решение, главное правильное восприятие и нужный подход ;)
Отредактировал 6-11-2013, 03:23 - Sander
Причина: Прочитал вопрос

5 комментариев

sergey_
Юзер

sergey_ - 6 ноября 2013 18:34 -

Ого! Спасибо огромнейшее! Работает!
Только работает не совсем оптимально. После добавления рекомендованной строки, поведение изменилось на следущее:
Теперь если новость принадлежит к двум категориям Cat_1 и Cat_2, группе пользователей UGroup_1 разрешен доступ только в категорию Cat_1, а группе пользователей UGroup_2 разрешен доступ только в категорию Cat_2, то доступ к полной новости открывается, но только одному юзеру, чья разрешенная категория лежит ниже в списке категорий. Второму полная новость так и остается недоступна.
Из этого, правда есть выход - это создать новую категорию Cat_12, разрешить доступ к ней обоим группам пользователей и разместить ее в списке категорий ниже Cat_1 и Cat_2.
Вот бы как-нибудь так сделать, чтобы не создавать лишнюю категорию......
Спасибо SANDER! Ситуацию с грибами, я прокомментирую обдумая и опишу для чего мне это вообще нужно, может пригодится. Спасибо!

Sander
PHP-developer

Sander - 6 ноября 2013 19:12 -

Ту строку убрать, заместо этого сделать так:
Найти строку:
    if ( $row['id'] AND  $perm ) {

ПЕРЕД ней вставить:
    foreach ( $cat_list as $element ) if( $allow_list[0] == "all" or in_array( $element, $allow_list ) ) $perm = 1;

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

sergey_
Юзер

sergey_ - 7 ноября 2013 22:55 -

Работает! О-чудо! Работает так как надо! М-да, для меня это было серьёзной проблемой. Низкий поклон за такую помощь.

sergey_
Юзер

sergey_ - 7 ноября 2013 23:28 -

А теперь вернемся к нашим... пирожкам :). Мои пациенты (группы пользователей) немного другие. У них нету ни алергии на грибы, ни "негативного восприятия булочной продукции", они одинаково голодны и трутся здесь, на нашей пирожковой фабрике (на сайте), ждут когда фабрика запустится и напечёт им пирожков, а фабрика работает по пирожкам дня 3-4 в месяц, да еще, чтобы туда пробраться, надо знать из работников кого-то (иметь доступ к категории). Один из них знаком с Дядей Васей-тестомесом из 1-го цеха, а другой - с Леночкой из 2-го,там где грибочки обжаривают. Пациенты друг о друге даже не догадываются, но когда фабрика запускается - Дядя Вася зовет первого, а Леночка второго. Те бросают всё и мчатся со всех ног жрать пирожки, там наедаются и.... возможно знакомятся! ))) Еще раз спасибо!

sergey_
Юзер

sergey_ - 7 ноября 2013 23:42 -

Sander, могу помочь с вопросами по 3d-графике. Max, v-ray, cloth, свет, цвет, гамма, профили, моделлинг, маппинг итд. Достаточно глубоко. Сейчас интересуюсь кросс-браузерными встройками 3d-графики в веб, x3d например. Затачиваю DLE под это.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх