<?php
##
## userlist file
## cookie limit 20 cookies per domain, and limit 4KByes
##
function set_userlist($_userlist$cpath)
{
  global 
$_SERVER;

  
$i sizeof($_userlist) - 1;
  
$values array2str($_userlist); // convert from array to string

  
while(strlen($values) > 3072// 3KBytes
  
{
    unset(
$_userlist[$i]);
    
$values array2str($_userlist);
    
$i--;
  }

  
setcookie('_userlist',$values,__MAXLIFE__,$cpath,'.'.__DOMAIN__);
}

## patch 2003.05.22
##
function unset_all_userlist($cpath)
{
  global 
$_COOKIE$_SERVER;

  
setcookie('_userlist','',0,$cpath,'.'.__DOMAIN__);
}

function 
get_cookie_savepath()
{
  global 
$_SERVER;

  
$path $_SERVER['_URI'].'/';
  if(
$_SERVER['_URI'] != dirname($_SERVER['SCRIPT_NAME']))
  { 
$path '/'; }

  return 
$path;
}

## configuration ################################
##
ini_set('include_path','.:'.dirname(__FILE__).'/..');
require_once 
'_lib/func.globals.php';
require_once 
'_lib/func.stream.php'// for agent_encode()
require_once '_lib/func.parse.php'// array2str(), str2array()
require_once '_lib/func.debug.php';
require_once 
'_conf/config.php';

##################################################

unset($_userlist); // reset

$act $_GET['act'] ? $_GET['act'] : $_POST['act'];
$_userlist str2array($_COOKIE['_userlist']);
$_cpath get_cookie_savepath();

## add lists
##
if($act == 'add')
{
  
## all add
  ##
  
if($_POST['uselect'] == 'all')
  {
    unset(
$addlist); // reset
    
$_path get_paths($_pstream['mp3dir'],$_POST['rpath']);
    list(,
$_files) = get_mp3lists($_path['real']);

    
$size sizeof($_files);
    for(
$i=0$i<$size$i++)
    { 
$addlist[] = agent_encode($_path[subs].$_files[$i]); }

  } else
  {
    
$addlist $_GET['addlist'] ? $_GET['addlist'] : $_POST['_useradd'];
  }

  if(
$_userlist && is_array($_userlist))
  {
    
$_userlist array_merge($addlist,$_userlist); // merge
    
$_userlist array_unique($_userlist); // unique override
    
$_userlist array_values($_userlist); // return by numberic sort
  
}
  else 
$_userlist $addlist;

  
unset_all_userlist($_cpath); // first unset all
  
set_userlist($_userlist,$_cpath);
}

## delete all lists
##
else if($act == 'del')
{
  
unset_all_userlist($_cpath); // first unset all

  
if($_POST['dselect'] != 'all')
  {
    
$dellist $_GET['dellist'] ? $_GET['dellist'] : $_POST['_useradd'];

    
$size sizeof($dellist);
    for(
$i=0$i<$size$i++)
    { unset(
$_userlist["$dellist[$i]"]); }

    
## bug fixed
    ##
    
if($_userlist && is_array($_userlist))
    {
        
$_userlist array_values($_userlist); // return by numberic sort
        
set_userlist($_userlist,$_cpath);
    }
  }
}

$from = array('#playlist','&opener=1');
$url str_replace($from,'',$_SERVER[HTTP_REFERER]);

if(
preg_match('/\?/',$url)) $url .= '&opener=1#playlist';
else 
$url .= '?&opener=1#playlist';

header('Location: '.$url);

$not $_not 1// don't print check microtime result
exit;
?>