PluXml.org

Blog ou CMS à l'Xml

Gestion des formats de fichiers dans le gestionnaire de médias(Edit)

Avec l'arrivé de la gestion de plusieurs niveaux d'utilisateur il m'a semblé logique que le webmestre puisse choisir quelle format de fichier il autorise sur son site, surtout vis à vis des rédacteurs.

Modification(Edit)

Première étape, modifier le fichier core/admin/parametres_avances.php. Après la ligne 84 ajouté :

        <fieldset class="withlabel">
              <legend>Extensions des fichiers dans le gestionnaire de médias :</legend>
              <p class="field">
                  <label>Extensions des images authorisées dans le gestionnaire de médias :</label>
                  <a class="help" title="Sépaées par des virgules"> </a>
              </p>
              <?php plxUtils::printInput('extensions_images_medias', $plxAdmin->aConf['extensions_images_medias']); ?>
              <p class="field">
                  <label>Extensions des documents authorisées dans le gestionnaire de médias :</label>
                  <a class="help" title="Séprées par des virgules"> </a>
              </p>
              <?php plxUtils::printInput('extensions_documents_medias', $plxAdmin->aConf['extensions_documents_medias']); ?>
        </fieldset>

Dans le fichier core/admin/media.php, ligne 184, remplace les lignes :

# Envoi d'un fichier
elseif(!empty($_POST['send']) AND !empty($_FILES)) {
    $plxMedias->upload($dir, $_FILES['file'], $medias);
    header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:''));
    exit;
}

Par

# Envoi d'un fichier
elseif(!empty($_POST['send']) AND !empty($_FILES)) {
    $plxMedias->upload($dir, $_FILES['file'], $medias, $plxAdmin->aConf['extensions_images_medias'], $plxAdmin->aConf['extensions_documents_medias']);
    header('Location: medias.php?dir='.urlencode($dir).($view!=''?'&v='.$view:''));
    exit;
}

Dans le fichier code/lib/class.plx.medias.php, ligne 312, remplacé :

public function upload($dir, $files, $medias) 

Par

public function upload($dir, $files, $medias, $ext_image, $ext_document) 

Ligne 319, après

$ext = strtolower(strrchr(basename($files['name'][$numfile]),'.'));

Ajouter

$ext_images = explode(',', $ext_image);
$ext_documents = explode(',', $ext_document);

Remplacer

if($medias=='images' AND !in_array($ext, array('.gif', '.jpg', '.png')))
    $msg_error = 'Vérifiez le format de vos images: gif, jpg et png uniquement';
elseif($medias=='documents' AND (substr($ext,0,4)=='.php' OR in_array($ext, array('.cgi'))))
    $msg_error = "Type de fichier non autorisé: php, cgi";

Par

if($medias=='images' AND in_array($ext, $ext_images))
    $msg_error = 'Vérifiez le format de vos images. Seul les images aux formats '.$ext_image.' sont autorisé';
elseif($medias=='documents' AND in_array($ext, $ext_documents))
    $msg_error = 'Type de fichier non autorisé. Seul les fichiers aux formats : '.$ext_document.' sont autorisé';

Test(Edit)

Voila la modification est terminé. Maintenant aller sur la page http://www.votresitefr/core/admin/parametre_avances.php et en bas ajouter les extensions de fichiers que vous autorisé sous la forme :

.jpg,.bmp,.gif

Pareil pour les documents.

Pour les dev, dans le fichier install.php je pense qu'en ajoutant des valeurs par défaut au tableau de paramètre comme ça devrait être ok :

'extensions_images_medias' => '.jpg,.gif,.png',
'extensions_documents_medias' => '.doc,.odt',