ine Photo Gallery 1.3.1 for CMS 7.11.05 // // ------------------------------------------------------------------------ // // Copyright (C) 2002,2003 Grégory DEMAR // // http://www.chezgreg.net/coppermine/ // // ------------------------------------------------------------------------ // // Updated by the Coppermine Dev Team // // (http://coppermine.sf.net/team/) // // see /docs/credits.html for details // // ------------------------------------------------------------------------ // // New Port by GoldenTroll // // http://coppermine.findhere.org/ // // Based on coppermine 1.1d by Surf http://www.surf4all.net/ // // ------------------------------------------------------------------------ // // Pc-Nuke! Systems - Development/Support - Coppermine for PHP-Nuke // // http://www.max.pcnuke.com - http://www.pcnuke.com // // Website for Port Upgrades from 1.3.0 and up... 7.11.05 // // ------------------------------------------------------------------------ // // 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; either version 2 of the License, or // // (at your option) any later version. // // ------------------------------------------------------------------------ // /**********************************/ /* Module Configuration */ /* (right side on) v3.1 */ /* Remove the following line */ /* will remove the right side */ /**********************************/ define('INDEX_FILE', true); $index = 1; if (eregi("modules/", $_SERVER['PHP_SELF'])) { die ("You can't access this file directly..."); } define('INDEX_PHP', true); if ($mode == 'smilies') { require("includes/nbbcode.php"); echo smilies_table("window", $field, $form); exit; } require("modules/" . $name . "/include/load.inc"); // Local functions definition // function html_albummenu($id) { global $template_album_admin_menu, $lang_album_admin_menu; static $template = ''; // Altered security issue by Pc-Nuke! 12.23.05 -- start // //if ($template == '') { //$params = array('{CONFIRM_DELETE}' => $lang_album_admin_menu['confirm_delete'], // '{DELETE}' => $lang_album_admin_menu['delete'], //'{MODIFY}' => $lang_album_admin_menu['modify'], //'{EDIT_PICS}' => $lang_album_admin_menu['edit_pics'], // ); // $template = template_eval($template_album_admin_menu, $params); //} // Altered security issue by Pc-Nuke! 12.23.05 -- end // $params = array('{ALBUM_ID}' => $id,); return template_eval($template, $params); } function get_subcat_data($parent, &$cat_data, &$album_set_array, $level, $ident = '') { global $CONFIG, $HIDE_USER_CAT, $CPG_M_DIR, $CPG_M_URL; $result = db_query("SELECT cid, catname, description FROM {$CONFIG['TABLE_CATEGORIES']} WHERE parent = '$parent' ORDER BY pos"); if (mysql_num_rows($result) > 0) { $rowset = db_fetch_rowset($result); foreach ($rowset as $subcat) { if ($subcat['cid'] == USER_GAL_CAT) { $result = db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category >= " . FIRST_USER_CAT); $album_count = mysql_num_rows($result); while ($row = mysql_fetch_array($result)) { $album_set_array[] = $row['aid']; } // while mysql_free_result($result); $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_PICTURES']}, {$CONFIG['TABLE_ALBUMS']} WHERE {$CONFIG['TABLE_PICTURES']}.aid = {$CONFIG['TABLE_ALBUMS']}.aid AND category >= " . FIRST_USER_CAT); $nbEnr = mysql_fetch_array($result); $pic_count = $nbEnr[0]; $subcat['description'] = preg_replace("/[\r\n]*/i", '
' . $ident , bb_decode($subcat['description'])); $link = $ident . "{$subcat['catname']}"; if ($album_count) { $cat_data[] = array($link, $ident . $subcat['description'], $album_count, $pic_count); $HIDE_USER_CAT = 0; } else { $HIDE_USER_CAT = 1; } } else { $result = db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = {$subcat['cid']}"); $album_count = mysql_num_rows($result); while ($row = mysql_fetch_array($result)) { $album_set_array[] = $row['aid']; } // while mysql_free_result($result); $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_PICTURES']}, {$CONFIG['TABLE_ALBUMS']} WHERE {$CONFIG['TABLE_PICTURES']}.aid = {$CONFIG['TABLE_ALBUMS']}.aid AND category = {$subcat['cid']}"); $nbEnr = mysql_fetch_array($result); mysql_free_result($result); $pic_count = $nbEnr[0]; $subcat['catname'] = $subcat['catname']; $subcat['description'] = preg_replace("/[\r\n]*/i", '
' . $ident , bb_decode($subcat['description'])); $link = $ident . "{$subcat['catname']}"; if ($pic_count == 0 && $album_count == 0) { $cat_data[] = array($link, $ident . $subcat['description']); } else { // Check if you need to show subcat_level if ($level == $CONFIG['subcat_level']) $cat_albums = list_cat_albums($subcat['cid']); else $cat_albums = ''; $cat_data[] = array($link, $ident . $subcat['description'], $album_count, $pic_count, 'cat_albums' => $cat_albums); } } if ($level > 1) get_subcat_data($subcat['cid'], $cat_data, $album_set_array, $level -1, $ident . ""); } } } // List all categories function get_cat_list(&$cat_data, &$statistics) { global $CONFIG, $BREADCRUMB_TEXT, $STATS_IN_ALB_LIST; global $HIDE_USER_CAT; global $cat; global $lang_list_categories, $lang_errors; // Build the category list $cat_data = array(); $album_set_array = array(); get_subcat_data($cat, $cat_data, $album_set_array, $CONFIG['subcat_level']); // Add the albums in the current category to the album set if ($cat) { if ($cat == USER_GAL_CAT) { $result = db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category >= " . FIRST_USER_CAT); } else { $result = db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = '$cat'"); } while ($row = mysql_fetch_array($result)) { $album_set_array[] = $row['aid']; } // while mysql_free_result($result); } if (count($album_set_array) && $cat) { $set = ''; foreach ($album_set_array as $album) $set .= $album . ','; $set = substr($set, 0, -1); $current_album_set = "AND aid IN ($set) "; } elseif ($cat) { $current_album_set = "AND aid IN (-1) "; } // Gather gallery statistics if ($cat == 0) { $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_ALBUMS']} WHERE 1"); $nbEnr = mysql_fetch_array($result); $album_count = $nbEnr[0]; mysql_free_result($result); $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_PICTURES']} WHERE 1"); $nbEnr = mysql_fetch_array($result); $picture_count = $nbEnr[0]; mysql_free_result($result); $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_COMMENTS']} WHERE 1"); $nbEnr = mysql_fetch_array($result); $comment_count = $nbEnr[0]; mysql_free_result($result); $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_CATEGORIES']} WHERE 1"); $nbEnr = mysql_fetch_array($result); $cat_count = $nbEnr[0] - $HIDE_USER_CAT; mysql_free_result($result); $result = db_query("SELECT sum(hits) FROM {$CONFIG['TABLE_PICTURES']} WHERE 1"); $nbEnr = mysql_fetch_array($result); $hit_count = (int)$nbEnr[0]; mysql_free_result($result); if (count($cat_data)) { $statistics = strtr($lang_list_categories['stat1'], array('[pictures]' => $picture_count, '[albums]' => $album_count, '[cat]' => $cat_count, '[comments]' => $comment_count, '[views]' => $hit_count)); } else { $STATS_IN_ALB_LIST = true; $statistics = strtr($lang_list_categories['stat3'], array('[pictures]' => $picture_count, '[albums]' => $album_count, '[comments]' => $comment_count, '[views]' => $hit_count)); } } elseif ($cat >= FIRST_USER_CAT && $current_album_set) { $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_ALBUMS']} WHERE 1 $current_album_set"); $nbEnr = mysql_fetch_array($result); $album_count = $nbEnr[0]; mysql_free_result($result); $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_PICTURES']} WHERE 1 $current_album_set"); $nbEnr = mysql_fetch_array($result); $picture_count = $nbEnr[0]; mysql_free_result($result); $result = db_query("SELECT sum(hits) FROM {$CONFIG['TABLE_PICTURES']} WHERE 1 $current_album_set"); $nbEnr = mysql_fetch_array($result); $hit_count = (int)$nbEnr[0]; mysql_free_result($result); $statistics = strtr($lang_list_categories['stat2'], array('[pictures]' => $picture_count, '[albums]' => $album_count, '[views]' => $hit_count)); } else { $statistics = ''; } } function list_users() { global $CONFIG, $PAGE, $CPG_M_DIR, $CPG_M_URL; global $lang_list_users, $lang_errors, $template_user_list_info_box; global $field_user_id, $field_user_name, $field_user_avatar; $sql = "SELECT $field_user_id, " . "$field_user_name, $field_user_avatar as avatar, " . "COUNT(DISTINCT a.aid) as alb_count, " . "COUNT(DISTINCT pid) as pic_count, " . "MAX(pid) as thumb_pid " . "FROM {$CONFIG['TABLE_USERS']} AS u " . "INNER JOIN {$CONFIG['TABLE_ALBUMS']} AS a ON (category = " . FIRST_USER_CAT . " + $field_user_id " . " AND ".VIS_GROUPS.")". "LEFT JOIN {$CONFIG['TABLE_PICTURES']} AS p ON (p.aid = a.aid AND approved = 'YES') " . "GROUP BY $field_user_id ORDER BY $field_user_name"; $result = db_query($sql); $user_count = mysql_num_rows($result); if (!$user_count) { msg_box($lang_list_users['user_list'], $lang_list_users['no_user_gal'], '', '', '100%'); mysql_free_result($result); return; } $user_per_page = $CONFIG['thumbcols'] * $CONFIG['thumbrows']; $totalPages = ceil($user_count / $user_per_page); if ($PAGE > $totalPages) $PAGE = 1; $lower_limit = ($PAGE-1) * $user_per_page; $upper_limit = min($user_count, $PAGE * $user_per_page); $row_count = $upper_limit - $lower_limit; $rowset = array(); $i = 0; mysql_data_seek($result, $lower_limit); while (($row = mysql_fetch_array($result)) && ($i++ < $row_count)) $rowset[] = $row; mysql_free_result($result); $user_list = array(); for ($i = 0; $i < $row_count; $i++) { $user = &$rowset[$i]; $user_thumb = ''.$lang_errors[no_img_to_display].''; $user_pic_count = $user['pic_count']; $user_thumb_pid = $user['thumb_pid']; $user_album_count = $user['alb_count']; // NEW gtroll add as config opt $avatar = $user['avatar']; if (!eregi("blank.gif", $avatar) && strlen($avatar) > 3 && $CONFIG['avatar_private_album']) { if (ereg("(http)", $avatar)) { $user_thumb = ""; } else if (file_exists("images/avatars/$avatar")) { $user_thumb = ""; } else { $user_thumb = ""; } // END NEW gtroll } else if ($user_pic_count) { $sql = "SELECT filepath, filename, url_prefix, pwidth, pheight " . "FROM {$CONFIG['TABLE_PICTURES']} " . "WHERE pid='$user_thumb_pid'"; $result = db_query($sql); if (mysql_num_rows($result)) { $picture = mysql_fetch_array($result); mysql_free_result($result); $image_size = compute_img_size($picture['pwidth'], $picture['pheight'], $CONFIG['thumb_width']); $user_thumb = "\"".$user[$field_user_name]."\""; // $user[$field_user_name] } } $albums_txt = sprintf($lang_list_users['n_albums'], $user_album_count); $pictures_txt = sprintf($lang_list_users['n_pics'], $user_pic_count); $params = array('{username}' => $user[$field_user_name], '{USER_ID}' => $user[$field_user_id], '{ALBUMS}' => $albums_txt, '{PICTURES}' => $pictures_txt, ); $caption = template_eval($template_user_list_info_box, $params); $user_list[] = array('cat' => FIRST_USER_CAT + $user[$field_user_id], 'image' => $user_thumb, 'caption' => $caption, 'url' => "$CPG_M_URL&cat=".(FIRST_USER_CAT + $user[$field_user_id]), ); } $page_link = $CPG_M_URL.'&cat=1&page=%d'; theme_display_thumbnails($user_list, $user_count, '', $page_link, $PAGE, $totalPages, false, true, 'user'); } // List (category) albums // Redone for a cleaner approach: DJMaze function list_cat_albums($cat = 0, $buffer = true) { global $CONFIG, $USER, $PAGE, $lastup_date_fmt, $USER_DATA, $CPG_M_DIR; global $lang_list_albums, $lang_errors; if ($cat == 0 && $buffer) return ''; if ($cat == "") $cat = 0; $alb_per_page = $CONFIG['albums_per_page']; $maxTab = $CONFIG['max_tabs']; if (!USER_IS_ADMIN && !$CONFIG['show_private']){ $visible = "AND ".VIS_GROUPS;// NEW gtroll } $result = db_query("SELECT count(*) FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = $cat $visible"); $nbEnr = mysql_fetch_array($result); $nbAlb = $nbEnr[0]; mysql_free_result($result); if ($nbAlb == 0) return ''; $totalPages = ceil($nbAlb / $alb_per_page); if (isset($_GET['page'])) $PAGE = max((int)$_GET['page'], 1); if ($PAGE > $totalPages || $cat != $_GET['cat']) $PAGE = 1; $lower_limit = ($PAGE-1) * $alb_per_page; $upper_limit = min($nbAlb, $PAGE * $alb_per_page); $sql = "SELECT a.aid, a.title, a.description, visibility, filepath, " . "filename, url_prefix, pwidth, pheight " . "FROM {$CONFIG['TABLE_ALBUMS']} as a " . "LEFT JOIN {$CONFIG['TABLE_PICTURES']} as p ON thumb=pid " . "WHERE category = '$cat' $visible ORDER BY pos " . "LIMIT " . $lower_limit . "," . ($upper_limit - $lower_limit); $alb_thumbs_q = db_query($sql); $alb_thumbs = db_fetch_rowset($alb_thumbs_q); mysql_free_result($alb_thumbs_q); $disp_album_count = count($alb_thumbs); $album_set = ''; foreach($alb_thumbs as $value) { $album_set .= $value['aid'] . ', '; } $album_set = '(' . substr($album_set, 0, -2) . ')'; $sql = "SELECT aid, count(pid) as pic_count, max(pid) as last_pid, max(ctime) as last_upload " . "FROM {$CONFIG['TABLE_PICTURES']} " . "WHERE aid IN $album_set AND approved = 'YES' " . "GROUP BY aid"; $alb_stats_q = db_query($sql); $alb_stats = db_fetch_rowset($alb_stats_q); mysql_free_result($alb_stats_q); foreach($alb_stats as $key => $value) { $cross_ref[$value['aid']] = &$alb_stats[$key]; } for ($alb_idx = 0; $alb_idx < $disp_album_count; $alb_idx++) { $alb_thumb = &$alb_thumbs[$alb_idx]; $aid = $alb_thumb['aid']; if (isset($cross_ref[$aid])) { $alb_stat = $cross_ref[$aid]; $count = $alb_stat['pic_count']; } else { $alb_stat = array(); $count = 0; } // Inserts a thumbnail if the album contains 1 or more images $visibility = $alb_thumb['visibility']; if ($visibility == '0' || $visibility == (FIRST_USER_CAT + USER_ID) || $visibility == $USER_DATA['group_id'] || USER_IS_ADMIN) { if ($count > 0) { // Inserts a thumbnail if the album contains 1 or more images if ($alb_thumb['filename']) { $picture = &$alb_thumb; } else { $sql = "SELECT filepath, filename, url_prefix, pwidth, pheight " . "FROM {$CONFIG['TABLE_PICTURES']} " . "WHERE pid='{$alb_stat['last_pid']}'"; $result = db_query($sql); $picture = mysql_fetch_array($result); mysql_free_result($result); } $image_size = compute_img_size($picture['pwidth'], $picture['pheight'], $CONFIG['alb_list_thumb_size']); $alb_list[$alb_idx]['thumb_pic'] = "\"".$alb_thumb['title']."\""; } else { // Inserts an empty thumbnail if the album contains 0 images $image_size = compute_img_size(100, 75, $CONFIG['alb_list_thumb_size']); $alb_list[$alb_idx]['thumb_pic'] = "\"".$lang_errors[no_img_to_display]."\""; } } elseif ($CONFIG['show_private']) { $image_size = compute_img_size(100, 75, $CONFIG['alb_list_thumb_size']); $alb_list[$alb_idx]['thumb_pic'] = "\"".$lang_errors['members_only']."\""; } // Prepare everything $last_upload_date = $count ? localised_date($alb_stat['last_upload'], $lastup_date_fmt) : ''; $alb_list[$alb_idx]['aid'] = $alb_thumb['aid']; $alb_list[$alb_idx]['album_title'] = $alb_thumb['title']; $alb_list[$alb_idx]['album_desc'] = bb_decode($alb_thumb['description']); $alb_list[$alb_idx]['pic_count'] = $count; $alb_list[$alb_idx]['last_upl'] = $last_upload_date; $alb_list[$alb_idx]['album_info'] = sprintf($lang_list_albums['n_pictures'], $count) . ($count ? sprintf($lang_list_albums['last_added'], $last_upload_date) : ""); $alb_list[$alb_idx]['album_adm_menu'] = (GALLERY_ADMIN_MODE || (USER_ADMIN_MODE && $cat == USER_ID + FIRST_USER_CAT)) ? html_albummenu($alb_thumb['aid']) : ''; } if ($buffer) { ob_start(); theme_display_album_list_cat($alb_list, $nbAlb, $cat, $PAGE, $totalPages); $cat_albums = ob_get_contents(); ob_end_clean(); return $cat_albums; } else{ theme_display_album_list($alb_list, $nbAlb, $cat, $PAGE, $totalPages); } } /** * Main code */ if (isset($_GET['page'])) $PAGE = max((int)$_GET['page'], 1); else $PAGE = 1; if (isset($_GET['cat'])) $cat = (int)$_GET['cat']; // Gather data for categories $cat_data = array(); $statistics = ''; $STATS_IN_ALB_LIST = false; get_cat_list($cat_data, $statistics); global $BREADCRUMB_TEXT, $thisalbum ; //limit meta blocks to the current album or category // NEW $thisalbum = "category >= 0"; if ($cat < 0) { // && $cat<0 Meta albums, we need to restrict the albums to the current category $actual_album = -$cat; $thisalbum .= $CONFIG['TABLE_ALBUMS'].'.aid = '.$actual_album; } else if ($cat){ if ($cat == USER_GAL_CAT) { $thisalbum = 'category > ' . FIRST_USER_CAT; } elseif (is_numeric($cat)) { $thisalbum = "category = '$cat'"; } } // NEW /*if ((is_numeric($cat))&&(!$album)){ //cat list $thisalbum = "category = $cat"; }else if ((is_numeric($cat))||(is_numeric($album))){ // numeric album $thisalbum = "aid = $album"; }elseif ((!is_numeric($cat))&&(!$album)){ //home page $thisalbum = "category = 0"; } */ //non-numeric album don't need this value as there is no meta blocks pageheader($BREADCRUMB_TEXT ? $BREADCRUMB_TEXT : $lang_index_php['welcome']); $elements = preg_split("|/|", $CONFIG['main_page_layout'], -1, PREG_SPLIT_NO_EMPTY); foreach ($elements as $element) { if (preg_match("/(\w+),*(\d+)*/", $element, $matches)) switch ($matches[1]) { case 'breadcrumb': // Added breadcrumb as a separate listable block from config if ($breadcrumb != '' || count($cat_data) > 0) set_breadcrumb();//theme_display_breadcrumb($breadcrumb, $cat_data); break; case 'catlist': if (count($cat_data) > 0) theme_display_cat_list($breadcrumb, $cat_data, $statistics); if (isset($cat) && $cat == USER_GAL_CAT) list_users(); break; case 'alblist': list_cat_albums($cat, false); break; case 'random': if ($cat != 1) display_thumbnails('random', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'lastup': if ($cat != 1) display_thumbnails('lastup', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'lastupby': if ($cat != 1 && USER_ID > 1) display_thumbnails('lastupby', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'lastalb': if ($cat != 1) display_thumbnails('lastalb', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'topn': if ($cat != 1) display_thumbnails('topn', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'toprated': if ($cat != 1) display_thumbnails('toprated', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'lastcom': if ($cat != 1)display_thumbnails('lastcom', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'lastcomby': if ($cat != 1 && USER_ID > 1) display_thumbnails('lastcomby', '', $cat, 1, $CONFIG['thumbcols'], max(1, $matches[2]), false); break; case 'anycontent': include("$CPG_M_DIR/anycontent.php"); break; } } pagefooter(); ?>>