Look at you, making me install sNews..... lol
anyway, I fixed it based on the case statement.. order is important:
function get_uri( $var ) {
static $arr;
if (!$arr) {
global $url, $categorySEF, $_catID, $_XNAME, $_ID, $_POS;
$arr = array();
if ( $url ) {
// PageSEF
if( $url[0] && $_ID && $_POS == 3 ) {
$arr['pageSEF'] = $url[0];
}
// CategorySEF
if( $url[0] && $_catID ) {
$arr['categorySEF'] = $url[0];
}
// SubcatSEF
if( $url[1] && $_catID && $_XNAME ) {
$arr['subcatSEF'] = $url[1];
}
// ArticleSEF
if ( $url[2] && $_ID && $_POS == 1 ) {
$arr['articleSEF'] = $url[2];
} elseif ( $url[1] && $_ID && $_POS == 1 ) {
$arr['articleSEF'] = $url[1];
}
// 404
if ($categorySEF == '404') {
$arr['404'] = '404';
}
}
// Home Page
if ( empty($arr) ) {
$arr['home'] = 'home';
}
}
return $arr[$var];
}
function bodyID() {
global $categorySEF;
$id = '';
// Prep for admin pages
$catList = explode(',', l('cat_listSEF'));
$catList[] = 'process';
$catList[] = 'editcomment';
unset( $catList[0], $catList[1], $catList[2] );
switch(true) {
case( get_uri('articleSEF') ):
$id = get_uri('articleSEF');
break;
case( get_uri('subcatSEF') ):
$id = get_uri('categorySEF') .'-'. get_uri('subcatSEF');
break;
case( get_uri('categorySEF') ):
$id = get_uri('categorySEF');
break;
case( get_uri('pageSEF') ):
$id = get_uri('pageSEF');
break;
case( in_array($categorySEF, $catList) || in_array($_GET['action'], $catList) ):
$id = 'admin';
break;
case( get_uri('404') ):
$id = '404';
break;
case( $categorySEF ):
$id = $categorySEF;
break;
case( get_uri('home') ):
$id = get_uri('home');
break;
}
return 'id="'. $id .'"';
}
Works on a fresh install, making a subcat, a page, and a article to the subcat, all works as expected, even admin & 404