Запрет удаления собственных сообщений через определенное время - Дизайн и модификация Invision Power Board

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

 

Правила раздела

Здесь обсуждаются вопросы настройки и администрирования форумов IPB 2.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 3.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

Запрет удаления собственных сообщений через определенное время

#1 Пользователь не на сайте   rv777 ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 44
  • Регистрация: 02-Декабрь 12
  • Репутация: 0
  • IPB version:I have no IPB
 

Отправлено 06 Ноябрь 2014 - 13:20

Всем привет!
Прошу совета - можно ли как-то настроить пользователям запрет удаления собственных сообщений через определенное время?
Например, прошли сутки и кнопка "Удалить" становится недоступной.

Версия форума 2.3.6
0

#2 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 244
  • Регистрация: 20-Март 09
  • Репутация: 2 060
  • IPB version:3.1.x
 

Отправлено 06 Ноябрь 2014 - 17:51

Через определенное время - нельзя. Либо может удалять, либо не может. Время можно установить только на редактирование своих сообщений.
0

#3 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 244
  • Регистрация: 20-Март 09
  • Репутация: 2 060
  • IPB version:3.1.x
 

Отправлено 07 Ноябрь 2014 - 01:28

Но если очень сильно хочется, можно прикрутить костыль:

1. Выполнить sql запрос
ALTER TABLE ibf_groups ADD COLUMN g_delete_time int(10) unsigned DEFAULT '0'


2. Открыть \sources\action_admin\groups.php
Найти
							 'g_delete_own_posts'   => $this->ipsclass->input['g_delete_own_posts'],

Ниже добавить
							 'g_delete_time'        => intval( $this->ipsclass->input['g_delete_time'] ),


Найти
		$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Могут открывать/закрывать свои темы?$guest_legend" ,

Выше добавить
		$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Временное ограничение, после которого удаления сообщения будет запрещено (в минутах)?$guest_legend</b>" ,
												  $this->ipsclass->adskin->form_input("g_delete_time", $group['g_delete_time'] )
									     )      );


3. Открыть \sources\action_public\moderate.php
Найти
else if ( ($this->ipsclass->member['g_delete_own_posts'] == 1) and ( $this->ipsclass->member['id'] == $post['author_id'] ) )

Заменить на
else if ( ($this->ipsclass->member['id'] == $post['author_id']) and ($this->ipsclass->member['g_delete_own_posts'] == 1 and (!$this->ipsclass->member['g_delete_time'] or (time() - $this->ipsclass->member['g_delete_time'] * 60) < $post['post_date'])) )


4. Открыть \sources\action_public\topics.php
Найти
$this->delete_button($row['pid'], $poster)

Заменить на
$this->delete_button($row['pid'], $poster, $row['post_date'])


Найти
function delete_button($post_id, $poster)

Заменить на
function delete_button($post_id, $poster, $post_date)


Найти
if ($poster['id'] == $this->ipsclass->member['id'] and ($this->ipsclass->member['g_delete_own_posts']))

Заменить на
if ($poster['id'] == $this->ipsclass->member['id'] and ($this->ipsclass->member['g_delete_own_posts'] and (!$this->ipsclass->member['g_delete_time'] or (time() - $this->ipsclass->member['g_delete_time'] * 60) < $post_date)))


В настройках групп появится новая настройка для временного ограничения. 0 - без ограничения.
0

#4 Пользователь не на сайте   rv777 ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 44
  • Регистрация: 02-Декабрь 12
  • Репутация: 0
  • IPB version:I have no IPB
 

Отправлено 07 Ноябрь 2014 - 12:26

Спасибо! Попробую протестировать, о результатах напишу!
0

#5 Пользователь не на сайте   rv777 ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 44
  • Регистрация: 02-Декабрь 12
  • Репутация: 0
  • IPB version:I have no IPB
 

Отправлено 10 Ноябрь 2014 - 16:49

Как и обещал, отписываюсь по результату. Все отработало норм, кроме п.4.
В итоге, я переписал функцию delete_button:
	function delete_button($post_id, $poster, $post_date)
	{
		if ($this->ipsclass->member['id'] == "" or $this->ipsclass->member['id'] == 0)
		{
			return "";
		}
		
		$button = $this->ipsclass->compiled_templates['skin_topic']->button_delete($this->forum['id'],$this->topic['tid'],$post_id,$this->md5_check );
		
		if ($this->ipsclass->member['g_is_supmod']) return $button;
		if ($this->moderator['delete_post']) return $button;


		if ($poster['id'] == $this->ipsclass->member['id'] and ($this->ipsclass->member['g_delete_own_posts']))
		{
			// Have we set a time limit?
			
			if ($this->ipsclass->member['g_delete_time'] > 0)
			{
				if ( $post_date > ( time() - ( intval($this->ipsclass->member['g_delete_time']) * 60 ) ) )
				{
					return $button;
				}
				else
				{
					return "";
				}
			}
			else
			{
				return $button;
			}
		}


	}


И в описание и вызов delete_button надо добавить параметр $post_date

Еще раз спасибо за решение :)
0

#6 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 244
  • Регистрация: 20-Март 09
  • Репутация: 2 060
  • IPB version:3.1.x
 

Отправлено 10 Ноябрь 2014 - 18:30

Да, действительно, меня ввел в заблуждения массив $poster который содержал данные поста, а оказалось что это кеш. Инструкцию поправил.
0

Сообщить об этой теме:


Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна