Pagina 1 van 1

Alleen laatste 2 berichten wijzigen leden

Geplaatst: 13 dec 2004, 20:33
door Pinocchio
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 ;)

Geplaatst: 14 dec 2004, 09:58
door Merlin Sythove
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!)

Geplaatst: 14 dec 2004, 11:09
door ElbertF
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.

Geplaatst: 14 dec 2004, 12:52
door mosymuis
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'] )

Geplaatst: 14 dec 2004, 12:57
door ElbertF
Omslachtig? Jouw code is langer (ja, ik zie dat ie ook korter kan) :lol:

Geplaatst: 14 dec 2004, 13:06
door Pinocchio
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:

Geplaatst: 14 dec 2004, 15:14
door Merlin Sythove
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.

Geplaatst: 14 dec 2004, 16:04
door Luuk
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'] )

Geplaatst: 15 dec 2004, 00:29
door Pinocchio
Ik krijg helemaal geen wijzigknopjes meer te zien, werkt
dit bij jou wel?

Geplaatst: 15 dec 2004, 15:21
door Luuk
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.

Geplaatst: 19 dec 2004, 23:53
door Pinocchio
Nee de tijdstamp werkt wel het andere niet bij mij, ik doe
iets fout of is het versie gevoelig voor de laatste oplossing?