Seite 1 von 2

Avatar-Upload: zeitliche Sperre: Wie?

Verfasst: 09.08.2003 02:21
von Matlock

Bei uns nervt ein User durch tägliches Ändern seines Avatars. Völlig verbieten wollen wir ihm den Upload nicht. Wie kann man es erreichen, daß User ihren Avatar nur nach Ablauf von X (z.B. 30) Tagen ändern können?



Re: Avatar-Upload: zeitliche Sperre: Wie?

Verfasst: 11.08.2003 00:37
von Gast
Matlock hat geschrieben: Bei uns nervt ein User durch tägliches Ändern seines Avatars. Völlig verbieten wollen wir ihm den Upload nicht. Wie kann man es erreichen, daß User ihren Avatar nur nach Ablauf von X (z.B. 30) Tagen ändern können?

Ja, manche übertreibens echt. Wär ne gute Sache!

Verfasst: 13.08.2003 14:50
von Matlock
Weiß denn wirklich keiner, wie das geht? Hilfe!!!

Verfasst: 13.08.2003 15:28
von QCO
für den fall, das es sich um upload-avatare handel (wenn nicht, dann wird das ganze deutlich aufwendiger)
man könnte überprüfen, wann der jetztige avatar des user erstellt wurde
ala
fileatime(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $userdata['user_avatar']))+60*60*24*30 > time()
als umsetzung (ungetestet, nur einfach mal so ins unreine gedacht)
geh mal in includes/usercp_register.php
dort findest du so um zeile 391 rum folgendes

Code: Alles auswählen

	if ( isset($HTTP_POST_VARS['avatardel']) && $mode == 'editprofile' )
	{
		$avatar_sql = user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
	}
danach fügst du folgendes ein:

Code: Alles auswählen

    if ( !empty($userdata['user_avatar']) && ( @fileatime(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $userdata['user_avatar']))+60*60*24*30 > time() ) && ( !empty($user_avatar_upload) || !empty($user_avatar_name) || !empty($user_avatar_remoteurl) || !empty($user_avatar_local) ) ) { 
        $error = true; 
        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . 'Du darfst deinen Avatar nur alle 30 Tage ändern.'; 
    }
	else
	{
und anschließend noch nach folgendem (etwa zeile430

Code: Alles auswählen

		$avatar_sql = user_avatar_gallery($mode, $error, $error_msg, $user_avatar_local);
	}
fügst du noch ein ein.

-- edit --
Fehler aus Code entfernt

Verfasst: 13.08.2003 16:49
von Matlock
Ich hab das mal so eingefügt, 100%ig wie oben beschrieben, es kommt beim Aufruf des Profils folgende Fehlermeldung:

Code: Alles auswählen

Parse error: parse error, unexpected '{' in /www/htdocs/v081722/phpBB2/includes/usercp_register.php on line 391
Woran kann es liegen?

Verfasst: 13.08.2003 16:56
von Henne
Kannst deine Datei mal als .txt speichern und nen Link posten?

Verfasst: 13.08.2003 16:59
von Matlock
Hm, da hat wohl hinter

Code: Alles auswählen

time() )
noch ein gefehlt. Jetzt kann man das Profil anklicken.

Bei dem dann folgenden Versuch, einen neuen Avatar hochzuladen, der alte war über 30 Tage alt, kommen folgende Fehlermeldungen:

Code: Alles auswählen

Warning: fileatime() [function.fileatime]: Stat failed for (errno=2 - No such file or directory) in /www/htdocs/v081722/phpBB2/includes/usercp_register.php on line 391

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v081722/phpBB2/includes/usercp_register.php:391) in /www/htdocs/v081722/phpBB2/includes/page_header.php on line 504

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v081722/phpBB2/includes/usercp_register.php:391) in /www/htdocs/v081722/phpBB2/includes/page_header.php on line 506

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v081722/phpBB2/includes/usercp_register.php:391) in /www/htdocs/v081722/phpBB2/includes/page_header.php on line 507

Verfasst: 13.08.2003 17:06
von Matlock
Henne23 hat geschrieben:Kannst deine Datei mal als .txt speichern und nen Link posten?
So, da ist die Datei

Die Änderungen sind gekennzeichnet mit // uploadsperre 30 tage

Verfasst: 13.08.2003 17:15
von Henne
Hast du schon nen Avatar von dir auf dem Server liegen?

Verfasst: 13.08.2003 17:17
von QCO
:D ok, war ja auch nur ein schuss ins blaue
hab noch ein paar fehler rausgemacht:

Code: Alles auswählen

    if ( !empty($userdata['user_avatar']) && ( @fileatime(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $userdata['user_avatar']))+60*60*24*30 > time() ) && ( !empty($user_avatar_upload) || !empty($user_avatar_name) || !empty($user_avatar_remoteurl) || !empty($user_avatar_local) ) ) { 
        $error = true; 
        $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . 'Du darfst deinen Avatar nur alle 30 Tage ändern.'; 
    }
leider hab ich grad keine boardinstallation, in der ich das gefahrlos testen könnte...