source: branches/1.4/comments.php @ 26757

Last change on this file since 26757 was 721, checked in by plg, 20 years ago
  • bug fixed : same comments displayed as many times as element categories
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.6 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | PhpWebGallery - a PHP based picture gallery                           |
4// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
5// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
6// +-----------------------------------------------------------------------+
7// | branch        : BSF (Best So Far)
8// | file          : $RCSfile$
9// | last update   : $Date: 2005-01-23 15:27:20 +0000 (Sun, 23 Jan 2005) $
10// | last modifier : $Author: plg $
11// | revision      : $Revision: 721 $
12// +-----------------------------------------------------------------------+
13// | This program is free software; you can redistribute it and/or modify  |
14// | it under the terms of the GNU General Public License as published by  |
15// | the Free Software Foundation                                          |
16// |                                                                       |
17// | This program is distributed in the hope that it will be useful, but   |
18// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
19// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
20// | General Public License for more details.                              |
21// |                                                                       |
22// | You should have received a copy of the GNU General Public License     |
23// | along with this program; if not, write to the Free Software           |
24// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
25// | USA.                                                                  |
26// +-----------------------------------------------------------------------+
27
28// +-----------------------------------------------------------------------+
29// |                           initialization                              |
30// +-----------------------------------------------------------------------+
31if (!defined('IN_ADMIN'))
32{
33  define('PHPWG_ROOT_PATH','./');
34  include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
35}
36
37if (isset($_GET['last_days']))
38{
39  define('MAX_DAYS', $_GET['last_days']);
40}
41else
42{
43  define('MAX_DAYS', 0);
44}
45$array_cat_names = array();
46// +-----------------------------------------------------------------------+
47// |                         comments management                           |
48// +-----------------------------------------------------------------------+
49// comments deletion
50if (isset($_POST['delete']) and count($_POST['comment_id']) > 0)
51{
52  $query = '
53DELETE FROM '.COMMENTS_TABLE.'
54  WHERE id IN ('.implode(',', $_POST['comment_id']).')
55;';
56  pwg_query($query);
57}
58// comments validation
59if (isset($_POST['validate']) and count($_POST['comment_id']) > 0)
60{
61  $query = '
62UPDATE '.COMMENTS_TABLE.'
63  SET validated = \'true\'
64  WHERE id IN ('.implode(',', $_POST['comment_id']).')
65;';
66  pwg_query($query);
67}
68// +-----------------------------------------------------------------------+
69// |                       page header and options                         |
70// +-----------------------------------------------------------------------+
71if (!defined('IN_ADMIN'))
72{
73  $title= $lang['title_comments'];
74  include(PHPWG_ROOT_PATH.'include/page_header.php');
75}
76
77$template->set_filenames(array('comments'=>'comments.tpl'));
78$template->assign_vars(
79  array(
80    'L_COMMENT_TITLE' => $title,
81    'L_COMMENT_STATS' => $lang['stats_last_days'],
82    'L_COMMENT_RETURN' => $lang['home'],
83        'L_COMMENT_RETURN_HINT' => $lang['home_hint'],
84    'L_DELETE' =>$lang['delete'],
85    'L_VALIDATE'=>$lang['submit'],
86   
87    'U_HOME' => add_session_id(PHPWG_ROOT_PATH.'category.php')
88    )
89  );
90
91foreach ($conf['last_days'] as $option)
92{
93  $url = $_SERVER['PHP_SELF'].'?last_days='.($option - 1);
94  if (defined('IN_ADMIN'))
95  {
96    $url.= '&amp;page=comments';
97  }
98  $template->assign_block_vars(
99    'last_day_option',
100    array(
101      'OPTION'=>$option,
102      'T_STYLE'=>(($option == MAX_DAYS + 1)?'text-decoration:underline;':''),
103      'U_OPTION'=>add_session_id($url)
104      )
105    );
106}
107// +-----------------------------------------------------------------------+
108// |                        last comments display                          |
109// +-----------------------------------------------------------------------+
110// 1. retrieving picture ids which have comments recently added
111$maxdate = date('Y-m-d', strtotime('-'.MAX_DAYS.' day'));
112
113$query = '
114SELECT DISTINCT(ic.image_id) AS image_id,ic.category_id, uppercats
115  FROM '.COMMENTS_TABLE.' AS c, '.IMAGE_CATEGORY_TABLE.' AS ic
116    , '.CATEGORIES_TABLE.' AS cat
117  WHERE c.image_id = ic.image_id
118    AND ic.category_id = cat.id
119    AND date >= \''.$maxdate.'\'';
120if ($user['status'] != 'admin')
121{
122  $query.= "
123    AND validated = 'true'";
124  // we must not show pictures of a forbidden category
125  if ($user['forbidden_categories'] != '')
126  {
127    $query.= '
128    AND category_id NOT IN ('.$user['forbidden_categories'].')';
129  }
130}
131$query.= '
132  GROUP BY ic.image_id
133  ORDER BY ic.image_id DESC
134;';
135$result = pwg_query($query);
136if ($user['status'] == 'admin')
137{
138  $template->assign_block_vars('validation', array());
139}
140while ($row = mysql_fetch_array($result))
141{
142  $category_id = $row['category_id'];
143 
144  // for each picture, getting informations for displaying thumbnail and
145  // link to the full size picture
146  $query = '
147SELECT name,file,storage_category_id as cat_id,tn_ext,path
148  FROM '.IMAGES_TABLE.'
149  WHERE id = '.$row['image_id'].'
150;';
151  $subresult = pwg_query($query);
152  $subrow = mysql_fetch_array($subresult);
153
154  // name of the picture
155  $name = get_cat_display_name_cache($row['uppercats'], '', false);
156  $name.= $conf['level_separator'];
157  if (!empty($subrow['name']))
158  {
159    $name.= $subrow['name'];
160  }
161  else
162  {
163    $name.= str_replace('_',' ',get_filename_wo_extension($subrow['file']));
164  }
165
166  // source of the thumbnail picture
167  $thumbnail_src = get_thumbnail_src($subrow['path'], @$subrow['tn_ext']);
168  // link to the full size picture
169  $url = PHPWG_ROOT_PATH.'picture.php?cat='.$category_id;
170  $url.= '&amp;image_id='.$row['image_id'];
171   
172  $template->assign_block_vars(
173    'picture',
174    array(
175      'TITLE_IMG'=>$name,
176      'I_THUMB'=>$thumbnail_src,
177      'U_THUMB'=>add_session_id($url)
178      ));
179   
180  // for each picture, retrieving all comments
181  $query = '
182SELECT *
183  FROM '.COMMENTS_TABLE.'
184  WHERE image_id = '.$row['image_id'].'
185    AND date >= \''.$maxdate.'\'';
186  if ($user['status'] != 'admin')
187  {
188    $query.= '
189    AND validated = \'true\'';
190  }
191  $query.= '
192  ORDER BY date DESC
193;';
194  $handleresult = pwg_query($query);
195  while ($subrow = mysql_fetch_array($handleresult))
196  {
197    $author = $subrow['author'];
198    if (empty($subrow['author']))
199    {
200      $author = $lang['guest'];
201    }
202
203    $template->assign_block_vars(
204      'picture.comment',
205      array(
206        'COMMENT_AUTHOR'=>$author,
207        'COMMENT_DATE'=>format_date($subrow['date'],'mysql_datetime',true),
208        'COMMENT'=>parse_comment_content($subrow['content']),
209        ));
210   
211    if ($user['status'] == 'admin')
212    {
213      $template->assign_block_vars(
214        'picture.comment.validation',
215        array(
216          'ID'=> $subrow['id'],
217          'CHECKED'=>($subrow['validated']=='false')?'checked="checked"': ''
218          ));
219    }
220  }
221}
222// +-----------------------------------------------------------------------+
223// |                           html code display                           |
224// +-----------------------------------------------------------------------+
225if (defined('IN_ADMIN'))
226{
227  $template->assign_var_from_handle('ADMIN_CONTENT', 'comments');
228}
229else
230{
231  $template->assign_block_vars('title',array());
232  $template->parse('comments');
233  include(PHPWG_ROOT_PATH.'include/page_tail.php');
234}
235?>
Note: See TracBrowser for help on using the repository browser.