pluxml / PluXml

A CMS to create lightweight websites with ease and without database.
http://pluxml.org
GNU General Public License v3.0
218 stars 70 forks source link

If conf usersfolders = 0 admins have full access of medias #691

Closed sudwebdesign closed 10 months ago

sudwebdesign commented 10 months ago

Fix always true if usersfolders === 0

sudwebdesign commented 10 months ago

Belle surprise de pouvoir gérer les dossiers des médias en fonction des profils d'utilisateurs :100: Par contre il est impossible avec le réglage par défaut de l'installeur usersfolders = 0 d'avoir accès en temps qu'admin a tous les dossiers et fichiers de médias mais qu'à mon dossier alias medias/001 Comme cela, tout roule comme attendu.

bazooka07 commented 10 months ago

Effectivement il y a un petit souci. Mais ce n'est pas le seul. A la mise à jour dans le fichier data/configuration/parametres.xml, il faut remplacer, pour le paramètre usersfolder, la valeur 1 par 4 _( PROFILWRITER ) . Et cela m'ennuie de modifier le fichier de données rien que pour cela. L'idée est de permettre aux gens de revenir à la version précèdente de PluXml avec leurs données. Je vais voir si je peux faire autrement

sudwebdesign commented 10 months ago

Petite remarque qui a peut-être son importance:

Après l'enregistrement de la config le zéro fait place a rien

    <parametre name="userfolders">0</parametre>
    <parametre name="usersfolders"></parametre>

alors que la condition (d'origine) est stricte, le problème vient il de là...

D’ailleurs on peut remarquer cet effet avec les options d'affichage Nombre d'articles affichés sur la page d'accueil le champ est vide Comme son paramètre byhomepage dans le xml une fois que l'on a enregistré les options (avec 0 ou rien)

    <parametre name="bypage">5</parametre>
    <parametre name="byhomepage"></parametre>

alors que celui de bypage garde bien le zéro même avec le champ vide??? (Nombre d'articles affichés par page)

    <parametre name="bypage">0</parametre>
    <parametre name="byhomepage"></parametre>

C'est curieux.

sudwebdesign commented 10 months ago

L'idée est de permettre aux gens de revenir à la version précèdente de PluXml avec leurs données

Pourquoi ne pas garder l'ancien paramètre usersfolder qui lui prenait 0 ou 1 (me semble-t-il). Et s'il retourne a une ancienne version de PluXml, un petit passage sur la/les config(s) pour remettre les bonnes données. Et il est même possible que 4 devienne un 1, qui sait ;)

bazooka07 commented 10 months ago

Effectivement créer un nouveau paramètre usersfolders complique les choses. Dans _parametreavances.php, on modifie le tableau $usersOptions comme suit :

$usersOptions = array(
    0 => ucFirst(L_NONE1),
    2 => L_PROFIL_MANAGER,
    3 => L_PROFIL_MODERATOR,
    4 => L_PROFIL_EDITOR,
    1 => L_PROFIL_WRITER, // Rétro-compatibilité pour PluXml version < 5.9.0
);

et dans medias.php, on modifie le test sur _$SESSION['profil'] comme suit :

# Nouvel objet de type plxMedias
$plxMediasRoot = PLX_ROOT.$_SESSION['medias'];
$uf = $plxAdmin->aConf['userfolders'];
if(
    !empty($uf) # Gestion du dossier des medias pour certains utilisateurs
    $_SESSION['profil'] >= ($uf == 1) ? PROFIL_WRITER : $uf - 1; // Rétro-compatibilité pour PluXml version < 5.9.0
) {
    $plxMediasRoot .= $_SESSION['user'].'/';
}
$plxMedias = new plxMedias($plxMediasRoot, $_SESSION['folder'], $plxAdmin->aConf['default_lang']);

Dans les anciennes versions de PluXml, on ne faisait qu'un test boolean _$_SESSION['profil'] :

# Nouvel objet de type plxMedias
$plxMediasRoot = PLX_ROOT.$_SESSION['medias'];
if($plxAdmin->aConf['userfolders'] AND $_SESSION['profil']==PROFIL_WRITER)
    $plxMediasRoot .= $_SESSION['user'].'/';
$plxMedias = new plxMedias($plxMediasRoot, $_SESSION['folder'], $plxAdmin->aConf['default_lang']);

Donc que le paramètre userfolders soit à 1 ou plus ne change rien !

bazooka07 commented 10 months ago

PR https://github.com/pluxml/PluXml/pull/697

bazooka07 commented 10 months ago

Pour le problème d'affichage avec byhomepage, le problème se situe dans plxUtils::printInput() La fonction PHP empty() revoie le même résultat pour '' et 0.

PR https://github.com/pluxml/PluXml/pull/698

sudwebdesign commented 10 months ago

Je teste, et paf le bogue (de rapidité)

Parse error: syntax error, unexpected variable "$_SESSION" in PluXml/core/admin/medias.php on line 37

Corrigé ici, je continue les essais...

sudwebdesign commented 10 months ago

En testant les medias

Pour Reproduire: 1-Connecté en tant qu'admin sur une page de medias 2-Clic droit sur le lien déconnexion pour l'ouvrir ds un nouvel onglet (et le fermer) 3-Recharger l'onglet admin pour être rediriger vers auth.php?p=medias.php 4-Se connecté avec le profil d'un abonné 5-PluXml veut accéder a la page avec param.phpprofil.php comme ceci medias.phpprofil.php

Bogue comme le pr #690