AddMembergroup issue !!

Started by Nvb, January 02, 2010, 09:16:41 PM

Previous topic - Next topic

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() {"
<?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]}!!";
    }
}
?>


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

never, ever using mysql_*
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'


Nvb


Nvb


[SiNaN]

Instances of $additionalGroups['additionalGroups'] should be $additionalGroups['additional_groups'] in your code, since the field name in the smf_members table is 'additional_groups' and not 'additionalGroups'.

I would suggest using addMembersToGroup() function though. It has a parameter to override permissions in SMF 2.0.

Former SMF Core Developer | My Mods | SimplePortal

Nvb

Is that addMembersToGroup() function working for 2 RC 2.0?

Arantor


Nvb

Fixed! Thanks for the support.  ;D

Ascot

How could you fix the issue?
Cause member groups are replaced, not added on my code.
I need to know please. (make me happy)

Thanks in advance.

Nvb

This was my final code:


<?php

/**********************************************************************************
* SMFShop item                                                                    *
***********************************************************************************
* SMFShop: Shop MOD for Simple Machines Forum                                     *
* =============================================================================== *
* Software Version:           SMFShop 3.0 (Build 12)                              *
* $Date:: 2007-01-18 19:40:57 +1100 (Thu, 18 Jan 2007)                          $ *
* $Id:: PrimaryMemberGroup.php 80 2007-01-18 08:40:57Z daniel15                 $ *
* Software by:                DanSoft Australia (http://www.dansoftaustralia.net/)*
* Copyright 2005-2007 by:     DanSoft Australia (http://www.dansoftaustralia.net/)*
* Support, News, Updates at:  http://www.dansoftaustralia.net/                    *
*                                                                                 *
* Forum software by:          Simple Machines (http://www.simplemachines.org)     *
* Copyright 2006-2007 by:     Simple Machines LLC (http://www.simplemachines.org) *
*           2001-2006 by:     Lewis Media (http://www.lewismedia.com)             *
***********************************************************************************
* 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: AddMembergroup2.php
//      Item

if (!defined('SMF'))
   die(
'Hacking attempt...');

class 
item_AddMembergroup2 extends itemTemplate 
{
function getItemDetails() 
{
        $this->name 'Add Membergroup2';
        
$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['additional_groups']) {
   $additionalGroups['additional_groups'] = $additionalGroups['additional_groups'].",".$item_info[1];
} else {
   $additionalGroups['additional_groups'] = $item_info[1];
}   

echo $additionalGroups['additionalGroups'];          
        $result $smcFunc['db_query']('','
      UPDATE {db_prefix}members 
      SET additional_groups = {string:agp}
        WHERE id_member= {int:id}'
,
           array(
         'id' => $user_info['id'],
         'agp' => $additionalGroups['additional_groups'],
         )
      );

        return 
"Congratulations, you joined the additional mmbergroup {$item_info[1]}!!";
    }
}
?>


Ascot


Advertisement: