Yes, this is really fixed, as the function is actually much different in the next build. The above edit was simply to fix the db error without "upgrading" your file. You can use the updated function by replacing the entire function
Code:
function special_cache_ordered_forums()
{
global $vault;
$space = $vault->namespacecache[SPECIAL_SPACE];
$vault->misc['orderforums'] = true;
if (
!$space['forumid'] OR
!$vault->permissions['view']['all'] OR
!$vault->permissions['view']['specialpages']
)
{
return;
}
global $vbulletin, $foruminfo;
if (empty($vault->special['pages']))
{
require_once(DIR . '/vault/special_class_special.php');
$special = new vB_SpecialFactory($vbulletin);
}
$special = array(
'title' => $GLOBALS['vbphrase']['specialpages_title'],
'namespaceid' => SPECIAL_SPACE
);
$vault->urlgenerate($special);
$vault->misc['specialforum'] = 0;
for ($i = 65535; $i > -1; $i--)
{
if (empty($vbulletin->forumcache["$i"]))
{
$vault->misc['specialforum'] = $i;
break;
}
}
$spaceid = $space['forumid'];
$space['forumid'] = $vault->misc['specialforum'];
if (!$space['forumid'])
{
// there were no available forums, wtf
return;
}
$vbulletin->forumcache[$space['forumid']] = array(
'forumid' => $space['forumid'],
'title' => $space['title'],
'displayorder' => $space['displayorder'],
'childlist' => $space['forumid'] . ',-1',
'parentlist' => $space['forumid'] . ",$spaceid,-1",
'parentid' => $spaceid,
'options' => $vbulletin->bf_misc_forumoptions['active'],
'link' => $special['url'],
'vault_type' => 1,
'threadcount' => count($vault->special['pages']),
'replycount' => count($vault->special['pages']),
'permissions' => $vbulletin->forumcache["$spaceid"]['permissions']
);
foreach (explode(',', $vbulletin->forumcache["$spaceid"]['parentlist']) AS $parent)
{
if ($parent == -1)
{
continue;
}
$vbulletin->forumcache["$parent"]['childlist'] = str_replace(',' . $spaceid . ',', ',' . $spaceid . ',' . $space['forumid'] . ',', $vbulletin->forumcache["$parent"]['childlist']);
}
foreach (explode(',', $vbulletin->forumcache["$spaceid"]['childlist']) AS $child)
{
if (
$child == -1 OR
$child == $spaceid OR
$vbulletin->forumcache["$child"]['displayorder'] < $space['displayorder']
)
{
continue;
}
// this should reorder later entries after wikis
$pop = $vbulletin->forumcache["$child"];
unset($GLOBALS['vbulletin']->forumcache["$child"]);
$GLOBALS['vbulletin']->forumcache["$child"] = $pop;
}
// make the browsers correct
if ($foruminfo['forumid'] AND $foruminfo['forumid'] == $spaceid)
{
$foruminfo['childlist'] = $vbulletin->forumcache["$spaceid"]['childlist'];
}
if (!$vbulletin->options['showprivateforums'])
{
// permissions don't really exist, inherit
$vbulletin->userinfo['forumpermissions'][$space['forumid']] = $vbulletin->bf_ugp_forumpermissions['canview'];
}
}