reg. User die Möglichkeit geben Ihr Post selbst zu schließen

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Ulthar
Mitglied
Beiträge: 3
Registriert: 10.12.2002 01:37

reg. User die Möglichkeit geben Ihr Post selbst zu schließen

Beitrag von Ulthar »

Hallo!

Kann man irgendwie reg. Benutzer die Möglichkeit geben NUR Ihr eigenes Thema zu schließen?

mfg

Ulthi..
Ulthar
Mitglied
Beiträge: 3
Registriert: 10.12.2002 01:37

Beitrag von Ulthar »

Kennt wirklich keiner so nen Trick oder so?`

mfg

Ulthi
Benutzeravatar
Mister_X
Ehemaliges Teammitglied
Beiträge: 7102
Registriert: 24.05.2001 02:00
Wohnort: Augsburg

Beitrag von Mister_X »

also der Benutzer der das Thema eröffnet hat soll es auch schließen können ?
Benutzeravatar
Simpson
Ehemaliges Teammitglied
Beiträge: 1088
Registriert: 20.05.2002 17:35
Wohnort: Göttingen
Kontaktdaten:

Beitrag von Simpson »

Fände ich auch nicht schlecht.

Nachteil war allerdings damals im WBB, das wenn man seinen Usern das erlaubt hat, das die auch wieder Beiträge die vom Admin geschlossen wurden, wieder öffnen konnten :D böse Falle.
Ulthar
Mitglied
Beiträge: 3
Registriert: 10.12.2002 01:37

Beitrag von Ulthar »

Hallo!

Ja genauso mein ich dass, natürlich öffnen und schliessen..
Benutzeravatar
Mister_X
Ehemaliges Teammitglied
Beiträge: 7102
Registriert: 24.05.2001 02:00
Wohnort: Augsburg

Beitrag von Mister_X »

Variante I: (siehe auch weiter unten Variante II)
Jeder Benutzer egal ob Admin oder Moderator kann das Thema das er eröffnet hat schließen/locken bzw. auch wieder öffnen. Man beachte die von Simpson erwähnte Problematik falls ein Admin/Moderator das Thema geschlossen hat.

phpBB2/language/lang_xxx/lang_main.php
suche nach

Code: Alles auswählen

$lang['Rules_moderate']
und füge in die nächste Zeile ein:

Code: Alles auswählen

$lang['Rules_openclose'] = 'You <b>can</b> lock/unlock <b>this</b> topic';
phpBB2/viewtopic.php
suche nach

Code: Alles auswählen

$topic_mod = '';
und füge danach ein:

Code: Alles auswählen

	$sql = "SELECT t.topic_id, t.topic_first_post_id, p.post_id, p.poster_id
		FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
		WHERE t.topic_id = " . $topic_id . "
			AND t.topic_first_post_id = p.post_id";
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);

if ($row['poster_id'] == $userdata['user_id'] AND $userdata['user_id'] != '-1' AND !$is_auth['auth_mod'])
{
	$s_auth_can .= $lang['Rules_openclose'];

	$topic_mod .= ( $forum_topic_data['topic_status'] == TOPIC_UNLOCKED ) ? '<a href="' . append_sid("modcp.$phpEx?" . POST_TOPIC_URL . "=$topic_id&mode=lock") . '"><img src="' . $images['topic_mod_lock'] . '" alt="' . $lang['Lock_topic'] . '" title="' . $lang['Lock_topic'] . '" border="0" /></a>&nbsp;' : '<a href="' . append_sid("modcp.$phpEx?" . POST_TOPIC_URL . "=$topic_id&mode=unlock") . '"><img src="' . $images['topic_mod_unlock'] . '" alt="' . $lang['Unlock_topic'] . '" title="' . $lang['Unlock_topic'] . '" border="0" /></a>&nbsp;';
}
phpBB2/modcp.php
suche nach

Code: Alles auswählen

if ( !$is_auth['auth_mod'] )
{
	message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
}
und ersetze dies durch

Code: Alles auswählen

	$sql = "SELECT t.topic_id, t.topic_first_post_id, p.post_id, p.poster_id
		FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
		WHERE t.topic_id = " . $topic_id . "
			AND t.topic_first_post_id = p.post_id";
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);

if ($row['poster_id'] == $userdata['user_id'] AND $userdata['user_id'] != '-1' AND !$is_auth['auth_mod'] AND ($mode == 'lock' OR $mode == 'unlock'))
{
	if ($mode == 'lock')
	{
  		if ( empty($topic_id) )
  		{
     			message_die(GENERAL_MESSAGE, $lang['None_selected']);
 		}
		$sql = "UPDATE " . TOPICS_TABLE . "
			SET topic_status = " . TOPIC_LOCKED . "
			WHERE topic_id = " . $topic_id . "
				AND topic_moved_id = 0";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not update topics table', '', __LINE__, __FILE__, $sql);
		}
		if ( !empty($topic_id) )
		{
			$redirect_page = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id");
			$message = sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>');
		}
		$message = $message . '<br \><br \>' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');

		$template->assign_vars(array(
			'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">')
		);

		message_die(GENERAL_MESSAGE, $lang['Topics_Locked'] . '<br /><br />' . $message);
	}

	if ($mode == 'unlock')
	{
		if ( empty($topic_id) )
		{
			message_die(GENERAL_MESSAGE, $lang['None_selected']);
		}
		$sql = "UPDATE " . TOPICS_TABLE . "
			SET topic_status = " . TOPIC_UNLOCKED . "
			WHERE topic_id = " . $topic_id . "
				AND topic_moved_id = 0";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not update topics table', '', __LINE__, __FILE__, $sql);
		}

		if ( !empty($topic_id) )
		{
			$redirect_page = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id");
			$message = sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>');
		}
		$message = $message . '<br \><br \>' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');

		$template->assign_vars(array(
			'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">')
		);

		message_die(GENERAL_MESSAGE, $lang['Topics_Unlocked'] . '<br /><br />' . $message);
	}

	else
	{
         message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
	}

//nur zur Sicherheit nochmal exit ;)
exit;
}
else
{
  if ( !$is_auth['auth_mod'] )
  {
  	message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
  }
}
Ich weiß, dass da ein paar Sachen doppelt durchgecheckt werden, aber ich hab jetzt nicht die Lust das weiter auseinander zunehmen, bei meinen kurzen Tests ging alles ohne Probleme, der Themenstarter kann ohne Probleme sein Thema schließen bzw. öffnen.
@Simpson es sollte auch möglich sein, dass der Themenstarter sein Thema NUR schließen kann, aber nicht mehr öffnen.
Bitte probiert diesen Code in Ruhe aus, irgendeine Sicherheitslück sollte nicht entstehen (wie gesagt manches checke ich ja sogar mehrfach durch), falls ich etwas übersehen haben sollte bitte melden!
Zuletzt geändert von Mister_X am 18.12.2002 17:00, insgesamt 1-mal geändert.
Benutzeravatar
Simpson
Ehemaliges Teammitglied
Beiträge: 1088
Registriert: 20.05.2002 17:35
Wohnort: Göttingen
Kontaktdaten:

Beitrag von Simpson »

Funktioniert super ;) klasse Arbeit - habs gerade ausprobiert.

Das ganze hat nur einen winzig kleinen Schönheitfehler (den ich oben schon erwähnte, also erwartet habe), wenn man seinen Usern diese Möglichkeit gibt dann können die Themenstartet Threads wieder öffnen welche vom Admin geschlossen worden.
Benutzeravatar
Mister_X
Ehemaliges Teammitglied
Beiträge: 7102
Registriert: 24.05.2001 02:00
Wohnort: Augsburg

Beitrag von Mister_X »

Variante II:
Jeder Benutzer egal ob Admin oder Moderator kann das Thema das er eröffnet hat schließen bzw. locken.

phpBB2/language/lang_xxx/lang_main.php
suche nach

Code: Alles auswählen

$lang['Rules_moderate']
und füge in die nächste Zeile ein:

Code: Alles auswählen

$lang['Rules_close'] = 'You <b>can</b> lock <b>this</b> topic';

phpBB2/viewtopic.php
suche nach

Code: Alles auswählen

$topic_mod = '';
und füge danach ein:

Code: Alles auswählen

   $sql = "SELECT t.topic_id, t.topic_first_post_id, p.post_id, p.poster_id
      FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
      WHERE t.topic_id = " . $topic_id . "
         AND t.topic_first_post_id = p.post_id";
   $result = $db->sql_query($sql);
   $row = $db->sql_fetchrow($result);

if ($row['poster_id'] == $userdata['user_id'] AND $userdata['user_id'] != '-1' AND !$is_auth['auth_mod'])
{
   $s_auth_can .= $lang['Rules_close'];

	$topic_mod .= ( $forum_topic_data['topic_status'] == TOPIC_UNLOCKED ) ? '<a href="' . append_sid("modcp.$phpEx?" . POST_TOPIC_URL . "=$topic_id&mode=lock") . '"><img src="' . $images['topic_mod_lock'] . '" alt="' . $lang['Lock_topic'] . '" title="' . $lang['Lock_topic'] . '" border="0" /></a>' : '';
} 

phpBB2/modcp.php
suche nach

Code: Alles auswählen

if ( !$is_auth['auth_mod'] )
{
   message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
}
und ersetze dies durch

Code: Alles auswählen

   $sql = "SELECT t.topic_id, t.topic_first_post_id, p.post_id, p.poster_id
      FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
      WHERE t.topic_id = " . $topic_id . "
         AND t.topic_first_post_id = p.post_id";
   $result = $db->sql_query($sql);
   $row = $db->sql_fetchrow($result);

if ($row['poster_id'] == $userdata['user_id'] AND $userdata['user_id'] != '-1' AND !$is_auth['auth_mod'] AND $mode == 'lock')
{
   if ($mode == 'lock')
   {
        if ( empty($topic_id) )
        {
              message_die(GENERAL_MESSAGE, $lang['None_selected']);
      }
      $sql = "UPDATE " . TOPICS_TABLE . "
         SET topic_status = " . TOPIC_LOCKED . "
         WHERE topic_id = " . $topic_id . "
            AND topic_moved_id = 0";
      if ( !($result = $db->sql_query($sql)) )
      {
         message_die(GENERAL_ERROR, 'Could not update topics table', '', __LINE__, __FILE__, $sql);
      }
      if ( !empty($topic_id) )
      {
         $redirect_page = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id");
         $message = sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>');
      }
      $message = $message . '<br \><br \>' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');

      $template->assign_vars(array(
         'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">')
      );

      message_die(GENERAL_MESSAGE, $lang['Topics_Locked'] . '<br /><br />' . $message);
   }

   else
   {
         message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
   }

//nur zur Sicherheit nochmal exit ;)
exit;
}
else
{
  if ( !$is_auth['auth_mod'] )
  {
     message_die(GENERAL_MESSAGE, $lang['Not_Moderator'], $lang['Not_Authorised']);
  }
}
Zuletzt geändert von Mister_X am 18.12.2002 17:08, insgesamt 3-mal geändert.
Benutzeravatar
Simpson
Ehemaliges Teammitglied
Beiträge: 1088
Registriert: 20.05.2002 17:35
Wohnort: Göttingen
Kontaktdaten:

Beitrag von Simpson »

Danke vielmals, das ist perfekt - bau ich gleich morgen ein, habs mir schon mal auskopiert :)
Kollo

Beitrag von Kollo »

Funktionierts die Mod?

Kollo
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“