Modification Name: Quick Edit Box v2.0

Modification Author: GuldantheWarlock (GuldantheWarlock@xmbgarage.com)

Last Updated: December 11, 2009

Modification Description:
This modification will add a QuickEdit box at the bottom of your page allowing you to edit the following options at any time:
    - Browse the board invisible
    - Theme
    - Mood
    - Avatar URL
    - Signature

This modification has settings in the admin panel under Settings to turn the quick edit box on/off and an option to enable/disable the avatar display.

Supported Version: XMB 1.9.8 SP4

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

Please backup your files before installing this modification.
Neither XMB Garage nor the author can be held responsible if your board stops functioning properly due to you installing this modification.

============================================================================================================================
=======
Step 1:
=======
==============================
Go To Admin Panel --> Insert Raw SQL
==============================
===============================
Paste The Following Code and Hit Submit
===============================

ALTER TABLE $table_settings ADD quickedit_status SET('on','off') NOT NULL default 'on';
ALTER TABLE $table_settings ADD quickedit_avatar SET('on','off') NOT NULL default 'off';

============================================================================================================================
=======
Step 2:
=======
=================
Edit File: header.php
=================

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

$mailer = array();

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

// Quick Edit Box Mod Begin
$QuickEdit = '';
// Quick Edit Box Mod End

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

    $loginout = '<a href="misc.php?action=logout">'.$lang['textlogout'].'</a>';

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

    // QuickEdit Box Mod Begin
    QuickEdit::update();
    // QuickEdit Box Mod End
    
============================================================================================================================
=======
Step 3:
=======
==============
Edit File: cp.php
==============
==========
Find Code:
==========

        $resetSigOn = $resetSigOff = '';
        settingHTML('resetsigs', $resetSigOn, $resetSigOff);
        
===============
Add Code Below:
===============

        // Quick Edit Box Mod Begin
        $quickediton = $quickeditoff = '';
        settingHTML('quickedit_status', $quickediton, $quickeditoff);
        
        $quickeditavataron = $quickeditavataroff = '';
        settingHTML('quickedit_avatar', $quickeditavataron, $quickeditavataroff );
        // Quick Edit Box Mod End
        
==========
Find Code:
==========

        printsetting1($lang['reportpoststatus'], 'reportpostnew', $reportposton, $reportpostoff);
        
==========
Add Below:
==========

        // Quick Edit Box Mod Begin
        printsetting1($lang['quickedit_status'], 'qestatusnew', $quickediton, $quickeditoff);
        printsetting1($lang['quickedit_avatar'], 'qeavatarnew', $quickeditavataron, $quickeditavataroff);
        // Quick Edit Box Mod End
        
==========
Find Code:
==========

        $smileyinsertnew = formOnOff('smileyinsertnew');
        
==========
Add Below:
==========

        // Quick Edit Box Mod Begin
        $qestatusnew = formOnOff('qestatusnew');
        $qeavatarnew = formOnOff('qeavatarnew');
        // Quick Edit Box Mod End
        
==========
Find Code:
==========

        $db->query("UPDATE ".X_PREFIX."settings SET
        
================
Replace Code With:
================

        $db->query("UPDATE ".X_PREFIX."settings SET
            quickedit_status='$qestatusnew',
            quickedit_avatar='$qeavatarnew',

============================================================================================================================
=======
Step 4:
=======
=======================
Edit File: include/functions.php
=======================
==========
Find Code:
==========

function nav($add=false, $raquo=true) {

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

 // Quick Edit Box Mod Begin
if (version_compare(PHP_VERSION, '5.0.0', '<')) {
    class QuickEdit {
        static function requestVar($var, $default='') {
            return isset($_POST[$var]) ? $_POST[$var] : (isset($_GET[$var]) ? $_GET[$var] : $default);
        }
        static function requestInt($var, $default=0) {
            return (isset($_POST[$var]) && is_numeric($_POST[$var])) ? (int) $_POST[$var] : ((isset($_GET[$var]) && is_numeric($_GET[$var])) ? (int) $_GET[$var] : $default);
        }
        static function update() {
            global $QuickEdit, $db, $lang, $self, $table_members, $SETTINGS, $THEME;
    
            if ($SETTINGS['quickedit_status'] == 'off' || !(isset($_POST['qe_submit']) && !empty($_POST['qe_submit']))) {
                return;
            }
    
            $avatar = '';
            if ($SETTINGS['avastatus'] == 'on') {
                $qe_avatar = checkInput(str_replace(' ', '&20', $_POST['qe_newavatar']), '', '', 'javascript', false);
                if (empty($qe_avatar)) {
                    $avatar = "avatar='$qe_avatar', ";
                    $self['avatar'] = '';
                } else {
                    $newav_size = @getimagesize($qe_avatar);
                    if (!$newav_size && strpos($qe_avatar, '.swf') !== false) {
                        $avatar = "avatar='$qe_avatar', ";
                        $self['avatar'] = $qe_avatar;
                    } else {
                        $max_avsize = explode('x', $SETTINGS['max_avatar_size']);
                        if (($newav_size[0] > $max_avsize[0] && $max_avsize[0] > 0) || ($newav_size[1] > $max_avsize[1] && $max_avsize[1] > 0)) {
                            $avatar = "avatar='$qe_avatar', ";
                            $self['avatar'] = $qe_avatar;
                        }
                    }
                }
            }
    
            $self['mood'] = checkInput($_POST['qe_newmood'], '', '', 'javascript', false);
            $self['invisible'] = (int) $_POST['qe_newinv'];
            $self['theme'] = (int) $_POST['qe_newtheme'];
            $self['sig'] = checkInput($_POST['qe_newsig'], '', $SETTINGS['sightml'], '', false);
            $avatar = "avatar='$qe_avatar', ";
    
            $db->query("UPDATE ".X_PREFIX."members SET $avatar sig='$self[sig]', theme='$self[theme]', mood='$self[mood]', invisible='$self[invisible]' WHERE uid = $self[uid]");
    
            redirect($_SERVER['REQUEST_URI'], 0);
        }
    
        static function display() {
            global $QuickEdit, $db, $lang, $self, $table_themes, $SETTINGS, $THEME;
            
            if ($SETTINGS['quickedit_status'] == 'off') {
                return;
            }
    
            if (X_MEMBER) {
                $_fid = QuickEdit::requestInt('fid');
                $_tid = QuickEdit::requestInt('tid');
                $_pid = QuickEdit::requestInt('pid');
                $_page = QuickEdit::requestInt('page', 1);
                $_member = QuickEdit::requestVar('member');
                $_action = QuickEdit::requestVar('action');
    
                $qe_invon = $qe_invoff = '';
                switch($self['invisible']) {
                    case 1:
                        $qe_invon = ' checked="checked"';
                        break;
                    default:
                        $qe_invoff = ' checked="checked"';
                        break;
                }
    
                $qe_themelist = array();
                $qe_themelist[] = '<select name="qe_newtheme">';
                $qe_themelist[] = '<option value="0">'.$lang['textusedefault'].'</option>';
                $query = $db->query("SELECT themeid, name FROM ".X_PREFIX."themes ORDER BY name ASC");
                while($theme = $db->fetch_array($query)) {
                    $qe_themelist[] = '<option value="'.$theme['themeid'].'"'.(($self['theme'] == $theme['themeid']) ? ' selected="selected"' : '').'>'.stripslashes($theme['name']).'</option>';
                }
                $db->free_result($query);
                $qe_themelist[] = '</select>';
                $qe_themelist = implode("\n", $qe_themelist);
    
                $qe_rowspan   = 3;
                $qe_avatar = $qe_avatarbox = '';
                if ($SETTINGS['avastatus'] == 'on') {
                    $qe_avatarbox = '<tr><td align="left" valign="middle" class="tablerow">'.$lang['textavatarurl'].'</td><td align="left" valign="middle" class="tablerow"><input type="text" name="qe_newavatar" size="30" value="'.$self['avatar'].'" /></td></tr>';
                    if ($SETTINGS['quickedit_avatar'] == 'on' && $self['avatar'] != '') {
                        if (false !== ($pos = strpos($self['avatar'], ',')) && substr($self['avatar'], $pos-4, 4) == '.swf') {
                            $flashavatar = explode(',', $self['avatar']);
                            $qe_avatar = '<object type="application/x-shockwave-flash" data="'.$flashavatar[0].'" width="'.$flashavatar[1].'" height="'.$flashavatar[2].'"><param name="movie" value="'.$flashavatar[0].'" /><param name="allowScriptAccess" value="never" /></object>';
                        } else {
                            $qe_avatar = '<img src="'.$self['avatar'].'" alt="'.$lang['altavatar'].'" />';
                        }
                        
                        $qe_avatar .= "</td>\n<td bgcolor=\"".$THEME['altbg2']."\">";
                        $qe_colspan = 4;
                    }
                }
                $qe_showsig = stripslashes($self['sig']);
                eval('$QuickEdit = "'.template('QuickEdit').'";');
            }
        }
    }
} else {
    class QuickEdit {
        public static function requestVar($var, $default='') {
            return isset($_POST[$var]) ? $_POST[$var] : (isset($_GET[$var]) ? $_GET[$var] : $default);
        }
        public static function requestInt($var, $default=0) {
            return (isset($_POST[$var]) && is_numeric($_POST[$var])) ? (int) $_POST[$var] : ((isset($_GET[$var]) && is_numeric($_GET[$var])) ? (int) $_GET[$var] : $default);
        }
        public static function update() {
            global $QuickEdit, $db, $lang, $self, $table_members, $SETTINGS, $THEME;

            if ($SETTINGS['quickedit_status'] == 'off' || !(isset($_POST['qe_submit']) && !empty($_POST['qe_submit']))) {
                return;
            }

            $avatar = '';
            if ($SETTINGS['avastatus'] == 'on') {
                $qe_avatar = checkInput(str_replace(' ', '&20', $_POST['qe_newavatar']), '', '', 'javascript', false);
                if (empty($qe_avatar)) {
                    $avatar = "avatar='$qe_avatar', ";
                    $self['avatar'] = '';
                } else {
                    $newav_size = @getimagesize($qe_avatar);
                    if (!$newav_size && strpos($qe_avatar, '.swf') !== false) {
                        $avatar = "avatar='$qe_avatar', ";
                        $self['avatar'] = $qe_avatar;
                    } else {
                        $max_avsize = explode('x', $SETTINGS['max_avatar_size']);
                        if (($newav_size[0] > $max_avsize[0] && $max_avsize[0] > 0) || ($newav_size[1] > $max_avsize[1] && $max_avsize[1] > 0)) {
                            $avatar = "avatar='$qe_avatar', ";
                            $self['avatar'] = $qe_avatar;
                        }
                    }
                }
            }

            $self['mood'] = checkInput($_POST['qe_newmood'], '', '', 'javascript', false);
            $self['invisible'] = (int) $_POST['qe_newinv'];
            $self['theme'] = (int) $_POST['qe_newtheme'];
            $self['sig'] = checkInput($_POST['qe_newsig'], '', $SETTINGS['sightml'], '', false);
            $avatar = "avatar='$qe_avatar', ";

            $db->query("UPDATE ".X_PREFIX."members SET $avatar sig='$self[sig]', theme='$self[theme]', mood='$self[mood]', invisible='$self[invisible]' WHERE uid = $self[uid]");

            redirect($_SERVER['REQUEST_URI'], 0);
        }

        public static function display() {
            global $QuickEdit, $db, $lang, $self, $table_themes, $SETTINGS, $THEME;

            if ($SETTINGS['quickedit_status'] == 'off') {
                return;
            }

            if (X_MEMBER) {
                $_fid = QuickEdit::requestInt('fid');
                $_tid = QuickEdit::requestInt('tid');
                $_pid = QuickEdit::requestInt('pid');
                $_page = QuickEdit::requestInt('page', 1);
                $_member = QuickEdit::requestVar('member');
                $_action = QuickEdit::requestVar('action');

                $qe_invon = $qe_invoff = '';
                switch($self['invisible']) {
                    case 1:
                        $qe_invon = ' checked="checked"';
                        break;
                    default:
                        $qe_invoff = ' checked="checked"';
                        break;
                }

                $qe_themelist = array();
                $qe_themelist[] = '<select name="qe_newtheme">';
                $qe_themelist[] = '<option value="0">'.$lang['textusedefault'].'</option>';
                $query = $db->query("SELECT themeid, name FROM ".X_PREFIX."themes ORDER BY name ASC");
                while($theme = $db->fetch_array($query)) {
                    $qe_themelist[] = '<option value="'.$theme['themeid'].'"'.(($self['theme'] == $theme['themeid']) ? ' selected="selected"' : '').'>'.stripslashes($theme['name']).'</option>';
                }
                $db->free_result($query);
                $qe_themelist[] = '</select>';
                $qe_themelist = implode("\n", $qe_themelist);
    
                $qe_rowspan   = 3;
                $qe_avatar = $qe_avatarbox = '';
                if ($SETTINGS['avastatus'] == 'on') {
                    $qe_avatarbox = '<tr><td align="left" valign="middle" class="tablerow">'.$lang['textavatarurl'].'</td><td align="left" valign="middle" class="tablerow"><input type="text" name="qe_newavatar" size="30" value="'.$self['avatar'].'" /></td></tr>';
                    if ($SETTINGS['quickedit_avatar'] == 'on' && $self['avatar'] != '') {
                        if (false !== ($pos = strpos($self['avatar'], ',')) && substr($self['avatar'], $pos-4, 4) == '.swf') {
                            $flashavatar = explode(',', $self['avatar']);
                            $qe_avatar = '<object type="application/x-shockwave-flash" data="'.$flashavatar[0].'" width="'.$flashavatar[1].'" height="'.$flashavatar[2].'"><param name="movie" value="'.$flashavatar[0].'" /><param name="allowScriptAccess" value="never" /></object>';
                        } else {
                            $qe_avatar = '<img src="'.$self['avatar'].'" alt="'.$lang['altavatar'].'" />';
                        }
                        
                        $qe_avatar .= "</td>\n<td bgcolor=\"".$THEME['altbg2']."\">";
                        $qe_colspan = 4;
                    }
                }
                $qe_showsig = stripslashes($self['sig']);
                eval('$QuickEdit = "'.template('QuickEdit').'";');
            }
        }
    }
}
// Quick Edit Box Mod End

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

array_unique(array_merge(func_get_args(), array(

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

array_unique(array_merge(func_get_args(), array('QuickEdit',

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

            templatecache(X_CACHE_PUT, $template['name'], $template['template']);
        }
        $db->free_result($query);
        
===============
Add Code Below:
===============

        // Quick Edit Box Mod Begin
        QuickEdit::display();
        // Quick Edit Box Mod End
        
==========
Find Code:
==========

    if ($showfooter === true) {
        eval('$footer = "'.template('footer').'";');
    } else {
        $footer = '';
    }
    
================
Replace Code With:
================

    if ($showfooter === true) {
        eval('$footer = "'.template('footer').'";');
    } else {
        $footer = $QuickEdit = '';
    }
    
============================================================================================================================
=======
Step 5:
=======
=======================
Edit File: lang/English.lang.php
=======================
========================
Add To End Of File Above ?>
========================

// Quick Edit Box Mod Begin
$lang['quickedit'] = 'Quick Edit';
$lang['quickedit_status'] = 'Quick Edit Status:';
$lang['quickedit_avatar'] = 'Quick Edit Avatar Display:';
// Quick Edit Box Mod End

============================================================================================================================
=======
Step 6:
=======
===============================
Go To Administration Panel --> Templates
===============================
=====================
Create Template: QuickEdit
=====================
=====================================
Paste The Following Code and Hit Submit Changes
=====================================

<br />
<form action="{$_SERVER['REQUEST_URI']}" id="quickedit" name="quickedit" method="post">
<input type="hidden" name="action" value="$_action" />
<input type="hidden" name="fid" value="$_fid" />
<input type="hidden" name="member" value="$_member" />
<input type="hidden" name="page" value="$_page" />
<input type="hidden" name="pid" value="$_pid" />
<input type="hidden" name="tid" value="$_tid" />
<table cellspacing="0" cellpadding="0" border="0" width="{$THEME['tablewidth']}" align="center">
<tr>
<td bgcolor="{$THEME['bordercolor']}">
<table border="0" cellspacing="{$THEME['borderwidth']}" cellpadding="{$THEME['tablespace']}" width="100%">
<tr>
<td class="category" colspan="4"><a title="{$lang['texteditpro']}" href="memcp.php?action=profile"><strong><font color="{$THEME['cattext']}">{$lang['quickedit']}</font></strong></a></td>
</tr>
<tr>
<td bgcolor="{$THEME['altbg2']}">$qe_avatar
<table width="100%" cellpadding="0" cellspacing="0">
<tr class="tablerow">
<td align="left" valign="middle">{$lang['textinvisible']}:</td>
<td align="left" valign="middle"><input type="radio" name="qe_newinv" value="1"$qe_invon />&nbsp;{$lang['textyes']}&nbsp;&nbsp;&nbsp;<input type="radio" name="qe_newinv" value="0"$qe_invoff />&nbsp;{$lang['textno']}</td>
<td align="left" valign="top" rowspan="$qe_rowspan">{$lang['textsig']}<br /><textarea rows="5" cols="45" name="qe_newsig">$qe_showsig</textarea></td>
</tr>
<tr class="tablerow">
<td align="left" valign="middle">{$lang['texttheme']}</td>
<td align="left" valign="middle">$qe_themelist</td>
</tr>
<tr class="tablerow">
<td align="left" valign="middle">{$lang['mood']}</td>
<td align="left" valign="middle"><input type="text" name="qe_newmood" size="30" value="$self[mood]" /></td>
</tr>
$qe_avatarbox
</table>
</td>
</tr>
<tr>
<td bgcolor="{$THEME['altbg2']}" class="ctrtablerow" colspan="4"><input type="submit" class="submit" name="qe_submit" value="{$lang['textsubmitchanges']}" /></td>
</tr>
</table>
</td>
</tr>
</table>
</form>

============================================================================================================================
=======
Step 7:
=======
===============================
Go To Administration Panel --> Templates
===============================
=================
Edit Template: footer
=================
=============================================
Add Code To Beginning Of The Template and Submit Changes
=============================================

$QuickEdit

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