#1 2003-12-05 16:13:56

Gweltas
PhpWebGallery Team
Lyon en théorie
2003-12-04
547

Gestion Des Favoris

Pour optimiser la gestion des favoris et surtout faire en sorte qu'il soit possible pour un utilisateur enregistré de savoir graphiquement si une image est déja dans ses favoris ou non sans passer par la catégorie "fav"

Code:

#
#---- [ OPEN ] --------
#
picture.php
#
#---- [ FIND ] -------------------------------------------
# (line 444)
//------------------------------------------------------- favorite manipulation
if ( $page['cat'] != 'fav' and !$user['is_the_guest'] )
{
#
#---- [ REPLACE WITH ] -------------------------------------
#
if (!$user['is_the_guest'])
{
// verify if the picture is already in the favorite of the user
$query = 'SELECT COUNT(*) AS nb_fav FROM '.PREFIX_TABLE.'favorites WHERE image_id = '.$page['id'];
$query.= ' AND user_id = '.$user['id'].';';
$result = mysql_query( $query );
$row = mysql_fetch_array( $result );
if (! $row['nb_fav'] ) 

#
#---- [ FIND ] -------------------------------------------
# (ligne 461)

if ( $page['cat'] == 'fav' )

#
#---- [ REPLACE WITH] -------------------------------------
#

else

#
#---- [ END ] --------
#
# EoM

_________________

Voilà ce n'est pas optimal en terme de performance (surtout en cas d'ajout ou de retrait de favori puisque la requête est faite deux fois) mais cela débloque...

Hors ligne

#2 2003-12-07 02:27:46

Gweltas
PhpWebGallery Team
Lyon en théorie
2003-12-04
547

Re: Gestion Des Favoris

J'ai modifié le MOD pour le rendre plus compréhensible. Voici l'extrait du fichier picture.php au final.

Code:

//------------------------------------------------------- favorite manipulation
if (!$user['is_the_guest'])
{
// verify if the picture is already in the favorite of the user
$query = 'SELECT COUNT(*) AS nb_fav FROM '.PREFIX_TABLE.'favorites WHERE image_id = '.$page['id'];
$query.= ' AND user_id = '.$user['id'].';';
$result = mysql_query( $query );
$row = mysql_fetch_array( $result );

if (!$row['nb_fav'])
{
  $url = './picture.php?cat='.$page['cat'].'&image_id='.$page['id'];
  $url.= '&expand='.$_GET['expand'].'&add_fav=1';
  if ( $page['cat'] == 'search' )
  {
    $url.= '&search='.$_GET['search'].'&mode='.$_GET['mode'];
  }
  $vtp->addSession( $handle, 'favorite' );
  $vtp->setVar( $handle, 'favorite.link', add_session_id( $url ) );
  $vtp->setVar( $handle, 'favorite.title', $lang['add_favorites_hint'] );
  $vtp->setVar( $handle, 'favorite.src',
                './template/'.$user['template'].'/theme/favorite.gif' );
  $vtp->setVar( $handle, 'favorite.alt','[ '.$lang['add_favorites_alt'].' ]' );
  $vtp->closeSession( $handle, 'favorite' );
}
else
{
  $url = './picture.php?cat='.$page['cat'].'&image_id='.$page['id'];
  $url.= '&expand='.$_GET['expand'].'&add_fav=0';
  $vtp->addSession( $handle, 'favorite' );
  $vtp->setVar( $handle, 'favorite.link', add_session_id( $url ) );
  $vtp->setVar( $handle, 'favorite.title', $lang['del_favorites_hint'] );
  $vtp->setVar( $handle, 'favorite.src',
                './template/'.$user['template'].'/theme/del_favorite.gif' );
  $vtp->setVar( $handle, 'favorite.alt','[ '.$lang['del_favorites_alt'].' ]' );
  $vtp->closeSession( $handle, 'favorite' );
}
}

Hors ligne

Pied de page des forums

Propulsé par FluxBB

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