diff options
Diffstat (limited to '')
-rw-r--r-- | comments.php | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/comments.php b/comments.php new file mode 100644 index 000000000..b4802ace0 --- /dev/null +++ b/comments.php @@ -0,0 +1,174 @@ +<?php +/*************************************************************************** + * comments.php * + * ------------------- * + * application : PhpWebGallery 1.3 <http://phpwebgallery.net> * + * author : Pierrick LE GALL <pierrick@z0rglub.com> * + * * + * $Id$ + * * + ***************************************************************************/ + +/*************************************************************************** + * * + * 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/init.inc.php' ); +//------------------------------------------------------------------- functions +function display_pictures( $mysql_result, $maxtime, $forbidden_cat_ids ) +{ + global $vtp,$handle,$lang,$conf, + $array_cat_directories,$array_cat_site_id,$array_cat_names; + + while ( $row = mysql_fetch_array( $mysql_result ) ) + { + $vtp->addSession( $handle, 'picture' ); + // 1. find a category wich is authorized for the user to display a + // category name. + $query = 'SELECT category_id'; + $query.= ' FROM '.PREFIX_TABLE.'image_category'; + $query.= ' WHERE image_id = '.$row['image_id']; + if ( count( $forbidden_cat_ids ) > 0 ) + { + $query.= ' AND category_id NOT IN ('; + foreach ( $forbidden_cat_ids as $i => $restricted_cat ) { + if ( $i > 0 ) $query.= ','; + $query.= $restricted_cat; + } + $query.= ')'; + } + $query.= ' ORDER BY RAND()'; + $query.= ';'; + $subrow = mysql_fetch_array( mysql_query( $query ) ); + $category_id = $subrow['category_id']; + + if ( $array_cat_directories[$category_id] == '' ) + { + $array_cat_directories[$category_id] = + get_complete_dir( $category_id ); + $cat_result = get_cat_info( $category_id ); + $array_cat_site_id[$category_id] = $cat_result['site_id']; + $array_cat_names[$category_id] = + get_cat_display_name( $cat_result['name'], ' > ', '' ); + } + + // 2. for each picture, getting informations for displaying thumbnail and + // link to the full size picture + $query = 'SELECT name,file,storage_category_id as 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']] == '' ) + { + $array_cat_directories[$subrow['cat_id']] = + get_complete_dir( $subrow['cat_id'] ); + $cat_result = get_cat_info( $subrow['cat_id'] ); + $array_cat_site_id[$subrow['cat_id']] = $cat_result['site_id']; + $array_cat_names[$subrow['cat_id']] = + get_cat_display_name( $cat_result['name'], ' > ', '' ); + } + + $file = get_filename_wo_extension( $subrow['file'] ); + // name of the picture + $name = $array_cat_names[$category_id].' > '; + if ( $subrow['name'] != '' ) $name.= $subrow['name']; + else $name.= str_replace( '_', ' ', $file ); + $name.= ' [ '.$subrow['file'].' ]'; + $vtp->setVar( $handle, 'picture.title', $name ); + // source of the thumbnail picture + $src = $array_cat_directories[$subrow['cat_id']]; + $src.= 'thumbnail/'.$conf['prefix_thumbnail']; + $src.= $file.'.'.$subrow['tn_ext']; + $vtp->setVar( $handle, 'picture.thumb_src', $src ); + // link to the full size picture + $url = './picture.php?cat='.$category_id; + $url.= '&image_id='.$row['image_id']; + $vtp->setVar( $handle, '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.= " AND validated = 'true'"; + $query.= ' ORDER BY date DESC'; + $query.= ';'; + $handleresult = mysql_query( $query ); + while ( $subrow = mysql_fetch_array( $handleresult ) ) + { + $vtp->addSession( $handle, 'comment' ); + $author = $subrow['author']; + if ( $subrow['author'] == '' ) $author = $lang['guest']; + $vtp->setVar( $handle, 'comment.author', $author ); + $displayed_date = format_date( $subrow['date'], 'unix', true ); + $vtp->setVar( $handle, 'comment.date', $displayed_date ); + $vtp->setVar( $handle, 'comment.content', nl2br( $subrow['content'] ) ); + $vtp->closeSession( $handle, 'comment' ); + } + $vtp->closeSession( $handle, 'picture' ); + } +} +//----------------------------------------------------- template initialization +$vtp = new VTemplate; +$handle = $vtp->Open( './template/'.$user['template'].'/comments.vtp' ); +initialize_template(); +$tpl = array( 'title_comments','stats_last_days','search_return_main_page' ); +templatize_array( $tpl, 'lang', $handle ); +$vtp->setGlobalVar( $handle, 'text_color', $user['couleur_text'] ); +//--------------------------------------------------- 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 +foreach ( $conf['last_days'] as $option ) { + $vtp->addSession( $handle, 'last_day_option' ); + $vtp->setVar( $handle, 'last_day_option.option', $option ); + $url = './comments.php'; + $url.= '?last_days='.($option - 1); + $vtp->setVar( $handle, 'last_day_option.link', add_session_id( $url ) ); + $style = ''; + if ( $option == MAX_DAYS + 1 ) $style = 'text-decoration:underline;'; + $vtp->setVar( $handle, 'last_day_option.style', $style ); + $vtp->closeSession( $handle, 'last_day_option' ); +} +$vtp->setVar( $handle, 'back_url', add_session_id( './category.php' ) ); +if ( isset( $_GET['last_days'] ) ) +{ + // 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(ic.image_id) as image_id'; + $query.= ' FROM '.PREFIX_TABLE.'comments AS c'; + $query.= ', '.PREFIX_TABLE.'image_category AS ic'; + $query.= ' WHERE c.image_id = ic.image_id'; + $query.= ' AND date > '.$maxtime; + // we must not show pictures of a forbidden category + $restricted_cats = get_all_restrictions( $user['id'],$user['status'] ); + if ( count( $restricted_cats ) > 0 ) + { + $query.= ' AND category_id NOT IN ('; + foreach ( $restricted_cats as $i => $restricted_cat ) { + if ( $i > 0 ) $query.= ','; + $query.= $restricted_cat; + } + $query.= ')'; + } + $query.= ' ORDER BY ic.image_id DESC'; + $query.= ';'; + $result = mysql_query( $query ); + display_pictures( $result, $maxtime, $restricted_cats ); +} +//----------------------------------------------------------- html code display +$code = $vtp->Display( $handle, 0 ); +echo $code; +?>
\ No newline at end of file |