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, $cookieValue, time() + (365*24*3600), "/");
    
$_COOKIE[BOXES_COOKIE] = $cookieValue;
  }
}

?>