Одобрение/согласование сущности администратором

Для решения этой задачи нужно сделать 3 вещи

  • правильно спроектировать и организовать Базу данных.
  • В запрос на выборку записать условие отфильтровывающее только одобренные записи.
  • написать в коде пару условных операторов предотвращающих выполнение действий вывода форм и обновлени

Итак подробнее:

Организация таблицы БД

функционал реализуется с помощью добавления дополнительного поля к сущности.
Которое принимает всего 2 значения 0 и 1.
То есть при создании или изменении сущности это поле устанавливается в 1.
Когда будете придумывать названия полей – обязательно назовите их значимыми понятными именами отражающими суть этого поля.

Если есть два независимых этапа одобрения – то и полей должно быть два.
например, одобрение после создания – даёт возможность начать менять поля и отображать запись
одобрение после редактирования – не запрещает продолжать владельцу менять запись, но влияем на то будет ли запись показываться другим пользователям.
Либо использовать одно поле с несколькими уровнями одобрения/блокировки. Например, 0 – запись доступна и для общего просмотра и для редактирования автором. 1 – Запись доступна только для редактирования, но недоступна для общего просмотра. 2 – запись недоступна ни для просмотра ни для редактирования.

Логика кода

У администратора должна быть страница со списком этих сущностей
и одинаковыми кнопками напротив каждой – одобрить. при нажатии в качестве параметра эта кнопка отправляет запрос с параметром id соответствующей записи
на стороне сервера через update – установите это поле в 0
При этом при значении 0 вашего поля – ваша запись не отображается
При необходимости блокировать возможность изменений у автора записи для записи с таким значением вы не отображаете форму редактирования. Сделать это можно условно так:

if ($element['active']) {?>
    здесь находится форма редактирования
<?}

А на стороне обработчика формы (там где выполняете update) перед выполнением запроса выполните select изменяемой записи проверьте значение и если оно заблокировано – не выполняйте update, вместо этого отправьте пользователю сообщение, что запись заблокирована.

Инвертировать логику значений при желании

Вы можете инвертировать назначение значений поля. То есть изначально устанавливать значение в 0, а после одобрения устанавливать в 1.
В первом случае вы используете поле в смысле locked или block
в инвертированном варианте значений в смысле accesseble visible can_edit active

Если у вас остались вопросы – задавайте их через форму обратной связи.

Добавить комментарий

Ваш адрес email не будет опубликован.