Source de preferences.inc

<?

define
("BOXES_COOKIE","boxesBar");

$boxesList = array("nav-bar" => 'Barre de navigation',"sponsor-bar" => 'Publicité',"quick-bar" => 'Liens rapides',"themes-bar" => 'Préférences',"bookmarks-bar" => 'Marque-pages',"news-bar" => 'Liste de diffusion');

function 
getBoxesTable()
{
  global 
$boxesList;

  
$result '';
  
$displayed = array();
  if (isset(
$_COOKIE[BOXES_COOKIE]))
  {
    
$bx_list explode('|'$_COOKIE[BOXES_COOKIE]);
    
array_shift($bx_list);
  }
  else
  {
    
$bx_list array_keys($boxesList);
  }
  
$displayed = array();
  
$actionned getCurrentId($bx_list);
  while(list(
$index$id) = each($bx_list))
  {
    if (
$actionned == $index)
    {
      
$selected 'checked="checked" ';
    }
    else
    {
      
$selected '';
    }

    if (!isset(
$_REQUEST['bx-command']) || (isset($_REQUEST['bxn-'.$id]) && ($_REQUEST['bxn-'.$id])=='on'))
    {
      
$checked 'checked="checked" ';
    }
    else
    {
      
$checked "";
    }

    
$result .= '    <tr id="bx-'.$id.'"><td><input '.$selected.'type="radio" name="bx-id" id="bxr-'.$id.'" value="'.$id.'" /></td><td><label for="bxr-'.$id.'">'.$boxesList[$id].'</label></td><td><input '.'type="checkbox" '.$checked.'name="bxn-'.$id.'" id="bxc-'.$id.'" title="Si cette case est cochée, la boîte '.$boxesList[$id].' sera affichée" /></td></tr>
'
;
    
$displayed[$id] = $boxesList[$id];
  }

  if (isset(
$_COOKIE[BOXES_COOKIE]))
  {
    
$remaining array_diff_assoc($boxesList$displayed);
    while(list(
$id$label) = each($remaining))
    {
      if (isset(
$_REQUEST['bxn-'.$id]) && ($_REQUEST['bxn-'.$id])=='on')
      {
        
$checked 'checked="checked" ';
      }
      else
      {
        
$checked "";
      }

      
$result .= '    <tr id="bx-'.$id.'"><td><input '.'type="radio" name="bx-id" id="bxr-'.$id.'" value="'.$id.'" /></td><td><label for="bxr-'.$id.'">'.$label.'</label></td><td><input '.$checked.'type="checkbox" name="bxn-'.$id.'" id="bxc-'.$id.'" title="Si cette case est cochée, la boîte'.$label.' sera affichée" /></td></tr>
'
;
      
$displayed[$id] = $boxesList[$id];
    }
  }

  return 
$result;
}
function 
getCurrentId($array)
{
  if (isset(
$_REQUEST['bx-id']))
  {
    
$id array_search($_REQUEST['bx-id'], $array);
  }
  else
  {
    
$id 0;
  }
  return 
$id;
}
function 
updatePreferences()
{
  global 
$boxesList;
  if (isset(
$_REQUEST['bx-command']))
  {
    if (!isset(
$_COOKIE[BOXES_COOKIE]))
    {
      
$bx_list array_keys($boxesList);
    }
    else
    {
      
$bx_list explode('|'$_COOKIE[BOXES_COOKIE]);
      
array_shift($bx_list);
    }
    
$id getCurrentId($bx_list);
    switch(
$_REQUEST['bx-command'][0])
    {
      case 
'M':
          if(
$id 0)
          {
            
array_flip_values($bx_list$id$id-1);
          }
      break;
      case 
'D':
          if(
$id < (count($bx_list) - 1))
          {
            
array_flip_values($bx_list$id$id+1);
          }
      break;
      case 
'S':
          
$bx_list = array();
          while (list(
$key$value) = each($_REQUEST))
          {
            if ((
substr($key,0,4) == 'bxn-') && ($value == 'on'))
            {
              
array_push($bx_list,substr($key,4));
            }
          }
      break;
    }
    
$cookieValue '|'.implode('|'$bx_list);
    
setCookie(BOXES_COOKIE$cookieValuetime() + (365*24*3600), "/");
    
$_COOKIE[BOXES_COOKIE] = $cookieValue;
  }
}

?>