$b['chat']) ? -1 : 1; } return ($a['view'] > $b['view']) ? -1 : 1; } function SortListTitle($a, $b) { if ($a['title'] == $b['title']) { return SortListView($a, $b); } return strcmp($a['title'], $b['title']); } function SortListDesc($a, $b) { if ($a['desc'] == $b['desc']) { return SortListTitle($a, $b); } return strcmp($a['desc'], $b['desc']); } function SortListCat($a, $b) { if ($a['cat'] == $b['cat']) { return SortListView($a, $b); } return strcmp($a['cat'], $b['cat']); } function SortListChat($a, $b) { if ($a['chat'] == $b['chat']) { return SortListView($a, $b); } return ($a['chat'] > $b['chat']) ? -1 : 1; } function SortListStat($a, $b) { if ($a['stat'] == $b['stat']) { return SortListTitle($a, $b); } return strcmp($a['stat'], $b['stat']); } function DisplaySortedChats($filter='', $cat=0, $sort='view') { $output = ''; $chats = array(); $cat = SQL_EscapeString($cat); if ($cat) $rez = SQL_Query("SELECT category,id,path,flags,title,description,EXTRACT(EPOCH FROM created) as created FROM {$GLOBALS['sql_prefix']}chats WHERE category='{$cat}' AND id!=0", NULL); else $rez = SQL_Query("SELECT category,id,path,flags,title,description,EXTRACT(EPOCH FROM created) as created FROM {$GLOBALS['sql_prefix']}chats WHERE id!=0", NULL); $num = SQL_NumRows($rez); for($i=0;$i<$num;$i++) { $row = SQL_FetchAssoc($rez, $i); $chats[] = $row; } $cats = array(); $rez = SQL_Query("SELECT id,shortdesc FROM {$GLOBALS['sql_prefix']}categories", $rez); $num = SQL_NumRows($rez); for($i=0;$i<$num;$i++) { $row = SQL_FetchAssoc($rez, $i); $cats[$row['id']] = $row['shortdesc']; } $viewers = array(); $timer = time()-$GLOBALS['chatlist_viewlimit']; $rez = SQL_Query("SELECT DISTINCT session_id,chat FROM {$GLOBALS['sql_prefix']}online WHERE utime>(now() - INTERVAL '{$GLOBALS['chatlist_viewlimit']} seconds')", $rez); $num = SQL_NumRows($rez); for($i=0;$i<$num;$i++) { $row = SQL_FetchAssoc($rez, $i); $viewers[] = $row; } $rez = SQL_Query("SELECT DISTINCT ips FROM {$GLOBALS['sql_prefix']}online WHERE utime>(now() - INTERVAL '{$GLOBALS['chatlist_viewlimit']} seconds')", $rez); $GLOBALS['realviewers'] = SQL_NumRows($rez); $chatters = array(); $rez = SQL_Query("SELECT chat FROM {$GLOBALS['sql_prefix']}userlist WHERE posttime>(now() - INTERVAL '{$GLOBALS['chatlist_postlimit']} minutes')", $rez); $num = SQL_NumRows($rez); for($i=0;$i<$num;$i++) { $row = SQL_FetchAssoc($rez, $i); $chatters[] = $row; } SQL_FreeResult($rez); SQL_Done(); $GLOBALS['listback'] = $GLOBALS['theme']['listback2']; $find = array( '{LISTBACK}', '{PATH}', '{TITLE}', '{DESCRIPTION}', '{VIEWERS}', '{CHATTERS}', '{STATUS}', '{CATEGORY}' ); $chatlist = array(); $GLOBALS['numchats'] = 0; $GLOBALS['numviewers'] = 0; $GLOBALS['numchatters'] = 0; $cx = count($chats); for($cc=0;$cc<$cx;$cc++) { $GLOBALS['id'] = $chats[$cc]['id']; if (!AnyFlags($GLOBALS['id']) && CheckFlags($chats[$cc]['flags'], 'H')) continue; // Won't show hidden chats unless the viewer is a member of the chat. $filter = str_replace('@', '', $filter); $filter = str_replace('\\', '', $filter); if ($filter) { if (!preg_match("@{$filter}@is", $chats[$cc]['title'])) continue; /* && !preg_match("/{$filter}/is", $chats[$cc]['description']) */ } $chatlist[$cc]['path'] = $chats[$cc]['path']; $chatlist[$cc]['title'] = UTF8Entities($chats[$cc]['title']); $chatlist[$cc]['desc'] = $chats[$cc]['description']; $chatlist[$cc]['cat'] = $cats[$chats[$cc]['category']]; $chatlist[$cc]['view'] = ArrayOccurance($viewers, 'chat', $chats[$cc]['id']); $chatlist[$cc]['chat'] = ArrayOccurance($chatters, 'chat', $chats[$cc]['id']); $chatlist[$cc]['status'] = ''; if (CheckFlags($chats[$cc]['flags'], 'R')) $chatlist[$cc]['status'] .= $GLOBALS['theme']['chatlistnoaccess']; else if (CheckFlags($chats[$cc]['flags'], 'r')) $chatlist[$cc]['status'] .= $GLOBALS['theme']['chatlistnowrite']; if ($chats[$cc]['created'] >= time()-($GLOBALS['new_chat_limit']*86400)) $chatlist[$cc]['status'] .= $GLOBALS['theme']['chatlistnewchat']; if (CheckFlags($chats[$cc]['flags'], 'c')) $chatlist[$cc]['status'] .= $GLOBALS['theme']['chatlistconstruct']; $GLOBALS['numchatters'] += $chatlist[$cc]['chat']; $GLOBALS['numviewers'] += $chatlist[$cc]['view']; $GLOBALS['numchats']++; } $GLOBALS['numchats'] = $GLOBALS['numchats'].' of '.count($chats); $output .= PrettyParse($GLOBALS['theme']['chatlisthead']); sort($chatlist); if ($sort == 'view') usort($chatlist, 'SortListView'); else if ($sort == 'title') usort($chatlist, 'SortListTitle'); else if ($sort == 'stat') usort($chatlist, 'SortListStat'); else if ($sort == 'chat') usort($chatlist, 'SortListChat'); else if ($sort == 'cat') usort($chatlist, 'SortListCat'); else if ($sort == 'desc') usort($chatlist, 'SortListDesc'); else usort($chatlist, 'SortListView'); $cx = count($chatlist); for($cc=0;$cc<$cx;$cc++) { $GLOBALS['listback'] = ($GLOBALS['listback'] == $GLOBALS['theme']['listback2']) ? $GLOBALS['theme']['listback1'] : $GLOBALS['theme']['listback2']; $repl = array( $GLOBALS['listback'], $chatlist[$cc]['path'], $chatlist[$cc]['title'], $chatlist[$cc]['desc'], $chatlist[$cc]['view'], $chatlist[$cc]['chat'], $chatlist[$cc]['status'], $chatlist[$cc]['cat'] ); $output .= str_replace($find, $repl, $GLOBALS['theme']['chatlistentry']); } $output .= PrettyParse($GLOBALS['theme']['chatlistfoot']); return $output; } ?>