Доступ к записи в зависимости от "флага", установленного пользователем

InstantCMS 2.X

Может фантазирую и такое не возможно, а может просто не до конца дорыл.

#1 13 февраля 2022 в 14:15

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

Хотелось бы получить следующее. Есть в записи поле типа флаг — «показывать запись в общем доступе». Если «да», то все стандартно, либо запись видят все, либо только друзья автора. Я хочу поставить флаг «скрыть запись от всех, кроме администраторов». И чтобы когда человек выбирает «да», его запись была видна ТОЛЬКО администраторам (ну или любой другой группе, которую мы сами определим)... 

Возможно ли это как-то реализовать??

Заранее спасибо за идеи!

#2 13 февраля 2022 в 14:40

 samcolor, можно решить вашу задачу минимальными правками. Я бы сделал так:

1) Создать поле типа Флаг с системным именем is_hide

2) Изменить шаблон записи типа контента. Добавить примерно такое условие:

  1. <?php if($item['is_hide'] == true) { ?>
  2. <?php if (cmsUser::isUserInGroups(cmsUser::get('groups'), array(0 => 6))) { ?>
  3. Здесь разместить код шаблона записи
  4. <?php } ?>
  5. <?php } else { ?>
  6. Здесь код записи, если флаг выключен
  7. <?php } ?>

Но это очень грубо и прямо пальцем в одно место, если вы понимаете о чем я. Если нужно более изящное решение — то можно написать небольшой компонент, который будет решать ваши задачи, но это уже другая история.

#3 13 февраля 2022 в 14:55

 samcolor, можно решить вашу задачу минимальными правками. Я бы сделал так:

1) Создать поле типа Флаг с системным именем is_hide

2) Изменить шаблон записи типа контента. Добавить примерно такое условие:

  1. <?php if($item['is_hide'] == true) { ?>
  2. <?php if (cmsUser::isUserInGroups(cmsUser::get('groups'), array(0 => 6))) { ?>
  3. Здесь разместить код шаблона записи
  4. <?php } ?>
  5. <?php } else { ?>
  6. Здесь код записи, если флаг выключен
  7. <?php ?>

Но это очень грубо и прямо пальцем в одно место, если вы понимаете о чем я. Если нужно более изящное решение — то можно написать небольшой компонент, который будет решать ваши задачи, но это уже другая история.

Make

Спасибо! Как запасной вариант учту.

Если я правильно понимаю логику CMS, такая доработка приведет к тому, что в СПИСКАХ запись будет видна, а при попытке просмотреть ее, те, у кого нет доступа, ее видеть не смогут. Это не совсем то. Мне нужно, чтобы вообще о существовании этой записи знала только допущенная группа:).

Компонент бы меня порадовал:) Еще бы найти того, кто сможет это сделать....

#4 13 февраля 2022 в 15:10

Компонент бы меня порадовал:) Еще бы найти того, кто сможет это сделать....

samcolor

У нас тут есть раздел с людьми, которые готовы помочь — выбирайте

Это не совсем то. Мне нужно, чтобы вообще о существовании этой записи знала только допущенная группа:).

samcolor

Ну и для списка также можно сделать. Немного модифицировать код, примерно так:

  1. <?php if($item['is_hide] == true && cmsUser::isUserInGroups(cmsUser::get('groups'), array(0 => 6))) { ?>
  2.  
  3. Тут массив записей списка ТК
  4.  
  5. <?php } ?>
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.