Annonce

  •  » Utilisation
  •  » Restreindre l'affichage des galerie (Genre Picasa)

#46 2009-05-13 02:18:36

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Restreindre l'affichage des galerie (Genre Picasa)

Comment ça marche !!!!

Ca marche même tellement bien, que quand je crée un compte dans le menu "Identification" de l'administration de Piwigo, le compte créé est administrateur... je me suis donc permis de rajouter dans le plugin personnel and !is_admin() à la dernière ligne ci-dessous :

Code:

add_event_handler('register_user', 'assign_perm_for_new_user');

function assign_perm_for_new_user($new_user)
{
  global $user;

  if (!is_a_guest() and !is_admin())

Mais donc c'est parfait ! J'ai modifié aussi menubar.inc.php pour rajouter la variable U_DUPLICATE (à la fin) :

Code:

//--------------------------------------------------------------- identification
  if (is_a_guest())
  {
    $template->assign(
        array(
          'U_LOGIN' => get_root_url().'identification.php',
          'U_LOST_PASSWORD' => get_root_url().'password.php',
          'AUTHORIZE_REMEMBERING' => $conf['authorize_remembering']
        )
      );
    if ($conf['allow_user_registration'])
    {
      $template->assign( 'U_REGISTER', get_root_url().'register.php');
    }
  }
  else
  {
    $template->assign('USERNAME', $user['username']);
    if (is_autorize_status(ACCESS_CLASSIC))
    {
      $template->assign('U_PROFILE', get_root_url().'profile.php');
    }

    // the logout link has no meaning with Apache authentication : it is not
    // possible to logout with this kind of authentication.
    if (!$conf['apache_authentication'])
    {
      $template->assign('U_LOGOUT', get_root_url().'?act=logout');
    }

    // Modif LucMorizur 12 mai 2009 : a registered user can duplicate his account,
    // to create a new one with same properties.
    if ($conf['allow_user_registration'] and !is_admin())
    {
      $template->assign( 'U_DUPLICATE', get_root_url().'register.php');
    }
    if (is_admin())
    {
      $template->assign('U_ADMIN', get_root_url().'admin.php');
    }
  }
  if ( ($block=$menu->get_block('mbIdentification')) != null )
  {
    $block->template = 'menubar_identification.tpl';
  }
  $menu->apply('MENUBAR',  'menubar.tpl' );

Avec  and !is_admin() de façon à ce qu'un administrateur ne crée un autre compte admin que par l'administration de Piwigo

Et cette variable est utilisée de la façon suivante dans un perso_menubar_identification.tpl créé via Local Files Editor :

Code:

  {if isset($U_REGISTER)}
  <li><a href="{$U_REGISTER}" title="{'Create a new account'|@translate}" rel="nofollow">{'Register'|@translate}</a></li>
  {/if}

  {if isset($U_DUPLICATE)}
  <li><a href="{$U_DUPLICATE}" title="{'Duplicate account'|@translate}" rel="nofollow">{'Duplicate'|@translate}</a></li>
  {/if}

  {if isset($U_LOGIN)}
  <li><a href="{$U_LOGIN}" rel="nofollow">{'Connection'|@translate}</a></li>
  {/if}

Avec bien sûr une traduction de "Duplicate account" et "Duplicate" dans local.lang.php.

Et ainsi lorsque je suis identifé autrement qu'en administrateur j'ai mon lien "Dupliquer" dans mon bloc de menu d'identification, qui me recopie les droits du compte qui le crée !

C'est vraiment super, c'est vraiment ce que je cherchais.

Une chose manque cependant : dans la liste des utilisateurs, les "Proriétés" (le "niveau de confidentialité") ne sont pas recopiées. J'ai voulu faire du copier-coller du code de P@t sur les deux autres caractéristiques, donc j'ai rajouté cela dans le plugin perso :

Code:

    // User infos
    $query = 'SELECT level FROM '.USER_INFOS_TABLE.' WHERE user_id = '.$user['id'].';';
    $result = pwg_query($query);
    $insert = array();
    while ($row = mysql_fetch_assoc($result))
    {
      $insert[] = '('.$new_user['id'].','.$row['level'].')';
    }
    if (!empty($insert))
    {
      pwg_query('INSERT INTO '.USER_INFOS_TABLE.' VALUES '.implode(',', $insert).';');
    }

mais ça marche pas. J'aurai du mal à copier-coller le message d'erreur car la page résultante est redirigée immédiatement.

Qu'est-ce que j'ai fait de pas bien ?

Merci pour votre aide encore une fois -- pas la dernière j'ai l'impression...

Dernière modification par LucMorizur (2009-05-13 23:47:32)

Hors ligne

#47 2009-05-13 08:18:51

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Restreindre l'affichage des galerie (Genre Picasa)

Je pense que l'erreur est dûe au fait que le champ level dans la table prefix_user_infos est le dernier de quinze champs, alors que dans les deux autres cas il s'agit de tables n'ayant que le champ user_id et le champ sur lequel on veut travailler. Mais je n'ai pour le moment aucune connaissance en gestion de MySQL par PHP, donc je ne suis pas capable de corriger l'erreur.

Merci pour votre aide :-) .

Luc

Hors ligne

#48 2009-05-13 19:17:35

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Restreindre l'affichage des galerie (Genre Picasa)

Par l'histoire de transfert des droits, il suffit de limiter ca aux utilisateurs rentrés dans $conf['auto_log'] ainsi:

global $user, $conf;

if (isset($conf['auto_log']) and in_array($user['username'], $conf['auto_log']))
{
  // User access
    $query = 'SELECT cat_id FROM '.USER_ACCESS_TABLE.' WHERE user_id = '.$user['id'].';';
    $result = pwg_query($query);
    ....

Pour le niveau de confidentialité:

$query = 'UPDATE '.USER_INFOS_TABLE.' SET level = '.$user['level'].' WHERE user_id = '.$new_user['id'].';';
pwg_query($query);

Dernière modification par P@t (2009-05-13 19:18:14)


P@t

Hors ligne

#49 2009-05-13 20:55:55

sakkhho
Membre
Paris
2007-04-02
1836

Re: Restreindre l'affichage des galerie (Genre Picasa)

pourquoi ne pas faire un plugin de tout ca ?


Piwigo 2.3.5

Hors ligne

#50 2009-05-13 21:51:14

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Restreindre l'affichage des galerie (Genre Picasa)

sakkhho a écrit:

pourquoi ne pas faire un plugin de tout ca ?

Bonsoir ;

c'est plus ou moins ce qui est prévu, c'est en cours, même, puisque pour l'instant c'est en train de devenir mon plugin perso, et ensuite je pense que ça devrait assez facilement être proposé en plugin.

Par contre l'une des fonctionnalités (créer un compte héritant les propriétés du compte créateur) est prévue par Eric dans [Plugin] nbc UserAdvManager ; et l'autre fonctionnalité (identification automatique sur un simple URL) pourrait tout-à-fait faire partie de la gestion avancée des utilisateurs. Donc je me demandais si ça ne ferait pas doublon. En même temps le plugin d'Eric est bien plus complet, et très axé sur la sécurité, ce que n'est pas du tout ce qui est cherché ici -- mais j'imginais aussi une possibilité d'expiration du (des) compte(s) sur lequel (lesquels) on est automatiquement identifié... et là ça devient plus compliqué, encore.

Bref, à voir. Pour le moment j'essaie de finir ça déjà, et de proposer un plugin, ne serait-ce que pour ce que ça pourra m'apprendre ; ensuite, ça peut toujours être intégré ailleurs bien sûr.

En tous cas merci pour ton intérêt sakkhho :-) !

J'essaie les solutions de P@t et reviens.

Hors ligne

#51 2009-05-13 22:29:44

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Restreindre l'affichage des galerie (Genre Picasa)

Yesss...... c'est farpait !

P@t a écrit:

Par l'histoire de transfert des droits, il suffit de limiter ca aux utilisateurs rentrés dans $conf['auto_log'] ainsi:

global $user, $conf;

if (isset($conf['auto_log']) and in_array($user['username'], $conf['auto_log']))
{
  // User access
    $query = 'SELECT cat_id FROM '.USER_ACCESS_TABLE.' WHERE user_id = '.$user['id'].';';
    $result = pwg_query($query);
    ....

Là ça j'ai pas totalement compris je crois. J'ai l'impression que c'est pour limiter la duplication de compte aux seuls comptes passant par l'identification automatique. En fait je ne demandais pas ça, j'ai du taper à côté du clavier. Mais ça peut être intéressant, cela dit :-) !

Personnellement, ça m'intéresse que tous les utilisateurs puissent duplique leur compte : ils sont admis à visualiser un certain type de contenu, pourquoi ne pas les laisser créer un compte pour le gamin qui trépigne à côté, et qui veut écrire un commentaire à son nom, et avoir son compte, et ce immédiatement, sans attendre de confirmation de ma part... En ce qui me concerne, je ne m'attend pas à me retrouver avec une centaine de comptes à gérer ^^ ! Par contre pour d'autres sites ça pourrait être gênant.

Pour le niveau de confidentialité:

$query = 'UPDATE '.USER_INFOS_TABLE.' SET level = '.$user['level'].' WHERE user_id = '.$new_user['id'].';';
pwg_query($query);

Eh oui, quand on sait comment parler à la machine... elle fonctionne :o) !

Merci encore beaucoup P@t !

Je vais terminer la mise en place de ce que je voulais faire avec cette fonctionnalité, créer une catégorie démo de tout ça, et tenter de composer un plugin à part entière. Je solliciterai sûrement à nouveau l'équipe Piwigo à ce moment-là.

Par contre, il se peut que ça prenne un petit peu de temps : il paraît que j'abuse, avec mon PC, en ce moment :-/ ...

Hors ligne

#52 2009-05-13 23:06:33

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Restreindre l'affichage des galerie (Genre Picasa)

LucMorizur a écrit:

Là ça j'ai pas totalement compris je crois. J'ai l'impression que c'est pour limiter la duplication de compte aux seuls comptes passant par l'identification automatique. En fait je ne demandais pas ça, j'ai du taper à côté du clavier. Mais ça peut être intéressant, cela dit :-) !

J'avais compris que tu ne demandais pas ca! C'est pour ca que je proposais l'idée...
C'était en effet pour limiter la duplication des comptes aux seuls comptes à login automatique.
Si tu veux faire ca pour tous les utilisateurs, ta solution est donc la bonne.


P@t

Hors ligne

#53 2009-05-15 17:42:16

max216
Membre
2009-04-08
81

Re: Restreindre l'affichage des galerie (Genre Picasa)

salut,

excusez moi si j'ai rien compris aux 4 pages mais, apres avoir téléchargé le plugin pour les descriptions, la balise hidden ne donne rien d'un coté ou de l'autre du titre :(

Hors ligne

#54 2009-05-16 02:36:23

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Restreindre l'affichage des galerie (Genre Picasa)

max216 a écrit:

excusez moi si j'ai rien compris aux 4 pages mais, apres avoir téléchargé le plugin pour les descriptions, la balise hidden ne donne rien d'un coté ou de l'autre du titre :(

Comment ca, ca ne donne rien???
Que veux-tu faire?


P@t

Hors ligne

#55 2009-05-16 09:01:29

max216
Membre
2009-04-08
81

Re: Restreindre l'affichage des galerie (Genre Picasa)

en fait j'ai deux catégories, je ne veux pas forcer les gens a s'inscrire et je voudrais en enlever une du menu. que j'ai juste a donner le lien direct.

alors soit j'édite le bloc et je vire le nom de ma catégorie, mais par les "plus vues", "dernieres vues" je me trahis en fait lol

en téléchargeant le plugin "Extended Description" j'ai lu "Changements: Possibilité de masquer une catégorie du menu avec la balise ", j'ai cherché cette balise sur le forum et j'ai trouvé ce sujet, mais cela ne marche pas :(

ai je mal compris ?

désolé si c'est le cas...

Hors ligne

#56 2009-05-16 09:20:46

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Restreindre l'affichage des galerie (Genre Picasa)

Pour moi a priori, il s'agit typiquement d'un cas visé par un plugin "Auto Id" (qui n'existe pas encore) : il faudrait que cette catégorie soit privée, auquel cas les images qui en font partie n'apparaissent plus dans les affichages à plat, "plus vues", "vues récemment", etc ; tu peux créer un compte, seul autorisé à visualiser cette catégorie ; et enfin grâce au futur (j'éspère ! ;-) ) plugin "Auto Id", tu peux donner un URL qui permette au visiteur d'être identifié automatiquement comme étant ce compte (générique, ça vaut mieux) sans avoir à donner un compte et un mot de passe, et accessoirement qui amène directement sur la page de cette catégorie.

Enfin, une fois identifié comme étant le compte en question, l'utilisateur peut dupliquer ce compte, pour donc en créer un qui lui est personnel, grâce auquel il peut modifier son profil etc (ce n'est pas le cas d'un compte générique), et surtout ayant les mêmes droits que le compte qu'il a dupliqué, donc lui permettant, au moins pour cette "première" visite, de visualiser la catégorie pour laquelle tu lui a donné cette URL, sans avoir besoin de confirmation de ta part dans l'immédiat. Libre à toi ensuite en constatant cette création de compte, de lui donner plus (ou moins) d'accès aux autres catégories.

Ce soir j'aurai posté ici un URL vers une démo de ce plugin perso sur mon site.

Après je pense qu'il serait pas mal d'en faire un plugin à part entière, je vais essayer de comprendre un peu comment faire avant de me reposer entièrement sur l'équipe Piwigo ;-) !

Luc

Dernière modification par LucMorizur (2009-05-16 09:40:16)

Hors ligne

#57 2009-05-16 10:42:07

max216
Membre
2009-04-08
81

Re: Restreindre l'affichage des galerie (Genre Picasa)

ok, écoute je vais rester sur le fil.

:)

Hors ligne

#58 2009-05-16 14:01:59

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Restreindre l'affichage des galerie (Genre Picasa)

Je ne suis pas spécialement partant en fait pour faire un plugin à part enière pour l'instant...
C'est vraiment pas compliqué de faire ca en plugin perso...

Je vais résumer tout ca.

Code à rentrer en plugin personnel (5e onglet de LocalFiles Editor):

Code:

add_event_handler('init', 'auto_log_user');

function auto_log_user()
{
  global $conf;

  if (isset($_GET['log']) and isset($conf['auto_log']))
  {
    if (isset($conf['auto_log'][$_GET['log']]) and ($userid = get_userid($conf['auto_log'][$_GET['log']])))
    {
      log_user($userid, false);
      if (isset($_GET['cat']) and is_numeric($_GET['cat']))
      {
        redirect(PHPWG_ROOT_PATH.'index.php?/category/'.$_GET['cat']);
      }
      else
      {
        redirect(make_index_url());
      }
    }
    else
    {
      access_denied();
    }
  }
}

add_event_handler('register_user', 'assign_perm_for_new_user');

function assign_perm_for_new_user($new_user)
{
  global $user, $conf;

  if (isset($conf['auto_log']) and in_array($user['username'], $conf['auto_log']))
  {
    // User access
    $query = 'SELECT cat_id FROM '.USER_ACCESS_TABLE.' WHERE user_id = '.$user['id'].';';
    $result = pwg_query($query);
    $insert = array();
    while ($row = mysql_fetch_assoc($result))
    {
      $insert[] = '('.$new_user['id'].','.$row['cat_id'].')';
    }
    if (!empty($insert))
    {
      pwg_query('INSERT INTO '.USER_ACCESS_TABLE.' VALUES '.implode(',', $insert).';');
    }

    // User groups
    $query = 'SELECT group_id FROM '.USER_GROUP_TABLE.' WHERE user_id = '.$user['id'].';';
    $result = pwg_query($query);
    $insert = array();
    while ($row = mysql_fetch_assoc($result))
    {
      $insert[] = '('.$new_user['id'].','.$row['group_id'].')';
    }
    if (!empty($insert))
    {
      pwg_query('INSERT INTO '.USER_GROUP_TABLE.' VALUES '.implode(',', $insert).';');
    }

    // Permission level
    $query = 'UPDATE '.USER_INFOS_TABLE.' SET level = '.$user['level'].' WHERE user_id = '.$new_user['id'].';';
    pwg_query($query);
  }
}

Ensuite, on créé par exemple un utilisateur générique Toto et un autre utilisateur générique Tutu
Puis, dans le config_local.inc.php (1er onglet de LocalFiles Editor), on met par exemple:

Code:

$conf['auto_log'] = array(
  'f71dbe52628a3f83a77ab494817525c6' => 'Toto',
  'i51dbefd5g56d5t5hcxab494817525c6' => 'Tutu',
);

On pourra ainsi se logguer automatiquement avec l'utilisateur Toto en rentrant l'adresse suivant:
http://monsite/piwigo/index.php?log=f71dbe52628a3f83a77ab494817525c6

Pour que l'utilisateur soit automatiquement redirigé vers une catégorie (la 5 par exemple), on met:
http://monsite/piwigo/index.php?log=f71dbe52628a3f83a77ab494817525c6&cat=5

On pourra laisser un lien vers la page register.php afin que l'utilisateur puisse s'enregistrer.
Les droits de l'utilisateur générique seront alors automatiquement transféré au nouvel utilisateur.

Dernière modification par P@t (2009-05-16 14:03:08)


P@t

Hors ligne

#59 2009-05-16 17:56:15

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Restreindre l'affichage des galerie (Genre Picasa)

Voilà, j'ai mis en place une catégorie privée, que vous (et seulement vous ;-) !) pouvez atteindre en suivant l'URL ci-dessous :

lucmorizur.free.fr/piwigo/index.php?cat=15&autolog=Code02_pour_Piwigo03

Il y a bien évidemment d'autres catégories sur le site, que vous ne pouvez pas voir. Vous atteignez directement la catégorie. Vous pouvez dupliquer le compte créé pour cela, pour avoir votre compte personnel sur cette galerie, comme vous pouvez le voir dans le bloc "Identification".

Initialement je pensais mettre plein d'images pour expliquer ce plugin perso, mais finalement le post de P@t faisant cela, je ne mets qu'une image.

Luc

EDIT : màj du lien

Dernière modification par LucMorizur (2009-06-10 15:01:23)

Hors ligne

#60 2009-05-16 18:11:51

sakkhho
Membre
Paris
2007-04-02
1836

Re: Restreindre l'affichage des galerie (Genre Picasa)

un plugin permettrai de ne pas perdre le code dans les profondeur du forum quand le sujet ne sera plus d'actualité.
Pourquoi ne pas imaginé une partie dans Extension qui rassemblerai les codes des plugins perso, + accessible que le wiki...


Piwigo 2.3.5

Hors ligne

  •  » Utilisation
  •  » Restreindre l'affichage des galerie (Genre Picasa)

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact