FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 23-11-2012 20:07:46

iDevice
Membre
Inscription : 29-09-2011
Messages : 74

[Résolu] Supprimer les avatars ne faisant référence à aucun utilisateur

Bonsoir,

Après une recherche infructueuse avec le mot clé "avatar" (certaines discussions et plus particulièrement des anciennes MODs 1.2.x paraissaient convenir, mais leur accès au téléchargement est à ce jour rompu sad), je me demandai s'il existait déjà une discussion traitant d'un moyen de récupérer les noms de fichiers correspondant aux Avatars se trouvant sous le répertoire des avatars (o_avatars_dir) ainsi que tous les id utilisateurs de la table des utilisateurs, puis de comparer et supprimer tous les avatars ne faisant référence à aucun utilisateur ?

En effet, il semblerait que certains de mes utilisateurs aient été supprimés manuellement de la table "users" (sans doute lors d'une attaque massive de bots ou alors je ne sais comment l'expliquer autrement), et que leur avatar respectif soit du coup toujours présent sur le serveur.

Mon but est donc de supprimer les images (avatars) inutiles et encore présentes sur le serveur FTP.

Merci d'avance pour votre aide et bon weekend tout le monde. wink

Hors ligne

#2 26-11-2012 02:25:59

iDevice
Membre
Inscription : 29-09-2011
Messages : 74

Re : [Résolu] Supprimer les avatars ne faisant référence à aucun utilisateur

Bonsoir,

Je reviens simplement signaler que quelques heures plus tard après avoir posé ma question (et après avoir fouillé dans la documentation de PHP), j'ai réussi à mettre en place un morceau de code qui fonctionne et qui fait ce dont j'avais besoin (cf. ci-dessous).

Il parait évident que ce code peut-être amélioré et sans doute réduit à quelques lignes étant donné que je ne connais rien au php (c'est d'ailleurs pour cette même raison que je le poste ici au cas où l'un d'entre vous souhaiterait l'optimiser), mais bon... au moins cela marche, ce qui me suffit amplement pour passer ce sujet en "RÉSOLU". tongue

Bonne fin de soirée et bonne nuit tout le monde. wink

// Start deleteOldAvatar : Suppression des avatars inutiles (sur le serveur FTP)

  // Récupération des noms de fichiers correspondant aux Avatars se trouvant sous le répertoire $pun_config['o_avatars_dir']
  function getImagesFiles($dir)
  {
    $names_images = array();
    if (is_dir($dir))
    {
      if ($dh = opendir($dir))
      {
        while (($file = readdir($dh)) !== false)
        {
          if (filetype("$dir/$file") != 'dir' && strpos($file,'.html') === false)
          {
            $names_images[strstr($file,'.',true)] = $file;
          }
        }
        closedir($dh);
      }
    }
    return $names_images;
  }

  // Récupération de tous les id utilisateurs de la table des "Utilisateurs"
  function getUserID()
  {
    global $db;
    $array_ids = array();
    $sql_query = "SELECT id FROM `".$db->prefix."users`;";
    if ($result = $db->query($sql_query))
    {
      while ($user = $result->fetch_assoc())
      {
        $array_ids[] = $user["id"];
      }
      $result->close();
    }
    return $array_ids;
  }

  // Comparaison avec les id utilisateurs, puis suppression de tous les Avatars ne faisant référence à aucun utilisateur
  function deleteOldAvatar($dir)
  {
    $array_user_images = getImagesFiles($dir);
    if(count($array_user_images) > 0)
    {
      $array_users_db = getUserID();
      foreach ($array_user_images as $user_image => $file)
      {
        if(!in_array($user_image,$array_users_db))
        {
          // echo "Suppression de '.$user_image.' (EN SACHANT QUE file = '.$dir.'/'.$file.').<br />";  // Voir la liste des images supprimées du serveur FTP.
          @unlink($dir.'/'.$file);
        }
        else
        {
          // echo "Conservation de '.$user_image.' (EN SACHANT QUE file = '.$dir.'/'.$file.').<br />";  // Voir la liste des images conservées sur le serveur FTP.
        }
      }
    }
  }

  // Exécution de la fonction de suppression des Avatars inutiles encore hébergés sur le serveur FTP
  deleteOldAvatar(PUN_ROOT.$pun_config['o_avatars_dir']);

// End deleteOldAvatar

Hors ligne

Pied de page des forums