Customizing SMF > SMF Coding Discussion
AddMembergroup issue !!
Nvb:
We are having a problem:
wdm2005 has been helping me with a item for SA Shop.
The code for the item is to make 'buy' an additional Membergroup witch involves also additional member-related boards.
We have inserted this code , but there is a problem.
If a member choose to add a new (secundary) Membergroup, they loose all other one(s).
And that is not good
I'll explain:
Primary Membergroup: Trustee -> they see everything, except board 1 and 2 (membergroup 1 and 2)
Additional Membergroup:
- buy group 1
- buy group 2
The meaning is that they can buy both additional membergroups.
now, if they have bought group 1, and they buy group 2, they loose group 1 and visa versa.
They should be able to have multiple member groups.
What should i do to make it work for multiple Membergroups 2, 3 or more?
Here is the code: (look after "function onUse() {"
--- Code: ---<?php
/**********************************************************************************
* SA Shop item *
***********************************************************************************
* SA Shop: Shop MOD for Simple Machines Forum *
***********************************************************************************
* This program is free software; you may redistribute it and/or modify it under *
* the terms of the provided license as published by Simple Machines LLC. *
* *
* This program is distributed in the hope that it is and will be useful, but *
* WITHOUT ANY WARRANTIES; without even any implied warranty of MERCHANTABILITY *
* or FITNESS FOR A PARTICULAR PURPOSE. *
* *
* See the "license.txt" file for details of the Simple Machines license. *
* The latest version of the license can always be found at *
* http://www.simplemachines.org. *
**********************************************************************************/
//File: AddMembergroup.php
// Item
if (!defined('SMF'))
die('Hacking attempt...');
class item_AddMembergroup extends itemTemplate
{
function getItemDetails()
{
$this->name = 'Add Membergroup';
$this->desc = 'Allows you to add yourself to a membergroup!';
$this->price = 5000;
$this->require_input = false;
$this->can_use_item = true;
}
function getAddInput()
{
global $smcFunc;
$selectBox = '<select name="info1">';
// Get all non post-based membergroups
$result = $smcFunc['db_query']('','
SELECT id_group, group_name
FROM {db_prefix}membergroups
WHERE min_Posts = -{int:id}',
array(
'id' => 1,
)
);
// For each membergroup, add it to the list
while ($row = $smcFunc['db_fetch_assoc']($result))
{
$selectBox .= '<option value="' . $row['id_group'] . '">' . $row['group_name'] . '</option>';
}
$selectBox .= '</select>';
return 'Membergroup: '. $selectBox;
}
function onUse() {
global $smcFunc, $user_info, $item_info;
$additionalGroups = mysql_fetch_array(
$smcFunc['db_query']('','
SELECT additional_groups
FROM {db_prefix}members
WHERE id_member = {int:id}',
array('id' => $user_info['id'],
)
),MYSQL_ASSOC);
if($additionalGroups['additionalGroups']) {
$additionalGroups['additionalGroups'] = $additionalGroups['additionalGroups'].",".$item_info[1];
} else {
$additionalGroups['additionalGroups'] = $item_info[1];
}
echo $additionalGroups['additionalGroups'];
$result = $smcFunc['db_query']('','
UPDATE {db_prefix}members
SET additional_groups = {int:agp}
WHERE id_member= {int:id}',
array(
'id' => $user_info['id'],
'agp' => $additionalGroups['additionalGroups'],
)
);
return "You have joined an additional membergroup {$item_info[1]}!!";
}
}
?>
--- End code ---
Thx in advance for looking into this.
Gtrs
N.
Arantor:
You'd probably be best asking him, actually. Most users here just don't know anything about SA Shop.
Nvb:
Oh, thank you very much for your meaningful answer... :-\
I wouldn't be asking here if we knew the solution.
In fact , this has nothing to do with the mod.
It was just a question so let somebody take a look and give us a little help with the $additionalGroups code.
There is something we did wrong, but don't know what.
So i thought you all know about coding, maybe somebody could help.
Many Thx
Arantor:
So, why are you using mysql_fetch_array, which is listed in the manual as shouldn't be being used anyway...
The reason I asked is because I still don't really understand what that's supposed to do, not to mention the fact you need to bring $smcFunc into scope, followed by calling everything through $smcFunc - never, ever using mysql_* directly.
Nvb:
--- Code: ---never, ever using mysql_*
--- End code ---
Ok i see.
That is not so good then... :-\
The meaning of this all is to let members join the forum in a basic member group, with normal boards.
With a credit system they can "buy" additional member groups.
The additional groups each have there own hidden boards.
So a user can choose the additional group randomly.
(The credit system works good and the AdditionalMembergroup is an item they can buy)
So this system works "almost" like a charm
A member can thus have the following achievable: basic status + group 1 + group 2 + group 3 + ...
The code now works as far as only 1 of the groups is added.
Basically that is good.
But when a member buys a second group, he looses the others.
And that is NOT good.
They need also to remain the previous group(s)
It is some kind of self-controlled automation of "Additional Membergroups:" in the 'Profile' page.
I really hope i gave a good explanation...
PS: it would also be ok if this works with 'Boards' instead of 'Membergroups'
Navigation
[0] Message Index
[#] Next page
Go to full version