🌍
Français
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"
# #---- [ 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
J'ai modifié le MOD pour le rendre plus compréhensible. Voici l'extrait du fichier picture.php au final.
//------------------------------------------------------- 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