Current time: 03-21-2010, 10:38 AM Hello There, Guest! (LoginRegister)


 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[F] Old setting and/or settinggroups not deleted
08-06-2008, 09:34 PM
Post: #1
[F] Old setting and/or settinggroups not deleted
Hello,

I searched... but I think that this bug wasn't reported.

I installed a new fresh and clean install of MyBB 1.2.14, then I uploaded 1.4 files and I ran the upgrade script.

I noticed that some old settings and/or settinggroups weren't deleted from the datababase and keeps appearing in ACP !

Here the list:
- setting name "cssmedium" in "server" settinggroup
- settinggroup name "showteam"
- settinggroup name "banning"
existing in 1.2.14 but no more used 1.4 are displayed in ACP.

The upgrade script doesn't delete them from the db.

An oversight ?

Regards
Find all posts by this user
08-07-2008, 12:57 AM
Post: #2
RE: Old setting and/or settinggroups not deleted
install/upgrade.php

PHP Code:
    foreach($settinggroups as $groupname)
    {
        if(!
in_array($groupname$settinggroupnames))
        {
            
$db->delete_query("settinggroups""gid='".$settinggroups[$groupname]."'"1);
        }
    }
    
    foreach(
$settings as $settingname)
    {
        if(!
in_array($settingname$settingnames))
        {
            
$db->delete_query("settings""sid='".$settings[$settingname]."'"1);
        }
    } 

lines 790-804.

First person to figure out what's wrong and can provide a solution that's been tested and works with independent sources, gets 5$ (paypal)

[Image: ryangordon.png]
My Blog - My Mods
Visit this user's website Find all posts by this user
08-07-2008, 02:09 AM
Post: #3
RE: Old setting and/or settinggroups not deleted
Hmm, shouldn't it be...

PHP Code:
foreach($settinggroups as $groupname => $gid)
{
    if(!
in_array($groupname$settinggroupnames))
    {
        
$db->delete_query("settinggroups""gid='{$gid}'"1);
    }
}

foreach(
$settings as $settingname => $sid)
{
    if(!
in_array($settingname$settingnames))
    {
        
$db->delete_query("settings""sid='{$sid}'"1);
    }


First person to test that "with independent sources" gets $5 from Tikitiki. Big Grin
Visit this user's website Find all posts by this user
08-07-2008, 02:21 AM (This post was last modified: 08-07-2008 02:23 AM by LegosJedi.)
Post: #4
RE: Old setting and/or settinggroups not deleted
EDIT: Gah, you beat me! Dang it! It'll work. It pretty much does the same thing as my code, but yours is probably more efficient.

Here's my fix, Tikitiki. Tested and works! Starts at line 679 and goes to line 768.

PHP Code:
        $query $db->simple_select("settings""name,sid""isdefault='1' OR isdefault='yes'");
        while(
$setting $db->fetch_array($query))
        {
            
$settings[$setting['sid']] = $setting['name'];
        }
        
        
$query $db->simple_select("settinggroups""name,title,gid""isdefault='1' OR isdefault='yes'");
        while(
$group $db->fetch_array($query))
        {
            
$settinggroups[$group['gid']] = $group['name'];
        }
    }
    
$settings_xml file_get_contents(INSTALL_ROOT."resources/settings.xml");
    
$parser = new XMLParser($settings_xml);
    
$parser->collapse_dups 0;
    
$tree $parser->get_tree();
    
$settinggroupnames = array();
    
$settingnames = array();

    foreach(
$tree['settings'][0]['settinggroup'] as $settinggroup)
    {
        
$settinggroupnames[] = $settinggroup['attributes']['name'];
        
        
$groupdata = array(
            
"name" => $db->escape_string($settinggroup['attributes']['name']),
            
"title" => $db->escape_string($settinggroup['attributes']['title']),
            
"description" => $db->escape_string($settinggroup['attributes']['description']),
            
"disporder" => intval($settinggroup['attributes']['disporder']),
            
"isdefault" => $settinggroup['attributes']['isdefault']
        );
        if(!
$settinggroups[$settinggroup['attributes']['name']] || $redo == 2)
        {
            
$gid $db->insert_query("settinggroups"$groupdata);
            ++
$groupcount;
        }
        else
        {
            
$gid $settinggroups[$settinggroup['attributes']['name']];
            
$db->update_query("settinggroups"$groupdata"gid='{$gid}'");
        }
        
        if(!
$gid)
        {
            continue;
        }
        
        foreach(
$settinggroup['setting'] as $setting)
        {
            
$settingnames[] = $setting['attributes']['name'];
            
            
$settingdata = array(
                
"name" => $db->escape_string($setting['attributes']['name']),
                
"title" => $db->escape_string($setting['title'][0]['value']),
                
"description" => $db->escape_string($setting['description'][0]['value']),
                
"optionscode" => $db->escape_string($setting['optionscode'][0]['value']),
                
"disporder" => intval($setting['disporder'][0]['value']),
                
"gid" => $gid,
                
"isdefault" => 1
            
);
            if(!
$settings[$setting['attributes']['name']] || $redo == 2)
            {
                
$settingdata['value'] = $db->escape_string($setting['settingvalue'][0]['value']);
                
$db->insert_query("settings"$settingdata);
                
$settingcount++;
            }
            else
            {
                
$name $db->escape_string($setting['attributes']['name']);
                
$db->update_query("settings"$settingdata"name='{$name}'");
            }
        }
    }
    
    foreach(
$settinggroups as $groupname)
    {
        if(!
in_array($groupname$settinggroupnames))
        {
            
$gid array_search($groupname$settinggroups);
            
$db->delete_query("settinggroups""gid='".$gid."'"1);
        }
    }
    
    foreach(
$settings as $settingname)
    {
        if(!
in_array($settingname$settingnames))
        {
            
$sid array_search($settingname$settings);
            
$db->delete_query("settings""sid='".$sid."'"1);
        }
    } 


Please do not PM me about problems you might be having with MyBB. Post a thread, and someone on the support or development team will take a look at it.
Visit this user's website Find all posts by this user
08-07-2008, 02:24 AM
Post: #5
RE: Old setting and/or settinggroups not deleted
Oops, sorry, I guess I didn't mention that staff don't count Toungue





j/k PM me or something if you really want it.

[Image: ryangordon.png]
My Blog - My Mods
Visit this user's website Find all posts by this user
08-07-2008, 02:30 AM
Post: #6
[F] Old setting and/or settinggroups not deleted
Thank you for your bug report.

This bug has been fixed in our internal code repository. Please note that the problem will not be fixed here until these forums are updated.

[Image: ryangordon.png]
My Blog - My Mods
Visit this user's website Find all posts by this user


Forum Jump: