Here is a version of the Shop MOD that I created so that it could be installed using EM. It is 2.6.0, so I don't know if it is what you would want. I think it's only a version behind the current but it should install fairly easily using EM...
written to be installed by EasyMod, so I had to convert it to get it to work using EM. This conversion is totally untested, so it wouldn't be surprising if you uncovered some problems. If so, don't hesitate to post them here so we can improve this version of the MOD script...
I don't normally post MOD code here, but since this might benefit those who have installed the Points or Cash MODs, it won't hurt to make an exception this time. Just copy and paste this code into a new Text file and save it, naming it something like ShopMod_EM.txt or something descriptive. Then upload it to your Shop MOD folder in admin/mods. It should now appear in EM's Unprocessed List...
Code: Select all
##############################################################
## MOD Title: Shop MOD
## MOD Author: IcE-RaiN/Zarath < [email protected] > (N/A) http://forums.knightsofchaos.com
## MOD Description: Mod author did not provide a MOD description.
##
## MOD Version: 2.6.0
##
## Installation Level: Easy
## Installation Time: 1 Minute with EasyMod
## Files To Edit: 7
## includes/auth.php
## index.php
## includes/usercp_viewprofile.php
## viewtopic.php
## templates/subSilver/viewtopic_body.tpl
## includes/page_header.php
## templates/subSilver/overall_header.tpl
## Included Files: 12
## shop_install.php
## shop.php
## shop_bs.php
## shop_effects.php
## shop_actions.php
## shop_inventory.php
## admin/admin_shop.php
## templates/subSilver/shop_body.tpl
## templates/subSilver/shop_inventory_body.tpl
## templates/subSilver/admin/shop_config_body.tpl
## shop_install.php
## shop/images/icon_store_rpg.gif
##############################################################
##
## copyright (C) 2002/2003 IcE-RaiN/Zarath
##
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License
## as published by the Free Software Foundation; either version 2
## of the License, or (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## http://www.gnu.org/copyleft/gpl.html
##
##############################################################
## Author Notes:
##
## requires : 2.0.0+ phpbb
## points mod
## OR cash mod version 2.x
##
## Installation - (Skip to Step 3 if using EasyMod)
##
## 1. Create folder shop - EasyMod will do this for you if you use it...
## 2. Upload files - EasyMod will do this for you if you use it...
## shop_install.php
## shop.php
## shop_bs.php
## shop_effects.php
## shop_actions.php
## shop_inventory.php
## admin_shop.php
## shop_body.tpl
## shop_inventory_body.tpl
## shop_config_body.tpl
## shop_install.php
## icon_store_rpg.gif
## 2. Run shop_install.php then delete it. (Unless you use EasyMod)
## 3. Execute Steps Below
## 4. Read the FAQ!
##############################################################
## MOD History:
##
## Released Tuesday, August 19th, 2003
## Modified for EasyMod by Nightrider Tuesday, June 20, 2006
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ SQL ]-------------------------------------------------
#
CREATE TABLE phpbb_shopitems (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL,
shop varchar(32) NOT NULL,
sdesc varchar(80) NOT NULL,
ldesc TEXT NOT NULL,
cost int(20) UNSIGNED DEFAULT '100',
stock TINYINT(3) UNSIGNED DEFAULT '10',
maxstock TINYINT (3) UNSIGNED DEFAULT '100',
sold int(5) UNSIGNED NOT NULL DEFAULT '0',
accessforum int(4) DEFAULT '0',
PRIMARY KEY(id),
INDEX(name)
);
CREATE TABLE phpbb_shops (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
shopname varchar(32) NOT NULL,
shoptype varchar(32) NOT NULL,
type varchar(32) NOT NULL,
restocktime int(20) UNSIGNED DEFAULT '86400',
restockedtime int(20) UNSIGNED DEFAULT '0',
restockamount int(4) UNSIGNED DEFAULT '5',
amountearnt int(20) UNSIGNED DEFAULT '0',
PRIMARY KEY(id),
INDEX(shopname)
);
INSERT INTO phpbb_config (config_name, config_value) values ('multibuys', 'on');
INSERT INTO phpbb_config (config_name, config_value) values ('restocks', 'off');
INSERT INTO phpbb_config (config_name, config_value) values ('sellrate', '75');
INSERT INTO phpbb_config (config_name, config_value) values ('viewtopic', 'images');
INSERT INTO phpbb_config (config_name, config_value) values ('viewprofile', 'images');
INSERT INTO phpbb_config (config_name, config_value) values ('viewinventory', 'grouped');
INSERT INTO phpbb_config (config_name, config_value) values ('specialshop', 'ßstoreÞdisabledßnameÞEffects StoreßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1ßoffÞ1');
INSERT INTO phpbb_config (config_name, config_value) values ('viewtopiclimit', '5');
INSERT INTO phpbb_config (config_name, config_value) values('shop_orderby', 'name');
INSERT INTO phpbb_config (config_name, config_value) values('shop_give', 'on');
INSERT INTO phpbb_config (config_name, config_value) values('shop_trade', 'on');
INSERT INTO phpbb_config (config_name, config_value) values('shop_invlimit', '0');
ALTER TABLE phpbb_users ADD user_effects varchar(255);
ALTER TABLE phpbb_users ADD user_privs varchar(255);
ALTER TABLE phpbb_users ADD user_custitle TEXT;
ALTER TABLE phpbb_users ADD user_specmsg TEXT;
ALTER TABLE phpbb_users ADD user_items TEXT;
ALTER TABLE phpbb_users ADD user_trade TEXT;
#
#-----[ COPY ]------------------------------------------------
#
copy shop_install.php to shop_install.php
copy shop.php to shop.php
copy shop_bs.php to shop_bs.php
copy shop_effects.php to shop_effects.php
copy shop_actions.php to shop_actions.php
copy shop_inventory.php to shop_inventory.php
copy admin_shop.php to admin/admin_shop.php
copy shop_body.tpl to templates/subSilver/shop_body.tpl
copy shop_inventory_body.tpl to templates/subSilver/shop_inventory_body.tpl
copy shop_config_body.tpl to templates/subSilver/admin/shop_config_body.tpl
copy shop_install.php to shop_install.php
copy icon_store_rpg.gif to shop/images/icon_store_rpg.gif
#
#-----[ OPEN ]------------------------------------------------
#
viewtopic.php
#
#-----[ FIND ]------------------------------------------------
# Actual line is longer
#$sql = "SELECT u.username, u.user_level, u.user_id,
$sql = "SELECT u.username,
#
#-----[ IN-LINE FIND ]----------------------------------------
#
, pt.bbcode_uid
#
#-----[ IN-LINE AFTER, ADD ]----------------------------------
#
, u.user_items, u.user_privs, u.user_effects, u.user_custitle
#
#-----[ FIND ]------------------------------------------------
#
//
// Note! The order used for parsing
#
#-----[ BEFORE, ADD ]------------------------------------------
#
if ($board_config['viewtopic'] == "images")
{
$itempurge = str_replace("Þ", "", $postrow[$i]['user_items']);
$itemarray = explode('ß',$itempurge);
$itemcount = count ($itemarray);
$user_items = "<br>";
for ($xe = 0;$xe < $itemcount;$xe++)
{
if ($itemarray[$xe] != NULL)
{
if ($board_config['viewtopiclimit'] < $xe) { $user_items .= ' <a href="'.append_sid("shop.".$phpEx."?action=inventory&searchid=".$postrow[$i]['user_id']).'" title="'.$postrow[$i]['username'].'\'sInventory">more...</a>'; break; }
if (file_exists("shop/images/".$itemarray[$xe].".jpg"))
{
$user_items .= ' <img src="shop/images/'.$itemarray[$xe].'.jpg" title="'.$itemarray[$xe].'" alt="'.$itemaray[$xe].'">';
}
elseif (file_exists("shop/images/".$itemarray[$xe].".gif"))
{
$user_items .= ' <img src="shop/images/'.$itemarray[$xe].'.gif" title="'.$itemarray[$xe].'" alt="'.$itemaray[$xe].'">';
}
}
}
}
$usernameurl = append_sid("shop.".$phpEx."?action=inventory&searchid=".$postrow[$i]['user_id']);
$usereffects = explode("ß", $postrow[$i]['user_effects']);
$userprivs = explode("ß", $postrow[$i]['user_privs']);
$usercustitle = explode("ß", $postrow[$i]['user_custitle']);
$userbs = array();
$usercount = count($userprivs);
for ($x = 0; $x < $usercount; $x++) { $temppriv = explode("Þ", $userprivs[$x]); $userbs[] = $temppriv[0]; $userbs[] = $temppriv[1]; }
$usercount = count($usereffects);
for ($x = 0; $x < $usercount; $x++) { $temppriv = explode("Þ", $usereffects[$x]); $userbs[] = $temppriv[0]; $userbs[] = $temppriv[1]; }
$usercount = count($usercustitle);
for ($x = 0; $x < $usercount; $x++) { $temppriv = explode("Þ", $usercustitle[$x]); $userbs[] = $temppriv[0]; $userbs[] = $temppriv[1]; }
$shoparray = explode("ß", $board_config['specialshop']);
$shoparraycount = count ($shoparray);
$shopstatarray = array();
for ($x = 0; $x < $shoparraycount; $x++)
{
$temparray = explode("Þ", $shoparray[$x]);
$shopstatarray[] = $temparray[0];
$shopstatarray[] = $temparray[1];
}
if (($userbs[10] == on) && ($shopstatarray[12] == on)) { $poster = '<font color="'.$userbs[11].'">'.$poster.'</font>'; }
if ((($userbs[12] == on) && ($shopstatarray[14] == on)) || (($userbs[14] == on) && ($shopstataray[16] = on))) {
$nameeffects = "<span style=\"width:100";
if (($userbs[12] == on) && ($shopstatarray[14] == on)) { $nameeffects .= "; filter:shadow(color=#".$userbs[13].", strength=5)"; }
if (($userbs[14] == on) && ($shopstatarray[16] == on)) { $nameeffects .= "; filter:glow(color=#".$userbs[15].", strength=5)"; }
$nameeffects .= '">'.$poster.'</span>';
$poster = $nameeffects;
}
if ((($userbs[24] == on) && ($shopstatarray[24] == on)) || (($userbs[20] == on) && ($shopstatarray[22] == on)) || (($userbs[22] == on) && ($shopstataray[20] = on)) || (($userbs[18] == on) && ($shopstatarray[18] == on))) {
$titleeffects = '<span style="height:10';
if (($userbs[22] == on) && ($shopstatarray[20] == on)) { $titleeffects .= "; filter:shadow(color=#".$userbs[23].", strength=5)"; }
if (($userbs[20] == on) && ($shopstatarray[22] == on)) { $titleeffects .= "; filter:glow(color=#".$userbs[21].", strength=5)"; }
if (($userbs[24] == on) && ($shopstatarray[24] == on)) { $poster_rank = $userbs[25]; }
if (($userbs[18] == on) && ($shopstatarray[18] == on)) { $poster_rank = '<font color="'.$userbs[19].'">'.$poster_rank.'</font>'; }
$titleeffects .= '">'.$poster_rank.'</span>';
$poster_rank = $titleeffects;
}
if (($shopstatarray[6] == on) && ($userbs[2] != on) && ($poster_rank != "Site Admin")) { $poster_avatar = ""; }
if (($shopstatarray[8] == on) && ($userbs[4] != on) && ($poster_rank != "Site Admin")) { $user_sig = ""; }
if (($shopstatarray[10] == on) && ($userbs[6] != on) && ($poster_rank != "Site Admin")) { $poster_rank = "None"; $rank_image = ""; }
#
#-----[ FIND ]------------------------------------------------
#
'DELETE' => $delpost,
#
#-----[ AFTER, ADD ]------------------------------------------
#
'ITEMSNAME' => $usernameurl,
'ITEMS' => $user_items,
#
#-----[ OPEN ]------------------------------------------------
#
templates/subSilver/viewtopic_body.tpl
#
#-----[ FIND ]------------------------------------------------
#
{postrow.POSTER_FROM}
#
#-----[ IN-LINE FIND ]------------------------------------------
# If this doesn't work, change it to this: {postrow.CASH}
{postrow.POINTS}
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
<br /><a href="{postrow.ITEMSNAME}">Items</a>{postrow.ITEMS}
#
#-----[ OPEN ]------------------------------------------------
#
includes/page_header.php
#
#-----[ FIND ]------------------------------------------------
#
'PAGE_TITLE' => $page_title,
#
#-----[ AFTER, ADD ]------------------------------------------
#
'SHOP' => '<img src="shop/images/icon_store_rpg.gif" border="0">Shop',
#
#-----[ FIND ]------------------------------------------------
#
'U_FAQ' => append_sid('faq.'.$phpEx),
#
#-----[ AFTER, ADD ]------------------------------------------
#
'U_SHOP' => append_sid('shop.'.$phpEx),
#
#-----[ OPEN ]------------------------------------------------
#
templates/subSilver/overall_header.tpl
#
#-----[ FIND ]------------------------------------------------
#
{U_PROFILE}
#
#-----[ IN-LINE FIND ]------------------------------------------
#
<a href="{U_LOGIN_LOGOUT}"
#
#-----[ IN-LINE BEFORE, ADD ]------------------------------------------
#
<a href="{U_SHOP}" class="mainmenu">{SHOP}</a>
#
#-----[ OPEN ]------------------------------------------------
#
includes/usercp_viewprofile.php
#
#-----[ FIND ]------------------------------------------------
#
//
// Generate page
#
#-----[ BEFORE, ADD ]------------------------------------------
#
if ($board_config['viewprofile'] == "images")
{
$itempurge = str_replace("Þ", "", $profiledata['user_items']);
$itemarray = explode('ß',$itempurge);
$itemcount = count ($itemarray);
$user_items = "<br>";
for ($xe = 0;$xe < $itemcount;$xe++)
{
if ($itemarray[$xe] != NULL)
{
if (file_exists('shop/images/'.$itemarray[$xe].'.jpg'))
{
$user_items .= ' <img src="shop/images/'.$itemarray[$xe].'.jpg" title="'.$itemarray[$xe].'" alt="'.$itemaray[$xe].'">';
}
elseif (file_exists('shop/images/'.$itemarray[$xe].'.gif'))
{
$user_items .= ' <img src="shop/images/'.$itemarray[$xe].'.gif" title="'.$itemarray[$xe].'" alt="'.$itemaray[$xe].'">';
}
}
}
$usernameurl = '<a href="'.append_sid('shop.'.$phpEx.'?action=inventory&searchid='.$profiledata['user_id'], true).'" class="nav">Items</a>: ';
}
elseif ($board_config['viewprofile'] == "link")
{
$usernameurl = '<a href="'.append_sid('shop.'.$phpEx.'?action=inventory&searchid='.$profiledata['user_id'], true).'" class="nav">Items</a>';
}
//start of effects store checks
$shoparray = explode("ß", $board_config['specialshop']);
$shoparraycount = count ($shoparray);
$shopstatarray = array();
for ($x = 0; $x < $shoparraycount; $x++)
{
$temparray = explode("Þ", $shoparray[$x]);
$shopstatarray[] = $temparray[0];
$shopstatarray[] = $temparray[1];
}
//end of effects store checks
$usereffects = explode("ß", $profiledata['user_effects']);
$userprivs = explode("ß", $profiledata['user_privs']);
$usercustitle = explode("ß", $profiledata['user_custitle']);
$userbs = array();
$usercount = count($userprivs);
for ($x = 0; $x < $usercount; $x++) { $temppriv = explode("Þ", $userprivs[$x]); $userbs[] = $temppriv[0]; $userbs[] = $temppriv[1]; }
$usercount = count($usereffects);
for ($x = 0; $x < $usercount; $x++) { $temppriv = explode("Þ", $usereffects[$x]); $userbs[] = $temppriv[0]; $userbs[] = $temppriv[1]; }
$usercount = count($usercustitle);
for ($x = 0; $x < $usercount; $x++) { $temppriv = explode("Þ", $usercustitle[$x]); $userbs[] = $temppriv[0]; $userbs[] = $temppriv[1]; }
#
#-----[ FIND ]------------------------------------------------
#
'RANK_IMAGE' => $rank_image,
#
#-----[ AFTER, ADD ]------------------------------------------
#
'INVENTORYLINK' => $usernameurl,
'INVENTORYPICS' => $user_items,
#
#-----[ OPEN ]------------------------------------------------
#
templates/subSilver/profile_view_body.tpl
#
#-----[ FIND ]------------------------------------------------
#
{INTERESTS}
</tr>
#
#-----[ AFTER, ADD ]------------------------------------------
#
<tr>
<td valign="top" align="right" nowrap="nowrap"><span class="gen">{INVENTORYLINK}</span></td>
<td> <span class="gen">{INVENTORYPICS}</span></td>
</tr>
#
#-----[ OPEN ]------------------------------------------------
#
includes/auth.php
#
#-----[ FIND ]------------------------------------------------
#
global $db, $lang;
#
#-----[ AFTER, ADD ]------------------------------------------
#
//start item auths
$itemarray = explode('ß', str_replace("Þ", "", $userdata['user_items']));
$sql = "select name, accessforum from phpbb_shopitems where accessforum != '0'";
if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, "Database Connection Error!<br>".mysql_error()); }
$num_rows = mysql_num_rows($result);
$itemformaccess = array();
for ($x = 0; $x < $num_rows; $x++)
{
$row = mysql_fetch_array($result);
if (in_array($row['name'], $itemarray))
{
$itemformaccess[] = $row['accessforum'];
}
}
#
#-----[ FIND ]------------------------------------------------
#
if ( $forum_id != AUTH_LIST_ALL )
{
$value = $f_access[$key];
#
#-----[ AFTER, ADD ]------------------------------------------
#
if (in_array($forum_id, $itemformaccess) && (!in_array("auth_sticky",$auth_fields) && !in_array("auth_announce",$auth_fields) && !in_array("auth_delete",$auth_fields) && ($userdata['user_level'] == 0)))
{
$value = 1;
}
#
#-----[ FIND ]------------------------------------------------
#
for($k = 0; $k < count($f_access); $k++)
{
$value = $f_access[$k][$key];
$f_forum_id = $f_access[$k]['forum_id'];
#
#-----[ AFTER, ADD ]------------------------------------------
#
if (in_array($forum_id, $itemformaccess) && (!in_array("auth_sticky",$auth_fields) && !in_array("auth_announce",$auth_fields) && !in_array("auth_delete",$auth_fields) && ($userdata['user_level'] == 0)))
{
$value = 1;
}
#
#-----[ OPEN ]------------------------------------------------
#
index.php
#
#-----[ FIND ]------------------------------------------------
#
$is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata, $forum_data);
#
#-----[ AFTER, ADD ]------------------------------------------
#
$itemarray = explode('ß', str_replace("Þ", "", $userdata['user_items']));
$sql = "select name, accessforum from phpbb_shopitems where accessforum != '0' and accessforum > '0'";
if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, "Database Connection Error!".mysql_error()); }
$num_rows = mysql_num_rows($result);
$itemformaccess = array();
$itemcataccess = array();
for ($x = 0; $x < $num_rows; $x++)
{
$row = mysql_fetch_array($result);
if (in_array($row['name'], $itemarray))
{
$itemformaccess[] = $row['accessforum'];
$sql = "select cat_id from " . FORUMS_TABLE . " where forum_id = '{$row['accessforum']}'";
if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, "Database Connection Error: ".mysql_error()); }
$row2 = mysql_fetch_array($result);
$itemcataccess[] = $row2['cat_id'];
}
}
#
#-----[ FIND ]------------------------------------------------
#
//
// Yes, we should, so first dump out the category
#
#-----[ BEFORE, ADD ]------------------------------------------
#
if (in_array($cat_id, $itemcataccess)) {
$display_forums = true;
}
#
#-----[ FIND ]------------------------------------------------
#
if ( $is_auth_ary[$forum_id]['auth_view']
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$is_auth_ary[$forum_id]['auth_view']
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
|| in_array($forum_id, $itemformaccess)
#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------------
#
# EoM