============================================================================================================================
Modification Title: Instant Status Update

Version: 1.0

Author: WormHole @ XMB Garage

Contributor: GuldantheWarlock

Description:
This modification will provide an additonal field on the registration form, member profile form and admin profile editor form.
The additonal field is displayed on the index page, in your member profile and on the portal page if the portal is installed to your forum.
You can "quick edit" this field on the index page where the personal features are displayed.

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.

Note: Backup all affected files, templates and database.

Affected Files (4): editprofile.php, member.php, memcp.php, lang/English.lang.php

Affected Templates (4): admintool_editprofile, member_profile, member_reg, memcp_profile

Author Note:
You downloaded this modification from XMB Garage.
Please visit http://www.xmbgarage.com/ for support.

Copyright:  2010 XMB Garage. All Rights Reserved.
============================================================================================================================
=======
Step 1:
=======
====================================
Go To Administration Panel --> Insert Raw SQL
====================================
===================================
Paste The Following Code and Submit Changes:
===================================

ALTER TABLE `$table_members` ADD `instant_status_update` varchar(128) NOT NULL default '';

============================================================================================================================
=======
Step 2:
=======
===========================
Edit File: include/admin.user.inc.php
===========================
==========
Find Code:
==========

    &raquo;&nbsp;<a href="tools.php?action=updatemoods"><?php echo $lang['textfixmoods']?></a><br />

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

    <!-- Instant Status Update Mod Begin -->
    &raquo;&nbsp;<a href="tools.php?action=updateinstantstatuses"><?php echo $lang['textfixinstant_status_updates']?></a><br />
    <!-- Instant Status Update Mod End -->

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

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

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

    // Instant Status Update Mod Begin
    $instant_status_update = isset($newinstant_status_update) ? checkInput($newinstant_status_update, 'no', 'no', 'javascript', false) : '';
    // Instant Status Update Mod End

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

    $sig            = addslashes($sig);

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

    // Instant Status Update Mod Begin
    $instant_status_update = addslashes($instant_status_update);
    // Instant Status Update Mod End

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

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

==================================================
Add Code To End Of Statement Before  WHERE username='$user'");
==================================================

, instant_status_update='$instant_status_update'

============================================================================================================================
=======
Step 4.
=======
==============
Edit: index.php
==============
==========
Find Code:
==========

eval('echo "'.template('header').'";');

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

// Instant Status Update Changer On Index Mod Begin
if (X_MEMBER) {
    if (isset($instant_status_updatesubmit)) {
        $instant_status_update = addslashes($instant_status_update);
        $db->query("UPDATE $table_members SET instant_status_update = '$instant_status_update' WHERE username = '$self[username]'"); 
        $instantstatuschanger = "<tr class=\"tablerow\" bgcolor=\"$altbg1\"><td align=\"center\" colspan=\"3\">$lang[instant_status_updatechanged] </td></tr>"; 
    } else { 
        $instantstatuschanger = "<script language=\"JavaScript\"> 
        function clearForm() { 
            if (document.forms['isuForm'].elements['instant_status_update'].value == '$self[instant_status_update]') { 
                document.forms['isuForm'].elements['instant_status_update'].value = ''; 
            } 
        } 
        </script>"; 
        $self['instant_status_update'] = stripslashes($self['instant_status_update']); 
        $instantstatuschanger .= "<form name=\"isuForm\" method=\"post\" action=\"index.php\"><tr class=\"tablerow\" bgcolor=\"$altbg1\"><td align=\"center\" colspan=\"3\">$lang[newinstant_status_update] <input type=\"text\" name=\"instant_status_update\" class=\"instantchangercss\" size=\"30\" maxlength=\"30\" value=\"$self[instant_status_update]\" onFocus='clearForm();' /> <input type=\"submit\" class=\"instantchangercss\" name=\"instant_status_updatesubmit\" value=\"Submit\" /></td></tr></form>";
    }
}
// Instant Status Update Changer On Index Mod End

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

loadtemplates(

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

loadtemplates(
'member_profile_instant_status',

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

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

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

        // Instant Status Update Mod Begin
        $instant_status_update = isset($instant_status_update) ? checkInput($instant_status_update, '', '', 'javascript', false) : '';
        // Instant Status Update Mod End

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

        $sig           = addslashes($sig);

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

        // Instant Status Update Mod Begin
        $instant_status_update = addslashes($instant_status_update);
        // Instant Status Update Mod End

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

) VALUES (''

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

, instant_status_update) VALUES (''

===============================
Find Code At The End Of This Same Line:
===============================

)");

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

, '$instant_status_update')");

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

            if ($memberinfo['mood'] != '') {
                $memberinfo['mood'] = censor($memberinfo['mood']);
                $memberinfo['mood'] = postify($memberinfo['mood'], 'no', 'no', 'yes', 'no', 'yes', 'no', true, 'yes');
            } else {
                $memberinfo['mood'] = '';
            }

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

            // Instant Status Update Mod Begin
            // create instant_status_update block
            $instant_status_updateblock = '';
            if ($memberinfo['instant_status_update'] != '') {
                $memberinfo['instant_status_update'] = censor($memberinfo['instant_status_update']);
                $memberinfo['instant_status_update'] = postify($memberinfo['instant_status_update'], 'no', 'no', 'yes', 'no', 'yes', 'no', true, 'yes');
                eval('$instant_status_updateblock = "'.template('member_profile_instant_status').'";');
            }
            // Instant Status Update Mod End

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

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

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

        // Instant Status Update Mod Begin
        $instant_status_update = isset($newinstant_status_update) ? checkInput($newinstant_status_update, 'no', 'no', 'javascript', false) : '';
        // Instant Status Update Mod End

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

        $sig            = addslashes($sig);

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

        // Instant Status Update Mod Begin
        $instant_status_update = addslashes($instant_status_update);
        // Instant Status Update Mod End

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

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

=====================================================
Add Code To End Of Statement Before  WHERE username='$xmbuser'");
=====================================================

, instant_status_update='$instant_status_update'

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

    if ($member['mood'] != '') {
        $member['mood'] = censor($member['mood']);
        $member['mood'] = postify($member['mood'], 'no', 'no', 'yes', 'no', 'yes', 'no', true, 'yes');
    } else {
        $member['mood'] = '';
    }

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

    // Instant Update Mod Begin
    if ($member['instant_status_update'] != '') {
        $member['instant_status_update'] = censor($member['instant_status_update']);
        $member['instant_status_update'] = postify($member['instant_status_update'], 'no', 'no', 'yes', 'no', 'yes', 'no', true, 'yes');
    } else {
        $member['instant_status_update'] = '';
    }
    // Instant Update Mod End

============================================================================================================================
=======
Step 7:
=======
===============
Edit File: tools.php
===============
==========
Find Code:
==========

    case 'updatemoods':
        $db->query("UPDATE $table_members SET mood='$lang[nomoodtext]' WHERE mood=''");
        nav($lang['tools']);
        echo "<tr bgcolor=\"$altbg2\" class=\"ctrtablerow\"><td>$lang[tool_completed] - $lang[tool_mood]</td></tr></table></table>";
        end_time();
        eval('echo "'.template('footer').'";');
        exit;
        break;

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

    // Instant Status Update Mod Begin
    case 'updateinstantstatuses':
        $db->query("UPDATE $table_members SET instant_status_update='$lang[noinstant_status_updatetext]' WHERE instant_status_update=''");
        nav($lang['tools']);
        echo "<tr bgcolor=\"$altbg2\" class=\"ctrtablerow\"><td>$lang[tool_completed] - $lang[tool_instant_status_update]</td></tr></table></table>";
        end_time();
        eval('echo "'.template('footer').'";');
        exit;
        break;
    //Instant Status Update Mod End

============================================================================================================================
=======
Step 8:
=======
=======================
Edit File: lang/English.lang.php
=======================
============================
Add Code To End Of File Above  ?>
============================

// Instant Status Update Mod Begin
$lang['memcpinstant_status_update'] = "Your Current Instant Status:";
$lang['instant_status_update'] = "Instant Status:";
$lang['instant_status_updatechanged'] = "Thank you! Your Instant Status has been updated.";
$lang['newinstant_status_update'] = "Your Instant Status for Today is:";
$lang['changeinstant_status_update'] = "Update My Instant Status";
$lang['noinstant_status_updatetext'] = "No Instant Status";
$lang['textfixinstant_status_updates'] = "Reset Blank Instant Statuses";
$lang['tool_instant_status_update'] = 'Instant Statuses Successfully Updated';
$lang['userprofileinstant_status_update'] = "Instant Status:";
// Instant Status Update Mod End

============================================================================================================================
=======
Step 9.
=======
==============
Edit: css template
==============
==========
Find Code:
==========

/*]]>*/
</style>

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

.instantchangercss { 
font-family: Verdana, arial, helvetica, sans-serif; 
font-size: 10px; 
font-weight: normal; 
background-color: $altbg1; 
color: $tabletext; 
}

============================================================================================================================
========
Step 10:
========
===============================
Go To Administration Panel --> Templates
===============================
===========================
Edit Template: admintool_editprofile
===========================
==========
Find Code:
==========

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

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

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[userprofileinstant_status_update]</td>
<td bgcolor="$altbg2"><input type="text" name="instant_status_update" size="25" maxlength="128" value="$member[instant_status_update]" /></td>
</tr>

============================================================================================================================
========
Step 11:
========
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit: index_welcome_member
=======================
==========
Find Code:
==========

<td align="center" width="33%"><a href="#" onclick="Popup('buddy.php', 'Window', 450, 400);"><strong>$lang[launchbuddylist]</strong></a></td>
</tr>

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

$instantstatuschanger

============================================================================================================================
========
Step 12:
========
===============================
Go To Administration Panel --> Templates
===============================
=====================
Edit Template: member_reg
=====================
==========
Find Code:
==========

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

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

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[memcpinstant_status_update]</td>
<td bgcolor="$altbg2"><input type="text" name="instant_status_update" size="25" maxlength="128" value="" /></td>
</tr>

============================================================================================================================
========
Step 13:
========
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit Template: member_profile
=======================
==========
Find Code:
==========

<tr>
<td bgcolor="$altbg1" valign="top" class="tablerow">$lang[userprofilemood]</td>
<td bgcolor="$altbg2" class="tablerow">$memberinfo[mood]</td>
</tr>

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

$instant_status_updateblock

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

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

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

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[instant_status_update]</td>
<td bgcolor="$altbg2"><input type="text" name="newinstant_status_update" size="25" maxlength="128" value="$member[instant_status_update]" /></td>
</tr>

============================================================================================================================
========
Step 15:
========
===============================
Go To Administration Panel --> Templates
===============================
=======================================
Create New Template: member_profile_instant_status
=======================================

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%" valign="top">$lang[userprofileinstant_status_update]</td>
<td bgcolor="$altbg2">$memberinfo[instant_status_update]</td>
</tr>

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

If you have the portal installed then please continue...

============================================================================================================================
========
Step 16:
========
====================================
Go To Administration Panel --> Insert Raw SQL
====================================
=============================
Add Below Query and Submit Changes:
=============================

ALTER TABLE $table_settings ADD portalrisus smallint(30) NOT NULL default '5';

============================================================================================================================
========
Step 17:
========
==================
Edit File: cp_portal.php
==================
==========
Find Code:
==========

        $SETTINGS['portalrmods'] = (int) $SETTINGS['portalrmods'];

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

        // Instant Status Update Mod Begin
        $SETTINGS['portalrisus'] = (int) $SETTINGS['portalrisus'];
        // Instant Status Update Mod End

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

        $portalrmodsnew = (int) $portalrmodsnew;

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

        // Instant Status Update Mod Begin
        $portalrisusnew = (int) $portalrisusnew;
        // Instant Status Update Mod End

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

            portalrmods='$portalrmodsnew',

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

            portalrisus='$portalrisusnew',

============================================================================================================================
========
Step 18:
========
================
Edit File: portal.php
================
==========
Find Code:
==========

loadtemplates(

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

'portal_instant_status_update',

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

$sql = $db->query("SELECT p.*, t.* FROM $table_portal_templates p LEFT JOIN $table_templates t ON t.name = p.name WHERE p.status = 'on' ORDER BY p.displayorder ASC  LIMIT 0 , 30");

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

// Instant Status Update Mod Begin
$isumems_list = '';
$SETTINGS['portalrmods'] = intval($SETTINGS['portalrmods']);
$sql = $db->query("SELECT username, instant_status_update FROM $table_members WHERE instant_status_update != '$lang[noinstant_status_updatetext]' AND instant_status_update != ''  AND instant_status_update != 'Not Defined' ORDER BY RAND() LIMIT 0, $SETTINGS[portalrmods]");
while ($isumems = $db->fetch_array($sql)) {
    if ($isumems['instant_status_update'] != '') {
        $isumems['instant_status_update'] = wordwrap(postify($isumems['instant_status_update'], 'no', 'no', 'yes', 'no', 'yes', 'no', true, 'yes'), 20, '<br />', true);
    } else {
        $isumems['instant_status_update'] = $lang['$lang[noinstant_status_updatetext'];
    }
    $isumems_list .= '<tr><td class="mediumtxt" bgcolor="'.$altbg2.'"><a href="member.php?action=viewpro&amp;member='.rawurlencode($isumems['username']).'">'.$isumems['username'].'</a></td><td class="mediumtxt" bgcolor="'.$altbg1.'">'.$isumems['instant_status_update'].'</td></tr>';
    $isumems_list .= "\n";
}
$db->free_result($sql);
// Instant Status Update Mod End

============================================================================================================================
========
Step 19:
========
========================
Edit File: lang/English.portal.php
========================
============================
Add Code To End Of File Above  ?>
============================

// Instant Status Update Mod Begin
$lang['portalmemberisus'] = "Member Instant Status Updates";
$lang['portalrandomisu'] = "Put the number of members to list randomly who have instant status updates here:";
// Instant Status Update Mod End

============================================================================================================================
========
Step 20:
========
===============================
Go To Administration Panel --> Templates
===============================
============================
Edit Template: padmin_admin_settings
============================
==========
Find Code:
==========

<tr class="tablerow">
<td bgcolor="$THEME[altbg1]" width="50%">$lang[portalrandommod]</td>
<td bgcolor="$THEME[altbg2]"><input type="text" name="portalrmodsnew" value="$portalrmods" size="5" /></td>
</tr>

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

<tr class="tablerow">
<td bgcolor="$THEME[altbg1]" width="50%">$lang[portalrandomisu]</td>
<td bgcolor="$THEME[altbg2]"><input type="text" name="portalrisusnew" value="$portalrisus" size="5" /></td>
</tr>

============================================================================================================================
========
Step 21:
========
==================================================
Go To Administration Panel --> Portal Settings --> Add Portal Blocks
==================================================
========================================
Create New Portal Block: portal_instant_status_update
========================================
========================
Add Code and Submit Changes:
========================

<table cellspacing="0" cellpadding="0" border="0" width="100%" bgcolor="$THEME[bordercolor]">
<tr>
<td>
<table border="0" cellspacing="$THEME[borderwidth]" cellpadding="$THEME[tablespace]" width="100%">
<tr class="category">
<td colspan="2"><strong><font color="$THEME[cattext]">&raquo; $SETTINGS[portalrmods] $lang[portalmemberisus]</font></strong></td>
</tr>
$isumems_list
</table>
</td>
</tr>
</table>

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