Annonce

  •  » Utilisation
  •  » Idee De Mod: Les 10 Derniers Commentaires

#1 2003-03-10 01:54:28

po2zob
Membre
2003-03-10
7

Idee De Mod: Les 10 Derniers Commentaires

Bonjour

Commeje ne sais pas manier le php, je propose juste l'idee, a d'autres de l'appliquer si la juge interessante  :D

Rajouter un lien dans le menu de gauche "Derniers commentaires", affichant une page comportant les X derniers commentaires fait dans la gallerie serait pas mal ! (avec pour chaque commentaires un liens vers la photo correspondante)

A bientot...

Hors ligne

#2 2003-03-10 22:56:07

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12657

Re: Idee De Mod: Les 10 Derniers Commentaires

ok, bonne idée de MOD. Ce ne sera pas une fonctionnalité de la version de base, mais je ferai un MOD pour cela.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#3 2003-08-03 02:09:33

Arnaud
Membre
2003-02-04
16

Re: Idee De Mod: Les 10 Derniers Commentaires

Hello,

J'ai commencé à faire un script pour afficher les dix derniers commentaires, pour récuprer les récuprer c'est bon, par contre je voudrait afficher la miniature à côté et je bloque, bon je sias j'ai fait le plus simple mais pour niveau (0) c'était déjà pas évidentalors voilà ce que j'ai fait :

Code:

require("conf/confg.php");
mysql_select_db ("phpwebgallery_comments"); 


//selection total des données
$req_limit = mysql_query("Select * phpwebgallery_comments");
   
 {  // maintenant on va se servir du résultat pour limiter la sortie
$limite_page = '10'; //choisissez le nombre de messages par pages
$nombre_page = $resultat / $limite_page; // ici on divise le total par le nombre de messages que vous avez choisi 

$nombre_total = ceil($nombre_page); // on arondi le nombre de page pour ne pas avoir de virgules, ici au chiffre supérieur 

$nombre = $nombre_total - 1; // on enlève 1 au nombre de pages, car la 1ere page est celle affiché ne fait pas partie des pages suivantes
}
if(isset($numero_page) || $numero_page != '0' ) // si la variable numero de page a une valeur ou est différente de 0 

{ 
$limite_mysql = $limite_page * $numero_page; // on multiplie votre limite par le numero de la page passée par l'url
}
else // pas de variable numero_page
{
$limite_mysql = '0'; // la limite est de 0
}

$requete = "select * from phpwebgallery_comments ORDER BY date desc
Limit $limite_mysql , $limite_page";
$envoi = mysql_query($requete);
while($tableau = mysql_fetch_array($envoi))
{
$comment= $tableau ['content'];
$Nom= $tableau['author'];
$idincomment= $tableau['image_id'];

// affichage des données
print "

<table width='500'  border='1' align='center' color='000000' bordercolor='#cd5c5c'>
  <tr>
    <td align='left' valign='middle'><b>$Nom <br></b></td>
  
  
  </tr>
  <tr>
    <td align='left' valign='middle' bgcolor='#FFFFCC' border='1'><font color='#cd5c5c'>$comment </font></td>
  </tr>
  

</table>"; 

bon si quelqu'un à 5 minutes pour m'aiguiller un peu, merci  :)

Arnaud

Hors ligne

#4 2003-08-03 08:48:04

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12657

Re: Idee De Mod: Les 10 Derniers Commentaires

je vais te donner le code de la version 1.3 qui gère cela très bien :

Code:

<?php
/***************************************************************************
 *                               comments.php                              *
 *                            -------------------                          *
 *   application          : PhpWebGallery 1.3                              *
 *   author               : Pierrick LE GALL <pierrick@z0rglub.com>        *
 *                                                                         *
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation;                                         *
 *                                                                         *
 ***************************************************************************/
include_once( './include/isadmin.inc.php' );
//------------------------------------------------------------------- functions
function display_pictures( $mysql_result, $maxtime, $validation_box = false )
{
  global $vtp,$sub,$lang,$conf,
    $array_cat_directories,$array_cat_site_id,$array_cat_names;

  while ( $row = mysql_fetch_array( $mysql_result ) )
  {
    $vtp->addSession( $sub, 'picture' );
    // 2. for each picture, getting informations for displaying thumbnail and
    //    link to the full size picture
    $query = 'SELECT name,file,cat_id,tn_ext';
    $query.= ' FROM '.PREFIX_TABLE.'images';
    $query.= ' WHERE id = '.$row['image_id'];
    $query.= ';';
    $subresult = mysql_query( $query );
    $subrow = mysql_fetch_array( $subresult );

    if ( $array_cat_directories[$subrow['cat_id']] == '' )
    {
      $cat_result = get_cat_info( $subrow['cat_id'] );
      $array_cat_directories[$subrow['cat_id']] = $cat_result['dir'];
      $array_cat_site_id[$subrow['cat_id']] = $cat_result['site_id'];
      $array_cat_names[$subrow['cat_id']] =
        get_cat_display_name( $cat_result['name'], ' > ', '' );
    }
    $cat_directory = $array_cat_directories[$row['cat_id']];
    $file = get_filename_wo_extension( $subrow['file'] );
    // name of the picture
    $name = $array_cat_names[$subrow['cat_id']].' > ';
    if ( $subrow['name'] != '' )
    {
      $name.= $subrow['name'];
    }
    else
    {
      $name.= str_replace( '_', ' ', $file );
    }
    $name.= ' [ '.$subrow['file'].' ]';
    $vtp->setVar( $sub, 'picture.title', $name );
    // source of the thumbnail picture
    $src = '';
    if ( $array_cat_site_id[$subrow['cat_id']] == 1 )
    {
      $src.= '.';
    }
    $src.= $array_cat_directories[$subrow['cat_id']];
    $src.= 'thumbnail/'.$conf['prefix_thumbnail'];
    $src.= $file.'.'.$subrow['tn_ext'];
    $vtp->setVar( $sub, 'picture.thumb_src', $src );
    // link to the full size picture
    $url = '../picture.php?cat='.$subrow['cat_id'];
    $url.= '&image_id='.$row['image_id'];
   $vtp->setVar( $sub, 'picture.thumb_url', add_session_id( $url ) );
    // 3. for each picture, retrieving all comments
    $query = 'SELECT id,date,author,content';
    $query.= ' FROM '.PREFIX_TABLE.'comments';
    $query.= ' WHERE image_id = '.$row['image_id'];
    $query.= ' AND date > '.$maxtime;
    $query.= ' ORDER BY date DESC';
    $query.= ';';
    $subresult = mysql_query( $query );
    while ( $subrow = mysql_fetch_array( $subresult ) )
    {
      $vtp->addSession( $sub, 'comment' );
      $vtp->setVar( $sub, 'comment.author', $subrow['author'] );
      $displayed_date = $lang['day'][date( "w", $subrow['date'] )];
      $displayed_date.= date( " j ", $subrow['date'] );
      $displayed_date.= $lang['month'][date( "n", $subrow['date'] )];
      $displayed_date.= date( " Y G:i", $subrow['date'] );
      $vtp->setVar( $sub, 'comment.date', $displayed_date );
      $vtp->setVar( $sub, 'comment.content', nl2br( $subrow['content'] ) );
      $vtp->addSession( $sub, 'delete' );
      $url = './admin.php?page=comments';
      if ( isset( $_GET['last_days'] ) ) $url.= '&last_days='.MAX_DAYS;
      if ( isset( $_GET['show_unvalidated'] ) )
        $url.= '&show_unvalidated=true';
      $url.= '&del='.$subrow['id'];
      $vtp->setVar( $sub, 'delete.link', add_session_id( $url ) );
      $vtp->closeSession( $sub, 'delete' );
      // if the comment has to be validated, we display a checkbox
      if ( $validation_box )
      {
        $vtp->addSession( $sub, 'validation' );
        $vtp->setVar( $sub, 'validation.id', $subrow['id'] );
        $vtp->closeSession( $sub, 'validation' );
      }
      $vtp->closeSession( $sub, 'comment' );
    }
    $vtp->closeSession( $sub, 'picture' );
  }
}
//------------------------------------------------------------ comment deletion
if ( isset( $_GET['del'] ) and is_numeric( $_GET['del'] ) )
{
  $query = 'DELETE FROM '.PREFIX_TABLE.'comments';
  $query.= ' WHERE id = '.$_GET['del'];
  $query.= ';';
  mysql_query( $query );
}
//--------------------------------------------------------- comments validation
if ( isset( $_POST['submit'] ) )
{
  $query = 'SELECT id';
  $query.= ' FROM '.PREFIX_TABLE.'comments';
  $query.= " WHERE validated = 'false'";
  $query.= ';';
  $result = mysql_query( $query );
  while ( $row = mysql_fetch_array( $result ) )
  {
    if ( $_POST['validate-'.$row['id']] == 'true' )
    {
      $query = 'UPDATE '.PREFIX_TABLE.'comments';
      $query.= " SET validated = 'true'";
      $query.= ' WHERE id = '.$row['id'];
      $query.= ';';
      mysql_query( $query );
    }
  }
}
//----------------------------------------------------- template initialization
$sub = $vtp->Open( '../template/'.$user['template'].'/admin/comments.vtp' );
$tpl = array( 'stats_last_days','delete','close','submit','open' );
templatize_array( $tpl, 'lang', $sub );
$vtp->setGlobalVar( $sub, 'user_template', $user['template'] );
//--------------------------------------------------- number of days to display
if ( isset( $_GET['last_days'] ) ) define( MAX_DAYS, $_GET['last_days'] );
else                               define( MAX_DAYS, 0 );
//----------------------------------------- non specific section initialization
$array_cat_directories = array();
$array_cat_names       = array();
$array_cat_site_id     = array();
//------------------------------------------------------- last comments display
$vtp->addSession( $sub, 'section' );
$vtp->setVar( $sub, 'section.title', $lang['comments_last_title'] );
$vtp->addSession( $sub, 'last_days' );
foreach ( $conf['last_days'] as $option ) {
  $vtp->addSession( $sub, 'last_day_option' );
  $vtp->setVar( $sub, 'last_day_option.option', $option );
  $url = './admin.php?page=comments';
  $url.= '&last_days='.($option - 1);
  $vtp->setVar( $sub, 'last_day_option.link', add_session_id( $url ) );
  if ( $option == MAX_DAYS + 1 )
  {
    $vtp->setVar( $sub, 'last_day_option.style', 'font-weight:bold;');
  }
  $vtp->closeSession( $sub, 'last_day_option' );
}
$vtp->closeSession( $sub, 'last_days' );
if ( isset( $_GET['last_days'] ) )
{
  $vtp->addSession( $sub, 'close' );
  $url = './admin.php?page=comments';
  if ( isset( $_GET['show_unvalidated'] ) )
  {
    $url.= '&show_unvalidated='.$_GET['show_unvalidated'];
  }
  $vtp->setVar( $sub, 'close.url', add_session_id( $url ) );
  $vtp->closeSession( $sub, 'close' );
  // 1. retrieving picture ids which have comments recently added
  $date = date( 'Y-m-d', time() - ( MAX_DAYS*24*60*60 ) );
  list($year,$month,$day) = explode( '-', $date);
  $maxtime = mktime( 0,0,0,$month,$day,$year );
  $query = 'SELECT DISTINCT(image_id) as image_id';
  $query.= ' FROM '.PREFIX_TABLE.'comments';
  $query.=     ', '.PREFIX_TABLE.'images as images';
  $query.=     ', '.PREFIX_TABLE.'categories';
  $query.= ' WHERE image_id = images.id';
  $query.= ' AND   cat_id = images.cat_id';
  $query.= ' AND date > '.$maxtime;
  $query.= ' ORDER BY cat_id ASC,date_available DESC';
  $query.= ';';
  $result = mysql_query( $query );
  display_pictures( $result, $maxtime );
}
$vtp->closeSession( $sub, 'section' );
//----------------------------------------------------------- sending html code
$vtp->Parse( $handle, 'sub', $sub );
?>

et le fichier de template associé :

Code:

<style>
      .commentsAuthor,.commentsTitle,.commentsInfos,.commentsContent,.commentsNavigationBar {
        color:{#text_color};
        font-family:arial,sans-Serif;
        font-size:12px;
      }
      .commentsTitle,.commentsAuthor {
        text-align:center;
        font-weight:bold;
      }
      .commentsInfos {
        text-align:right;
        margin:3px 3px 3px 10px;
        font-size:11px;
      }
      .commentsContent {
        margin:10px;
      }
      .commentsTitle {
        margin-top:15px;
      }
      .commentsAuthor {
        margin:5px;
      }
      .commentsNavigationBar {
        margin:10px;
      }
      .tableComment {
        width:100%;
        border:2px solid #006699;
        margin:10px;
      }
      .cellAuthor {
        border-right:1px solid #006699;
        width:100px;
      }
      .cellInfo {
        border-bottom:1px solid #006699;
      }
      .imgLink {
        border:1px solid black;
      }
</style>
<!--VTP_section-->
<table style="width:100%;">
  <tr>
    <th>
      {#title}
      <!--VTP_last_days-->
      [
      <!--VTP_last_day_option-->
      <a href="{#link}" style="{#style}">{#option}</a>{#separation}
      <!--/VTP_last_day_option-->
      {#stats_last_days}
      ]
      <!--/VTP_last_days-->
      <!--VTP_open-->
      [ <a href="{#url}">{#open}</a> ]
      <!--/VTP_open-->
      <!--VTP_close-->
      [ <a href="{#url}">{#close}</a> ]
      <!--/VTP_close-->
    </th>
  </tr>
</table>
<!--VTP_start_form-->
<form action="{#action}" method="post">
<!--/VTP_start_form-->
<!--VTP_picture-->
<div style="border:2px solid #D3DCE3;margin:2px;">
  <table style="width:100%;">
    <tr>
     <td valign="top" width="1px">
       <!-- the thumbnail of the picture, linked to the full size page -->
       <a href="{#thumb_url}" title="{#thumb_title}">
         <img src="{#thumb_src}" class="imgLink" alt="{#thumb_alt}"/>
       </a>
     </td>
     <td>
       <div style="font-weight:bold;">{#title}</div>
       <!--VTP_comment-->
       <table style="width:100%;">
         <tr>
           <td>
             <table class="tableComment">
               <tr>
                 <td rowspan="2" valign="top" class="cellAuthor">
                   <div class="commentsAuthor">{#author}</div>
                 </td>
                 <td class="cellInfo">
                   <div class="commentsInfos">
                     {#date}<!--VTP_delete--><a href="{#link}" title="{#comments_del}"><img src="../template/{#user_template}/admin/images/delete.gif" style="border:none;ma
rgin-left:5px;" alt="[{#delete}]"/></a><!--/VTP_delete-->
                   </div>
                 </td>
               </tr>
               <tr>
                 <td>
                   <div class="commentsContent">{#content}</div>
                 </td>
               </tr>
             </table>
           </td>
           <!--VTP_validation-->
           <td style="width:1px;">
             <input type="checkbox" name="validate-{#id}" value="true" />
           </td>
           <!--/VTP_validation-->
         </tr>
       </table>
       <!--/VTP_comment-->
     </td>
    </tr>
  </table>
</div>
<!--/VTP_picture-->
<!--VTP_submit-->
<div style="text-align:center;margin:10px;">
  <input type="submit" name="submit" value="{#submit}" />
</div>
<!--/VTP_submit-->
<!--VTP_end_form-->
</form>
<!--/VTP_end_form-->
<!--/VTP_section-->

Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#5 2003-08-22 19:23:40

NeoWave@Yousuxx.com
Invité

Re: Idee De Mod: Les 10 Derniers Commentaires

mais il manque le fichier isadmin.inc.php non ?

#6 2003-08-22 19:24:58

NeoWave
Invité

Re: Idee De Mod: Les 10 Derniers Commentaires

oops jferme ma gueule :P

#7 2003-08-22 19:39:06

NeoWave
Invité

Re: Idee De Mod: Les 10 Derniers Commentaires

Ouinnnn il me met
Fatal error: Call to a member function on a non-object in /home/yousuxx/www/zamis/admin/comment.php on line 139
je suppose qu'il trouve pas la template, mais je c pas ou il faut la sauvegarder...

Merci !

#8 2003-08-22 22:56:54

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12657

Re: Idee De Mod: Les 10 Derniers Commentaires

il s'agit de la classe VTemplate. Fais une recherche sur google :-)


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#9 2003-08-23 11:39:11

NeoWave
Membre
2003-08-22
24

Re: Idee De Mod: Les 10 Derniers Commentaires

Yep c ca merci :)
Mais j'obtient une autre erreur :(

Fatal error: Call to undefined function: templatize_array() in /home/yousuxx/www/zamis/admin/comment.php on line 142

g chercher sur google la fonction templatize_array sans resultat :(

Hors ligne

#10 2003-08-24 01:17:08

NeoWave
Membre
2003-08-22
24

Re: Idee De Mod: Les 10 Derniers Commentaires

up !

Hors ligne

#11 2003-08-24 07:45:27

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12657

Re: Idee De Mod: Les 10 Derniers Commentaires

désolé, j'avais zappé ton message hier matin, j'avais eu besoin de régler un pb sur mon ordi, ma partition / était à 100%, il m'a fallu déplacer mon /home...

en ultra exclusivité pour toi la release 1.3 en cours de dev : http://phpwebgallery.net/download/phpwebga...24_01h00.tar.gz

Tu y trouveras ce dont tu as besoin, mais n'essaies pas de l'installer pour de vrai, install.php n'a pas été mis à jour du tout (c'est le dernier truc que je fais !)


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#12 2003-08-24 13:12:14

NeoWave
Membre
2003-08-22
24

Re: Idee De Mod: Les 10 Derniers Commentaires

jmy connais pas mais je crois que t'as oublier ces deux lignes au debut de quelques fichiers :

Code:

include("vtemplate.class.php");  // Inclusion du fichier
$vtp = new VTemplate; // Déclaration de l'object

En tout les cas ca ne marche pas chez moi sans ces deux lignes

Mais du coup je me retrouve avec cette erreur quand j'ouvre comments.php?id=xxxx

Warning: Invalid argument supplied for foreach() in c:\program files\easyphp\www\zamis2\admin\comments.php on line 156
Erreur de traitement n° TTT11:
La zone Array est introuvable.Vérifiez la syntaxe de cette zone.
Pour plus d'informations, consultez la doc en ligne

La ligne correspondante est la suivante :

Code:

foreach ( $conf['last_days'] as $option ) {

De plus, j'arrive vraiment pas a faire marcher la 1.3 (j'ai remplacer la majorité des fichiers de la 1.2 par la 1.3 en conservant les fichiers de configuration (mysql.....)) je pense que c'est comme ca qu'il faut faire

Mais moi je veux juste pouvoir afficher les derniers commentaires  :oops:  :cry:


Merci !

Hors ligne

#13 2003-08-24 13:27:09

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12657

Re: Idee De Mod: Les 10 Derniers Commentaires

la structure de la base (que tu n'a pas a énormément changé entre la 1.3 et la 1.2, normal que ça ne marche pas). Tu peux voir cette structure dans ./admin/phpwebgallery_structure.sql.

Adapter l'affichage des commentaires à la 1.2 me prendrait trop de temps alors que je suis en train de travailler sur la 1.3. Je te conseille de prendre ton mal en patience pour le moment et d'attendre la sortie de la 1.3


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#14 2003-08-24 13:44:46

NeoWave
Membre
2003-08-22
24

Re: Idee De Mod: Les 10 Derniers Commentaires

oki pas de pb :) je vais attendre ^^

A bientot :)

Hors ligne

#15 2003-09-01 17:33:44

Arnaud
Membre
2003-02-04
16

Re: Idee De Mod: Les 10 Derniers Commentaires

Bien moi j'ai avancé mais vraiment c'est pas tout à fait au point et certainement pas bien écrit, les images miniature des sous catégories ne s'affiche pas il me manque un "if" mais j'ai pas réussis, sinon pour les images à la catégories racine c'est bon.

C'est pas terrible mais je peut voir tout les commentaires dont les derniers ce qui est pratique pour l'admin qui peut suivre ce qui se passe en attendant la version 1.3. Pour moi qui suis complétement nul en PHP j'ai fait de mon mieux  :-?

Pour ceux qui veulent voir ce que ça donne

Si vous désirez le "script" n'hésitez pas à m'envoyer un mail.

Arnaud

Hors ligne

  •  » Utilisation
  •  » Idee De Mod: Les 10 Derniers Commentaires

Pied de page des forums

Propulsé par FluxBB

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