mathiasm a écrit:
Mais dans ce cas, je crée bien une catégorie virtuelle pour gérer des droits et pas pour organiser mes photos.
Je ne dis pas qu'il est nécessaire de le mettre en oeuvre, j'ai dit que c'est là où on voulait aller. Si on ne peut pas, on ne le fera pas. Mais si on peut, tant mieux. :-)
Tu as raison et avant qu'on reparte dans toute cette discussion sur "ça sert à quoi ?" la proposition de z0rglub me paraissait presque claire.
En tous cas, elle semblait répondre à mon besoin.
Un autre inconvénient à l'utilisation des catégories pour les permissions :
Comme les catégories apparaissent dans les url, si j'envoie une url vers une image et que je me plante, la personne ne pourra peut-être pas la voir alors qu'en réalité elle aurait le droit.
Si j'envoie l'url des photos de la soirée à des gens qui peuvent tout voir et d'autres seulement une partie, il faut que je fasse 2 mails avec 2 url différentes.
<:o)
Hors ligne
rvelices a écrit:
Juste une pensee passagere. Quelqu'un aurait un interet d'avoir une gestion des permissions pour le upload des images dans une categorie ? (aujourd'hui c'est tous le monde ou personne).
Ça peut être très utile.
Et d'autres le souhaitent : http://forum.phpwebgallery.net/viewtopic.php?id=8477
Hors ligne
Je remonte ce sujet juste pour dire que je compte implementer pour la version 1.8 mon systeme simplifie des droits image par image http://bugs.phpwebgallery.net/view.php?id=731
en grandes lignes:
- chaque photo a un niveau (0,1,2...)
- chaque utilisateur a un niveau (0,1,2...)
- une photo est visible par un utilisateur si niveau(utilisateur) >= niveau(photo)
Hors ligne
parfait ... car moi je ne peux plus m en passer ...
parcontre j en ai surement deja discuté avec toi, car j avais apporté une modif a ton MOD ...
au lieu de me baser sur 1 seul filtrage par niveau j'en ai mis plusieurs ... cela fonction biensur de la meme facon que toi je n'ai fais qu ajouter 2 autres filtrages par niveau et le fonctionnement de filtrage est le meme sachant que c est le niveau le plus haut qui l'emporte !
pourquoi cela :
car chaque filtrage par niveau represente un besoin different mais qui est global pour l'ensemble de mes categories ( chez moi on est plusieurs sur la galerie donc chacun son filtrage ;o)
ma question : penses tu que ca sera trop galere de pouvoir faire en sorte que l'admin puisse choisir le nombre de filtrage par niveau utilisable et leurs donner des noms
voila comment j imagine le truc :
une page d'admin avec n ligne qui representent chacunes un filtrage par niveau : son nom , niveau par defaut 0 a 9 , une case a cocher pour l'activer ou non
je ne sais pas si c est possible de gere ca en dynamique mais si on on par si un nombre statique de filtrage = 5 a 10 max
ce n est biensur qu une propal car je me doute que ca doit representer beaucoup de boulot !
et j'essayerai de porter mes modifs au cas ou ce ne sera pas possible sur la 1.8
par contre penses tu garder la meme base ou non car sinon je vai etre obligé de tout renoté image par image !
Hors ligne
Nicco a écrit:
au lieu de me baser sur 1 seul filtrage par niveau j'en ai mis plusieurs ... cela fonction biensur de la meme facon que toi je n'ai fais qu ajouter 2 autres filtrages par niveau et le fonctionnement de filtrage est le meme sachant que c est le niveau le plus haut qui l'emporte !
...
une page d'admin avec n ligne qui representent chacunes un filtrage par niveau : son nom , niveau par defaut 0 a 9 , une case a cocher pour l'activer ou non
desole, mais je pense pas. deja avec le systeme minimal il ya ura de gens qui vont trouver ca complique ... je ne voudrais pas le compliquer plus ...
Nicco a écrit:
par contre penses tu garder la meme base ou non car sinon je vai etre obligé de tout renoté image par image !
certainement pas le nom de colonnes contenant mon prenom; mais ca sera facile pour toi de migrer
- delete column #forbidden_images
- upgrader a 1.8
- sql pour copier les anciennes radu_level vers nouvelles colonnes
- virer les vieilles colonnes radu_level
Hors ligne
rvelices a écrit:
Je remonte ce sujet juste pour dire que je compte implementer pour la version 1.8 mon systeme simplifie des droits image par image http://bugs.phpwebgallery.net/view.php?id=731
en grandes lignes:
- chaque photo a un niveau (0,1,2...)
- chaque utilisateur a un niveau (0,1,2...)
- une photo est visible par un utilisateur si niveau(utilisateur) >= niveau(photo)
Avoir cette gestion des permissions est une bonne idée.
Couplée avec la version actuelle, ça va permettre de simplifier un peu la gestion de certains galeries.
Par contre, ce qui me gêne, c'est qu'on va proposer 2 systèmes de gestion de permission et que cela risque de perturber certains utilisateurs. Je pense que c'est un élément important à prendre en compte.
Dans un premier temps, je me suis dit que ce nouveau système de gestion devait être proposer par défaut dans pwg mais par le biais d'un plugin de base (c.a.d. table indépendante ou alter, etc...).
Mais pourquoi un plugin pour l'un et pas pour l'autre? D'ou ma 2eme réflexion pourquoi ne pas livrer les 2 systèmes de permissions comme des plugins. C'est moins complexe pour l'utilisateur et ca permettrai de pouvoir intégrer facilement tous les systèmes possibles.
Dans ce cas, on ne touche pas aux groupes ni aux catégories.
Un groupe = ensemble de d'utilisateurs utilisables pour les envois de mails ou les plugins de permissions ou autres.
Une catégorie privée = une catégorie privé est une catégorie non accessible sauf si un plugin de permission surcharge la règle.
Si on fait ca, bien entendu les plugins s'intégreront dans l'environnement actuel sans passer par la page admin des plugins (c.a.d. que les plugins s'intégreront dans les pages liste des users, liste des groupes, liste des catégories, ...)
C'est certes plus de travail mais au final plus simple pour les utilisateurs et les développeurs?
Qu'en pensez-vous?
Hors ligne
Quand je cherchais à faire construire un site, un programme pour mettre mes photos en ligne, c'est exactement ce que j'avais mis dans mon cahier des charges...
Puis j'ai trouvé PWG et je me suis adapté.... gérer les permissions par catégorie est assez transparent et simple, cela me convient bien.
Ton idée couplée au système de plugin pour éviter d'embrouiller l'utilisateur non expert est très bonne.
Il faudra voir comment utiliser ce nouveau système, si il est nécessaire ou pas, selon chaque galerie.....
- A quel moment donner un niveau aux photos..?
- Avant (par un champs IPTC?) ou après la synchro, dans PWG.. (il faudra alors lister tous les fichiers, avec des vignettes...) ?
- Gestion des niveaux par lot de photos ?
A priori, je ne serais pas concerné par cela pour ma galerie principale http://v-images.com/abonnes17S, mais cela pourrait convenir aux galeries dites "privées", genre http://Matmut.serveur-photos.com ou http://honda.sport-cars-club.com/
merci pour tout.
éric.
Hors ligne
vimages a écrit:
Ton idée couplée au système de plugin pour éviter d'embrouiller l'utilisateur non expert est très bonne.
Il faudra voir comment utiliser ce nouveau système, si il est nécessaire ou pas, selon chaque galerie.....
Tout à fait!
C'est pourquoi il faut pas donner trop de systèmes de base.
un système simple pour les permissions par catégorie
+ un système simple pour les permissions par images
+ les 2 plugins/systèmes compatibles entre eux
+ les bases pour faire des plugins avec d'autres systèmes de permissions (autres regles, plus complexes)
+ une petite aide dans les instructions
= 2 plugins de base dans la version de pwg?
Hors ligne
+10
:o)
et je suis sur que tout sera fait dans les règles de l'art !
(PS & HS .... tu crois qu'un plugin "collaborateur partiel" est en bonne voie ?? :o)
Hors ligne
Rub,
J'ai pense depuis longtemps a un plugin pour mon systeme (notamment parce que je lavais en 1.6 et porte en 1.7 pour mon site).
Mais ce n'est pas aussi simple de faire ceci dans un plugin... Les changement necessaires (voir ici x) par exemple dans functions_user.inc.php necessiteraient beaucoup des triggers super flous (changement des where dans des requetes sql actuelles, nouvelle requete et nouveau champ mis a jour dans #user_cache).
Avant la 1.7 j'ai voulu le faire un plugin mais j'ai rennonce non a cause du travail supplementaire, mais a cause de la lisibilite des triggers a des endroits bizarres.
Je pense aussi qu'on peut difficilement mettre les permissions des categories dans un plugin car ca fait bien partie du "noyau" ...
Ca serait beaucoup plus simple a mettre les commentaires ou les notes ou le filtre recent dans un plugin que les permissions...
Peux-tu jeter un coup d'oeil dans le pdf avec les instructions 1.7 pour voir ce que ca donnerait comme trigger ?
Initialement je me disais aussi que ca n'interesse que moi, mais j'ai aussi des amis qui mont demander comment mettre une photo donnee en prive et j'ai fini par leur faire mes modifs.
Probablement il n'y aura pas d'utilite pour ce systeme dans une utilisation pro (VImages), mais je trouve qu'un privee c'est plutot necessaire
Et VImages, biensur il y a la gestion par lot ...
Dernière modification par rvelices (2011-10-27 19:10:17)
Hors ligne
vimages a écrit:
(PS & HS .... tu crois qu'un plugin "collaborateur partiel" est en bonne voie ?? :o)
(
Je n'ai pas oublié... la, je suis en congés pendant 3 semaines à faire le tour de la côte d'opale chez la famille, à poncer mon escalier et à faire une escale à Pithiviers...
Donc, pas trop le temps... à la rentrée, je m'attaque à la gestion des paramètres pour les plugins et ensuite au plugin collaborateur...
Ce n'est pas un oubli, juste un manque de temps... ;-)
)
Hors ligne
rvelices a écrit:
Mais ce n'est pas aussi simple de faire ceci dans un plugin... Les changement necessaires (voir ici http://www.modusoptimus.com/tmp/image_levels_17.pdf) par exemple dans functions_user.inc.php necessiteraient beaucoup des triggers super flous (changement des where dans des requetes sql actuelles, nouvelle requete et nouveau champ mis a jour dans #user_cache).
En fait, si on fait des plugins, ce n'est pas ce genre de modification que j'aimerais...
rvelices a écrit:
Avant la 1.7 j'ai voulu le faire un plugin mais j'ai rennonce non a cause du travail supplementaire, mais a cause de la lisibilite des triggers a des endroits bizarres.
Je pense aussi qu'on peut difficilement mettre les permissions des categories dans un plugin car ca fait bien partie du "noyau" ...
Je suis d'accord avec toi que ca fait partie du coeur de pwg, notamment l'utilisation de la table cache, les jointures, les where et les listes de catégories et d'images.
Par contre, la construction du contenu du cache, des listes peut tres bien se faire par un plugin.
C'est pour ca que j'avais pensé à faire les 2 plugins pour qu'on puisse construire des bases solides (et lisibles) pour gérer les permissions.
Ce que je vois c'est simplement 1 ou 2 triggers pour alimenter le cache et les listes des catégories et d'images.
Par exemple, la requête actuelle pour construire le cache pourrait être le trigger, une autre dans un autre trigger, le coeur de pwg se chargeant de fussionner (d'intersection les ensembles retournés).
rvelices a écrit:
Peux-tu jeter un coup d'oeil dans le pdf avec les instructions 1.7 pour voir ce que ca donnerait comme trigger ?
Je ne sais pas si j'ai été très clair mais je lirais attentivement ton pdf et proposerais quelques triggers possibles.
rvelices a écrit:
Initialement je me disais aussi que ca n'interesse que moi, mais j'ai aussi des amis qui mont demander comment mettre une photo donnee en prive et j'ai fini par leur faire mes modifs.
Probablement il n'y aura pas d'utilite pour ce systeme dans une utilisation pro (VImages), mais je trouve qu'un privee c'est plutot necessaire
Pas sur, ca dépend vraiment de l'agencement du site.
Hors ligne
rub a écrit:
Je suis d'accord avec toi que ca fait partie du coeur de pwg, notamment l'utilisation de la table cache, les jointures, les where et les listes de catégories et d'images.
Par contre, la construction du contenu du cache, des listes peut tres bien se faire par un plugin.
C'est pour ca que j'avais pensé à faire les 2 plugins pour qu'on puisse construire des bases solides (et lisibles) pour gérer les permissions.
Ce que je vois c'est simplement 1 ou 2 triggers pour alimenter le cache et les listes des catégories et d'images.
Par exemple, la requête actuelle pour construire le cache pourrait être le trigger, une autre dans un autre trigger, le coeur de pwg se chargeant de fussionner (d'intersection les ensembles retournés).
Je ne sais pas si j'ai été très clair mais je lirais attentivement ton pdf et proposerais quelques triggers possibles.
super ... si tu trouves un moyen elegant pour les triggers ... je prends (ensuite il faudrait qu'on prevoit des enrichissement dans l'interface d'admin...)
aussi un point: dans ma liste d'images interdites je ne compte pas les images qui sont deja interdites par les categories, donc 2 plugins differents pour les permissions ne peuvent pas etre optimaux (sauf s'ils ont connaissance un de l'autre)...
Hors ligne
rvelices a écrit:
rub a écrit:
Je suis d'accord avec toi que ca fait partie du coeur de pwg, notamment l'utilisation de la table cache, les jointures, les where et les listes de catégories et d'images.
Par contre, la construction du contenu du cache, des listes peut tres bien se faire par un plugin.
C'est pour ca que j'avais pensé à faire les 2 plugins pour qu'on puisse construire des bases solides (et lisibles) pour gérer les permissions.
Ce que je vois c'est simplement 1 ou 2 triggers pour alimenter le cache et les listes des catégories et d'images.
Par exemple, la requête actuelle pour construire le cache pourrait être le trigger, une autre dans un autre trigger, le coeur de pwg se chargeant de fussionner (d'intersection les ensembles retournés).
Je ne sais pas si j'ai été très clair mais je lirais attentivement ton pdf et proposerais quelques triggers possibles.super ... si tu trouves un moyen elegant pour les triggers ... je prends (ensuite il faudrait qu'on prevoit des enrichissement dans l'interface d'admin...)
aussi un point: dans ma liste d'images interdites je ne compte pas les images qui sont deja interdites par les categories, donc 2 plugins differents pour les permissions ne peuvent pas etre optimaux (sauf s'ils ont connaissance un de l'autre)...
En reprenant certains de tes principes.
Bdd
On ajoute de base une colonne `forbidden_images` dans #_user_infos
Dans functions_user.inc.php:
fonction getuserdata(
On remplace calculate_permissions($userdata['id'], $userdata['status']) par trigger_event('calculate_permissions_cat', array(), $userdata['id'], $userdata['status'])
On ajoute $userdata['forbidden_images'] avec trigger_event('calculate_permissions_img', arrat(), $userdata['id'], $userdata['status'])
On peut même passer $userdata entièrement.
=>
$userdata['forbidden_categories'] = trigger_event('calculate_permissions_cat', array(), $userdata); $userdata['forbidden_images'] = trigger_event('calculate_permissions_img', array(), $userdata);
On bien un seul événement:
list($userdata['forbidden_categories'], $userdata['forbidden_images']) = trigger_event('calculate_permissions', array(), $userdata);
fonction get_sql_condition_FandF(
Ajout d'un case forbidden_images utilisant $userdata['forbidden_images']
Plus modification de tous les get_sql_condition_FandF utilisé
fonction get_computed_categories
Ajout d'un test sur $userdata['forbidden_images'] pour l'intégrer dans la réquête.
Cad 3 cas, restriction sur cat, images et dates.
On peut même faire ca, 'une seule requête ou bien inclure la table image suivant les cas.
Donc en ajoutant un seul trigger_event 'calculate_permissions', on a :
o une gestion des permissons dynamiques
o ou different systèmes/plugins peuvent interagir ensemble sur la galerie
Reste le plus lourd, la gestion par trigger de l'interface admin pour que la gestion des permissions.
Après avec le $userdata['forbidden_images'], il faudra être prudent. Une galerie utilisant beaucoup de restrictions sur les images devraient mieux utilisés un sytème de permissions par catégories.
Mais pour pallier à ce problème, on peut utiliser un système de table cache pour les images (comme pour les catégories mais faut être prudent et pas forcement nécessaire si pas de données complémentaires.
Ce système reprend vraiment le système actuelle.
Par contre, on peut le faire aussi un peu plus complexe mais puissant en utlisant aussi le principe de authorized_categories & authorized_images.
Ce qui fait le scénario suivant:
o le trigger_event 'calculate_permissions' calcule les données suivantes:
> $userdata['forbidden_categories']
> $userdata['forbidden_images']
> $userdata['authorized_categories']
> $userdata['authorized_images']
o PWG digère le tout:
> une regle dynamique ou non sur le poids des forbidden et les authorized doit être mis en place
> optimisation des données pour ne garder que les plus petites listes entre les forbidden et les authorized
o Met à jour le cache des catégories
o Met à jour la cache des images
> cache à la demande des plugins
si cache actif, on met à jour la table cache user par user sinon la table est dupliqué quand c'est nécessaire (à étudier)
Avec ca, on peut tout faire et optimser les traitement.
Exemple:
retour du trigger_event 'calculate_permissions'
> $userdata['forbidden_categories'] = (1,2,3,4)
> $userdata['authorized_categories'] = (4,5,6,7,8)
> $userdata['forbidden_images'] = (1000)
> $userdata['authorized_images'] = (1,2,3,4,5)
On n'aura à la fin que :
pour une galerie à 8 cat et 10000 images
$userdata['forbidden_categories'] = (1,2,3,4)
$userdata['authorized_images'] = (1,2,3,4,5)
pour une galerie à 88 cat et 6 images
$userdata['forbidden_categories'] = (1,2,3,4)
$userdata['forbidden_images'] = (1000)
C'est à dire que les 4 $userdata[''] sont recalculés en fonction et qu'on garde dynamiquement le meilleur couple.
rvelices, qu'en penses-tu?
Qu'en pensez-vous?
Hors ligne
rub,
merci d'avoir repondu ...
- pour #forbidden_images, calculate $userdata['forbidden_images'] et compute_cat_branch - ok pour un plugin (facile/pas de souci)
- pour get_sql_condition_FandF - justement je fais le test sur forbidden_images seulement si le champs n'est pas id, auquel cas je teste directement la colonne#images.level (plus performant) et ca arrive dans 95% des cas. c'est plutot rare d'appeler get_sql_condition_FandF avec la colonne 'image_id'. on pourrait effectivement faire une bidouille ici de sorte que les plugins indiquent soit unre requete sql, soit le comportement par defaut - mais ca va etre lourd
pour l'admin j'ai vraiment pas de solution miracle, si ce n'est parsemer le code avec trigger_event ou tout simplement dupliquer les pages pour le plugin ... pour etre honnete aucune des solutions ne me convient - tout ca pour pouvoir editer un pauvre champ pour l'image et l'autre pour les users ...
c'est marrant pour authorized_..., j'avais pense deja a la meme chose (notamment pour une gallerie comme celle de vimages ou le guest a 2000 categories non autorises et les utilisateurs normaux ont 2000 autorises)
rub, pour etre honete je prefererais de mettre tout ca en standard pour 2 raisons: j'avais pratiquement fini le code debut aout (notre derniere echange) et 2ement les triggers qu'on devrait mettre seront bien plus comliques que de mettre directement le code directement dans le noyau ...
Hors ligne