Alleen laatste 2 berichten wijzigen leden

Hulp nodig bij een modificaties of op zoek naar een MOD? Bekijk ons archief. Support wordt helaas niet meer verleend.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Gebruikersavatar
Pinocchio
Berichten: 107
Lid geworden op: 10 jul 2003, 20:34

Alleen laatste 2 berichten wijzigen leden

Bericht door Pinocchio » 13 dec 2004, 20:33

In navolging van deze topic
http://www.phpbb.nl/viewtopic.php?t=14713

Het is al een oplossing maar toch niet helemaal, zou het mogelijk
zijn om de privileges standaard te maken zodat men bijv
alleen de laatste 2 berichten kan wijzigen.

Dus dat dat telt voor iedereen, ik vind het bij nader inzien
toch een raar iets eigenlijk dat men zijn/haar berichten
zeg maar 1000 berichten terug nog kan wijzigen.

Ik had namelijk met een kwaadwillende te maken en was er
nog op tijd bij om de permissies voor wijzigen op mod te zetten
van alle fora.

Het verwijderen stond al op mod uiteraard maar als men al
hun tekst wijzigt is het hetzelfde effect.

Ben ik weer een dag kwijt aan backup terugzetten etc met
uiteraard verlies van laatste berichten na backup.

Ik ben heel de structuur van phpbb kwijt (welke files wat doen)
iemand enig idee waar te beginnen of is er een zeer handig
iemand die het kan/wil maken?


Het lijkt mij een waanzinnige mod in ieder geval.

john ;)

Merlin Sythove
Berichten: 55
Lid geworden op: 04 dec 2004, 16:06

Bericht door Merlin Sythove » 14 dec 2004, 09:58

Even een simpele brainstorm:

Het lijkt me niet zo erg moeilijk om het "Edit" knopje alleen te tonen als de datum van het bericht b.v. niet meer dan 30 dagen oud is. Dat is weliswaar iets anders dan jij vraagt, maar een datum lijkt me redelijker, en makkelijker ook om te programmeren.

Daarvoor moet je viewposts.php (even uit het hoofd) gaan bijwerken zodat de code voor het Edit knopje alleen wordt aangemaakt als die datum-voorwaarde correct is. Ik vind dit eigenlijk wel een zinvolle aanvulling, ik ga zelf eens kijken waar en hoe (t.z.t. - don't hold your breath!)

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 14 dec 2004, 11:09

Dat laatste is vrij eenvoudig, ik heb het niet getest maar dit zou moeten werken:

Open:

viewtopic.php

Vindt:

Code: Selecteer alles

	if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] )
Vervang met:

Code: Selecteer alles

	$edit_days  = 30;
	$edit_hours = 0;

	if ( ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) && ( ( mktime() - $postrow[$i]['post_time']) < (($edit_hours * 3600) + $edit_days * 86400 ) ) ) || $is_auth['auth_mod'] )
Het is niet 100% veilig, als iemand de directe URL intypt (bijv. posting.php?mode=editpost&p=8265), kan hij z'n post alsnog wijzigen. Maar het is niet erg waarschijnlijk dat dit gebeurd.

Gebruikersavatar
mosymuis
Berichten: 6940
Lid geworden op: 05 feb 2003, 14:00
Locatie: Amsterdam
Contacteer:

Bericht door mosymuis » 14 dec 2004, 12:52

Spambot schreef:if ( ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) && ( ( mktime() - $postrow[$i]['post_time']) < (($edit_hours * 3600) + $edit_days * 86400 ) ) ) || $is_auth['auth_mod'] )
Beetje omslachtig, je kunt ook direct een gewenste timestamp laten genereren:

Code: Selecteer alles

   if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] && $postrow[$i]['post_time'] > mktime(date('H'), date('i'), date('s'), date('m'), date('d')-30, date('Y')) ) || $is_auth['auth_mod'] )

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 14 dec 2004, 12:57

Omslachtig? Jouw code is langer (ja, ik zie dat ie ook korter kan) :lol:

Gebruikersavatar
Pinocchio
Berichten: 107
Lid geworden op: 10 jul 2003, 20:34

Bericht door Pinocchio » 14 dec 2004, 13:06

Bedankt!!!!
Ik heb op het moment nergens meer een testforum draaien
omdat ik een uitstapje naar mambo had gemaakt, komt
uiteraard later ook weer een phpforum in terug :lol:

Maar ik ga dit eerst maar eens uittesten omdat
jullie het ook nog niet geprobeerd hebben zie ik wel.

Dus ik zal op het eind van de week even een forum
installeren (heb ik wat meer tijd) en kom er
nog op terug.

Als iemand me voor is geweest hoor ik het ook graag natuurlijk.
Ik vind het een waanzinnige aanvulling door eerder gegeven
redenen :wink:

Merlin Sythove
Berichten: 55
Lid geworden op: 04 dec 2004, 16:06

Bericht door Merlin Sythove » 14 dec 2004, 15:14

Spambot schreef:Het is niet 100% veilig, als iemand de directe URL intypt (bijv. posting.php?mode=editpost&p=8265), kan hij z'n post alsnog wijzigen. Maar het is niet erg waarschijnlijk dat dit gebeurd.
Je zou eenzelfde check in posting.php kunnen zetten en een foutmelding geven als iemand zijn bericht op die manier probeert te editen.

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 14 dec 2004, 16:04

Om alleen de laatste 2 onderwerpen te mogen editten (en dus geen tijdslimiet):
Open posting.php
Zoek

Code: Selecteer alles

		//
		// Can this user edit/delete the post/poll?
		//
Zet ervoor

Code: Selecteer alles

		$sql = "SELECT post_id
			FROM " . POSTS_TABLE . "
			WHERE poster_id = " . intval($userdata['user_id']) . "
			ORDER BY post_time DESC
			LIMIT 0, 2";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "Could not obtain edit data for this topic", '', __LINE__, __FILE__, $sql);
		}
		$user_edit = $db->sql_fetchrowset($result);

		$edit = false;
	
		for($i = 0; $i < count($user_edit); $i++)
		{
			if ( $user_edit[$i]['post_id'] == $post_info['post_id'] )
			{
				$edit = true;
			}
		}
Zoek

Code: Selecteer alles

if ( $post_info['poster_id'] != $userdata['user_id'] ) && !$is_auth['auth_mod'] )
Vervang met

Code: Selecteer alles

if ( ( $post_info['poster_id'] != $userdata['user_id'] || empty($edit) ) && !$is_auth['auth_mod'] )
Open viewtopic.php
Zoek

Code: Selecteer alles

$temp_url = append_sid("search.$phpEx?search_author=" . urlencode($postrow[$i]['username']) . "&showresults=posts");
	$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>';
	$search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';
Zet erachter

Code: Selecteer alles

$sql = "SELECT post_id
		FROM " . POSTS_TABLE . "
		WHERE poster_id = " . intval($userdata['user_id']) . "
		ORDER BY post_time DESC
		LIMIT 0, 2";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not obtain edit data for this topic", '', __LINE__, __FILE__, $sql);
	}
	$user_edit = $db->sql_fetchrowset($result);

	$edit = false;
Zoek

Code: Selecteer alles

if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] ) || $is_auth['auth_mod'] )
Vervang met

Code: Selecteer alles

if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] && $edit ) || $is_auth['auth_mod'] )
Afbeelding

Gebruikersavatar
Pinocchio
Berichten: 107
Lid geworden op: 10 jul 2003, 20:34

Bericht door Pinocchio » 15 dec 2004, 00:29

Ik krijg helemaal geen wijzigknopjes meer te zien, werkt
dit bij jou wel?

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 15 dec 2004, 15:21

Ja, maar alleen bij de laatste 2 posts van de gebruiker. Niet de laatste 2 in 1 topic, maar de laatste 2 van al je posts.
Als mod/admin moet je het trouwens altijd kunnen zien.
Afbeelding

Gebruikersavatar
Pinocchio
Berichten: 107
Lid geworden op: 10 jul 2003, 20:34

Bericht door Pinocchio » 19 dec 2004, 23:53

Nee de tijdstamp werkt wel het andere niet bij mij, ik doe
iets fout of is het versie gevoelig voor de laatste oplossing?

Gesloten