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

Для решения этой задачи нужно сделать 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 не будет опубликован.