Seite 1 von 3
Avatar Gallery Hack
Verfasst: 31.10.2002 12:00
von plexus-x
Ich war schon lange auf der Suche nach diesem Hack und habe Ihn gestern endlich auf phpbbhacks.com finden können.
Dieser Mod erlaubt es nämlich jeweils einem Besucher ein Avatar auszuwählen, d.h. das Avatar das der entsprechende User verwendet, kann von niemand anderem ein 2. Mal benutzt werden. Das Pic verschwindet dann aus der Avatar Gallerie. Das hat den Vorteil das keine Avatars mehr doppelt vergeben werden können und es nicht mehr so schnell zu Verwechslungen kommt.
Nun zu meinem Problem:
Nehmen wir mal an, ich habe 3 Avatar-Verzeichnisse, aber meine Mitglieder haben bereits alle Avatar Pics aus "Verzeichnis 1" ausgesucht, in "Verzeichnis 2" sind dann vielleicht noch zwei übrig und im "Verzeichnis 3" wieder nur eins... usw.
Mein Vorschlag:
Ich habe mir darüber mal so einige Gedanken gemacht, wie man diesen Mod noch etwas verfeinern könnte...
Anstatt die Avatars aus der Gallerie zu löschen, wird an jeder Stelle, an der vorher das bereits vergebene Avatar gewesen ist ein Default Avatar angezeigt (da könnte man ja wird bereits verwendet oder so reinschreiben). Dann würden die Ordner nicht so lehr aussehen!!!
Ist bestimmt gar nicht so schwer das umzubauen, vielleicht hat ja jemand ne Idee, wie man das hinbekommt...
Verfasst: 02.11.2002 11:41
von plexus-x
Na, hat keiner ne Idee???
Hier nochmal der Mod:
Code: Alles auswählen
#################################################################
## Mod Title: Avatar gallery hack
## Mod Version: 1.0.0
## phpBB Version: 2.0.2
## Author: dzidzius - dzidzius@dione.ids.pl (you can find me also at forum www.ForumBest.150.pl, there send all questions)
## Description:
## Avatar from gallery after chosing it by user automatically disappear from gallery. Thanks
## to this hack two users cannot have the same avatar. If user resign from that avatar it will
## be shown again in gallery.
## Installation Level: easy
## Installation Time: 2
## Files To Edit:
##
## includes\usercp_avatar.php,
## Generator: phpBB2 phpBB MODCreator v 1.1
#################################################################
## This MOD is released under the GPL License.
## Intellectual Property is retained by the MOD Author(s) listed above
#################################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/downloads/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/downloads/
#################################################################
## Author Note:
##
#################################################################
##
## 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) )
{
$my_checker = 0;
for ($i = 1; $i<= $my_counter; $i++ )
{
$my_temp = $file . '/' . $sub_file;
if ($my_temp == $my_used_list[$i]) $my_checker=1;
if ($my_checker==1) break;
}
if ($my_checker == 0)
{
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;
}
}
}
}
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Verfasst: 02.11.2002 14:20
von saerdnaer
du musst halt das
durch folgendes ersetzen:
Code: Alles auswählen
if ( $my_checker == 1 )
{
$avatar_images[$file][$avatar_row_count][$avatar_col_count] = 'used.gif';
$avatar_name[$file][$avatar_row_count][$avatar_col_count] = 'Bereits verwedet';
$avatar_col_count++;
if( $avatar_col_count == 5 )
{
$avatar_row_count++;
$avatar_col_count = 0;
}
}
sollte funktinieren... du musst halt in den gallery ordner eine grafik used.gif reinsetzen die dann angezeigt wird...
Verfasst: 02.11.2002 14:56
von plexus-x
Du, der Ansatz scheint schonmal ganz gut zu sein, aber jetzt hab ich ca. 10 mal so viele "wird bereits verwendet bilder" drin, als überhaupt verwendet werden!!!

Verfasst: 02.11.2002 15:11
von saerdnaer
achso stimmt ja
ersetzt den ganzen while block durch folgendes:
Code: Alles auswählen
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';
}
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_col_count++;
if( $avatar_col_count == 5 )
{
$avatar_row_count++;
$avatar_col_count = 0;
}
}
}
sollte funktionieren...
ah
Verfasst: 02.11.2002 15:47
von plexus-x
So, funktioniert ja schonmal super! Doch da wäre noch ein Problem... Man kann nämlich das "bereits verwendet bild" als Avatar auswählen, d.h. der Radio Button darunter müsste deaktiviert sein!

Wie bekommt man dass denn hin?!?!
Verfasst: 03.11.2002 15:03
von saerdnaer
hmm öffne mal die templates/xxx/profile_avater_gallery.tpl und füge nach
folgendes ein:
Code: Alles auswählen
<!-- BEGIN avatar_option_column -->
<td class="row2" align="center"> </td>
<!-- END avatar_no_option_column -->
dann öffne die usercp_avatar.php und suche nach
Code: Alles auswählen
$template->assign_block_vars('avatar_row.avatar_option_column', array(
"S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
);
und ersetzt es duch
Code: Alles auswählen
if ( $avatar_used[$category][$i][$j] )
{
$template->assign_block_vars('avatar_row.avatar_no_option_column', array());
}
else
{
$template->assign_block_vars('avatar_row.avatar_option_column', array(
"S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
);
}
dann suche
Code: Alles auswählen
$avatar_name[$file][$avatar_row_count][$avatar_col_count] = 'Bereits verwedet';
und füge danach ein:
Code: Alles auswählen
$avatar_used[$file][$avatar_row_count][$avatar_col_count] = true;
dann suche nach
Code: Alles auswählen
$avatar_name[$file][$avatar_row_count][$avatar_col_count] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_file)));
und füge danach ein::
Code: Alles auswählen
$avatar_used[$file][$avatar_row_count][$avatar_col_count] = false;
Verfasst: 03.11.2002 17:00
von plexus-x
öhm... jetzt wird's heftig! *g*
Jetzt sind die Radio Buttons teilweise da, aber auch teilweise weg und die Zellen der Tabbelle haben sich auch merkwürdig verschoben... Ich habe mal einen Screenshot gemacht, damit Du dir das besser vorstellen kannst!
>>>> Hier der Screenshot <<<<
Verfasst: 04.11.2002 15:50
von saerdnaer
speicher deine usercp_avatar.php als .phps oder .txt ab und poste den link zu ihr...
ah
Verfasst: 04.11.2002 16:05
von plexus-x