Block Post Edit Timeout

Jeśli masz problem z nie autoryzowaną modyfikacją, nie możesz jej zainstalować lub występują błędy po jej instalacji to pisz w tym dziale.
zarazek
Posty: 2
Rejestracja: 23 grudnia 2005, 11:35

Block Post Edit Timeout

Post autor: zarazek » 23 grudnia 2005, 11:40

Witam.

Zainstalowałem na forum modyfikację "Block Post Edit Timeout " pobraną z: http://www.phpbb2.pl/download.php?d=486
Niestety działa aż "za dobrze", bo nie pozwala edytować żadnych postów, ani tych napisanych przez siebie przed miesiącem, ani tych przed 5 minutami. Timeout w PA jest ustawiony na 3600 sekund. Miał ktoś taki problem? Jak go rozwiązać?

Dot. phpBB 2.0.15

Dodam jeszcze, że dla postów starszych niż "timeout" w ogóle nie pojawia się ikonka edycji (co jest prawidłowe), natomiast dla postów mieszczących się w "timeout", czyli tych, które powinny dać się wyedytować - pojawia się napis "Przepraszamy, ale nie możesz już zmienić swojego postu"...

Czy powodem może być ewentualna niekompatybilność tego moda z "Łączenie postów by przemo + update"?

Modyfikacja bazuje na podmianie kodów 2 plików (poza modyfikacją PA i language), jak wkleiłem poniżej. Wycofanie zmiany w posting.php nieco naprawia sprawę, bo posty starsze niż 'timeout' nie mają ikonki edycji, posty nowsze niż 'timeout' dają się edytować. Ale jest jeden wyjątek - jeśli nasz post jest ostatni w wątku, to bez względu na czas jego zamieszczenia (np. miesiąc temu), zawsze daje się wyedytować.

#
#-----[ OPEN ]-------------------------------------------
#

viewtopic.php

Kod: Zaznacz cały

# 
#-----[ FIND ]------------------------------------------- 
# 

   if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] ) 
   { 
      $temp_url = append_sid("posting.$phpEx?mode=editpost&" . POST_POST_URL . "=" . $postrow[$i]['post_id']); 
      $edit_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_edit'] . '" alt="' . $lang['Edit_delete_post'] . '" title="' . $lang['Edit_delete_post'] . '" border="0" /></a>'; 
      $edit = '<a href="' . $temp_url . '">' . $lang['Edit_delete_post'] . '</a>'; 
   } 
   else 
   { 
      $edit_img = ''; 
      $edit = ''; 
   } 

# 
#-----[ REPLACE, WITH ]---------------------------------- 
# 

   if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] ) 
   { 
      if( ( time() - $postrow[$i]['post_time'] < $board_config['edit_timeout'] ) || $is_auth['auth_mod'] ) 
      { 
         $temp_url = append_sid("posting.$phpEx?mode=editpost&" . POST_POST_URL . "=" . $postrow[$i]['post_id']); 
         $edit_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_edit'] . '" alt="' . $lang['Edit_delete_post'] . '" title="' . $lang['Edit_delete_post'] . '" border="0" /></a>'; 
         $edit = '<a href="' . $temp_url . '">' . $lang['Edit_delete_post'] . '</a>'; 
      } 
      else 
      { 
         $edit_img = ''; 
         $edit = ''; 
      } 

   } 
   else 
   { 
      $edit_img = ''; 
      $edit = ''; 
   } 

Kod: Zaznacz cały

# 
#-----[ OPEN ]------------------------------------------- 
# 

posting.php 

# 
#-----[ FIND ]------------------------------------------- 
# 

      else if ( !$post_data['edit_poll'] && !$is_auth['auth_mod'] && ( $mode == 'poll_delete' || $poll_delete ) ) 
      { 
         message_die(GENERAL_MESSAGE, $lang['Cannot_delete_poll']); 
      } 

# 
#-----[ AFTER, ADD ]------------------------------------- 
# 

      else if ( ( time() - $post_info['post_time'] > $board_config['edit_timeout'] ) && !$is_auth['auth_mod']) 
      { 
         $message = ( $editpost || $mode == 'editpost' ) ? $lang['Edit_timeout_posts'] : $lang['Edit_own_posts']; 
         $message .= '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>'); 

         message_die(GENERAL_MESSAGE, $message); 
      } 

AlienArt
Posty: 1
Rejestracja: 06 sierpnia 2006, 15:25
Kontakt:

Post autor: AlienArt » 06 sierpnia 2006, 15:27

Oto rozwiązanie problemu:

Kod: Zaznacz cały

############################################################
#
# MOD TITLE  : BLOCK POST EDIT TIMEOUT
# MOD AUTHOR : roadway <roadway@interia.pl>
#
# Oryginalny mod zawierał błąd nie pozwalający na edycję postów.
# Oto jego wersja poprawiona!
#
# Poprawki wprowadził: AlienArt - http://alienart.prv.pl
#
# MOD DESCRIPTION :
# MODYFIKACJA OGRANICZA UZYTKOWNIKOM MOZLIWOSC EDYCJI
# POSTOW PO OKRESLONYM CZASIE W PANELU ADMINA
#
# MOD VERSION : 1.0.0
#
# INSTALLATION LEVEL : EASY
# INSTALLATIOB TIME  : 2 MIN
#
# FILE TO EDIT : 6
#              : viewtopic.php, posting.php, admin_board.php,
#              : lang_main.php, lang_admin.php
#              : board_config_body.tpl,
#
# INDLUDED FILE : 0
#                 
############################################################

#
#-----[ EDIT ]-------------------------------------------
#

INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ('edit_timeout', '3600');

#
#-----[ OPEN ]-------------------------------------------
#

viewtopic.php

#
#-----[ FIND ]-------------------------------------------
#

	if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] )
	{
		$temp_url = append_sid("posting.$phpEx?mode=editpost&" . POST_POST_URL . "=" . $postrow[$i]['post_id']);
		$edit_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_edit'] . '" alt="' . $lang['Edit_delete_post'] . '" title="' . $lang['Edit_delete_post'] . '" border="0" /></a>';
		$edit = '<a href="' . $temp_url . '">' . $lang['Edit_delete_post'] . '</a>';
	}
	else
	{
		$edit_img = '';
		$edit = '';
	}

#
#-----[ REPLACE, WITH ]----------------------------------
#

	if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] )
	{
		if( ( time() - $postrow[$i]['post_time'] < $board_config['edit_timeout'] ) || $is_auth['auth_mod'] )
		{
			$temp_url = append_sid("posting.$phpEx?mode=editpost&" . POST_POST_URL . "=" . $postrow[$i]['post_id']);
			$edit_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_edit'] . '" alt="' . $lang['Edit_delete_post'] . '" title="' . $lang['Edit_delete_post'] . '" border="0" /></a>';
			$edit = '<a href="' . $temp_url . '">' . $lang['Edit_delete_post'] . '</a>';
		}
		else
		{
			$edit_img = '';
			$edit = '';
		}

	}
	else
	{
		$edit_img = '';
		$edit = '';
	}

#
#-----[ OPEN ]-------------------------------------------
#

posting.php

#
#-----[ FIND ]-------------------------------------------
#

		$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "


#
#-----[ IN LINE, FIND ]-------------------------------------------
#

		p.poster_id

#
#-----[ AFTER, ADD ]-------------------------------------
#

		, p.post_time

#
#-----[ FIND ]-------------------------------------------
#

		else if ( !$post_data['edit_poll'] && !$is_auth['auth_mod'] && ( $mode == 'poll_delete' || $poll_delete ) )
		{
			message_die(GENERAL_MESSAGE, $lang['Cannot_delete_poll']);
		}

#
#-----[ AFTER, ADD ]-------------------------------------
#

		else if ( ( time() - $post_info['post_time'] > $board_config['edit_timeout'] ) && !$is_auth['auth_mod'])
		{
			$message = ( $editpost || $mode == 'editpost' ) ? $lang['Edit_timeout_posts'] : $lang['Edit_own_posts'];
			$message .= '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');

			message_die(GENERAL_MESSAGE, $message);
		}

#
#-----[ OPEN ]-------------------------------------------
#

admin/admin_board.php

#
#-----[ FIND ]-------------------------------------------
#

	"L_BOARD_EMAIL_FORM" => $lang['Board_email_form'],

#
#-----[ BEFORE, ADD ]------------------------------------
#

	"L_EDIT_TIMEOUT" => $lang['Edit_timeout'],
	"L_EDIT_TIMEOUT_EXPLAIN" => $lang['Edit_timeout_explain'], 

#
#-----[ FIND ]-------------------------------------------
#

	"TOPICS_PER_PAGE" => $new['topics_per_page'],

#
#-----[ BEFORE, ADD ]------------------------------------
#

	"EDIT_TIMEOUT" => $new['edit_timeout'],

#
#-----[ OPEN ]-------------------------------------------
#

template/phpBB/admin/board_config_body.tpl

#
#-----[ FIND ]-------------------------------------------
#

	<tr>
		<td class="row1">{L_TOPICS_PER_PAGE}</td>
		<td class="row2"><input type="text" name="topics_per_page" size="3" maxlength="4" value="{TOPICS_PER_PAGE}" /></td>
	</tr>

#
#-----[ BEFORE, ADD ]------------------------------------
#

	<tr>
		<td class="row1">{L_EDIT_TIMEOUT} <br /><span class="gensmall">{L_EDIT_TIMEOUT_EXPLAIN}</span></td>
		<td class="row2"><input type="text" size="3" maxlength="8" name="edit_timeout" value="{EDIT_TIMEOUT}" /></td>
	</tr>

#
#-----[ OPEN ]-------------------------------------------
#

langunage/lang_polish/lang_main.php

#
#-----[ FIND ]-------------------------------------------
#

$lang['Edit_own_posts']

#
#-----[ BEFORE, ADD ]------------------------------------
#

$lang['Edit_timeout_posts'] = 'Przepraszamy, ale nie możesz już zmienić swojego postu';

#
#-----[ OPEN ]-------------------------------------------
#

langunage/lang_polish/lang_admin.php

#
#-----[ FIND ]-------------------------------------------
#

$lang['Flood_Interval_explain']

#
#-----[ BEFORE, ADD ]------------------------------------
#

$lang['Edit_timeout'] = 'Czas na edycje własnego postu';
$lang['Edit_timeout_explain'] = 'Ilo&para;ć sekund, przez jakie autor posta bedzie mógł jeszcze go zedytować';

#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------------
#

Zablokowany

Wróć do „Pomoc”