[Tipp] geänderte Beiträge immer anzeigen

Tipps zur Forensoftware phpBB 3.2.x
Gesperrt
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[Tipp] geänderte Beiträge immer anzeigen

Beitrag von Mahony »

Hallo

Problem
Standardmäßig werden geänderte Beiträge nur angezeigt, wenn es einen darauf folgenden Beitrag gibt.
Geänderte Beiträge werden auch nicht angezeigt wenn ein Moderator einen Beitrag geändert hat (es sei denn der Moderator hat einen Grund angegeben).

Lösung


Öffne includes/functions_posting.php

Suche

Code: Alles auswählen

if ($data_ary['post_edit_reason'] || (!$auth->acl_get('m_edit', $data_ary['forum_id']) && ($post_mode == 'edit' || $post_mode == 'edit_first_post')))
			{
				$data_ary['post_edit_reason']		= truncate_string($data_ary['post_edit_reason'], 255, 255, false);

				$sql_data[POSTS_TABLE]['sql']	= array(
					'post_edit_time'	=> $current_time,
					'post_edit_reason'	=> $data_ary['post_edit_reason'],
					'post_edit_user'	=> (int) $data_ary['post_edit_user'],
				);

				$sql_data[POSTS_TABLE]['stat'][] = 'post_edit_count = post_edit_count + 1';
			}
			else if (!$data_ary['post_edit_reason'] && $mode == 'edit' && $auth->acl_get('m_edit', $data_ary['forum_id']))
			{
				$sql_data[POSTS_TABLE]['sql'] = array(
					'post_edit_reason'	=> '',
				);
			}
Ersetze mit

Code: Alles auswählen

// Always display edit reason
			/* if ($data_ary['post_edit_reason'] || (!$auth->acl_get('m_edit', $data_ary['forum_id']) && ($post_mode == 'edit' || $post_mode == 'edit_first_post')))
			{ */
				$data_ary['post_edit_reason']		= truncate_string($data_ary['post_edit_reason'], 255, 255, false);

				$sql_data[POSTS_TABLE]['sql']	= array(
					'post_edit_time'	=> $current_time,
					'post_edit_reason'	=> $data_ary['post_edit_reason'],
					'post_edit_user'	=> (int) $data_ary['post_edit_user'],
				);

				$sql_data[POSTS_TABLE]['stat'][] = 'post_edit_count = post_edit_count + 1';
			/* }
			else if (!$data_ary['post_edit_reason'] && $mode == 'edit' && $auth->acl_get('m_edit', $data_ary['forum_id']))
			{
				$sql_data[POSTS_TABLE]['sql'] = array(
					'post_edit_reason'	=> '',
				);
			} */
Somit wird, ab der Änderung des Codes, JEDE Änderung eines Beitrags angezeigt.


Möchte man dass die geänderten Beiträge auch im Schnellzugriff - neue Beiträge - angezeigt werden, so muss man folgendes machen:

Suche

Code: Alles auswählen

if ($data_ary['post_edit_reason'] || (!$auth->acl_get('m_edit', $data_ary['forum_id']) && ($post_mode == 'edit' || $post_mode == 'edit_first_post')))
         {
            $data_ary['post_edit_reason']      = truncate_string($data_ary['post_edit_reason'], 255, 255, false);

            $sql_data[POSTS_TABLE]['sql']   = array(
               'post_edit_time'   => $current_time,
               'post_edit_reason'   => $data_ary['post_edit_reason'],
               'post_edit_user'   => (int) $data_ary['post_edit_user'],
            );

            $sql_data[POSTS_TABLE]['stat'][] = 'post_edit_count = post_edit_count + 1';
         }
         else if (!$data_ary['post_edit_reason'] && $mode == 'edit' && $auth->acl_get('m_edit', $data_ary['forum_id']))
         {
            $sql_data[POSTS_TABLE]['sql'] = array(
               'post_edit_reason'   => '',
            );
         }
Ersetze mit

Code: Alles auswählen

// Always display edit reason
         /* if ($data_ary['post_edit_reason'] || (!$auth->acl_get('m_edit', $data_ary['forum_id']) && ($post_mode == 'edit' || $post_mode == 'edit_first_post')))
         { */
            $data_ary['post_edit_reason']      = truncate_string($data_ary['post_edit_reason'], 255, 255, false);

            $sql_data[POSTS_TABLE]['sql']   = array(
               'post_edit_time'   => $current_time,
               'post_edit_reason'   => $data_ary['post_edit_reason'],
               'post_edit_user'   => (int) $data_ary['post_edit_user'],
            );

            $sql_data[POSTS_TABLE]['stat'][] = 'post_edit_count = post_edit_count + 1';
         /* }
         else if (!$data_ary['post_edit_reason'] && $mode == 'edit' && $auth->acl_get('m_edit', $data_ary['forum_id']))
         {
            $sql_data[POSTS_TABLE]['sql'] = array(
               'post_edit_reason'   => '',
            );
         } */
       // Start : Mark edited posts as unread    
    if($post_mode == 'edit_last_post' || $post_mode == 'edit_topic')
    {
        $sql_update_posts = 'UPDATE ' . POSTS_TABLE . '
                SET post_time = ' . $current_time . '
                WHERE post_id = ' . $data_ary['post_id'] . ' 
                    AND topic_id = ' . $data_ary['topic_id'];
        $db->sql_query($sql_update_posts);

        $sql_update_topics = 'UPDATE ' . TOPICS_TABLE . ' 
                SET topic_last_post_time = ' . $current_time . ' 
                WHERE topic_id = ' . $data_ary['topic_id'];
        $db->sql_query($sql_update_topics);            
    
        update_post_information('forum', $data_ary['forum_id']);
        markread('post', $data_ary['topic_id'], $data_ary['topic_id'], $data_ary['post_time']);
    }
// End : Mark edited posts as unread


Möchte man, dass der bearbeitete/neue Beitrag auch in der Spalte letzter Beitrag angezeigt wird, so muss man den Code mit diesem hier ersetzen:

Code: Alles auswählen

// Always display edit reason
         /* if ($data_ary['post_edit_reason'] || (!$auth->acl_get('m_edit', $data_ary['forum_id']) && ($post_mode == 'edit' || $post_mode == 'edit_first_post')))
         { */
            $data_ary['post_edit_reason']      = truncate_string($data_ary['post_edit_reason'], 255, 255, false);

            $sql_data[POSTS_TABLE]['sql']   = array(
               'post_edit_time'   => $current_time,
               'post_edit_reason'   => $data_ary['post_edit_reason'],
               'post_edit_user'   => (int) $data_ary['post_edit_user'],
            );

            $sql_data[POSTS_TABLE]['stat'][] = 'post_edit_count = post_edit_count + 1';
         /* }
         else if (!$data_ary['post_edit_reason'] && $mode == 'edit' && $auth->acl_get('m_edit', $data_ary['forum_id']))
         {
            $sql_data[POSTS_TABLE]['sql'] = array(
               'post_edit_reason'   => '',
            );
         } */
       // Start : Mark edited posts as unread    
    if($post_mode == 'edit_last_post' || $post_mode == 'edit_topic')
    {
        $sql_update_posts = 'UPDATE ' . POSTS_TABLE . '
                SET post_time = ' . $current_time . '
                WHERE post_id = ' . $data_ary['post_id'] . ' 
                    AND topic_id = ' . $data_ary['topic_id'];
        $db->sql_query($sql_update_posts);

        $sql_update_topics = 'UPDATE ' . TOPICS_TABLE . ' 
                SET topic_last_post_time = ' . $current_time . ' 
                WHERE topic_id = ' . $data_ary['topic_id'];
        $db->sql_query($sql_update_topics);            
    
        update_post_information('forum', $data_ary['forum_id']);
        markread('post', $data_ary['topic_id'], $data_ary['topic_id'], $data_ary['post_time']);
      
      $sql_update_forums = 'UPDATE ' . FORUMS_TABLE . '
                SET forum_last_post_time = ' . $current_time . ',
                    forum_last_post_id = ' . $data_ary['post_id'] . ',
                    forum_last_post_subject = "' . $subject . '",
                    forum_last_poster_id = ' . $data_ary['poster_id'] . ',
                    forum_last_poster_name = "' . $username . '"
                WHERE forum_id = ' . $data_ary['forum_id'];
        $db->sql_query($sql_update_forums);
    }
// End : Mark edited posts as unread
P.S. Allerdings wird mit dieser Änderung/diesen Änderungen dann die Beitragszeit des geänderten Beitrags ebenfalls aktualisiert.


Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Gesperrt