1
Запретить редактирование записи через интервал времени
Автор Mr_Nuke, 19 сент. 2011 17:20
Сообщений в теме: 7
#1
Отправлено 19 Сентябрь 2011 - 17:20
Здравствуйте! Столкнулся с проблемой, необходимо запретить пользователю изменять запись через 30 минут после ее создания. Не могу догадаться, как это правильно сделать. Есть идея, создать "дополнительное действие" для таблицы, но тогда не могу понять, какой командой получить доступ к правам доступа.
#2
Отправлено 19 Сентябрь 2011 - 17:46
Это можно сделать через механизм расширенных прав в поле с типом "пользователь". Снимаете права в группе и ставите их в данном поле. Поле при добавлении записи заполняете автоматически текущим пользователем. В доп. действии (или через cron, если вам нужно автоматическое выполнение) просто меняете пользователя в поле на пустое значение. Права на редактирование пропадут.
#3
Отправлено 20 Сентябрь 2011 - 17:55
Разработчик (19.9.2011, 17:46) писал:
В доп. действии (или через cron, если вам нужно автоматическое выполнение) просто меняете пользователя в поле на пустое значение. Права на редактирование пропадут.
Забыл уточнить, что запись может видеть только тот пользователь, который ее создал, поэтому менять пользователя, создавшего запись, нельзя
#4
Отправлено 20 Сентябрь 2011 - 18:16
Можно, просто создаете два разных поля - в одно загоняете права на просмотр, в другое - права на редактирование. Соответственно затем убираете автора записи только со второго поля.
#5
Отправлено 22 Сентябрь 2011 - 13:44
Все в продолжении это темы, пишу mysql запрос в кроне. Когда хочу получить значение в системном поле(Дата создания), выдает ошибку, что такое поле не найдено. Есть идея, создать свое скрытое поле, туда копировать дату создания, и к нему уже обращаться. Можно ли обойтись без этого?
Сообщение отредактировал Mr_Nuke: 22 Сентябрь 2011 - 13:44
#7
Отправлено 22 Сентябрь 2011 - 14:08
В разделе "Поля таблицы "Работа с клиентом", когда навожу на поле "время добавления", высвечивается ссылка .../edit_field.php?table=62&field=966.
Ошибка:
Меняю f966 на соседнее поле f1053 и код срабатывает
$sqlQuery = "SELECT * FROM ".DATA_TABLE."62 WHERE f966='4'"; $result = mysql_query($sqlQuery) or die(mysql_error()."<br>".$sqlQuery);
Ошибка:
2011-09-22 15:06:32 - Task terminated Unknown column 'f966' in 'where clause'<br>SELECT * FROM f_data62 WHERE f966='4'
Меняю f966 на соседнее поле f1053 и код срабатывает
Сообщение отредактировал Mr_Nuke: 22 Сентябрь 2011 - 14:09
#8
Отправлено 22 Сентябрь 2011 - 18:33
Это неверно, у системных полей свои внутренние имена, они не состоят из "f"+id поля. Связано это с тем, что раньше они не отображались в общем списке.
ID - id
Кто добавил - user_id
Время добавления - add_time
Статус записи - status
Можно также использовать упрощенные функции работы с БД (см. документацию), они не требуют знания внутренних имен и номеров, имена полей используются внешние, поэтому такой проблемы там нет. Единственный недостаток этих функций на данный момент - чувствительность к переименованию полей. Этот недочет исправим в будущих версиях.
ID - id
Кто добавил - user_id
Время добавления - add_time
Статус записи - status
Можно также использовать упрощенные функции работы с БД (см. документацию), они не требуют знания внутренних имен и номеров, имена полей используются внешние, поэтому такой проблемы там нет. Единственный недостаток этих функций на данный момент - чувствительность к переименованию полей. Этот недочет исправим в будущих версиях.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных