============================================================================================================================
Modification Title: Member Cards

Version: 1.0

Author: Unknown

Based On: FunForum's Avatar Showcase modification.

Description:
This modification will add a page to display a profile card of all members who have created one.
It comes with multipage support and shows 21 cards per page.
All the member usernames will be linked to their profiles.
For the Administrators there's an option to clear member's avatars, in case they are dead URLs for example.

Copyright:  2010 XMB Garage. All Rights Reserved.

Compatability: XMB 1.9.5 SP1

Install Note: Before adding this modification to your forum, you should back up all files related to this modification.

License Note: This modification is released under the GPL License v3. A copy is provided with this software package.

Author Note:
You downloaded this modification from XMBGarage.com, the #1 source for XMB related downloads.
Please visit http://www.xmbgarage.com/ for support.
============================================================================================================================
=======
Step 1:
=======
===================================
Go To Administration Panel --> Insert Raw SQL
===================================
==========================================
Copy and Paste Code Into Text Area and Submit Changes:
==========================================

ALTER TABLE `$table_settings` ADD `max_card_size` VARCHAR(9) NOT NULL default '300x200';
ALTER TABLE `$table_members` ADD `card` VARCHAR( 120 ) NULL DEFAULT NULL;

============================================================================================================================
=======
Step 2:
=======
=======================
Edit File: lang/English.lang.php
=======================
=========================
Add To End Of File ABOVE  ?>
=========================

// Member Cards Mod Begin
$lang['card_too_big'] = "Your card is too big! The maximum allowed card size on this board is: ";
$lang['altcard'] = 'Member Card';
$lang['textcard'] = 'Member Card:';
$lang['card_01'] = "Member Cards";
$lang['card_02'] = "Member #";
$lang['card_03'] = ": ";
$lang['card_04'] = "Administrator Options: ";
$lang['card_05'] = "Clear Card";
$lang['max_card_size_w'] = "The Maximum Member Card Height (in px)";
$lang['max_card_size_h'] = "The Maximum Member Card Width (in px)";
// Member Cards Mod End

============================================================================================================================
=======
Step 3:
=======
==============
Edit File: cp.php
==============
==========
Find Code:
==========

        $max_avatar_sizes = explode('x', $SETTINGS['max_avatar_size']);

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $max_card_sizes = explode('x', $SETTINGS['max_card_size']);
        // Member Cards Mod End

==========
Find Code:
==========

        printsetting2($lang['max_avatar_size_h'], 'max_avatar_size_h_new', $max_avatar_sizes[1], 4);

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        printsetting2($lang['max_card_size_w'], 'max_card_size_w_new', $max_card_sizes[0], 4);
        printsetting2($lang['max_card_size_h'], 'max_card_size_h_new', $max_card_sizes[1], 4);
        // Member Cards Mod End

==========
Find Code:
==========

        $max_avatar_size_h_new = (int) $max_avatar_size_h_new;

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $max_card_size_w_new = (int) $max_card_size_w_new;
        $max_card_size_h_new = (int) $max_card_size_h_new;
        // Member Cards Mod End

==========
Find Code:
==========

$db->query("UPDATE $table_settings SET langfile='$langfilenew',

==================================
Add Code To End Of Statement BEFORE  ");
==================================

, max_card_size='${max_card_size_w_new}x${max_card_size_h_new}'

============================================================================================================================
=======
Step 4:
=======
================
Edit File: header.php
================
==========
Find Code:
==========

$links = implode(' &nbsp; ', $links);

===============
Add Code Above:
===============

// Card-link
$links[] = "<img src=\"$imgdir/cards.gif\" alt=\"$lang[altcard]\" border=\"0\" /> <a href=\"member.php?action=cards\"><font class=\"navtd\">$lang[textcard]</font></a>";

============================================================================================================================
=======
Step 5:
=======
=================
Edit File: member.php
=================
==========
Find Code:
==========

loadtemplates(

================
Replace Code With:
================

loadtemplates(
'member_profile_card',

==========
Find Code:
==========

    default:
        nav($lang['error']);
        break;

===============
Add Code Above:
===============

    // Member Cards Mod Begin
    case 'cards':
        nav($lang['card_01']);
        break;
    // Member Cards Mod End

==========
Find Code:
==========

        $sig           = isset($sig) ? checkInput($sig, '', $SETTINGS['sightml'], '', false) : '';

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $card = isset($card) ? checkInput($card, '', '', 'javascript', false);
        // Member Cards Mod End

==========
Find Code:
==========

        $sig           = addslashes($sig);

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $card = addslashes($card);
        // Member Cards Mod End

==========
Find Code:
==========

                error($lang['avatar_too_big'] . $SETTINGS['max_avatar_size'] . 'px');
            }
        }

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $size = @getimagesize($card);
        $max_size = explode('x', $SETTINGS['max_card_size']);
        if ($size === false) {
            $card = '';
        } elseif (($size[0] > $max_size[0] || $size[1] > $max_size[1]) && !X_SADMIN) {
            error($lang['card_too_big'] . $SETTINGS['max_card_size'] . 'px');
        }
        // Member Cards Mod End

==========
Find Code:
==========

) VALUES ('', '$username'

================
Replace Code With:
================

, card) VALUES ('', '$username'

==================================
Add Code To End Of Statement BEFORE  ");
==================================

, '$card'

==========
Find Code:
==========

} elseif ($action == "viewpro") {

===============
Add Code Above:
===============

// Member Cards Mod Begin
} elseif ($action == 'cards') {
    // if (X_ADMIN && !is_null($deletesubmit) ) {
    if ( X_ADMIN && isset($deletesubmit) ) {
        if (!is_null($cards_select) ) {
            $in = ''; 
            foreach($cards_select as $value) {
                $in .= (safeInt($value) > 0 ? (empty($in) ? "uid='$value'" : " OR uid='$value'") : '');
            }
        }
        $db->query("UPDATE $table_members SET card = '' WHERE $in");
    }
    $tlpp = '21';
    $cardsmultis = '';
    if (isset($page)) {
        if ($page < 1) {
            $page = 1;
        }
        $start_limit = ($page-1) * $tlpp;
    } else {
        $start_limit = 0;
        $page = 1;
    }
    $query = $db->query("SELECT count(uid) FROM $table_members WHERE card != ''");
    $num = $db->result($query, 0);
    $mpurl = 'member.php?action=cards';
    if (false !== ($multipage = multi($num, $tlpp, $page, $mpurl))) {
        $cardsmultis = '<tr><td colspan="3" bgcolor="'.$altbg1.'" class="smalltxt">'.$multipage.'</td></tr>';
    }
    eval('echo ("'.template('header').'");');
    echo '<form method="post" action="member.php?action=cards">
    <table cellspacing="0" cellpadding="0" border="0" width="'.$tablewidth.'" align="center"><tr><td bgcolor="'.$bordercolor.'">
    <table border="0" cellspacing="'.$borderwidth.'" cellpadding="'.$tablespace.'" width="100%">
    <tr>
    <td colspan="3" class="category"><font color="'.$cattext.'"><strong>'.$lang['card_01'].'</strong></font></td>
    </tr>'.$cardsmultis;
    $C = 0;
    $FAquery = $db->query("SELECT uid, username, card FROM $table_members WHERE card !='' ORDER BY uid ASC LIMIT $start_limit, $tlpp");
    while ($M = $db->fetch_array($FAquery)) {
        $C++;
        if ($C == 1) {
            echo '<tr>';
        }
        echo '<td bgcolor="'.$altbg1.'" class="tablerow" width="33%">
        <table cellspacing="0" cellpadding="0" border="0" width="100%" height="100%" align="center"><tr><td bgcolor="'.$bordercolor.'">
        <table border="0" cellspacing="'.$borderwidth.'" cellpadding="'.$tablespace.'" width="100%" height="100%">
        <tr>';
        if (X_ADMIN) {
            echo '<td class="header"><input type="checkbox" name="cards_select[]" value="'.$M['uid'].'" /> '.$lang['card_02'].''.$M['uid'].''.$lang['card_03'].'<a style="color: '.$headertext.';" href="member.php?action=viewpro&amp;member='.rawurlencode($M['username']).'">'.$M['username'].'</a></td>';
        } else {
            echo '<td class="header">'.$lang['card_02'].''.$M['uid'].''.$lang['card_03'].'<a style="color: '.$headertext.';" href="member.php?action=viewpro&amp;member='.rawurlencode($M['username']).'">'.$M['username'].'</a></td>';
        }
        echo '</tr>
        <tr><td bgcolor="'.$altbg2.'" width="100%" height="100%" align="center" valign="middle"><img border="0" alt="" src="'.$M['card'].'"></td></tr>
        </table>
        </td></tr></table>
        </td>';
        if ($C == 3) {
            echo '</tr>';
            $C = 0;
        }
    }
    if ($C == 1) {
        echo '<td bgcolor="'.$altbg1.'" class="tablerow" width="33%"></td><td bgcolor="'.$altbg1.'" class="tablerow" width="33%"></td></tr>';
    }
    if ($C == 2) {
        echo '<td bgcolor="'.$altbg1.'" class="tablerow" width="33%"></td></tr>';
    }
    if (X_ADMIN) {
        echo '<tr><td colspan="3" bgcolor="'.$altbg1.'" class="smalltxt">'.$lang['card_04'].'<input type="hidden" name="page" value="'.$page.'" /><input type="submit" class="submit" name="deletesubmit" value="'.$lang['card_05'].'" /></td></tr>';
    }
    echo $cardsmultis.'</table></td></tr></table></form>';
// Member Cards Mod End

==========
Find Code:
==========

            if (X_MEMBER && $memberinfo['email'] != '' && $memberinfo['showemail'] == 'yes') {

==============
Add Card Above:
==============

            // Member Cards Mod Begin
            // create card block
            $cardblock = '';
            if ($memberinfo['card'] != '') {
                eval('$cardblock = "'.template('member_profile_card').'";');
            }
            // Member Cards Mod End

============================================================================================================================
=======
Step 6:
=======
=================
Edit File: memcp.php
=================
==========
Find Code:
==========

        $sig            = isset($newsig) ? checkInput($newsig, '', $SETTINGS['sightml'], '', false) : '';

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $card = isset($newcard) ? checkInput($newcard, '', '', 'javascript', false) : '';
        // Member Cards Mod End

==========
Find Code:
==========

        $sig            = addslashes($sig);

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $card = addslashes($card);
        // Member Cards Mod End

==========
Find Code:
==========

                error($lang['avatar_too_big'] . $SETTINGS['max_avatar_size'] . 'px', false);
            }
        }

===============
Add Code Below:
===============

        // Member Cards Mod Begin
        $max_size = explode('x', $SETTINGS['max_card_size']);
        if ($max_size[0] > 0 && $max_size[1] > 0) {
            $size = @getimagesize($card);
            $max_size = explode('x', $SETTINGS['max_card_size']);
            if ($size === false && ($max_size[0] > 0 && $max_size[1] > 0)) {
                $card = '';
            } elseif (($max_size[0] > 0 && $max_size[1] > 0) && ($size['0'] > $max_size['0'] || $size['1'] > $max_size['1'])) {
                error($lang['card_too_big'] . $SETTINGS['max_card_size'] . 'px', false);
            }
        }
        // Member Cards Mod End

==========
Find Code:
==========

$db->query("UPDATE $table_members SET $pwtxt email='$email'

==================================
Add Code To End Of Statement BEFORE  ");
==================================

, card='$card'

============================================================================================================================
=======
Step 7:
=======
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit Template: member_profile
=======================
==========
Find Code:
==========
<tr>
<td bgcolor="$altbg1" valign="top"
class="tablerow">$lang[textproflastpost]</td>
<td bgcolor="$altbg2" class="tablerow">$lastpost</td>
</tr>

===============
Add Code Below:
===============

$cardblock

============================================================================================================================
=======
Step 8:
=======
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit Template: memcp_profile
=======================
==========
Find Code:
==========

<tr>
<td bgcolor="$altbg1" width="22%" class="tablerow">$lang[textwebcam]</td>
<td bgcolor="$altbg2" class="tablerow"><input type="text" name="newwebcam" size="25" value="$member[webcam]" /></td>
</tr>

===============
Add Code Below:
===============

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[textcard]</td>
<td bgcolor="$altbg2"><input type="text" name="newcard" size="25" value="$member[card]" /></td>
</tr>

============================================================================================================================
=======
Step 9:
=======
===============================
Go To Administration Panel --> Templates
===============================
=================================
Create New Template: member_profile_card
=================================
==================================
Add Code To Text Area and Submit Changes:
==================================

<tr class="tablerow">
<td bgcolor="$altbg2"><center><img src="$memberinfo[card]" border="0" /></center></td>
</tr>

============================================================================================================================
========
Step 10:
========

Upload the cards.gif image located in the Contents folder to all your theme folders.

============================================================================================================================
Enjoy!