Bu modun kurulumu ile birlikte sitenizde avatar galerinizde alt galeriler oluşturulabiliyor, aynı alt forum gibi bir şey oluyor. Ancak modu incelerken fark ettiğim önemli bir nokta var ; forumun önemli dosyaları içerisinde değşiklik yaptığından bu modu ya ilk önce kurunuz yada kurmayınız. Çünki önceden kurduğunuz bir takım özellikler kalkabilir.
##############################################################
## MOD Title: Advanced Avatar Gallery
## MOD Author: traviscarden < travis (at) traviscarden (dot) com > (Travis Carden) https://tik.lat/R8MST
## MOD Description:
## 1) Adds support for sub-folders--folders UNDER the main categories in the
## images/avatars/gallery directory--displayed as labelled sections on each category page in
## the gallery.
## 2) Adds ability to click on avatar images in avatar gallery to tick corresponding radio
## boxes.
## 3) Gets rid of that ugly white block in the odd space at the end of a category.
## MOD Version: 1.0.0
##
## Installation Level: (Intermediate)
## Installation Time: ~5 Minutes
## Files To Edit: (4)
## admin/admin_users.php
## includes/usercp_avatar.php
## templates/subSilver/profile_avatar_gallery.tpl
## templates/subSilver/admin/user_avatar_gallery.tpl
## Included Files: (n/a)
##############################################################
## For Security Purposes, Please Check: https://tik.lat/QNOkx 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: https://tik.lat/hvPbP
##############################################################
## Author Notes: Installing this MOD will NOT require you to reorganize your existing avatar
## gallery's directory structure in any way but will add functionality you may use in the future.
## If you DO restructure your existing gallery, keep in mind that moving any image a user has
## associated with their account will break that user's avatar.
##############################################################
## MOD History:
##
## 2003-03-01 - Version 1.0.0
## - Initial release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_avatar.php
#
#-----[ FIND ]------------------------------------------
#
# Select THE WHOLE FUNCTION "display_avatar_gallery".
#
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, &$********, &$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;
$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) )
{
$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;
}
}
}
}
}
@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'] . '/' . $avatar_images[$category][$i][$j],
"AVATAR_NAME" => $avatar_name[$category][$i][$j])
);
$template->assign_block_vars('avatar_row.avatar_option_column', 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', '********', '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" />';
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;
}
#
#-----[ REPLACE WITH ]------------------------------------------
#
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, &$********, &$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;
$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) )
{
$avatar_row_count = 0;
$avatar_col_count = 0;
$sub_dir = @opendir($board_config['avatar_gallery_path'] . '/' . $file);
while( $sub_file = @readdir($sub_dir) )
{
if( $sub_file != '.' && $sub_file != '..' && !is_link($board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
if( !is_file($board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
$avatar_row_count_sub = 0;
$avatar_col_count_sub = 0;
$sub_sub_dir = @opendir($board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file);
while( $sub_sub_file = @readdir($sub_sub_dir) )
{
if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_sub_file) )
{
$avatar_images[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = $file . '/' . $sub_file . '/' . $sub_sub_file;
$avatar_name[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_sub_file)));
$avatar_col_count_sub++;
if( $avatar_col_count_sub == 5 )
{
$avatar_row_count_sub++;
$avatar_col_count_sub = 0;
}
}
}
@closedir($sub_sub_dir);
}
else 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;
}
}
}
}
}
}
@closedir($dir);
@ksort($avatar_images);
@reset($avatar_images);
if( empty($category) || !array_key_exists($category, $avatar_images) )
{
list($category, ) = each($avatar_images);
}
@reset($avatar_images);
// Remove image set in root folder and move to end of array
if( count($avatar_images[$category][' ']) )
{
$tmp = $avatar_images[$category][' '];
unset($avatar_images[$category][' ']);
$avatar_images[$category][' '] = $tmp;
}
$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>';
while( list($sub_category) = @each($avatar_images[$category]))
{
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$s_colspan = max($s_colspan, count($avatar_images[$category][$sub_category][$i]));
}
}
@reset($avatar_images[$category]);
while( list($sub_category) = @each($avatar_images[$category]))
{
$template->assign_block_vars("avatar_sub_category", array(
"CATEGORY_NAME" => $sub_category)
);
if( (count($avatar_images[$category]) - 1) )
{
$template->assign_block_vars('avatar_sub_category.switch_avatar_sub_category_heading', array());
}
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$template->assign_block_vars("avatar_sub_category.avatar_row", array());
if( (count($avatar_images[$category][$sub_category][$i]) % $s_colspan) != 0 )
{
$template->assign_block_vars('avatar_sub_category.avatar_row.switch_remainder_column', array(
"REMAINDER_COLSPAN" => ($s_colspan - (count($avatar_images[$category][$sub_category][$i]) % $s_colspan)))
);
}
for( $j = 0; $j < count($avatar_images[$category][$sub_category][$i]); $j++ )
{
$avatar_id = '';
for( $n = 0; $n < strlen($avatar_images[$category][$sub_category][$i][$j]); $n++ )
{
$avatar_id .= ord(substr($avatar_images[$category][$sub_category][$i][$j], $n, 1));
}
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_column', array(
"AVATAR_ID" => $avatar_id,
"AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' . $avatar_images[$category][$sub_category][$i][$j],
"AVATAR_NAME" => $avatar_name[$category][$sub_category][$i][$j])
);
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_option_column', array(
"AVATAR_ID" => $avatar_id,
"S_OPTIONS_AVATAR" => $avatar_images[$category][$sub_category][$i][$j])
);
}
}
}
$params = array('coppa', 'user_id', 'username', 'email', 'current_email', 'cur_password', 'new_password', 'password_confirm', 'icq', 'aim', 'msn', 'yim', 'website', '********', '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" />';
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;
}
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/profile_avatar_gallery.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><img src="{avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_row.avatar_column.AVATAR_NAME}" /></td>
<!-- END avatar_column -->
</tr>
<tr>
<!-- 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 -->
</tr>
<!-- END avatar_row -->
#
#-----[ REPLACE WITH ]------------------------------------------
#
<!-- BEGIN avatar_sub_category -->
<!-- BEGIN switch_avatar_sub_category_heading -->
<tr>
<td class="cat" valign="middle" colspan="{S_COLSPAN}" height="28"><span class="cattitle">{avatar_sub_category.CATEGORY_NAME}</span></td>
</tr>
<!-- END switch_avatar_sub_category_heading -->
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><label for="{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}" onclick="if (********.all && ********.getElementById) ********.getElementById('{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}').checked = true;"><img src="{avatar_sub_category.avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" /></label></td>
<!-- END avatar_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row1" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<tr>
<!-- BEGIN avatar_option_column -->
<td class="row2" align="center"><input id="{avatar_sub_category.avatar_row.avatar_option_column.AVATAR_ID}" type="radio" name="avatarselect" value="{avatar_sub_category.avatar_row.avatar_option_column.S_OPTIONS_AVATAR}" /></td>
<!-- END avatar_option_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row2" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<!-- END avatar_row -->
<!-- END avatar_sub_category -->
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_users.php
#
#-----[ FIND ]------------------------------------------
#
$dir = @opendir("../" . $board_config['avatar_gallery_path']);
$avatar_images = array();
while( $file = @readdir($dir) )
{
if( $file != "." && $file != ".." && !is_file(phpbb_realpath("./../" . $board_config['avatar_gallery_path'] . "/" . $file)) && !is_link(phpbb_realpath("./../" . $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)$/is", $sub_file) )
{
$avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . "/" . $sub_file;
$avatar_col_count++;
if( $avatar_col_count == 5 )
{
$avatar_row_count++;
$avatar_col_count = 0;
}
}
}
}
}
@closedir($dir);
if( isset($HTTP_POST_VARS['avatarcategory']) )
{
$category = $HTTP_POST_VARS['avatarcategory'];
}
else
{
list($category, ) = each($avatar_images);
}
@reset($avatar_images);
$s_categories = "";
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_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'] . "/" . $avatar_images[$category][$i][$j])
);
$template->assign_block_vars("avatar_row.avatar_option_column", array(
"S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
);
}
}
#
#-----[ REPLACE WITH ]------------------------------------------
#
$dir = @opendir('../' . $board_config['avatar_gallery_path']);
while( $file = @readdir($dir) )
{
if( $file != '.' && $file != '..' && !is_file('../' . $board_config['avatar_gallery_path'] . '/' . $file) && !is_link('../' . $board_config['avatar_gallery_path'] . '/' . $file) )
{
$avatar_row_count = 0;
$avatar_col_count = 0;
$sub_dir = @opendir('../' . $board_config['avatar_gallery_path'] . '/' . $file);
while( $sub_file = @readdir($sub_dir) )
{
if( $sub_file != '.' && $sub_file != '..' && !is_link('../' . $board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
if( !is_file('../' . $board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
$avatar_row_count_sub = 0;
$avatar_col_count_sub = 0;
$sub_sub_dir = @opendir('../' . $board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file);
while( $sub_sub_file = @readdir($sub_sub_dir) )
{
if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_sub_file) )
{
$avatar_images[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = $file . '/' . $sub_file . '/' . $sub_sub_file;
$avatar_name[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_sub_file)));
$avatar_col_count_sub++;
if( $avatar_col_count_sub == 5 )
{
$avatar_row_count_sub++;
$avatar_col_count_sub = 0;
}
}
}
@closedir($sub_sub_dir);
}
else 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;
}
}
}
}
}
}
@closedir($dir);
@ksort($avatar_images);
@reset($avatar_images);
if( isset($HTTP_POST_VARS['avatarcategory']) )
{
$category = $HTTP_POST_VARS['avatarcategory'];
}
else
{
list($category, ) = each($avatar_images);
}
@reset($avatar_images);
// Remove image set in root folder and move to end of array
if( count($avatar_images[$category][' ']) )
{
$tmp = $avatar_images[$category][' '];
unset($avatar_images[$category][' ']);
$avatar_images[$category][' '] = $tmp;
}
$s_categories = "";
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>';
}
}
while( list($sub_category) = each($avatar_images[$category]))
{
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$s_colspan = max($s_colspan, count($avatar_images[$category][$sub_category][$i]));
}
}
reset($avatar_images[$category]);
while( list($sub_category) = each($avatar_images[$category]))
{
$template->assign_block_vars("avatar_sub_category", array(
"CATEGORY_NAME" => $sub_category)
);
if( (count($avatar_images[$category]) - 1) )
{
$template->assign_block_vars('avatar_sub_category.switch_avatar_sub_category_heading', array());
}
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$template->assign_block_vars("avatar_sub_category.avatar_row", array());
if( (count($avatar_images[$category][$sub_category][$i]) % $s_colspan) != 0 )
{
$template->assign_block_vars('avatar_sub_category.avatar_row.switch_remainder_column', array(
"REMAINDER_COLSPAN" => ($s_colspan - (count($avatar_images[$category][$sub_category][$i]) % $s_colspan)))
);
}
for( $j = 0; $j < count($avatar_images[$category][$sub_category][$i]); $j++ )
{
$avatar_id = '';
for( $n = 0; $n < strlen($avatar_images[$category][$sub_category][$i][$j]); $n++ )
{
$avatar_id .= ord(substr($avatar_images[$category][$sub_category][$i][$j], $n, 1));
}
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_column', array(
"AVATAR_ID" => $avatar_id,
"AVATAR_IMAGE" => '../' . $board_config['avatar_gallery_path'] . '/' . $avatar_images[$category][$sub_category][$i][$j],
"AVATAR_NAME" => $avatar_name[$category][$sub_category][$i][$j])
);
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_option_column', array(
"AVATAR_ID" => $avatar_id,
"S_OPTIONS_AVATAR" => $avatar_images[$category][$sub_category][$i][$j])
);
}
}
}
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/admin/user_avatar_gallery.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><img src="{avatar_row.avatar_column.AVATAR_IMAGE}" /></td>
<!-- END avatar_column -->
</tr>
<tr>
<!-- 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 -->
</tr>
<!-- END avatar_row -->
#
#-----[ REPLACE WITH ]------------------------------------------
#
<!-- BEGIN avatar_sub_category -->
<!-- BEGIN switch_avatar_sub_category_heading -->
<tr>
<td class="cat" valign="middle" colspan="{S_COLSPAN}" height="28"><span class="cattitle">{avatar_sub_category.CATEGORY_NAME}</span></td>
</tr>
<!-- END switch_avatar_sub_category_heading -->
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><label for="{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}" onclick="if (********.all && ********.getElementById) ********.getElementById('{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}').checked = true;"><img src="{avatar_sub_category.avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" /></label></td>
<!-- END avatar_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row1" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<tr>
<!-- BEGIN avatar_option_column -->
<td class="row2" align="center"><input id="{avatar_sub_category.avatar_row.avatar_option_column.AVATAR_ID}" type="radio" name="avatarselect" value="{avatar_sub_category.avatar_row.avatar_option_column.S_OPTIONS_AVATAR}" /></td>
<!-- END avatar_option_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row2" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<!-- END avatar_row -->
<!-- END avatar_sub_category -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
##############################################################
## MOD Title: Advanced Avatar Gallery
## MOD Author: traviscarden < travis (at) traviscarden (dot) com > (Travis Carden) https://tik.lat/R8MST
## MOD Description:
## 1) Adds support for sub-folders--folders UNDER the main categories in the
## images/avatars/gallery directory--displayed as labelled sections on each category page in
## the gallery.
## 2) Adds ability to click on avatar images in avatar gallery to tick corresponding radio
## boxes.
## 3) Gets rid of that ugly white block in the odd space at the end of a category.
## MOD Version: 1.0.0
##
## Installation Level: (Intermediate)
## Installation Time: ~5 Minutes
## Files To Edit: (4)
## admin/admin_users.php
## includes/usercp_avatar.php
## templates/subSilver/profile_avatar_gallery.tpl
## templates/subSilver/admin/user_avatar_gallery.tpl
## Included Files: (n/a)
##############################################################
## For Security Purposes, Please Check: https://tik.lat/QNOkx 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: https://tik.lat/hvPbP
##############################################################
## Author Notes: Installing this MOD will NOT require you to reorganize your existing avatar
## gallery's directory structure in any way but will add functionality you may use in the future.
## If you DO restructure your existing gallery, keep in mind that moving any image a user has
## associated with their account will break that user's avatar.
##############################################################
## MOD History:
##
## 2003-03-01 - Version 1.0.0
## - Initial release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_avatar.php
#
#-----[ FIND ]------------------------------------------
#
# Select THE WHOLE FUNCTION "display_avatar_gallery".
#
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, &$********, &$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;
$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) )
{
$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;
}
}
}
}
}
@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'] . '/' . $avatar_images[$category][$i][$j],
"AVATAR_NAME" => $avatar_name[$category][$i][$j])
);
$template->assign_block_vars('avatar_row.avatar_option_column', 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', '********', '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" />';
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;
}
#
#-----[ REPLACE WITH ]------------------------------------------
#
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, &$********, &$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;
$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) )
{
$avatar_row_count = 0;
$avatar_col_count = 0;
$sub_dir = @opendir($board_config['avatar_gallery_path'] . '/' . $file);
while( $sub_file = @readdir($sub_dir) )
{
if( $sub_file != '.' && $sub_file != '..' && !is_link($board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
if( !is_file($board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
$avatar_row_count_sub = 0;
$avatar_col_count_sub = 0;
$sub_sub_dir = @opendir($board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file);
while( $sub_sub_file = @readdir($sub_sub_dir) )
{
if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_sub_file) )
{
$avatar_images[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = $file . '/' . $sub_file . '/' . $sub_sub_file;
$avatar_name[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_sub_file)));
$avatar_col_count_sub++;
if( $avatar_col_count_sub == 5 )
{
$avatar_row_count_sub++;
$avatar_col_count_sub = 0;
}
}
}
@closedir($sub_sub_dir);
}
else 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;
}
}
}
}
}
}
@closedir($dir);
@ksort($avatar_images);
@reset($avatar_images);
if( empty($category) || !array_key_exists($category, $avatar_images) )
{
list($category, ) = each($avatar_images);
}
@reset($avatar_images);
// Remove image set in root folder and move to end of array
if( count($avatar_images[$category][' ']) )
{
$tmp = $avatar_images[$category][' '];
unset($avatar_images[$category][' ']);
$avatar_images[$category][' '] = $tmp;
}
$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>';
while( list($sub_category) = @each($avatar_images[$category]))
{
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$s_colspan = max($s_colspan, count($avatar_images[$category][$sub_category][$i]));
}
}
@reset($avatar_images[$category]);
while( list($sub_category) = @each($avatar_images[$category]))
{
$template->assign_block_vars("avatar_sub_category", array(
"CATEGORY_NAME" => $sub_category)
);
if( (count($avatar_images[$category]) - 1) )
{
$template->assign_block_vars('avatar_sub_category.switch_avatar_sub_category_heading', array());
}
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$template->assign_block_vars("avatar_sub_category.avatar_row", array());
if( (count($avatar_images[$category][$sub_category][$i]) % $s_colspan) != 0 )
{
$template->assign_block_vars('avatar_sub_category.avatar_row.switch_remainder_column', array(
"REMAINDER_COLSPAN" => ($s_colspan - (count($avatar_images[$category][$sub_category][$i]) % $s_colspan)))
);
}
for( $j = 0; $j < count($avatar_images[$category][$sub_category][$i]); $j++ )
{
$avatar_id = '';
for( $n = 0; $n < strlen($avatar_images[$category][$sub_category][$i][$j]); $n++ )
{
$avatar_id .= ord(substr($avatar_images[$category][$sub_category][$i][$j], $n, 1));
}
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_column', array(
"AVATAR_ID" => $avatar_id,
"AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' . $avatar_images[$category][$sub_category][$i][$j],
"AVATAR_NAME" => $avatar_name[$category][$sub_category][$i][$j])
);
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_option_column', array(
"AVATAR_ID" => $avatar_id,
"S_OPTIONS_AVATAR" => $avatar_images[$category][$sub_category][$i][$j])
);
}
}
}
$params = array('coppa', 'user_id', 'username', 'email', 'current_email', 'cur_password', 'new_password', 'password_confirm', 'icq', 'aim', 'msn', 'yim', 'website', '********', '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" />';
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;
}
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/profile_avatar_gallery.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><img src="{avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_row.avatar_column.AVATAR_NAME}" /></td>
<!-- END avatar_column -->
</tr>
<tr>
<!-- 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 -->
</tr>
<!-- END avatar_row -->
#
#-----[ REPLACE WITH ]------------------------------------------
#
<!-- BEGIN avatar_sub_category -->
<!-- BEGIN switch_avatar_sub_category_heading -->
<tr>
<td class="cat" valign="middle" colspan="{S_COLSPAN}" height="28"><span class="cattitle">{avatar_sub_category.CATEGORY_NAME}</span></td>
</tr>
<!-- END switch_avatar_sub_category_heading -->
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><label for="{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}" onclick="if (********.all && ********.getElementById) ********.getElementById('{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}').checked = true;"><img src="{avatar_sub_category.avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" /></label></td>
<!-- END avatar_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row1" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<tr>
<!-- BEGIN avatar_option_column -->
<td class="row2" align="center"><input id="{avatar_sub_category.avatar_row.avatar_option_column.AVATAR_ID}" type="radio" name="avatarselect" value="{avatar_sub_category.avatar_row.avatar_option_column.S_OPTIONS_AVATAR}" /></td>
<!-- END avatar_option_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row2" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<!-- END avatar_row -->
<!-- END avatar_sub_category -->
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_users.php
#
#-----[ FIND ]------------------------------------------
#
$dir = @opendir("../" . $board_config['avatar_gallery_path']);
$avatar_images = array();
while( $file = @readdir($dir) )
{
if( $file != "." && $file != ".." && !is_file(phpbb_realpath("./../" . $board_config['avatar_gallery_path'] . "/" . $file)) && !is_link(phpbb_realpath("./../" . $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)$/is", $sub_file) )
{
$avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file . "/" . $sub_file;
$avatar_col_count++;
if( $avatar_col_count == 5 )
{
$avatar_row_count++;
$avatar_col_count = 0;
}
}
}
}
}
@closedir($dir);
if( isset($HTTP_POST_VARS['avatarcategory']) )
{
$category = $HTTP_POST_VARS['avatarcategory'];
}
else
{
list($category, ) = each($avatar_images);
}
@reset($avatar_images);
$s_categories = "";
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_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'] . "/" . $avatar_images[$category][$i][$j])
);
$template->assign_block_vars("avatar_row.avatar_option_column", array(
"S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
);
}
}
#
#-----[ REPLACE WITH ]------------------------------------------
#
$dir = @opendir('../' . $board_config['avatar_gallery_path']);
while( $file = @readdir($dir) )
{
if( $file != '.' && $file != '..' && !is_file('../' . $board_config['avatar_gallery_path'] . '/' . $file) && !is_link('../' . $board_config['avatar_gallery_path'] . '/' . $file) )
{
$avatar_row_count = 0;
$avatar_col_count = 0;
$sub_dir = @opendir('../' . $board_config['avatar_gallery_path'] . '/' . $file);
while( $sub_file = @readdir($sub_dir) )
{
if( $sub_file != '.' && $sub_file != '..' && !is_link('../' . $board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
if( !is_file('../' . $board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file) )
{
$avatar_row_count_sub = 0;
$avatar_col_count_sub = 0;
$sub_sub_dir = @opendir('../' . $board_config['avatar_gallery_path'] . '/' . $file . '/' . $sub_file);
while( $sub_sub_file = @readdir($sub_sub_dir) )
{
if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $sub_sub_file) )
{
$avatar_images[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = $file . '/' . $sub_file . '/' . $sub_sub_file;
$avatar_name[$file][ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', "{$sub_file}:")))][$avatar_row_count_sub][$avatar_col_count_sub] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $sub_sub_file)));
$avatar_col_count_sub++;
if( $avatar_col_count_sub == 5 )
{
$avatar_row_count_sub++;
$avatar_col_count_sub = 0;
}
}
}
@closedir($sub_sub_dir);
}
else 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;
}
}
}
}
}
}
@closedir($dir);
@ksort($avatar_images);
@reset($avatar_images);
if( isset($HTTP_POST_VARS['avatarcategory']) )
{
$category = $HTTP_POST_VARS['avatarcategory'];
}
else
{
list($category, ) = each($avatar_images);
}
@reset($avatar_images);
// Remove image set in root folder and move to end of array
if( count($avatar_images[$category][' ']) )
{
$tmp = $avatar_images[$category][' '];
unset($avatar_images[$category][' ']);
$avatar_images[$category][' '] = $tmp;
}
$s_categories = "";
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>';
}
}
while( list($sub_category) = each($avatar_images[$category]))
{
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$s_colspan = max($s_colspan, count($avatar_images[$category][$sub_category][$i]));
}
}
reset($avatar_images[$category]);
while( list($sub_category) = each($avatar_images[$category]))
{
$template->assign_block_vars("avatar_sub_category", array(
"CATEGORY_NAME" => $sub_category)
);
if( (count($avatar_images[$category]) - 1) )
{
$template->assign_block_vars('avatar_sub_category.switch_avatar_sub_category_heading', array());
}
for( $i = 0; $i < count($avatar_images[$category][$sub_category]); $i++ )
{
$template->assign_block_vars("avatar_sub_category.avatar_row", array());
if( (count($avatar_images[$category][$sub_category][$i]) % $s_colspan) != 0 )
{
$template->assign_block_vars('avatar_sub_category.avatar_row.switch_remainder_column', array(
"REMAINDER_COLSPAN" => ($s_colspan - (count($avatar_images[$category][$sub_category][$i]) % $s_colspan)))
);
}
for( $j = 0; $j < count($avatar_images[$category][$sub_category][$i]); $j++ )
{
$avatar_id = '';
for( $n = 0; $n < strlen($avatar_images[$category][$sub_category][$i][$j]); $n++ )
{
$avatar_id .= ord(substr($avatar_images[$category][$sub_category][$i][$j], $n, 1));
}
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_column', array(
"AVATAR_ID" => $avatar_id,
"AVATAR_IMAGE" => '../' . $board_config['avatar_gallery_path'] . '/' . $avatar_images[$category][$sub_category][$i][$j],
"AVATAR_NAME" => $avatar_name[$category][$sub_category][$i][$j])
);
$template->assign_block_vars('avatar_sub_category.avatar_row.avatar_option_column', array(
"AVATAR_ID" => $avatar_id,
"S_OPTIONS_AVATAR" => $avatar_images[$category][$sub_category][$i][$j])
);
}
}
}
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/admin/user_avatar_gallery.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><img src="{avatar_row.avatar_column.AVATAR_IMAGE}" /></td>
<!-- END avatar_column -->
</tr>
<tr>
<!-- 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 -->
</tr>
<!-- END avatar_row -->
#
#-----[ REPLACE WITH ]------------------------------------------
#
<!-- BEGIN avatar_sub_category -->
<!-- BEGIN switch_avatar_sub_category_heading -->
<tr>
<td class="cat" valign="middle" colspan="{S_COLSPAN}" height="28"><span class="cattitle">{avatar_sub_category.CATEGORY_NAME}</span></td>
</tr>
<!-- END switch_avatar_sub_category_heading -->
<!-- BEGIN avatar_row -->
<tr>
<!-- BEGIN avatar_column -->
<td class="row1" align="center"><label for="{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}" onclick="if (********.all && ********.getElementById) ********.getElementById('{avatar_sub_category.avatar_row.avatar_column.AVATAR_ID}').checked = true;"><img src="{avatar_sub_category.avatar_row.avatar_column.AVATAR_IMAGE}" alt="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" title="{avatar_sub_category.avatar_row.avatar_column.AVATAR_NAME}" /></label></td>
<!-- END avatar_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row1" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<tr>
<!-- BEGIN avatar_option_column -->
<td class="row2" align="center"><input id="{avatar_sub_category.avatar_row.avatar_option_column.AVATAR_ID}" type="radio" name="avatarselect" value="{avatar_sub_category.avatar_row.avatar_option_column.S_OPTIONS_AVATAR}" /></td>
<!-- END avatar_option_column -->
<!-- BEGIN switch_remainder_column -->
<td class="row2" colspan="{avatar_sub_category.avatar_row.switch_remainder_column.REMAINDER_COLSPAN}" align="center"></td>
<!-- END switch_remainder_column -->
</tr>
<!-- END avatar_row -->
<!-- END avatar_sub_category -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM