Перейти к содержимому


Запретить редактирование записи через интервал времени


Сообщений в теме: 7

#1 Mr_Nuke

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 19 Сентябрь 2011 - 17:20

Здравствуйте! Столкнулся с проблемой, необходимо запретить пользователю изменять запись через 30 минут после ее создания. Не могу догадаться, как это правильно сделать. Есть идея, создать "дополнительное действие" для таблицы, но тогда не могу понять, какой командой получить доступ к правам доступа.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Сентябрь 2011 - 17:46

Это можно сделать через механизм расширенных прав в поле с типом "пользователь". Снимаете права в группе и ставите их в данном поле. Поле при добавлении записи заполняете автоматически текущим пользователем. В доп. действии (или через cron, если вам нужно автоматическое выполнение) просто меняете пользователя в поле на пустое значение. Права на редактирование пропадут.

#3 Mr_Nuke

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 20 Сентябрь 2011 - 17:55

Просмотр сообщенияРазработчик (19.9.2011, 17:46) писал:

В доп. действии (или через cron, если вам нужно автоматическое выполнение) просто меняете пользователя в поле на пустое значение. Права на редактирование пропадут.

Забыл уточнить, что запись может видеть только тот пользователь, который ее создал, поэтому менять пользователя, создавшего запись, нельзя

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 20 Сентябрь 2011 - 18:16

Можно, просто создаете два разных поля - в одно загоняете права на просмотр, в другое - права на редактирование. Соответственно затем убираете автора записи только со второго поля.

#5 Mr_Nuke

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 22 Сентябрь 2011 - 13:44

Все в продолжении это темы, пишу mysql запрос в кроне. Когда хочу получить значение в системном поле(Дата создания), выдает ошибку, что такое поле не найдено. Есть идея, создать свое скрытое поле, туда копировать дату создания, и к нему уже обращаться. Можно ли обойтись без этого?

Сообщение отредактировал Mr_Nuke: 22 Сентябрь 2011 - 13:44


#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Сентябрь 2011 - 13:58

Просмотр сообщенияMr_Nuke (22.9.2011, 14:44) писал:

Когда хочу получить значение в системном поле(Дата создания), выдает ошибку, что такое поле не найдено
Вы уверены что правильно пишете название поля? Приведите строку запроса или кусок php-кода с ним.

#7 Mr_Nuke

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 22 Сентябрь 2011 - 14:08

В разделе "Поля таблицы "Работа с клиентом", когда навожу на поле "время добавления", высвечивается ссылка .../edit_field.php?table=62&field=966.

$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 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Сентябрь 2011 - 18:33

Это неверно, у системных полей свои внутренние имена, они не состоят из "f"+id поля. Связано это с тем, что раньше они не отображались в общем списке.

ID - id
Кто добавил - user_id
Время добавления - add_time
Статус записи - status

Можно также использовать упрощенные функции работы с БД (см. документацию), они не требуют знания внутренних имен и номеров, имена полей используются внешние, поэтому такой проблемы там нет. Единственный недостаток этих функций на данный момент - чувствительность к переименованию полей. Этот недочет исправим в будущих версиях.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных