Problemas con caracteres no alfanuméricos en nombres de usuario

Hola, acabo de publicar un topic sobre este tema en el grupo de desarrollo de plugins:

http://community.elgg.org/mod/groups/topicposts.php?topic=211824&group_guid=7

Resumiendo en español:

Cuando un nombre de usuario tiene caracteres no alfanuméricos y se tiene activada la "site-caché" el icono de dicho usuario no se ve correctamente.

Esto ocurre porque los iconos se guardan en un árbol de directorio creado a partir de las letras del nombre de usuario. Como muchos sistemas no soportan directorios con este tipo de caracteres, el icono parece que no se guarda bien.

Aunque el asunto requeriría una solución más limpia, hay una forma para hacer que al menos en español salgan bien y es deshabilitando la caché para este error en concreto. No recomiendo hacer esto sin tener conocimiento pleno de lo que significa:

En

mod/profile/icondirect.php

sobre la línea 75, comentamos la sacada de icono para elementos no encontrados y lo sustituimos por el mismo código que si la caché no está activada:

if ($simplecache_enabled) {
   $filename = $dataroot . $matrix . "{$username}/profile/" . $username . $size . ".jpg";
   $contents = @file_get_contents($filename);
   if (empty($contents)) { 
   
          mysql_close($mysql_dblink);
    require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
    set_input('username',$username);
    set_input('size',$size);
    require_once(dirname(__FILE__).'/icon.php');
    
    /*  
    global $viewinput;
    $viewinput['view'] = 'icon/user/default/'.$size;
    ob_start();
    include(dirname(dirname(dirname(__FILE__))).'/simplecache/view.php');
    $loc = ob_get_clean();
    header('Location: ' . $loc);
    exit;
    //$contents = @file_get_contents(dirname(__FILE__) . "/graphics/default{$size}.jpg");
    */
    
   } else {  
   

    header("Content-type: image/jpeg");
    header('Expires: ' . date('r',time() + 864000));
    header("Pragma: public");
    header("Cache-Control: public");
    header("Content-Length: " . strlen($contents));
    $splitString = str_split($contents, 1024);
    foreach($splitString as $chunk)
     echo $chunk;
      
   }
  } else {
    mysql_close($mysql_dblink);
    require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
    set_input('username',$username);
    set_input('size',$size);
    require_once(dirname(__FILE__).'/icon.php');
  } 

Spanish Community Group

Spanish Community Group

Spanish support group. Grupo de apoyo de usuarios en español