Seite 1 von 2

Problem beim Update von 2.0.16 -> 2.0.17

Verfasst: 04.09.2005 15:36
von Dominik Müller
Hallo zusammen,

bin gerade dabei mein Board auf den neuesten Stand zu bringen und bekomme schon bei der ersten Code-Änderung Probleme (führe also die Code-Changes durch).

In der Anleitung steht:

Code: Alles auswählen

##
##----------[ FIND ]-------------------------------------
##

		if ( $delete_all )
		{
			switch($folder)
			{
				case 'inbox':
					$delete_type = "privmsgs_to_userid = " . $userdata['user_id'] . " AND (
					privmsgs_type = " . PRIVMSGS_READ_MAIL . " OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
					break;

				case 'outbox':
					$delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
					break;

				case 'sentbox':
					$delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SENT_MAIL;
					break;

				case 'savebox':
					$delete_type = "( ( privmsgs_from_userid = " . $userdata['user_id'] . " 
						AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " ) 
					OR ( privmsgs_to_userid = " . $userdata['user_id'] . " 
						AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " ) )";
					break;
			}

			$sql = "SELECT privmsgs_id
				FROM " . PRIVMSGS_TABLE . "
				WHERE $delete_type";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not obtain id list to delete all messages', '', __LINE__, __FILE__, $sql);
			}

			while ( $row = $db->sql_fetchrow($result) )
			{
				$mark_list[] = $row['privmsgs_id'];
			}

			unset($delete_type);
		}

		if ( count($mark_list) )

##
##----------[ REPLACE WITH ]-----------------------------
##

		$delete_sql_id = '';

		if (!$delete_all)
		{
			for ($i = 0; $i < count($mark_list); $i++)
			{
				$delete_sql_id .= (($delete_sql_id != '') ? ', ' : '') . intval($mark_list[$i]);
			}
			$delete_sql_id = "AND privmsgs_id IN ($delete_sql_id)";
		}

		switch($folder)
		{
			case 'inbox':
				$delete_type = "privmsgs_to_userid = " . $userdata['user_id'] . " AND (
				privmsgs_type = " . PRIVMSGS_READ_MAIL . " OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
				break;

			case 'outbox':
				$delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
				break;

			case 'sentbox':
				$delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SENT_MAIL;
				break;

			case 'savebox':
				$delete_type = "( ( privmsgs_from_userid = " . $userdata['user_id'] . " 
					AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " ) 
				OR ( privmsgs_to_userid = " . $userdata['user_id'] . " 
					AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " ) )";
				break;
		}

		$sql = "SELECT privmsgs_id
			FROM " . PRIVMSGS_TABLE . "
			WHERE $delete_type $delete_sql_id";

		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain id list to delete messages', '', __LINE__, __FILE__, $sql);
		}

		$mark_list = array();
		while ( $row = $db->sql_fetchrow($result) )
		{
			$mark_list[] = $row['privmsgs_id'];
		}

		unset($delete_type);

		if ( count($mark_list) )
Allerdings finde ich diese Passage nicht...
Wo soll ich diese Änderung also durchführen?

Hier meine Datei:
http://www.forum.schildkroeten-farm.de/primsg.txt

Grüße
Dominik

Verfasst: 04.09.2005 15:47
von mr.no-name
Bei dir sind dort Sachen vom Attachment Mod dazwischen...

Suche in der Datei nach "$delete_all" dann ist die dritte (und auch letzte) Stelle die richtige.
Ersetze die Sachen dann Stückweise, sodass du geänderte Sachen beibehalten kannst.

Verfasst: 04.09.2005 15:53
von Dominik Müller
mr.no-name hat geschrieben:Ersetze die Sachen dann Stückweise, sodass du geänderte Sachen beibehalten kannst.
Wie meinst du das jetzt genau? Bin in Sachen php sehr unerfahren... :-?

Verfasst: 04.09.2005 15:58
von mr.no-name
In dem Stück Code, den du laut Anleitung suchen und ersetzen sollst, befinden sich bei dir Dinge, die anders sind.
So ist relativ weit unten die Stelle
"$attachment_mod['pm']->delete_all_pm_attachments($mark_list);"
drin, die anscheinend zum Attachment Mod gehört.
Das heißt, du müsstest dieses dann an entsprechender Stelle wieder einbauen.

Verfasst: 04.09.2005 16:08
von mr.no-name
Ich habe mir das mal angesehen:

Wenn du die Zeile

Code: Alles auswählen

$attachment_mod['pm']->delete_all_pm_attachments($mark_list);
Vorher aus der Datei entfernst, erhälst du genau den Code, den du suchen sollst.
Diesen dann also wie in der Anleitung beschrieben ersetzen...
Danach dann die oben entfernte Zeile wieder über

Code: Alles auswählen

if ( count($mark_list) )
einfügen.

Verfasst: 04.09.2005 16:40
von Dominik Müller
Ok, das hab ich...
Da gibt es aber noch ein Problem:

Code: Alles auswählen

##
##----------[ FIND ]-------------------------------------
##

	//
	// Front end
	//
	$sql = "SELECT * 
		FROM " . FORUMS_TABLE . " f
		ORDER BY forum_order";

##
##----------[ REPLACE WITH ]-----------------------------
##

	//
	// Front end
	//
	$sql = "SELECT f.* 
		FROM " . FORUMS_TABLE . " f, " . CATEGORIES_TABLE . " c
		WHERE f.cat_id = c.cat_id
		ORDER BY c.cat_order, f.forum_order ASC";
Das finde ich bei mir auch nicht...

Grüße
Dominik

Verfasst: 05.09.2005 16:31
von Dominik Müller
Kann mir da auch jemand helfen?

Verfasst: 13.09.2005 22:12
von Dominik Müller
*schieb*

Verfasst: 17.09.2005 13:04
von Dominik Müller
*schieb*

Verfasst: 25.09.2005 09:24
von Dominik Müller
*nochmal schieb* :cry: