Avatar Gallery Hack

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Mentalana
Mitglied
Beiträge: 23
Registriert: 19.09.2003 19:17

Beitrag von Mentalana »

hmmm, ich hab das jetzt mal zusammen gefasst, weil es mich grad beim Umzug schon wieder total genervt hat, daß man immer die Fehler mitmachen muß :o

Code: Alles auswählen


## Installation Level: easy
## Installation Time: 5
## Files To Edit:
##
##   includes\usercp_avatar.php,
##   templates/xxx/profile_avater_gallery.tpl
##
#################################################################
##
##   upload a used.gif of your choice to: images/avatars/gallery 
##
#################################################################
##
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
#################################################################
#
#-----[ OPEN ]------------------------------------------
#
#includes\usercp_avatar.php
#
#-----[ FIND ]------------------------------------------
#

 $dir = @opendir($board_config['avatar_gallery_path']);

#
#-----[ BEFORE, ADD ]------------------------------------------
#

$my_counter = 0;
$my_checker = 0;
$sql = "SELECT user_avatar
   FROM " . USERS_TABLE . "
   WHERE user_avatar_type=3";

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

while( $row = $db->sql_fetchrow($result) )
{
   $my_counter++;
   $my_used_list[$my_counter] = $row['user_avatar'];      
}

$db->sql_freeresult($result);

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

while( $sub_file = @readdir($sub_dir) )
{
   if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_file) )
   {
      $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . '/' . $sub_file;
      $avatar_name[$file][$avatar_row_count][$avatar_col_count] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_file)));

      $avatar_col_count++;
      if( $avatar_col_count == 5 )
      {
         $avatar_row_count++;
         $avatar_col_count = 0;
      }
   }
}


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

while( $sub_file = @readdir($sub_dir) )
{
   if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_file) )
   {
      if ( in_array($file . '/' . $sub_file, $my_used_list) )
      {
         $avatar_images[$file][$avatar_row_count][$avatar_col_count] = 'used.gif';
         $avatar_name[$file][$avatar_row_count][$avatar_col_count] = 'Bereits verwedet';
         $avatar_used[$file][$avatar_row_count][$avatar_col_count] = true;
      }
      else
      {
         $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . '/' . $sub_file;
         $avatar_name[$file][$avatar_row_count][$avatar_col_count] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_file)));
         $avatar_used[$file][$avatar_row_count][$avatar_col_count] = false;
      }

      $avatar_col_count++;
      if( $avatar_col_count == 5 )
      {
         $avatar_row_count++;
         $avatar_col_count = 0;
      }
   }
}

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

          $template->assign_block_vars('avatar_row.avatar_option_column', array(
            "S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
         );
 
#
#-----[ REPLACE WITH ]------------------------------------------
#

         $template->assign_block_vars('avatar_row.avatar_option_column', array());
         if ( $avatar_used[$category][$i][$j] )
         {
            $template->assign_block_vars('avatar_row.avatar_option_column.used', array());
         }
         else
         {
            $template->assign_block_vars('avatar_row.avatar_option_column.not_used', array(
               "S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
            );
         }


#-----[ OPEN ]------------------------------------------
#
# templates/xxx/profile_avater_gallery.tpl
#
#-----[ FIND ]------------------------------------------
#

	<!-- BEGIN avatar_option_column -->
		<td class="row2" align="center"><input type="radio" name="avatarselect" value="{avatar_row.avatar_option_column.S_OPTIONS_AVATAR}" /></td>
	<!-- END avatar_option_column -->

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

   <!-- BEGIN avatar_option_column -->
      <!-- BEGIN not_used -->
      <td class="row2" align="center"><input type="radio" name="avatarselect" value="{avatar_row.avatar_option_column.not_used.S_OPTIONS_AVATAR}" /></td>
      <!-- END not_used -->
      <!-- BEGIN used -->
      <td class="row2" align="center">&nbsp;</td>
      <!-- END used -->
   <!-- END avatar_option_column --> 

#
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
Vielleicht kann noch mal jemand drüber gucken, aber so müßte das eigentlich zusammengefasst ok sein...

Liebe Grüße
Menta
Benutzeravatar
Der Wolf
Mitglied
Beiträge: 85
Registriert: 10.12.2003 23:26
Wohnort: Wolfenbüttel

Beitrag von Der Wolf »

Hi Mentalana,
hab deinen neuen Code (den du oben gepostet hast) mal eingebaut und es funktioniert einwandfrei :D
Mein Forum: Das Judo Forum
Mentalana
Mitglied
Beiträge: 23
Registriert: 19.09.2003 19:17

Beitrag von Mentalana »

Ja, na dann herzlichen :)

Werd mich beim nächsten Mal sicher freuen, wenn ich nicht alle Fehler wieder einbauen muß *freu*

LG
Menta
wicked187
Mitglied
Beiträge: 5
Registriert: 18.04.2006 22:24

Beitrag von wicked187 »

servus leut,

bei geht da garnix, :cry:

kann mal einer drüber schauen?

folgenden fehler bekomm ich in der gallery angezeigt

Parse error: parse error, unexpected $ in /srv/www/htdocs/users/user02/darksite/board/includes/usercp_avatar.php on line 439


hier die
usercp_avatar.php:

Code: Alles auswählen

<?php
/***************************************************************************
 *                             usercp_avatar.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: usercp_avatar.php,v 1.8.2.22 2005/10/30 15:17:14 acydburn 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.
 *
 *
 ***************************************************************************/

function check_image_type(&$type, &$error, &$error_msg)
{
	global $lang;

	switch( $type )
	{
		case 'jpeg':
		case 'pjpeg':
		case 'jpg':
			return '.jpg';
			break;
		case 'gif':
			return '.gif';
			break;
		case 'png':
			return '.png';
			break;
		default:
			$error = true;
			$error_msg = (!empty($error_msg)) ? $error_msg . '<br />' . $lang['Avatar_filetype'] : $lang['Avatar_filetype'];
			break;
	}

	return false;
}

function user_avatar_delete($avatar_type, $avatar_file)
{
	global $board_config, $userdata;

	$avatar_file = basename($avatar_file);
	if ( $avatar_type == USER_AVATAR_UPLOAD && $avatar_file != '' )
	{
		if ( @file_exists(@phpbb_realpath('./' . $board_config['avatar_path'] . '/' . $avatar_file)) )
		{
			@unlink('./' . $board_config['avatar_path'] . '/' . $avatar_file);
		}
	}

	return ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE;
}

function user_avatar_gallery($mode, &$error, &$error_msg, $avatar_filename, $avatar_category)
{
	global $board_config;

	$avatar_filename = phpbb_ltrim(basename($avatar_filename), "'");
	$avatar_category = phpbb_ltrim(basename($avatar_category), "'");

	if(!preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $avatar_filename))
	{
		return '';
	}

	if ($avatar_filename == "" || $avatar_category == "")
	{
		return '';
	}

	if ( file_exists(@phpbb_realpath($board_config['avatar_gallery_path'] . '/' . $avatar_category . '/' . $avatar_filename)) && ($mode == 'editprofile') )
	{
		$return = ", user_avatar = '" . str_replace("\'", "''", $avatar_category . '/' . $avatar_filename) . "', user_avatar_type = " . USER_AVATAR_GALLERY;
	}
	else
	{
		$return = '';
	}
	return $return;
}

function user_avatar_url($mode, &$error, &$error_msg, $avatar_filename)
{
	global $lang;

	if ( !preg_match('#^(http)|(ftp):\/\/#i', $avatar_filename) )
	{
		$avatar_filename = 'http://' . $avatar_filename;
	}

	if ( !preg_match("#^((ht|f)tp://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png))$)#is", $avatar_filename) )
	{
		$error = true;
		$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Wrong_remote_avatar_format'] : $lang['Wrong_remote_avatar_format'];
		return;
	}

	return ( $mode == 'editprofile' ) ? ", user_avatar = '" . str_replace("\'", "''", $avatar_filename) . "', user_avatar_type = " . USER_AVATAR_REMOTE : '';

}

function user_avatar_upload($mode, $avatar_mode, &$current_avatar, &$current_type, &$error, &$error_msg, $avatar_filename, $avatar_realname, $avatar_filesize, $avatar_filetype)
{
	global $board_config, $db, $lang;

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

	$width = $height = 0;
	$type = '';

	if ( $avatar_mode == 'remote' && preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $avatar_filename, $url_ary) )
	{
		if ( empty($url_ary[4]) )
		{
			$error = true;
			$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['Incomplete_URL'] : $lang['Incomplete_URL'];
			return;
		}

		$base_get = '/' . $url_ary[4];
		$port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;

		if ( !($fsock = @fsockopen($url_ary[2], $port, $errno, $errstr)) )
		{
			$error = true;
			$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['No_connection_URL'] : $lang['No_connection_URL'];
			return;
		}

		@fputs($fsock, "GET $base_get HTTP/1.1\r\n");
		@fputs($fsock, "HOST: " . $url_ary[2] . "\r\n");
		@fputs($fsock, "Connection: close\r\n\r\n");

		unset($avatar_data);
		while( !@feof($fsock) )
		{
			$avatar_data .= @fread($fsock, $board_config['avatar_filesize']);
		}
		@fclose($fsock);

		if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $avatar_data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $avatar_data, $file_data2))
		{
			$error = true;
			$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $lang['File_no_data'] : $lang['File_no_data'];
			return;
		}

		$avatar_filesize = $file_data1[1];
		$avatar_filetype = $file_data2[1];

		if ( !$error && $avatar_filesize > 0 && $avatar_filesize < $board_config['avatar_filesize'] )
		{
			$avatar_data = substr($avatar_data, strlen($avatar_data) - $avatar_filesize, $avatar_filesize);

			$tmp_path = ( !@$ini_val('safe_mode') ) ? '/tmp' : './' . $board_config['avatar_path'] . '/tmp';
			$tmp_filename = tempnam($tmp_path, uniqid(rand()) . '-');

			$fptr = @fopen($tmp_filename, 'wb');
			$bytes_written = @fwrite($fptr, $avatar_data, $avatar_filesize);
			@fclose($fptr);

			if ( $bytes_written != $avatar_filesize )
			{
				@unlink($tmp_filename);
				message_die(GENERAL_ERROR, 'Could not write avatar file to local storage. Please contact the board administrator with this message', '', __LINE__, __FILE__);
			}

			list($width, $height, $type) = @getimagesize($tmp_filename);
		}
		else
		{
			$l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));

			$error = true;
			$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $l_avatar_size : $l_avatar_size;
		}
	}
	else if ( ( file_exists(@phpbb_realpath($avatar_filename)) ) && preg_match('/\.(jpg|jpeg|gif|png)$/i', $avatar_realname) )
	{
		if ( $avatar_filesize <= $board_config['avatar_filesize'] && $avatar_filesize > 0 )
		{
			preg_match('#image\/[x\-]*([a-z]+)#', $avatar_filetype, $avatar_filetype);
			$avatar_filetype = $avatar_filetype[1];
		}
		else
		{
			$l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));

			$error = true;
			$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $l_avatar_size : $l_avatar_size;
			return;
		}

		list($width, $height, $type) = @getimagesize($avatar_filename);
	}

	if ( !($imgtype = check_image_type($avatar_filetype, $error, $error_msg)) )
	{
		return;
	}

	switch ($type)
	{
		// GIF
		case 1:
			if ($imgtype != '.gif')
			{
				@unlink($tmp_filename);
				message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
			}
		break;

		// JPG, JPC, JP2, JPX, JB2
		case 2:
		case 9:
		case 10:
		case 11:
		case 12:
			if ($imgtype != '.jpg' && $imgtype != '.jpeg')
			{
				@unlink($tmp_filename);
				message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
			}
		break;

		// PNG
		case 3:
			if ($imgtype != '.png')
			{
				@unlink($tmp_filename);
				message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
			}
		break;

		default:
			@unlink($tmp_filename);
			message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
	}

	if ( $width > 0 && $height > 0 && $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] )
	{
		$new_filename = uniqid(rand()) . $imgtype;

		if ( $mode == 'editprofile' && $current_type == USER_AVATAR_UPLOAD && $current_avatar != '' )
		{
			user_avatar_delete($current_type, $current_avatar);
		}

		if( $avatar_mode == 'remote' )
		{
			@copy($tmp_filename, './' . $board_config['avatar_path'] . "/$new_filename");
			@unlink($tmp_filename);
		}
		else
		{
			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', '', __LINE__, __FILE__);
				}

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

			if (!is_uploaded_file($avatar_filename))
			{
				message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
			}
			$move_file($avatar_filename, './' . $board_config['avatar_path'] . "/$new_filename");
		}

		@chmod('./' . $board_config['avatar_path'] . "/$new_filename", 0777);

		$avatar_sql = ( $mode == 'editprofile' ) ? ", user_avatar = '$new_filename', user_avatar_type = " . USER_AVATAR_UPLOAD : "'$new_filename', " . USER_AVATAR_UPLOAD;
	}
	else
	{
		$l_avatar_size = sprintf($lang['Avatar_imagesize'], $board_config['avatar_max_width'], $board_config['avatar_max_height']);

		$error = true;
		$error_msg = ( !empty($error_msg) ) ? $error_msg . '<br />' . $l_avatar_size : $l_avatar_size;
	}

	return $avatar_sql;
}

function display_avatar_gallery($mode, &$category, &$user_id, &$email, &$current_email, &$coppa, &$username, &$email, &$new_password, &$cur_password, &$password_confirm, &$icq, &$aim, &$msn, &$yim, &$website, &$location, &$occupation, &$interests, &$signature, &$viewemail, &$notifypm, &$popup_pm, &$notifyreply, &$attachsig, &$allowhtml, &$allowbbcode, &$allowsmilies, &$hideonline, &$style, &$language, &$timezone, &$dateformat, &$session_id)
{
	global $board_config, $db, $template, $lang, $images, $theme;
	global $phpbb_root_path, $phpEx;

    $my_counter = 0;
$my_checker = 0;
$sql = "SELECT user_avatar
   FROM " . USERS_TABLE . "
   WHERE user_avatar_type=3";

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

while( $row = $db->sql_fetchrow($result) )
{
   $my_counter++;
   $my_used_list[$my_counter] = $row['user_avatar'];
}

$db->sql_freeresult($result);

    $dir = @opendir($board_config['avatar_gallery_path']);

	$avatar_images = array();
	while( $file = @readdir($dir) )
	{
		if( $file != '.' && $file != '..' && !is_file($board_config['avatar_gallery_path'] . '/' . $file) && !is_link($board_config['avatar_gallery_path'] . '/' . $file) )
		{
			$sub_dir = @opendir($board_config['avatar_gallery_path'] . '/' . $file);

			$avatar_row_count = 0;
			$avatar_col_count = 0;
           while( $sub_file = @readdir($sub_dir) )
{
   if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_file) )
   {
      if ( in_array($file . '/' . $sub_file, $my_used_list) )
      {
         $avatar_images[$file][$avatar_row_count][$avatar_col_count] = 'used.gif';
         $avatar_name[$file][$avatar_row_count][$avatar_col_count] = 'Bereits verwedet';
         $avatar_used[$file][$avatar_row_count][$avatar_col_count] = true;
      }
      else
      {
         $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . '/' . $sub_file;
         $avatar_name[$file][$avatar_row_count][$avatar_col_count] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_file)));
         $avatar_used[$file][$avatar_row_count][$avatar_col_count] = false;
      }

      $avatar_col_count++;
      if( $avatar_col_count == 5 )
      {
         $avatar_row_count++;
         $avatar_col_count = 0;
      }
   }
}

	@closedir($dir);

	@ksort($avatar_images);
	@reset($avatar_images);

	if( empty($category) )
	{
		list($category, ) = each($avatar_images);
	}
	@reset($avatar_images);

	$s_categories = '<select name="avatarcategory">';
	while( list($key) = each($avatar_images) )
	{
		$selected = ( $key == $category ) ? ' selected="selected"' : '';
		if( count($avatar_images[$key]) )
		{
			$s_categories .= '<option value="' . $key . '"' . $selected . '>' . ucfirst($key) . '</option>';
		}
	}
	$s_categories .= '</select>';

	$s_colspan = 0;
	for($i = 0; $i < count($avatar_images[$category]); $i++)
	{
		$template->assign_block_vars("avatar_row", array());

		$s_colspan = max($s_colspan, count($avatar_images[$category][$i]));

		for($j = 0; $j < count($avatar_images[$category][$i]); $j++)
		{
			$template->assign_block_vars('avatar_row.avatar_column', array(
				"AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_images[$category][$i][$j],
				"AVATAR_NAME" => $avatar_name[$category][$i][$j])
			);

                $template->assign_block_vars('avatar_row.avatar_option_column', array());
         if ( $avatar_used[$category][$i][$j] )
         {
            $template->assign_block_vars('avatar_row.avatar_option_column.used', array());
         }
         else
         {
            $template->assign_block_vars('avatar_row.avatar_option_column.not_used', array(
               "S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
            );
         }
		}
	}

	$params = array('coppa', 'user_id', 'username', 'email', 'current_email', 'cur_password', 'new_password', 'password_confirm', 'icq', 'aim', 'msn', 'yim', 'website', 'location', 'occupation', 'interests', 'signature', 'viewemail', 'notifypm', 'popup_pm', 'notifyreply', 'attachsig', 'allowhtml', 'allowbbcode', 'allowsmilies', 'hideonline', 'style', 'language', 'timezone', 'dateformat');

	$s_hidden_vars = '<input type="hidden" name="sid" value="' . $session_id . '" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="avatarcatname" value="' . $category . '" />';

	for($i = 0; $i < count($params); $i++)
	{
		$s_hidden_vars .= '<input type="hidden" name="' . $params[$i] . '" value="' . str_replace('"', '"', $$params[$i]) . '" />';
	}

	$template->assign_vars(array(
		'L_AVATAR_GALLERY' => $lang['Avatar_gallery'],
		'L_SELECT_AVATAR' => $lang['Select_avatar'],
		'L_RETURN_PROFILE' => $lang['Return_profile'],
		'L_CATEGORY' => $lang['Select_category'],

		'S_CATEGORY_SELECT' => $s_categories,
		'S_COLSPAN' => $s_colspan,
		'S_PROFILE_ACTION' => append_sid("profile.$phpEx?mode=$mode"),
		'S_HIDDEN_FIELDS' => $s_hidden_vars)
	);

	return;
}

?>
greetz
Benutzeravatar
Kermit
Mitglied
Beiträge: 522
Registriert: 03.04.2001 02:00
Wohnort: hinterm Mond
Kontaktdaten:

Beitrag von Kermit »

wicked187 hat geschrieben:
folgenden fehler bekomm ich in der gallery angezeigt

Parse error: parse error, unexpected $ in /srv/www/htdocs/users/user02/darksite/board/includes/usercp_avatar.php on line 439
Die Fehlermeldung ist ja eh eindeutig.

In der Zeile 439 ist ein "$" was dort nicht hinein soll.
Und bitte keine Riesencode stellen reinposten sondern als .txt verlinken.
wicked187
Mitglied
Beiträge: 5
Registriert: 18.04.2006 22:24

Beitrag von wicked187 »

hi kermit,
In der Zeile 439 ist ein "$"

Code: Alles auswählen

zeile 439:
?>   
kein "$" zu finden

edit:sry wegen dem megacode
usercp_avatar.txt
Antworten

Zurück zu „phpBB 2.0: Mod Support“