0) { $prev = $pos - 1; $prev_data = get_pic_data($album, $pic_count, $album_name, $prev, 1, false); $prev_tgt = "$PHP_SELF?album=$album$cat_link&pos=$prev&pid=".$prev_data[0]['pid']; $prev_title = _MD_DIS_PREV; } else { $prev_tgt = "javascript:;"; $prev_title = ""; } if ($pos < ($pic_count -1)) { $next = $pos + 1; $next_data = get_pic_data($album, $pic_count, $album_name, $next, 1, false); $next_tgt = "$PHP_SELF?album=$album$cat_link&pos=$next&pid=".$next_data[0]['pid']; $next_title = _MD_DIS_NEXT; } else { $next_tgt = "javascript:;"; $next_title = ""; } if (USER_CAN_SEND_ECARDS){ $ecard_tgt = "ecard.php?album=$album$cat_link&pid=$pid&pos=$pos"; $ecard_title = _MD_DIS_SEND_CARD; } else { $ecard_tgt = "javascript:alert('".addslashes(_MD_DIS_CARD_DISABLEMSG)."');"; $ecard_title = _MD_DIS_CARD_DISABLE; } $thumb_tgt = "thumbnails.php?album=$album$cat_link&page=$page"; $slideshow_tgt = "$PHP_SELF?pid=$pid&album=$album$cat_link&pid=$pid&slideshow=5000"; $pic_pos = sprintf(_MD_DIS_PICPOS, $human_pos, $pic_count); $xoopsTpl->assign('thumb_tgt', $thumb_tgt); $xoopsTpl->assign('thumb_title', _MD_DIS_BACK_TNPAGE); $xoopsTpl->assign('pic_info_title', _MD_DIS_SHOW_PIC_INFO); $xoopsTpl->assign('slideshow_tgt', $slideshow_tgt); $xoopsTpl->assign('slideshow_title', _MD_DIS_SLIDE); $xoopsTpl->assign('pic_pos', $pic_pos); $xoopsTpl->assign('ecard_tgt', $ecard_tgt); $xoopsTpl->assign('ecard_title', $ecard_title); $xoopsTpl->assign('prev_tgt', $prev_tgt); $xoopsTpl->assign('prev_title', $prev_title); $xoopsTpl->assign('next_tgt', $next_tgt); $xoopsTpl->assign('next_title', $next_title); } // Displays a picture function html_picture() { global $xoopsModuleConfig, $CURRENT_PIC_DATA, $CURRENT_ALBUM_DATA, $USER, $HTTP_COOKIE_VARS; global $album, $comment_date_fmt; global $xoopsTpl, $myts; $pid = $CURRENT_PIC_DATA['pid']; if (!isset($USER['liv']) || !is_array($USER['liv'])) { $USER['liv'] = array(); } // Add 1 to hit counter if ($album != "lasthits" && !in_array($pid, $USER['liv']) && isset($HTTP_COOKIE_VARS[$xoopsModuleConfig['cookie_name'].'_data'])){ add_hit($pid); if (count($USER['liv']) > 4 ) array_shift($USER['liv']); array_push($USER['liv'], $pid); } if ($xoopsModuleConfig['make_intermediate'] && max($CURRENT_PIC_DATA['pwidth'], $CURRENT_PIC_DATA['pheight']) > $xoopsModuleConfig['picture_width']) { $picture_url = get_pic_url($CURRENT_PIC_DATA, 'normal'); } else { $picture_url = get_pic_url($CURRENT_PIC_DATA, 'fullsize'); } $image_size = compute_img_size($CURRENT_PIC_DATA['pwidth'], $CURRENT_PIC_DATA['pheight'], $xoopsModuleConfig['picture_width']); $xoopsTpl->assign('pid', $pid); $xoopsTpl->assign('picture_url', $picture_url); $xoopsTpl->assign('image_size', $image_size['geom']); if (isset($image_size['reduced'])) { $winsizeX = $CURRENT_PIC_DATA['pwidth'] + 16; $winsizeY = $CURRENT_PIC_DATA['pheight'] + 16; $xoopsTpl->assign('reduced', 1); $xoopsTpl->assign('winsizeX', $winsizeX); $xoopsTpl->assign('winsizeY', $winsizeY); $xoopsTpl->assign('uniqid_rand', uniqid(rand())); $xoopsTpl->assign('lang_view_fs', _MD_DIS_FULL); } else $xoopsTpl->assign('reduced', 0); if ($CURRENT_PIC_DATA['title']) { $xoopsTpl->assign('pic_title', $myts->makeTboxData4Show($CURRENT_PIC_DATA['title'])); } else $xoopsTpl->assign('pic_title',''); if ($CURRENT_PIC_DATA['caption']) { $xoopsTpl->assign('pic_caption', $myts->makeTareaData4Show($CURRENT_PIC_DATA['caption'],0)); } else $xoopsTpl->assign('pic_caption',''); if ((USER_ADMIN_MODE && $CURRENT_ALBUM_DATA['category'] == FIRST_USER_CAT + USER_ID) || GALLERY_ADMIN_MODE){ $xoopsTpl->assign('lang_confirm_del', _MD_DIS_CONF_DEL); $xoopsTpl->assign('lang_del_pic', _MD_DIS_DEL_PIC); } else{ $xoopsTpl->assign('lang_del_pic', ''); } } function html_rating_box() { global $CURRENT_PIC_DATA, $CURRENT_ALBUM_DATA; global $xoopsTpl; if (!(USER_CAN_RATE_PICTURES && $CURRENT_ALBUM_DATA['votes'] == 'YES')) return ''; $votes = $CURRENT_PIC_DATA['votes'] ? sprintf(_MD_DIS_RATINGCUR, round($CURRENT_PIC_DATA['pic_rating']/2000, 1), $CURRENT_PIC_DATA['votes']) : _MD_DIS_NO_VOTE; $pid = $CURRENT_PIC_DATA['pid']; $xoopsTpl->assign('lang_rate_this_pic', _MD_DIS_RATE_THIS); $xoopsTpl->assign('votes', $votes); $xoopsTpl->assign('lang_rubbish', _MD_DIS_RUBBISH); $xoopsTpl->assign('lang_poor', _MD_DIS_POOR); $xoopsTpl->assign('lang_fair', _MD_DIS_FAIR); $xoopsTpl->assign('lang_good', _MD_DIS_GOOD); $xoopsTpl->assign('lang_excellent', _MD_DIS_EXCELLENT); $xoopsTpl->assign('lang_great', _MD_DIS_GREAT); } // Display picture information function html_picinfo() { global $CURRENT_PIC_DATA, $CURRENT_ALBUM_DATA; global $album, $xoopsModuleConfig,$myts; global $xoopsTpl; $info[_MD_DIS_FNAME] = $myts->makeTboxData4Show($CURRENT_PIC_DATA['filename']); $info[_MD_DIS_ANAME] = '' . $myts->makeTboxData4Show($CURRENT_ALBUM_DATA['title']).''; $user_handler =& xoops_gethandler('member'); $submitter =& $user_handler->getUser($CURRENT_PIC_DATA['owner_id']); if (is_object ($submitter)) { $info[_MD_DIS_UPLOADER] = '' . $submitter->uname().'  '; } if ($CURRENT_PIC_DATA['votes'] > 0) { $info[sprintf(_MD_DIS_RATING, $CURRENT_PIC_DATA['votes'])] = ''; } $keys = explode(' ', $myts->makeTboxData4Show($CURRENT_PIC_DATA['keywords'])); $info[_MD_KEYS] = ''; foreach($keys as $k){ $info[_MD_KEYS].= "{$k} "; } $info[_MD_KEYS].= ''; //$info[_MD_KEYS] = ''.preg_replace("/(\S+)/","\\1" , $myts->makeTboxData4Show($CURRENT_PIC_DATA['keywords'])).''; for ($i =1; $i<= 4; $i++){ if ($xoopsModuleConfig['user_field'.$i.'_name']) { $info[$xoopsModuleConfig['user_field'.$i.'_name']] = $CURRENT_PIC_DATA['user'.$i]; } } $info[_MD_DIS_FSIZE] = ($CURRENT_PIC_DATA['filesize'] > 10240 ? ($CURRENT_PIC_DATA['filesize'] >> 10).' '._MD_KB : $CURRENT_PIC_DATA['filesize'].' '._MD_BYTES); $info[_MD_DIS_DIMEMS] = sprintf(_MD_DIS_SIZE, $CURRENT_PIC_DATA['pwidth'], $CURRENT_PIC_DATA['pheight']); $info[_MD_DIS_DISPLAYED] = sprintf(_MD_DIS_VIEWS, $CURRENT_PIC_DATA['hits']); $info[_MD_DIS_SENT] = sprintf(_MD_DIS_VIEWS, $CURRENT_PIC_DATA['sent_card']); $path_to_pic = $xoopsModuleConfig['fullpath'].$CURRENT_PIC_DATA['filepath'].$CURRENT_PIC_DATA['filename']; if ($xoopsModuleConfig['read_exif_data']) $exif = exif_parse_file($path_to_pic); if (isset($exif) && is_array($exif)){ if (isset($exif['Camera'])) $info[_MD_DIS_CAMERA] = $exif['Camera']; if (isset($exif['DateTaken'])) $info[_MD_DIS_DATA_TAKEN] = $exif['DateTaken']; if (isset($exif['Aperture'])) $info[_MD_DIS_APERTURE] = $exif['Aperture']; if (isset($exif['ExposureTime'])) $info[_MD_DIS_EXPTIME] = $exif['ExposureTime']; if (isset($exif['FocalLength'])) $info[_MD_DIS_FLENGTH] = $exif['FocalLength']; if (isset($exif['Comment'])) $info[_MD_DIS_COMMENT] = $exif['Comment']; } if(USER_IS_ADMIN) $info[_MD_DIS_SUBIP] = $CURRENT_PIC_DATA['ip']; $xoopsTpl->assign('lang_picinfo_title', _MD_DIS_TITLE); $xoopsTpl->assign('picinfo', isset($HTTP_COOKIE_VARS['picinfo']) ? $HTTP_COOKIE_VARS['picinfo'] : ($xoopsModuleConfig['display_pic_info'] ? 'block' : 'none')); foreach ($info as $key => $value){ $xoopsTpl->append('infos',array('key'=> $key,'value'=>$value)); } } // Display the full size image function display_fullsize_pic() { global $xoopsModuleConfig, $HTTP_GET_VARS, $ALBUM_SET; global $xoopsDB, $pic_out; if (isset($HTTP_GET_VARS['picfile'])){ if (!GALLERY_ADMIN_MODE) redirect_header('index.php',2,_MD_ACCESS_DENIED); $picfile = $HTTP_GET_VARS['picfile']; $picname = $xoopsModuleConfig['fullpath'].$picfile; $imagesize = @getimagesize($picname); $pic_out= "\"$picfile\"/
\n"; } elseif (isset($HTTP_GET_VARS['pid'])) { $pid = (int)$HTTP_GET_VARS['pid']; $sql = "SELECT * ". "FROM ".$xoopsDB->prefix("xcgal_pictures")." ". "WHERE pid='$pid' $ALBUM_SET"; $result = $xoopsDB->query($sql); if (!$xoopsDB->getRowsNum($result)) redirect_header('index.php',2,_MD_NON_EXIST_AP); $row = $xoopsDB->fetchArray($result); $pic_url = get_pic_url($row, 'fullsize'); $geom = 'width="' . $row['pwidth'] . '" height="' . $row['pheight'] . '"'; $pic_out= "\"".
\n"; } } function get_subcat_data($parent, $level) { global $ALBUM_SET_ARRAY, $xoopsDB; $result = $xoopsDB->query("SELECT cid, name, description FROM ".$xoopsDB->prefix("xcgal_categories")." WHERE parent = '$parent'"); if ($xoopsDB->getRowsNum($result) > 0){ $rowset = db_fetch_rowset($result); foreach ($rowset as $subcat){ $result=$xoopsDB->query("SELECT aid FROM ".$xoopsDB->prefix("xcgal_albums")." WHERE category = {$subcat['cid']}"); $album_count = $xoopsDB->getRowsNum($result); while($row = $xoopsDB->fetchArray($result)){ $ALBUM_SET_ARRAY[] = $row['aid']; } // while } if ($level > 1) get_subcat_data($subcat['cid'], $level -1); } } /************************************************************************** * Main code **************************************************************************/ $pos = isset($HTTP_GET_VARS['pos']) ? (int)$HTTP_GET_VARS['pos'] : (isset($HTTP_GET_VARS['pid']) ? -(int)$HTTP_GET_VARS['pid']: 0); $cat = isset($HTTP_GET_VARS['cat']) ? (int)$HTTP_GET_VARS['cat'] : 0; $album = isset($HTTP_GET_VARS['album']) ? $HTTP_GET_VARS['album'] : ''; // Build the private album set if (!GALLERY_ADMIN_MODE && $xoopsModuleConfig['allow_private_albums']) get_private_album_set(); // Build the album set if required if (!is_numeric($album) && $cat) { // Meta albums, we need to restrict the albums to the current category if ($cat < 0) { $ALBUM_SET .= 'AND aid IN ('.(- $cat).') '; } else { $ALBUM_SET_ARRAY = array(); if ($cat == USER_GAL_CAT) $where = 'category > '.FIRST_USER_CAT; else $where = "category = '$cat'"; $result=$xoopsDB->query("SELECT aid FROM ".$xoopsDB->prefix("xcgal_albums")." WHERE $where"); while($row = $xoopsDB->fetchArray($result)){ $ALBUM_SET_ARRAY[] = $row['aid']; } // while get_subcat_data($cat, $xoopsModuleConfig['subcat_level']); // Treat the album set if (count($ALBUM_SET_ARRAY)) { $set =''; foreach ($ALBUM_SET_ARRAY as $album_id) $set .= ($set == '') ? $album_id : ','.$album_id; $ALBUM_SET .= "AND aid IN ($set) "; } } } // Retrieve data for the current picture if ($pos < 0) { $pid = -$pos; $result = $xoopsDB->query("SELECT aid from ".$xoopsDB->prefix("xcgal_pictures")." WHERE pid='$pid' $ALBUM_SET LIMIT 1"); if ($xoopsDB->getRowsNum($result) == 0) redirect_header('index.php',2,_MD_NON_EXIST_AP); $row = $xoopsDB->fetchArray($result); $album = $row['aid']; $pic_data = get_pic_data($album, $pic_count, $album_name, -1, -1, false); for($pos=0; $pic_data[$pos]['pid'] != $pid && $pos < $pic_count; $pos++); $pic_data = get_pic_data($album, $pic_count, $album_name, $pos, 1, false); $CURRENT_PIC_DATA = $pic_data[0]; } elseif (isset($pos)) { $pic_data = get_pic_data($album, $pic_count, $album_name, $pos, 1, false); if ($pic_count == 0) { redirect_header('index.php',2,_MD_NO_IMG_TO_DISPLAY); } elseif (count($pic_data) == 0 && $pos >= $pic_count) { $pos = $pic_count - 1; $human_pos = $pos + 1; $pic_data = get_pic_data($album, $pic_count, $album_name, $pos, 1, false); } $CURRENT_PIC_DATA = $pic_data[0]; } // Retrieve data for the current album if (isset($CURRENT_PIC_DATA)) { $result = $xoopsDB->query("SELECT title, comments, votes, category FROM ".$xoopsDB->prefix("xcgal_albums")." WHERE aid='{$CURRENT_PIC_DATA['aid']}' LIMIT 1"); if (!$xoopsDB->getRowsNum($result)) redirect_header('index.php',2, sprintf(_MD_PIC_IN_INVALID_ALBUM,$CURRENT_PIC_DATA['aid'])); $CURRENT_ALBUM_DATA = $xoopsDB->fetchArray($result); if (is_numeric($album)) { $cat = - $album; $actual_cat = $CURRENT_ALBUM_DATA['category']; } else { $actual_cat = $CURRENT_ALBUM_DATA['category']; } } if (isset($HTTP_GET_VARS['fullsize'])){ display_fullsize_pic(); require_once XOOPS_ROOT_PATH.'/class/template.php'; $xoopsTpl = new XoopsTpl(); $xoopsTpl->assign('sitename', $xoopsConfig['sitename']); $xoopsTpl->assign('gallery', $xoopsModule->getVar('name')); $xoopsTpl->assign('pic_out', $pic_out); $xoopsTpl->display('db:xcgal_fullsize.html'); exit(); } elseif (isset($HTTP_GET_VARS['slideshow'])) { $xoopsOption['template_main'] = 'xcgal_slideshow.html'; include XOOPS_ROOT_PATH."/header.php"; $xoopsTpl->assign('speed', (int)$HTTP_GET_VARS['slideshow']); $i = 0; $j = 0; $pid = $HTTP_GET_VARS['pid']; $start_img = ''; $pic_data = get_pic_data($HTTP_GET_VARS['album'], $pic_count, $album_name, -1, -1, false); foreach ($pic_data as $picture){ if ($xoopsModuleConfig['make_intermediate'] && max($picture['pwidth'], $picture['pheight']) > $xoopsModuleConfig['picture_width']) { $picture_url = get_pic_url($picture, 'normal'); } else { $picture_url = get_pic_url($picture, 'fullsize'); } $xoopsTpl->append('pics',array('pic_url'=> $picture_url,'i'=>$i)); if ($picture['pid'] == $pid){ $j = $i; $start_img = $picture_url; } $i++; } $xoopsTpl->assign('j', $j); $xoopsTpl->assign('album', isset($HTTP_GET_VARS['album']) ? $HTTP_GET_VARS['album'] : ''); $xoopsTpl->assign('cat', isset($HTTP_GET_VARS['cat']) ? $HTTP_GET_VARS['cat'] : ''); $xoopsTpl->assign('tab_width', $xoopsModuleConfig['picture_table_width']); $xoopsTpl->assign('cell_height',$xoopsModuleConfig['picture_width'] + 100); $xoopsTpl->assign('start_img',$start_img); $xoopsTpl->assign('lang_stop_slideshow',_MD_DIS_STOP_SLIDE); user_save_profile(); $xoopsTpl->assign('gallery', $xoopsModule->getVar('name')); include_once "include/theme_func.php"; main_menu(); //$xoopsTpl->assign('xcgal_footer', pagefooter()); do_footer(); include_once "../../footer.php"; } else { if (!isset($pos)) redirect_header('index.php',2,_MD_NON_EXIST_AP); $picture_title = $CURRENT_PIC_DATA['title'] ? $CURRENT_PIC_DATA['title'] : strtr(preg_replace("/(.+)\..*?\Z/", "\\1", htmlspecialchars($CURRENT_PIC_DATA['filename'])), "_", " "); $xoopsOption['template_main'] = 'xcgal_display.html'; include XOOPS_ROOT_PATH."/header.php"; html_img_nav_menu(); html_picture(); html_rating_box(); html_picinfo(); user_save_profile(); $xoopsTpl->assign('gallery', $xoopsModule->getVar('name')); include_once "include/theme_func.php"; main_menu(); //$xoopsTpl->assign('xcgal_footer', pagefooter()); do_footer(); include XOOPS_ROOT_PATH.'/include/comment_view.php'; include_once "../../footer.php"; } ?>