Benachrichtigung bei neuem Foto im Photo Album

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Benachrichtigung bei neuem Foto im Photo Album

Beitrag von Kiss News »

Deine phpBB Version: Vanilla phpBB 2.0.17
MODs: Ja
Dein Wissensstand: Grundwissen
Link zu Deinem Forum: http://www.kissforum.de

PHP Version:
MySQL Version:


Was hast Du gemacht, bevor das Problem aufgetreten ist?



Was hast Du bereits versucht um das Problem zu lösen?




Fehlerbeschreibung und Nachricht

[schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Hallo Oxpus![/schild]

Ich habe den Photo Album Mod installiert. Nun eine Frage, ob folgendes möglich wäre, oder ob es möglicherweise so einen Mod schon gibt:

Jeder User sollte die Möglichkeit haben, eine e-mail zu bekommen, wenn ein neues Foto ins Foto Album hochgeladen wird. Das e-mail soll auch einen Text enthalten wie: User X hat ein neues Foto ins Photo Album hochgeladen:
Beschreibung und direkter Link direkt zum Foto... oder falls möglich, das Foto im email gleich mitschicken...

Die User sollten so eine Benachrichtigung aber nur dann bekommen, wenn sie es wollen. Vielleicht so ein Häkchen zum Anhaken im Photo Album "Benachrichtigung bei neuen Fotos".... wäre sowas möglich?

Ich kenne nur diesen Mod:
http://smartor.is-root.com/viewtopic.ph ... tification
Der löst das Problem aber nicht wirklich, da kein direkter Link zum Foto mitgesendet wird, außerdem kann ein normaler User sich für diese e-mail Benachrichtigunsfunktion nicht selber anmelden...

Ein Popup nach dem Einloggen bei neuen Fotos möchte ich nicht haben in meinem Forum. Gründe:
- es kommen täglich neue Fotos rein, es würde bei den Usern also täglich oder sogar mehrmals täglich das Pop up kommen, ist nervig, besonders dann, wenn es einem gar nicht interessiert...
- viele User haben einen Pop up Blocker
- es gibt keinen direkten Link zu den neuen Fotos... und genau das wäre ja interessant


Eine 2. Frage hätte ich auch noch, das Photo Album betreffend:
In meinem Board www.kissforum.de kann man wie in jedem anderen Board auch Fotos posten.
Nun habe ich aber auch ein Photo Album eingebaut. Im Forum aber posten die User hauptsächlich immer noch interessante Fotos in einem eigenen "interessante Fotos"-Thread wie hier:
http://www.kissforum.de/phpbb2/viewtopi ... 8496#88496
oder hier:
http://www.kissforum.de/phpbb2/viewtopi ... start=1440
Diese Themen sind schon über 100 Seiten lang. Das Problem ist, dass die Fotos eigentlich ins Photo Album gehören:
http://www.kissforum.de/phpbb2/album.php

damit sie dort schön sortiert und in Zukunft auch wieder zu finden sind...

Und jetzt die Frage: wäre es möglich, in bestimmten Threads (also nicht in allen, nur in bestimmten) das fremdverlinken der Fotos auf fremde URLs zu verhindern, stattdessen sollte ein Hinweis erscheinen wie: bitte stelle das Foto ins Foto Album und verlinke von dort, damit man es auch in Zukunft wieder finden kann...

Das fremdverlinken von Fotos in den anderen Threads soll weiterhin möglich sein.

Ist sowas irgendwie möglich ?

P.S.: falls nötig: Einloggen unter tester/tester


Danke für die Info!
Benutzeravatar
blondi
Beiträge: 1091
Registriert: Do 30.Sep, 2004 14:36

Beitrag von blondi »

finde ich auch... ist eine sehr interessante funktion fürs album :-))
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

1. Popup Blocker kann man einstellen und Popups gewünschter Seiten dann immer noch zulassen ;)
2. Es gibt auch andere Methoden, Popups zu erzeugen, ausser mit windows.open(), aber die bedeuten mehr Traffic, da mehr Code geladen werden muss.
3. Emails erzeugen auf jeden Fall mehr Traffic!
4. Popups kann man auch mit Links ausstatten, die direkt zu Image führen.
5. Und User können das Popup auch abschalten.
6. Bei Massen Emails aufgrund vieler neuer Images kannst Du schnell auf einer Spammliste auftauchen ;)

Noch mehr?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

zu 1) Aus Erfahrung haben viele einen Pop up Blocker, und übersehen den Hinweis, dass eines da ist.

zu 2)... und das heißt? Pop ups werden dann auch angezeigt, wenn man einen Pop up Blocker hat??

zu 3) Traffic stört mich nicht wirklich, soviel ist es ja nun auch wieder nicht denke ich. Es werden ja keine Millionen mails verschickt, sondern vielleicht hundert oder so...

zu 4 und 6) heißt das, einen direkten Link zum Foto ist in einem mail nicht möglich? Toll wäre es, wenn das Foto mit den e-mails gleich mitgeschickt würde... oder zumindest einen direkten Link direkt zum Foto (nicht nur zur Kategorie) Wäre sowas überhaupt theoretisch möglich?

zu 5) OK

Sinn ist es ja, die User über neue Fotos auch dann zu informieren, wenn sie sich nicht einloggen. Sonst müßten sie sich ja extra immer einloggen, um zu erfahren, welche neuen Fotos da sind. So ein Feature habe ich im Prinzip sowieso schon, es gibt einen Ordner, dort sind alle Fotos aufgelistet seit dem letzten Log in. Aus Erfahrung kann ich aber sagen, dass ich da nicht immer reinschaue (Zeitmangel oder was auch immer), und dann aus welchen Grund auch immer bin ich plötzlich nicht mehr eingeloggt nach einiger Zeit (keine Ahnung warum, sieht so aus, als hätten die Cookies irgendeine Zeitbeschränkung auf meiner Seite...), und dann ist natürlich die Auflistung der neuen Fotos seit dem letzten Log in Futsch...

Jedesmal beim Einloggen ein Pop up zu haben, finde ich lästig. Wenn Du gerade mal keine Zeit hast, oder der PC abstürtzt etc., dann kannst Du die neuen Fotos nicht sehen. Die e-mails aber kannst Du Dir wann auch immer ansehen, und die e-mail Benachrichtigung immer noch abstellen, falls Du sie nicht mehr möchtest.

Für mich wäre das die Beste Lösung. Selbst falls es für alle User nicht möglich wäre, sowas einzurichten, für mich würde ich so ein Feature einrichten, wenn das möglich wäre... wenn das Foto auch noch mitgeschickt werden würde, sehe ich dann gleich, ob es auch in der richtigen Kategorie ist, und brauche gar nicht mal online gehen. Manche Leute laden nämlich die Fotos in eine falsche Kategorie, deshalb muß ich alle überprüfen und manchmal auch verschieben...
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öhm, ich persönlich ärgere mich schon über jede Benachrichtigung, die ich erhalte, da muss ich nicht auch noch über Images im Album informiert werden.
Und gerade per Email.
Wie gesagt: Schickst Du bei einem neuen Image an alle berechtigten User ein Benachrichtigungsemail und das gleich für mehrere hintereinander hochgeladene Bilder, kann es passieren, daß Deine Absender-Adresse in Spamlisten landet. Dann geht nichts mehr raus, auch keine Benachrichtigungsmails.
Und im Album kann man auch den Categories Hierarchy Mod einbauen, bzw. das Album Full Pack verwenden, um auch immer anzuzeigen, welche Bilder zuletzt hochgeladen wurden, bzw. in welcher Kategorie neue Images vorhanden sind.

Das soll nicht von mir jetzt heissen, daß eine Email-Benachrichtigung unsinnig ist, ich halte es nur für eine unnötige Trafficschleuder und dazu muss man auch mehreres beachten:
Die Funktion muss erstmal ermitteln, welche User überhaupt das Email erhalten dürfen. Dazu muss der User auch in der Lage sein, diese Benachrichtigung auszuschalten (Laut geltenden Gesetzen in Deutschland!). Sind also mindestens eine Abfrage je Image/Upload.
Setzt man dann noch den Multiple Upload Mod oder Upload Directory Mod ein, wäre eine Email mit einem Link zur Kategorie oder mit mehreren Links (einen je Image) nötig. Noch mehr Traffic!
Wenn das dann nicht mal auch den Upload bremst, denn es müssen ja an alle entsprechenden User eine Email verschickt werden. Eine Massen Email. Und das kann je nach Server dauern. Bei mir würde dann ein Upload ggf. eine Minute und länger dauern, die Zeit für den Upload des Images mal nicht mirgerechnet!
Und Du willst dazu auch Deinen Usern zumuten, daß für jedes hochgeladene Image eine Email rausgeht und dabei bist, mehrere Images in das Album zu packen? Spätestens bei der 3. Benachrichtigung innerhalb eines Tages würde ich das abschalten und dann hättest Du als Admin bei dem User nichts erreicht. Funktion also dann nutzlos ;)
Ein Popup kann hingegen entweder je Image oder allgemein erstellt werden.
PopupBlocker oder Profileinstellung würden das verhindern, der User sähe aber mit geschicktem Aufbau des Albums immer noch, wo und welche Images neu sind.

Also überdenk das eher nochmal.
Jede Benachrichtigung per Email in dieser Richtung erzeugt nicht unerhebliche Last auf dem Server und erzeugt auch nicht unerheblich Traffic! Dazu kann sowas die User schnell verärgern...
Ich bin aus diesem Grunde davon abgegangen, alles per Email den Usern mitzuteilen. Wenn die nämlich nur für sie uninteressante Dinge erfahren, schalten die diese Benachrichtigungen (irgendwie) ab und können eher das Interesse am Forum verlieren.
Andersrum ist es wahrscheinlicher, daß User eher mal aufs Forum kommen, um Neuigkeiten zu erfahren, u.a. auch neue Images, wenn Sie das Board-Thema interessiert ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

es soll ja nicht JEDER eine mail bekommen, sondern nur diejenigen, die sich für diese Funktion angemeldet haben (auch wieder abmelden sollte natürlich auch möglich sein). Es sollte im Album Index irgendwo eine Möglichkeit geben, sich da anzumelden. Und idealerweise sollte man nur eine mail pro Tag bekommen, wo alle Links zu allen Fotos stehen. Ob sowas möglich ist, wage ich jedoch zu bezweifeln, deshalb hatte ich das gar nicht erwähnt...

Ich würde es für mich persönlich einrichten. Ich würde es so einrichten, dass alle diese mails automatisch in einen bestimmten Ordner kommen. Den kann ich dann aufmachen und ansehen - oder auch nicht. Die stören meinen normalen Posteingangsordner überhaupt nicht.

So ein Pop up wäre für mein Forum unsinnig, denn wie gesagt habe ich sowas ähnliches schon, wenn Du Dich einloggst auf www.kissforum.de (tester/tester) siehst Du rechts einen Link, wieviele neue Fotos es im Album gibt seit dem letzen Log in. Wenn Du draufklickst, kannst Du alle diese Fotos sehen. Ein zusätzliches Pop up wäre also unsinnig bzw. ohne zusätzlichen Nutzen.

Sollte das upload allerdings damit gebremst werden, ist das ein Grund dagegen. Das wusste ich nicht.

Aber eine Frage hätte ich gerne beantwortet: ist es denn möglich, dass das Foto im mail mitgeschickt wird (also nicht nur der Link)? Für mich wäre das absolut optimal, denn dann brauche ich mich nicht täglich einzuloggen und jedes neue Foto extra anzuklicken, um zu sehen, ob es auch in der richtigen Kategorie eingeordnet ist.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nochmal:
Wenn Du Emails verschickst, auch nur an eine kleinere Gruppe von Leuten, bremst das je nach SMTP-Server erstmal eine Weile aus, bis der Upload "fertig" ist. Der User wartet und es kann sogar zum Timeout führen.
Fügst Du dann auch gleich noch das Bild mit in der Email ein, kann es noch länger dauern, bis alle Benachrichtigungen verschickt sind.
Dazu auch noch mehr Traffic.

Das Popup ist ja auch nicht nötig und wäre eine Erweiterung, die Du einfach nicht installierst. Ist aber eine Alternative, wenn man "Deine Variante" der Anzeige neuer Bilder nicht hat. Also entgegen der Email.

Eine Email pro Tag wäre auch nicht das Thema. Könnte man, sofern möglich, sogar per Cronjob immer um 0:00 Uhr starten. Oder halt, wenn der erste User am Tag auf das Forum kommt...

Aber bedenke wirklich, wie lange es dauern kann, bis eine solche Benachrichtigung ohne oder gar mit dem Bild versendet wird. Teste es doch mal mit dem ACP-Modul für Massen Emails, dann weist Du, wie lange Dein Server dafür braucht...
Und gleich mit dem Bild hat der User sogar selbiges in der Hand. Muss also nicht erst auf das Album und damit auf das Forum kommen ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

Aber wenn die e-mails erst später verschickt werden, ist der upload doch schon längst getan, da kann er den dann ja nicht mehr bremsen... bzw. er bremst eben dann, wenn er die mails verschickt um 0 Uhr oder so... da könnte man eine Zeit wählen, wo wenig Leute im Forum sind, etwa 4 Uhr früh... aber dennoch hast Du wahrscheinlich recht, 100 mails mit Fotos zu verschicken würde wohl auch dann Probleme machen, dass da nichts mehr geht.

Aber zumindest für mich könnte ich das Feature doch installieren, oder? Das wäre eine einzige mail. Das sollte keine Probleme machen denke ich, die e-mail Adresse kann man auch vorgeben und muß nicht erst abgefragt werden...

Ich habe aber momentan ein anderes Problem: Wenn ich auf "upload pic" klicke, dauert das ewig, bis die Seite da ist:
http://www.kissforum.de/phpbb2/album_cat.php?cat_id=251
Ich dachte zuerst, der Server ist nur momentan langsam, aber das ist nun schon seit 3 Tagen so, und auch bei den anderen Usern. Liegt das tatsächlich am Server oder woran kann das liegen?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öhm, Dein Upload Script ist bereits ohne Images 31 KB gross. Da steckt dann auch noch ein Image hinter dem Beschreibung-Feld, sicher auch nicht klein...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

das war es früher auch, und da ging es flott. Bei Dir hier im Album kommt die Seite schnell. Am Hintergrundbild liegt es sicherlich nicht, das ist bei allen Feldern als Hintergrundbild festgelegt und ist winzig. Meine Newsseite hat 100 kb und ist in Sekundenschnelle da. Kann es vielleicht am Server liegen?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hm gute Frage...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

also mit dem Server hat es nichts zu tun...
und seltsamerweise kommt die Seite schnell, wenn man NICHT eingeloggt ist!???? Warum das nur?
Zuletzt geändert von Kiss News am Di 16.Aug, 2005 00:41, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Irgendwas scheint dann abgefragt zu werden, sobald der User registriert ist.
Ich weiß ja nicht was, Du müsstest ja noch wissen, was Du an Mods verbaut hast...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

nun, ich habe den category hierarchy und multifile upload.
Hatte ich aber immer schon, und früher ging's ja..
habe allerdings gesehen, dass überprüft wird, ob der User existiert in album_upload.php. Könnte das der Grund sein? Kann mir aber nicht vorstellen, dass es 3 Minuten dauert, um 3000 User zu überprüfen (Anfangs waren es aber auch schon etwa 1000)...

Code: Alles auswählen

<?php
/***************************************************************************
 *                             album_upload.php
 *                            -------------------
 *   begin                : Wednesday, February 05, 2003
 *   copyright            : (C) 2003 Smartor
 *   email                : smartor_xp@hotmail.com
 *
 *   $Id: album_upload.php,v 2.1.2 2003/03/13 19:46:00 ngoctu Exp $
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', true);
$phpbb_root_path = './';
$album_root_path = $phpbb_root_path . 'album_mod/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/functions_validate.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_ALBUM);
init_userprefs($userdata);
//
// End session management
//


//
// Get general album information
//
include($album_root_path . 'album_common.'.$phpEx);


/*
+----------------------------------------------------------
| Common Check
+----------------------------------------------------------
*/


// ------------------------------------
// Check the request
// for this Upload script, we prefer POST to GET
// ------------------------------------

//--- Album Category Hierarchy : begin
//--- version : 1.1.0
if( isset($HTTP_POST_VARS['user_id']) )
{
	$album_user_id = intval($HTTP_POST_VARS['user_id']);
}
else if( isset($HTTP_GET_VARS['user_id']) )
{
	$album_user_id = intval($HTTP_GET_VARS['user_id']);
}
else
{
	// it's a public category we are uploading too
	$album_user_id = ALBUM_PUBLIC_GALLERY;
}
//--- Album Category Hierarchy : end

if( isset($HTTP_POST_VARS['cat_id']) )
{
	$cat_id = intval($HTTP_POST_VARS['cat_id']);
}
else if( isset($HTTP_GET_VARS['cat_id']) )
{
	$cat_id = intval($HTTP_GET_VARS['cat_id']);
}
else
{
	message_die(GENERAL_ERROR, 'No categories specified');
}

//--- Album Category Hierarchy : begin
//--- version : 1.3.0
// check if it's a 'fake' category id, which look like this -<user_id> (a minus sign followed by the userid)
if( isset($HTTP_POST_VARS['pic_title']) ) // is it submitted?
{
	if (!album_validate_jumpbox_selection($cat_id))
	{
		message_die(GENERAL_ERROR, $lang['No_valid_category_selected']);
	}

 	if ($cat_id < 0)
 	{
 	 	$album_user_id = abs($cat_id); // convert the negative 'cat_id' into to a user id
 	 	if ($album_user_id > 0 && album_check_user_exists($album_user_id))
		{
        	// NOTE : if we want to create personal galleries the upload setting ($album_config['personal_gallery']) as set in the ACP
        	//        we should change the next line so it looks like this :
        	//
			//album_create_personal_gallery($album_upload_user_id, $album_config['personal_gallery_view'], $album_config['personal_gallery']);
			//
			// this will how ever make it possible for all users to upload to other persons personal galleries as default.
			//
			// so the best solution would be this which sets the upload permission to private which in this case means a moderator or the
			// owner of the gallery and of cause the admin :)
			album_create_personal_gallery($album_user_id, $album_config['personal_gallery_view'], ALBUM_PRIVATE);
			$cat_id = album_get_personal_root_id($album_user_id);
		}
	}
}
//--- Album Category Hierarchy : end

//--- Album Category Hierarchy : begin
//--- version : 1.1.0
// ------------------------------------
// Get the current Category Info
// ------------------------------------
$sql = "SELECT c.*, COUNT(p.pic_id) AS count, IF (cat_user_id > 0, 1, 0) AS personal
		FROM ". ALBUM_CAT_TABLE ." AS c
			LEFT JOIN ". ALBUM_TABLE ." AS p ON c.cat_id = p.pic_cat_id
		WHERE c.cat_id = '$cat_id'
		GROUP BY c.cat_id
		LIMIT 1";

if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query category information', '', __LINE__, __FILE__, $sql);
}

$thiscat = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
//--- Album Category Hierarchy : end

//--- Album Category Hierarchy : begin
//--- version : 1.1.0beta6
// check if its a personal gallery request and if the gallery exists (checking $thiscat)
if (empty($thiscat) && $album_user_id != ALBUM_PUBLIC_GALLERY)
{
	//check if user exsts
	$user_name = album_get_user_name($album_user_id);
	if ( !empty($user_name) )
	{
		$thiscat = init_personal_gallery_cat($album_user_id);
	}
	else
	{
		// generate mesage saying that the user specified doesn't exists
		message_die(GENERAL_ERROR, $lang['No_user_id_specified']);
	}
}
//--- Album Category Hierarchy : end
if (empty($thiscat))
{
	message_die(GENERAL_ERROR, $lang['Category_not_exist']);
}
// ------------------------------------
// now get the gategory information
// ------------------------------------
$cat_id = $thiscat['cat_id'];
$current_pics = $thiscat['count'];

// ------------------------------------
// Check the permissions
// ------------------------------------
//--- Album Category Hierarchy : begin
//--- version : 1.1.0beta6
$album_user_access = album_permissions($album_user_id,$cat_id,ALBUM_AUTH_VIEW_AND_UPLOAD, $thiscat);
//--- Album Category Hierarchy : end
if ($album_user_access['upload'] == 0)
{
	if (!$userdata['session_logged_in'])
	{
		redirect(append_sid(album_append_uid("login.$phpEx?redirect=album_upload.$phpEx?cat_id=$cat_id")));
	}
	else
	{
		message_die(GENERAL_ERROR, $lang['Not_Authorised']);
	}
}


/*
+----------------------------------------------------------
| Upload Quota Check
+----------------------------------------------------------
*/
//--- Album Category Hierarchy : begin
//--- version : 1.1.0
// if we are in a public category
if ($album_user_id == ALBUM_PUBLIC_GALLERY)
{
//--- Album Category Hierarchy : end
	// ------------------------------------
	// Check This Category Quota
	// ------------------------------------
	if ($album_config['max_pics'] >= 0)
	{
		// $current_pics was set at "Get the current Category Info"
		if( $current_pics >= $album_config['max_pics'] )
		{
			message_die(GENERAL_MESSAGE, $lang['Album_reached_quota']);
		}
	}

	// ------------------------------------
	// Check This User Limit Quota
	// ------------------------------------
	$check_user_limit = FALSE;

	if( ($userdata['user_level'] != ADMIN) and ($userdata['session_logged_in']) )
	{
		if ($album_user_access['moderator'])
		{
			if ($album_config['mod_pics_limit'] >= 0)
			{
				$check_user_limit = 'mod_pics_limit';
			}
		}
		else
		{
			if ($album_config['user_pics_limit'] >= 0)
			{
				$check_user_limit = 'user_pics_limit';
			}
		}
	}

	// Do the check here
	if ($check_user_limit != FALSE)
	{
		$sql = "SELECT COUNT(pic_id) AS count
				FROM ". ALBUM_TABLE ."
				WHERE pic_user_id = '". $userdata['user_id'] ."'
					AND pic_cat_id = '$cat_id'";

		if( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not count your pic', '', __LINE__, __FILE__, $sql);
		}
		$row = $db->sql_fetchrow($result);
		$db->sql_freeresult($result);

		if( $row['count'] >= $album_config[$check_user_limit] )
		{
			message_die(GENERAL_MESSAGE, $lang['User_reached_pics_quota']);
		}

		unset($row);
	}
}
//--- Album Category Hierarchy : begin
//--- version : 1.1.0
// it's a personal gallery category
else
{
	$sql = "SELECT COUNT(p.pic_id) AS count
			FROM ". ALBUM_TABLE ." AS p, ". ALBUM_CAT_TABLE ." AS c
			WHERE c.cat_user_id = '". $album_user_id ."'
				AND p.pic_cat_id = c.cat_id";

	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not count your pic', '', __LINE__, __FILE__, $sql);
	}
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	if( ($row['count'] >= $album_config['personal_gallery_limit']) and ($album_config['personal_gallery_limit'] >= 0) )
	{
		message_die(GENERAL_MESSAGE, $lang['Album_reached_quota']);
	}

	unset($row);
}
//--- Album Category Hierarchy : end
//--- Multiple File Upload mod : begin
//--- version : 1.0.2
function getmicrotime()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}
//--- Multiple File Upload mod : end
/*
+----------------------------------------------------------
| Main work here...
+----------------------------------------------------------
*/

if( !isset($HTTP_POST_VARS['pic_title']) ) // is it not submitted?
{
	// --------------------------------
	// Build categories select
	// --------------------------------
	//--- Album Category Hierarchy : begin
	//--- version : 1.3.0
	album_read_tree($userdata['user_id'], ALBUM_READ_ALL_CATEGORIES|ALBUM_AUTH_VIEW_AND_UPLOAD);
    if( $userdata['session_logged_in'] )
	{
    	// build fake list of personal galleries (these will get created when needed later automatically
		$userinfo = album_get_nonexisting_personal_gallery_info();

        for($idx=0; $idx < count($userinfo); $idx++)
        {
		 	// is user allowed to create this personal gallery ?
		 	// NOTE : that it isn't nesecary to create the $personal_gallery variable first,
		 	//        it will be generated inside the album_permissions function if needed
		 	//		  but here it's done to make the code easier to read
		 	$personal_gallery = init_personal_gallery_cat($userinfo[$idx]['user_id']);
			$album_user_access = album_permissions($userinfo[$idx]['user_id'], 0, ALBUM_AUTH_CREATE_PERSONAL, $personal_gallery);
			if (album_check_permission($album_user_access, ALBUM_AUTH_CREATE_PERSONAL) == TRUE)
			{
				$selected = (($userdata['user_id'] ==  $userinfo[$idx]['user_id'])) ? ' selected="selected"' : '';
			 	$personal_gallery_list .= '<option value="-'.$userinfo[$idx]['user_id'].'" ' . $selected . '>' . sprintf($lang['Personal_Gallery_Of_User'], $userinfo[$idx]['username']) . '</option>';
			}
		}

		if (!empty($personal_gallery_list))
			$personal_gallery_list = '<option value="'.ALBUM_JUMPBOX_SEPERATOR.'">------------------------------</option>' . $personal_gallery_list;
	}
	$select_cat = '<select name="cat_id">';
	$select_cat .= album_get_tree_option($cat_id, ALBUM_AUTH_VIEW_AND_UPLOAD);
	$select_cat .= $personal_gallery_list;
	$select_cat .= '</select>';
	unset($personal_gallery_list);
	album_free_album_data();
	//--- Album Category Hierarchy : end

	//
	// Start output of page
	//
	$page_title = $lang['Album'];
	include($phpbb_root_path . 'includes/page_header.'.$phpEx);

	$template->set_filenames(array(
		'body' => 'album_upload_body.tpl')
	);
//--- Multiple File Upload mod : begin
//--- version : 1.0.3
	// make sure that if we have disabled dynamic genration and pre-generated upload fields
	// we should then at least make sure we create at least on upload field.
	if ($album_config['dynamic_fields'] == 0 && $album_config['pregenerate_fields'] == 0)
	{
		$album_config['max_files_to_upload'] = 1;
	}
//--- Multiple File Upload mod : end

	$template->assign_vars(array(
		'U_VIEW_CAT' => append_sid(album_append_uid("album_cat.$phpEx?cat_id=$cat_id")),
		'CAT_TITLE' => $thiscat['cat_title'],

		'L_UPLOAD_PIC' => $lang['Upload_Pic'],

		'L_USERNAME' => $lang['Username'],
		'L_PIC_TITLE' => $lang['Pic_Title'],

		'L_PIC_DESC' => $lang['Pic_Desc'],
		'L_PLAIN_TEXT_ONLY' => $lang['Plain_text_only'],
		'L_MAX_LENGTH' => $lang['Max_length'],
		'S_PIC_DESC_MAX_LENGTH' => $album_config['desc_length'],

		'L_UPLOAD_PIC_FROM_MACHINE' => $lang['Upload_pic_from_machine'],
		'L_UPLOAD_TO_CATEGORY' => $lang['Upload_to_Category'],

		'SELECT_CAT' => $select_cat,
//--- Multiple File Upload mod : begin
//--- version : 1.0.0
		'S_MAX_FILE_UPLOADS' => max(1,$album_config['max_files_to_upload']),
//--- version : 1.0.1
		'L_ADD_FILE' => $lang['Add_File'],
//--- version : 1.0.3
		'S_MAX_PREGEN_FILE_UPLOADS' => max(1,min($album_config['max_pregenerated_fields'], $album_config['max_files_to_upload'])),
		'DYNAMIC_GENERATION_STATUS' => ($album_config['dynamic_fields'] == 1 && $album_config['max_pregenerated_fields'] != $album_config['max_files_to_upload']) ? 'visible' : 'hidden',
//--- Multiple File Upload mod : end

		'L_MAX_FILESIZE' => $lang['Max_file_size'],
		'S_MAX_FILESIZE' => $album_config['max_file_size'],

		'L_MAX_WIDTH' => $lang['Max_width'],
		'L_MAX_HEIGHT' => $lang['Max_height'],

		'S_MAX_WIDTH' => $album_config['max_width'],
		'S_MAX_HEIGHT' => $album_config['max_height'],

		'L_ALLOWED_JPG' => $lang['JPG_allowed'],
		'L_ALLOWED_PNG' => $lang['PNG_allowed'],
		'L_ALLOWED_GIF' => $lang['GIF_allowed'],

		'S_JPG' => ($album_config['jpg_allowed'] == 1) ? $lang['Yes'] : $lang['No'],
		'S_PNG' => ($album_config['png_allowed'] == 1) ? $lang['Yes'] : $lang['No'],
		'S_GIF' => ($album_config['gif_allowed'] == 1) ? $lang['Yes'] : $lang['No'],

		'L_UPLOAD_NO_TITLE' => $lang['Upload_no_title'],
		'L_UPLOAD_NO_FILE' => $lang['Upload_no_file'],
		'L_DESC_TOO_LONG' => $lang['Desc_too_long'],
		//--- Album Category Hierarchy : begin
		//--- version : 1.3.0
		'S_ALBUM_JUMPBOX_PUBLIC_GALLERY' => intval(ALBUM_JUMPBOX_PUBLIC_GALLERY),
		'S_ALBUM_JUMPBOX_USERS_GALLERY' => intval(ALBUM_JUMPBOX_USERS_GALLERY),
		'S_ALBUM_JUMPBOX_SEPERATOR' => intval(ALBUM_JUMPBOX_SEPERATOR),
		'S_ALBUM_ROOT_CATEGORY' => intval(ALBUM_ROOT_CATEGORY),
		'L_NO_VALID_CAT_SELECTED' => $lang['No_valid_category_selected'],
		//--- Album Category Hierarchy : end
		// Manual Thumbnail
		'L_UPLOAD_THUMBNAIL' => $lang['Upload_thumbnail'],
		'L_UPLOAD_THUMBNAIL_EXPLAIN' => $lang['Upload_thumbnail_explain'],
		'L_THUMBNAIL_SIZE' => $lang['Thumbnail_size'],
		'S_THUMBNAIL_SIZE' => $album_config['thumbnail_size'],

		'L_RESET' => $lang['Reset'],
		'L_SUBMIT' => $lang['Submit'],

		'S_ALBUM_ACTION' => append_sid(album_append_uid("album_upload.$phpEx?cat_id=$cat_id")),
		)
	);
//--- Multiple File Upload mod : begin
//--- version : 1.0.3
	if ($album_config['pregenerate_fields'] == 1)
	{
	 	$template->assign_block_vars('pre_generate', array());
	}
//--- Multiple File Upload mod : end

	if ($album_config['gd_version'] == 0)
	{
		$template->assign_block_vars('switch_manual_thumbnail', array());
	}

	//
	// Generate the page
	//
	$template->pparse('body');

	include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
else
{
	// --------------------------------
	// Check posted info
	// --------------------------------

	$pic_title = str_replace("\'", "''", htmlspecialchars(trim($HTTP_POST_VARS['pic_title'])));

	$pic_desc = str_replace("\'", "''", htmlspecialchars(substr(trim($HTTP_POST_VARS['pic_desc']), 0, $album_config['desc_length'])));

	$pic_username = (!$userdata['session_logged_in']) ? substr(str_replace("\'", "''", htmlspecialchars(trim($HTTP_POST_VARS['pic_username']))), 0, 32) : str_replace("'", "''", $userdata['username']);

	if( !isset($HTTP_POST_FILES['pic_file']) )
	{
		message_die(GENERAL_ERROR, 'Bad Upload');
	}

//--- Multiple File Upload mod : begin
//--- version : 1.0.3
	// save the user entered picture title
	$org_pic_title = $pic_title;

    // ----------------------------------------------------------------
	// count the numbers of _VALID_ uploaded picture
	// ----------------------------------------------------------------
 	$pic_count = 0;
 	$thumb_count = 0;
	$upload_files = $HTTP_POST_FILES['pic_file'];
	$thumbnail_upload_files = $HTTP_POST_FILES['pic_thumbnail'];
 	for($index = 0; $index < count($upload_files['name']);$index++)
 	{
 	 	if (was_file_uploaded($upload_files,$index) == true)
 	 		$pic_count++;

		// ----------------------------------------------------------------
		// for manual thumbnail upload, check we got the same number of
		// uploaded pictures as we got thumbnails uploaded, else error
		// ----------------------------------------------------------------
        if ($album_config['gd_version'] == 0)
		{
			if (was_file_uploaded($thumbnail_upload_files,$index) == true)
				$thumb_count++;

			if ( $pic_count != $thumb_count )
			{
				message_die(GENERAL_MESSAGE, $lang['File_thumbnail_count_mismatch']);
			}
		}
	}

	if ($pic_count == 0)
	{
		message_die(GENERAL_MESSAGE, $lang['No_pictures_selected_for_upload'] );
	}

	// check if we are uploading ONLY one picture, if so, then check for picture title
	if ( (count($HTTP_POST_FILES['pic_file']['name']) == 1 || $pic_count == 1) && empty($pic_title) )
	{
		message_die(GENERAL_ERROR, $lang['Missed_pic_title']);
	}
//--- Multiple File Upload mod : end

	//--- Album Category Hierarchy : begin
	//--- version : 1.1.0
	$album_user_id = album_is_personal_gallery($cat_id);
	//--- Album Category Hierarchy : end

	// --------------------------------
	// Check username for guest posting
	// --------------------------------

	if (!$userdata['session_logged_in'])
	{
		if ($pic_username != '')
		{
			$result = validate_username($pic_username);
			if ( $result['error'] )
			{
				message_die(GENERAL_MESSAGE, $result['error_msg']);
			}
		}
	}
//--- Multiple File Upload mod : begin
//--- version : 1.0.0
//
// structure of the $HTTP_POST_FILES ($_FILES) variable
// this information it left here for other mod authors to use
//
//	echo "<pre>\$HTTP_POST_FILES = ";
//	print_r($HTTP_POST_FILES);
//	echo "</pre><br />";
//
//	$HTTP_POST_FILES = Array
//	(
//	    [pic_file] => Array
//	        (
//	            [name] => Array
//	                (
//	                    [0] => pic1.jpg
//	                    [1] => pic.jpg
//						...
//	                )
//	            [type] => Array
//	                (
//	                    [0] => image/jpeg
//	                    [1] => image/jpeg
//						...
//	                )
//	            [tmp_name] => Array
//	                (
//	                    [0] => C:\WINDOWS\TEMP\php301.tmp
//	                    [1] => C:\WINDOWS\TEMP\php302.tmp
//						...
//	                )
//	            [error] => Array
//	                (
//	                    [0] => 0
//	                    [1] => 0
//						...
//	                )
//	            [size] => Array
//	                (
//	                    [0] => 5457
//	                    [1] => 46612
//						...
//	                )
//	        )
//	)

//--- version : 1.0.2
    // ----------------------------------------------------------------
	// this array will hold a list of non fatal error messages generated
	// by the Multiple File Upload mod
	// ----------------------------------------------------------------
	$upload_errors = array();

    // ----------------------------------------------------------------
    // get the max execution time, this is needed incase the uploaded
    // pictures take more processing time then we are allowed to.
    // ----------------------------------------------------------------
	@set_time_limit(360);
	$time_end = 0;
	$time_end = getmicrotime();
	$time_start = getmicrotime();
	$time = $time_end - $time_start;
	$ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';

	if ( @$ini_val(' max_execution_time') != '' )
	{
		$timeout = (@$ini_val(' max_execution_time')-$time );
	}
	else
	{
		$timeout = 29 - $time;
	}
//--- version : 1.0.2 : end
	for($index = 0; $index < count($upload_files['name']);$index++)
	{
//--- version : 1.0.2
		// ----------------------------------------------------------------
		// check the file exceeds the upload_max_filesize directive in php.ini
		// then skip to the next file
		// ----------------------------------------------------------------
		if (file_uploaded_exceeds_max_size($upload_files, $index))
		{
		 	$upload_errors[] = sprintf($lang['Picture_exceeded_maximum_size_INI'], $upload_files['name'][$index]);
			continue;
		}

		// ----------------------------------------------------------------
		// check if we got a file at all. if we haven't gotten a file then
		// try the next file in the array
		// ----------------------------------------------------------------
		if (was_file_uploaded($upload_files,$index) == false)
		{
			continue;
		}

        // we are doing manual thumbnail uploading, then do some checking
		if ($album_config['gd_version'] == 0)
		{
         	if (file_uploaded_exceeds_max_size($thumbnail_upload_files, $index))
         	{
         	 	$upload_errors[] = sprintf($lang['Thumbnail_exceeded_maximum_size_INI'], $thumbnail_upload_files['name'][$index]);
				continue;
			}
			// ----------------------------------------------------------------
			// check that both the picture and thumbnail got uploaded without
			// errors, and the order of the picture and thumbnail a 'almost' the
			// same. I'm not sure that this few lines of code will cover it 100%
			// ----------------------------------------------------------------

            // we are missing the upload file together with the picture, that a NO NO
        	if (was_file_uploaded($thumbnail_upload_files,$index) == false && was_file_uploaded($upload_files,$index) == true)
			{
				message_die(GENERAL_MESSAGE, sprintf($lang['No_thumbnail_for_picture_found'], $upload_files['name'][$index]));
			}
			elseif (was_file_uploaded($thumbnail_upload_files,$index) == true && was_file_uploaded($upload_files,$index) == false)
			{
			 	message_die(GENERAL_MESSAGE, sprintf($lang['No_picture_for_thumbnail_found'], $thumbnail_upload_files['name'][$index]));
			}
			else
			{
			 	if (@phpversion() >= '4.2.0')
			 	{
			 	 	if ($thumbnail_upload_files['error'][$index] != $upload_files['error'][$index])
				 		message_die(GENERAL_MESSAGE, sprintf($lang['Unknown_file_and_thumbnail_error_mismatch'], $upload_files['name'][$index], $thumbnail_upload_files['name'][$index]));
				}
			}
		}

	    // ----------------------------------------------------------------
	    // check the time left before timeout, for each iteration/loop
	    // NOTE : Original code is copyrighted by Luciano
	    // ----------------------------------------------------------------
		$time_end = 0;
		$time_end = getmicrotime();
		$time = $time_end - $time_start;
		$time_start = $time_end;
		$timeout = $timeout - $time;

		if ($timeout < 2)
		{
		 	$upload_error_msg = "";
            for($inner_index = $index; $inner_index < count($upload_files['name']); $inner_index++)
            {
             	if ($album_config['gd_version'] == 0)
             	{
             	 	if ( was_file_uploaded($upload_files,$inner_index) ||
             	 	     was_file_uploaded($thumbnail_upload_files,$inner_index) )
             	 		$upload_error_msg = sprintf($lang['Skipping_uploaded_picture_and_thumbnail_file'], $upload_files['name'][$inner_index], $thumbnail_upload_files['name'][$inner_index]);
				}
				else
				{
				 	if (was_file_uploaded($upload_files,$inner_index) == true)
						$upload_error_msg = sprintf($lang['Skipping_uploaded_picture_file'], $upload_files['name'][$inner_index]);
				}

				if (!empty($upload_error_msg))
				{
					if ($inner_index == $index)
	                	$upload_errors[] = $lang['Execution_time_exceeded_skipping'] . $upload_error_msg;
	                else
	                	$upload_errors[] = $upload_error_msg;

	                $upload_error_msg = "";
				}
			}

			break;
		}
//--- version : 1.0.2 : end



	// --------------------------------
	// Get File Upload Info
	// --------------------------------

//--- removed
//	$filetype = $HTTP_POST_FILES['pic_file']['type'];
//	$filesize = $HTTP_POST_FILES['pic_file']['size'];
//	$filetmp = $HTTP_POST_FILES['pic_file']['tmp_name'];
//
//	if ($album_config['gd_version'] == 0)
//	{
//		$thumbtype = $HTTP_POST_FILES['pic_thumbnail']['type'];
//		$thumbsize = $HTTP_POST_FILES['pic_thumbnail']['size'];
//		$thumbtmp = $HTTP_POST_FILES['pic_thumbnail']['tmp_name'];
//	}
//--- added

		$filetype = $upload_files['type'][$index];
		$filesize = $upload_files['size'][$index];
		$filetmp = $upload_files['tmp_name'][$index];

		if ($album_config['gd_version'] == 0)
		{
			$thumbtype = $thumbnail_upload_files['type'][$index];
			$thumbsize = $thumbnail_upload_files['sizee'][$index];
			$thumbtmp = $thumbnail_upload_files['tmp_name'][$index];
		}
//--- Multiple File Upload mod : end

	// --------------------------------
	// Prepare variables
	// --------------------------------

//--- Multiple File Upload mod : begin
//--- version : 1.0.0
//--- removed
//	$pic_time = time();
//--- added
// this should ensure that the images doesn't all have the same timestamp
	$pic_time = time()+1;
//--- Multiple File Upload mod : end

	$pic_user_id = $userdata['user_id'];
	$pic_user_ip = $userdata['session_ip'];


	// --------------------------------
	// Check file size
	// --------------------------------

   if( ($filesize == 0) or ($filesize > 1024000) )
   {
      message_die(GENERAL_MESSAGE, $lang['Bad_upload_file_size']);
   }
   $recompress = 0;
   if ($filesize > $album_config['max_file_size'])
   {
      $recompress = 1;
   }

	if ($album_config['gd_version'] == 0)
	{
		if( ($thumbsize == 0) or ($thumbsize > $album_config['max_file_size']) )
		{
			message_die(GENERAL_MESSAGE, sprintf($lang['Bad_upload_file_size'], $thumbnail_upload_files['name'][$index]));

		}
	}


	// --------------------------------
	// Check file type
	// --------------------------------

	switch ($filetype)
	{
		case 'image/jpeg':
		case 'image/jpg':
		case 'image/pjpeg':
			if ($album_config['jpg_allowed'] == 0)
			{
				message_die(GENERAL_ERROR, $lang['Not_allowed_file_type']);
			}
			$pic_filetype = '.jpg';
			break;

		case 'image/png':
		case 'image/x-png':
			if ($album_config['png_allowed'] == 0)
			{
				message_die(GENERAL_ERROR, $lang['Not_allowed_file_type']);
			}
			$pic_filetype = '.png';
			break;

		case 'image/gif':
			if ($album_config['gif_allowed'] == 0)
			{
				message_die(GENERAL_ERROR, $lang['Not_allowed_file_type']);
			}
			$pic_filetype = '.gif';
			break;
		default:
			message_die(GENERAL_ERROR, $lang['Not_allowed_file_type']);
	}

	if ($album_config['gd_version'] == 0)
	{
		if ($filetype != $thumbtype)
		{
			message_die(GENERAL_ERROR, $lang['Filetype_and_thumbtype_do_not_match']);
		}
	}

//--- Multiple File Upload mod : begin
//--- version : 1.0.3
	// if uploading more then 1 picture then get the picture title from the file name without extension
	if ($pic_count > 1)
	{
		$pic_title = generate_picture_title($upload_files['name'][$index], $org_pic_title, $pic_filetype);
	}
//--- Multiple File Upload mod : end

	// --------------------------------
	// Generate filename
	// --------------------------------

	srand((double)microtime()*1000000);	// for older than version 4.2.0 of PHP

	do
	{
		$pic_filename = md5(uniqid(rand())) . $pic_filetype;
	}
	while( file_exists(ALBUM_UPLOAD_PATH . $pic_filename) );

	if ($album_config['gd_version'] == 0)
	{
		$pic_thumbnail = $pic_filename;
	}


	// --------------------------------
	// Move this file to upload directory
	// --------------------------------

	$ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';

	if ( @$ini_val('open_basedir') != '' )
	{
		if ( @phpversion() < '4.0.3' )
		{
			message_die(GENERAL_ERROR, 'open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin', '', __LINE__, __FILE__);
		}

		$move_file = 'move_uploaded_file';
	}
	else
	{
		$move_file = 'copy';
	}

	$move_file($filetmp, ALBUM_UPLOAD_PATH . $pic_filename);

	@chmod(ALBUM_UPLOAD_PATH . $pic_filename, 0777);

	if ($album_config['gd_version'] == 0)
	{
		$move_file($thumbtmp, ALBUM_CACHE_PATH . $pic_thumbnail);

		@chmod(ALBUM_CACHE_PATH . $pic_thumbnail, 0777);
	}


	// --------------------------------
	// Well, it's an image. Check its image size
	// --------------------------------

	$pic_size = getimagesize(ALBUM_UPLOAD_PATH . $pic_filename);

	$pic_width = $pic_size[0];
	$pic_height = $pic_size[1];

  if ( (($pic_width > $album_config['max_width']) or ($pic_height > $album_config['max_height'])) OR ($recompress == 1) )
   {
      if ($album_config['gd_version'] == 0)
      {
         @unlink(ALBUM_UPLOAD_PATH . $pic_filename);
         @unlink(ALBUM_CACHE_PATH . $pic_thumbnail);
         message_die(GENERAL_ERROR, $lang['Upload_image_size_too_big']." Error code: 001");
      }
      $gd_errored = FALSE;


         switch ($pic_filetype)
         {
            case '.jpg':
               $read_function = 'imagecreatefromjpeg';
               break;
            case '.png':
               $read_function = 'imagecreatefrompng';
               break;
         }

         $src = @$read_function(ALBUM_UPLOAD_PATH  . $pic_filename);

         if (!$src)
         {
            $gd_errored = TRUE;
            $pic_thumbnail = '';
         }

         if (($pic_width > $album_config['max_width']) or ($pic_height > $album_config['max_height']))
         {
            if ($pic_width > $pic_height)
            {
               $new_width = $album_config['max_width'];
               $new_height = $album_config['max_width'] * ($pic_height/$pic_width);
            }
            else
            {
               $new_height = $album_config['max_height'];
               $new_width = $album_config['max_height'] * ($pic_width/$pic_height);
            }
         }
         else
         {
            $new_width = $pic_width;
            $new_height = $pic_height;

         }
         $new_pic = ($album_config['gd_version'] == 1) ? @imagecreate($new_width, $new_height) : @imagecreatetruecolor($new_width, $new_height);

         $resize_function = ($album_config['gd_version'] == 1) ? 'imagecopyresized' : 'imagecopyresampled';

         @$resize_function($new_pic, $src, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height);


      if (!$gd_errored)
      {
         // print $recompress ."<br>".$pic_filename; exit;
         // overwrite old image
         @unlink(ALBUM_UPLOAD_PATH . $pic_filename);

         switch ($pic_filetype)
         {
            case '.jpg':
               @imagejpeg($new_pic, ALBUM_UPLOAD_PATH . $pic_filename, 80);
               break;
            case '.png':
               @imagepng($new_pic, ALBUM_UPLOAD_PATH . $pic_filename);
               break;
         }

         @chmod(ALBUM_CACHE_PATH . $pic_thumbnail, 0777);
         $pic_width = $new_width;
         $pic_height = $new_height;
      } // End IF $gd_errored
      else
      {
         @unlink(ALBUM_UPLOAD_PATH . $pic_filename);

         if ($album_config['gd_version'] == 0)
         {
            @unlink(ALBUM_CACHE_PATH . $pic_thumbnail);
         }

         message_die(GENERAL_ERROR, $lang['Upload_image_size_too_big']." Error code: 002");
      }
   }



	if ($album_config['gd_version'] == 0)
	{
		$thumb_size = getimagesize(ALBUM_CACHE_PATH . $pic_thumbnail);

		$thumb_width = $thumb_size[0];
		$thumb_height = $thumb_size[1];

		if ( ($thumb_width > $album_config['thumbnail_size']) or ($thumb_height > $album_config['thumbnail_size']) )
		{
			@unlink(ALBUM_UPLOAD_PATH . $pic_filename);

			@unlink(ALBUM_CACHE_PATH . $pic_thumbnail);

			message_die(GENERAL_ERROR, $lang['Upload_thumbnail_size_too_big']);
		}
	}


	// --------------------------------
	// This image is okay, we can cache its thumbnail now
	// --------------------------------

	if( ($album_config['thumbnail_cache'] == 1) and ($pic_filetype != '.gif') and ($album_config['gd_version'] > 0) )
	{
		$gd_errored = FALSE;

		switch ($pic_filetype)
		{
			case '.jpg':
				$read_function = 'imagecreatefromjpeg';
				break;
			case '.png':
				$read_function = 'imagecreatefrompng';
				break;
		}

		$src = @$read_function(ALBUM_UPLOAD_PATH  . $pic_filename);

		if (!$src)
		{
			$gd_errored = TRUE;
			$pic_thumbnail = '';
		}
		else if( ($pic_width > $album_config['thumbnail_size']) or ($pic_height > $album_config['thumbnail_size']) )
		{
			// Resize it
			if ($pic_width > $pic_height)
			{
				$thumbnail_width = $album_config['thumbnail_size'];
				$thumbnail_height = $album_config['thumbnail_size'] * ($pic_height/$pic_width);
			}
			else
			{
				$thumbnail_height = $album_config['thumbnail_size'];
				$thumbnail_width = $album_config['thumbnail_size'] * ($pic_width/$pic_height);
			}

			$thumbnail = ($album_config['gd_version'] == 1) ? @imagecreate($thumbnail_width, $thumbnail_height) : @imagecreatetruecolor($thumbnail_width, $thumbnail_height);

			$resize_function = ($album_config['gd_version'] == 1) ? 'imagecopyresized' : 'imagecopyresampled';

			@$resize_function($thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height);
		}
		else
		{
			$thumbnail = $src;
		}

		if (!$gd_errored)
		{
			$pic_thumbnail = $pic_filename;

			// Write to disk
			switch ($pic_filetype)
			{
				case '.jpg':
					@imagejpeg($thumbnail, ALBUM_CACHE_PATH . $pic_thumbnail, $album_config['thumbnail_quality']);
					break;
				case '.png':
					@imagepng($thumbnail, ALBUM_CACHE_PATH . $pic_thumbnail);
					break;
			}

			@chmod(ALBUM_CACHE_PATH . $pic_thumbnail, 0777);

		} // End IF $gd_errored

	} // End Thumbnail Cache
	else if ($album_config['gd_version'] > 0)
	{
		$pic_thumbnail = '';
	}

	// --------------------------------
	// Check Pic Approval
	// --------------------------------

	$pic_approval = ($thiscat['cat_approval'] == 0) ? 1 : 0;


	// --------------------------------
	// Insert into DB
	// --------------------------------

	$sql = "INSERT INTO ". ALBUM_TABLE ." (pic_filename, pic_thumbnail, pic_title, pic_desc, pic_user_id, pic_user_ip, pic_username, pic_time, pic_cat_id, pic_approval)
			VALUES ('$pic_filename', '$pic_thumbnail', '$pic_title', '$pic_desc', '$pic_user_id', '$pic_user_ip', '$pic_username', '$pic_time', '$cat_id', '$pic_approval')";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not insert new entry', '', __LINE__, __FILE__, $sql);
		//--- Multiple File Upload mod : begin
//--- version : 1.0.0
	}
//--- Multiple File Upload mod : end
	}


	// --------------------------------
	// Complete... now send a message to user
	// --------------------------------

	//--- Multiple File Upload mod : begin
//--- version : 1.0.2
	if (count($upload_errors) > 0)
	{
		if ($pic_count == count($upload_errors))
			$message = $lang['Album_upload_not_successful'];
		else
			$message = $lang['Album_upload_partially_successful'];

	 	for ($index = 0; $index < count($upload_errors); $index++)
        	$message .= $upload_errors[$index];
	}
	elseif ($thiscat['cat_approval'] == 0)
//--- Multiple File Upload mod : end

	{
		$message = $lang['Album_upload_successful'];
	}
	else
	{
		$message = $lang['Album_upload_need_approval'];
	}

	//--- Multiple File Upload mod : begin
//--- version : 1.0.2
	if ($thiscat['cat_approval'] == 0 && count($upload_errors) == 0)
//--- Multiple File Upload mod : end
	{
	 	if (album_is_debug_enabled() == false)
	 	{
		    $template->assign_vars(array(
		        'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid(album_append_uid("album_cat.$phpEx?cat_id=$cat_id")) . '">'
                )
            );
		}
	}
	if ($album_user_id == ALBUM_PUBLIC_GALLERY)
	{
		$message .= "<br /><br />" . sprintf($lang['Click_return_category'], "<a href=\"" . append_sid(album_append_uid("album_cat.$phpEx?cat_id=$cat_id")) . "\">", "</a>");
	}
	else
	{
		$message .= "<br /><br />" . sprintf($lang['Click_return_personal_gallery'], "<a href=\"" . append_sid(album_append_uid("album_cat.$phpEx?cat_id=$cat_id")) . "\">", "</a>");
	}


	$message .= "<br /><br />" . sprintf($lang['Click_return_album_index'], "<a href=\"" . append_sid(album_append_uid("album.$phpEx")) . "\">", "</a>");

	message_die(GENERAL_MESSAGE, $message);
}


// +------------------------------------------------------+
// |  Powered by Photo Album 2.x.x (c) 2002-2003 Smartor  |
// +------------------------------------------------------+

?>
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Naja, das Script zählt mehrfach Bilder, um eben diverse Zustände oder Berechtigungen festzustellen.
Bei 3000 Usern und sicher nicht wenigen Bildern kann das dann auch schon eine Weile dauern. Und bei einem mittelmässigen Server umso mehr.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

meinst Du daran liegt es?
bei 1000 Fotos und 1000 Usern dauerte es 5 Sekunden, bis die Seite kam.
Bei 5000 Fotos und 3000 Usern dauert es ca. 5 Minuten !! Wenn es statt 5 Sekunden etwa 15 Sekunden dauern würde, könnte ich es ja verstehen, aber mehrere Minuten!??
Vor allem denke ich, dass das alles ja erst BEIM UPLOAD des Fotos gemacht wird (und der geht ja schnell), und nicht beim Aufmachen der Seite. Warum sollte das alles schon beim Aufmachen der Seite überprüft werden?
Zuletzt geändert von Kiss News am Di 16.Aug, 2005 17:10, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Also bei mir dauerte das zuletzt (auf Deiner Seite) nur 20 Sekunden...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Kiss News
Beiträge: 389
Registriert: So 25.Jul, 2004 18:22

Beitrag von Kiss News »

eingeloggt oder nicht eingeloggt?
wie gesagt, nicht eingeloggt geht es schnell, eingeloggt dauert es ewig... mehrere Minuten.
Und das finde ich seltsam... werden die Sachen nur dann überprüft, wenn man eingeloggt ist?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wenn die userbezogen sind, ja.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten