/cpgdbal/plugins/usergal_alphatabs/codebase.php
PHP | 354 lines | 308 code | 24 blank | 22 comment | 31 complexity | bb359b2155623227c56ff179ea156ec3 MD5 | raw file
- <?php
- /*************************
- Coppermine Photo Gallery
- ************************
- Copyright (c) 2003-2008 Dev Team
- v1.1 originally written by Gregory DEMAR
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License version 3
- as published by the Free Software Foundation.
-
- ********************************************
- Coppermine version: 1.5.0
- $HeadURL: https://coppermine.svn.sourceforge.net/svnroot/coppermine/trunk/cpg1.5.x/plugins/usergal_alphatabs/codebase.php $
- $Revision: 5129 $
- $LastChangedBy: gaugau $
- $Date: 2008-10-18 16:03:12 +0530 (Sat, 18 Oct 2008) $
- **********************************************/
-
- if (!defined('IN_COPPERMINE')) die('Not in Coppermine...');
- define('CORE_PLUGIN', true);
- $superCage = Inspekt::makeSuperCage();
-
- if ($superCage->get->keyExists('cat') && $superCage->get->getInt('cat') == USER_GAL_CAT){
-
- if ($superCage->get->keyExists('letter')) {
- $thisplugin->add_action('page_start','bridge_extender');
- }
-
- function makejumpbox(){
- global $lang_plugin_php;
- starttable('100%', $lang_plugin_php['usergal_alphatabs_jump_by_username'], 26);
- echo '<tr>';
- foreach (range('A', 'Z') as $letter){
- echo '<td width="'.(100/26).'%" align="center"><a href="index.php?cat=1&letter='.$letter.'"> '.$letter.' </a></td>';
- }
- echo '</tr>';
- endtable();
- }
-
- function theme_display_thumbnails(&$thumb_list, $nbThumb, $album_name, $aid, $cat, $page, $total_pages, $sort_options, $display_tabs, $mode = 'thumb')
- {
- global $CONFIG;
- global $template_thumb_view_title_row,$template_fav_thumb_view_title_row, $lang_thumb_view, $template_tab_display, $template_thumbnail_view, $lang_album_list;
- $superCage = Inspekt::makeSuperCage();
-
- static $header = '';
- static $thumb_cell = '';
- static $empty_cell = '';
- static $row_separator = '';
- static $footer = '';
- static $tabs = '';
- static $spacer = '';
-
- if ($header == '') {
- $thumb_cell = template_extract_block($template_thumbnail_view, 'thumb_cell');
- $tabs = template_extract_block($template_thumbnail_view, 'tabs');
- $header = template_extract_block($template_thumbnail_view, 'header');
- $empty_cell = template_extract_block($template_thumbnail_view, 'empty_cell');
- $row_separator = template_extract_block($template_thumbnail_view, 'row_separator');
- $footer = template_extract_block($template_thumbnail_view, 'footer');
- $spacer = template_extract_block($template_thumbnail_view, 'spacer');
- }
-
- $cat_link = is_numeric($aid) ? '' : '&cat=' . $cat;
-
- $theme_thumb_tab_tmpl = $template_tab_display;
-
- if ($mode == 'thumb') {
- $theme_thumb_tab_tmpl['left_text'] = strtr($theme_thumb_tab_tmpl['left_text'], array('{LEFT_TEXT}' => $aid == 'lastalb' ? $lang_album_list['album_on_page'] : $lang_thumb_view['pic_on_page']));
- $theme_thumb_tab_tmpl['inactive_tab'] = strtr($theme_thumb_tab_tmpl['inactive_tab'], array('{LINK}' => 'thumbnails.php?album=' . $aid . $cat_link . '&page=%d'));
- $theme_thumb_tab_tmpl['inactive_next_tab'] = strtr($theme_thumb_tab_tmpl['inactive_next_tab'], array('{LINK}' => 'thumbnails.php?album=' . $aid . $cat_link . '&page=%d'));
- $theme_thumb_tab_tmpl['inactive_prev_tab'] = strtr($theme_thumb_tab_tmpl['inactive_prev_tab'], array('{LINK}' => 'thumbnails.php?album=' . $aid . $cat_link . '&page=%d'));
- } else {
- // start of modified section
- $pl = $superCage->get->getAlpha('letter') ? ('&letter=' . $superCage->get->getAlpha('letter')) : '';
- $theme_thumb_tab_tmpl['left_text'] = strtr($theme_thumb_tab_tmpl['left_text'], array('{LEFT_TEXT}' => $lang_thumb_view['user_on_page']));
- $theme_thumb_tab_tmpl['inactive_tab'] = strtr($theme_thumb_tab_tmpl['inactive_tab'], array('{LINK}' => 'index.php?cat=' . $cat . '&page=%d' . $pl));
- $theme_thumb_tab_tmpl['inactive_next_tab'] = strtr($theme_thumb_tab_tmpl['inactive_next_tab'], array('{LINK}' => 'index.php?cat=' . $cat . '&page=%d' . $pl));
- $theme_thumb_tab_tmpl['inactive_prev_tab'] = strtr($theme_thumb_tab_tmpl['inactive_prev_tab'], array('{LINK}' => 'index.php?cat=' . $cat . '&page=%d' . $pl));
- // end of modified section
- }
-
- $thumbcols = $CONFIG['thumbcols'];
- $cell_width = ceil(100 / $CONFIG['thumbcols']) . '%';
-
- $tabs_html = $display_tabs ? create_tabs($nbThumb, $page, $total_pages, $theme_thumb_tab_tmpl) : '';
- // The sort order options are not available for meta albums
- if ($sort_options) {
- $param = array('{ALBUM_NAME}' => $album_name,
- '{AID}' => $aid,
- '{PAGE}' => $page,
- '{NAME}' => $lang_thumb_view['name'],
- '{TITLE}' => $lang_thumb_view['title'],
- '{DATE}' => $lang_thumb_view['date'],
- '{SORT_TA}' => $lang_thumb_view['sort_ta'],
- '{SORT_TD}' => $lang_thumb_view['sort_td'],
- '{SORT_NA}' => $lang_thumb_view['sort_na'],
- '{SORT_ND}' => $lang_thumb_view['sort_nd'],
- '{SORT_DA}' => $lang_thumb_view['sort_da'],
- '{SORT_DD}' => $lang_thumb_view['sort_dd'],
- '{POSITION}' => $lang_thumb_view['position'],
- '{SORT_PA}' => $lang_thumb_view['sort_pa'],
- '{SORT_PD}' => $lang_thumb_view['sort_pd'],
- );
- $title = template_eval($template_thumb_view_title_row, $param);
- } else if ($aid == 'favpics' && $CONFIG['enable_zipdownload'] == 1) { //Lots of stuff can be added here later
- $param = array('{ALBUM_NAME}' => $album_name,
- '{DOWNLOAD_ZIP}'=>$lang_thumb_view['download_zip']
- );
- $title = template_eval($template_fav_thumb_view_title_row, $param);
- }else{
- $title = $album_name;
- }
-
-
- if ($mode == 'thumb') {
- starttable('100%', $title, $thumbcols);
- } else {
- makejumpbox();
- starttable('100%');
- }
-
- echo $header;
-
- $i = 0;
- foreach($thumb_list as $thumb) {
- $i++;
- if ($mode == 'thumb') {
- if ($aid == 'lastalb') {
- $params = array('{CELL_WIDTH}' => $cell_width,
- '{LINK_TGT}' => "thumbnails.php?album={$thumb['aid']}",
- '{THUMB}' => $thumb['image'],
- '{CAPTION}' => $thumb['caption'],
- '{ADMIN_MENU}' => $thumb['admin_menu']
- );
- } else {
- $params = array('{CELL_WIDTH}' => $cell_width,
- '{LINK_TGT}' => "displayimage.php?album=$aid$cat_link&pos={$thumb['pos']}",
- '{THUMB}' => $thumb['image'],
- '{CAPTION}' => $thumb['caption'],
- '{ADMIN_MENU}' => $thumb['admin_menu']
- );
- }
- } else {
- $params = array('{CELL_WIDTH}' => $cell_width,
- '{LINK_TGT}' => "index.php?cat={$thumb['cat']}",
- '{THUMB}' => $thumb['image'],
- '{CAPTION}' => $thumb['caption'],
- '{ADMIN_MENU}' => ''
- );
- }
- echo template_eval($thumb_cell, $params);
-
- if ((($i % $thumbcols) == 0) && ($i < count($thumb_list))) {
- echo $row_separator;
- }
- }
- for (;($i % $thumbcols); $i++) {
- echo $empty_cell;
- }
- echo $footer;
-
- if ($display_tabs) {
- $params = array('{THUMB_COLS}' => $thumbcols,
- '{TABS}' => $tabs_html
- );
- echo template_eval($tabs, $params);
- }
-
- endtable();
- echo $spacer;
- }
-
- function bridge_extender()
- {
- global $cpg_udb, $cpg_db_usergal_alphatabs;
- ##################### DB ######################
- $cpgdb =& cpgDB::getInstance();
- $cpgdb->connect_to_existing($CONFIG['LINK_ID']);
- ##################################################
-
- eval('
-
- class new_udb_class extends '. get_class($cpg_udb) . ' {
-
- function new_udb_class() {}
-
- function list_users_query(&$user_count)
- {
- global $CONFIG, $FORBIDDEN_SET, $PAGE;
- $superCage = Inspekt::makeSuperCage();
- $getLetter = $superCage->get->getAlpha("letter");
-
- $f =& $this->field;
-
- if ($FORBIDDEN_SET != "") {
- $forbidden_with_icon = "AND ($FORBIDDEN_SET or p.galleryicon=p.pid)";
- $forbidden = "AND ($FORBIDDEN_SET)";
- } else {
- $forbidden_with_icon = "";
- $forbidden = "";
- }
-
- $users_per_page = $CONFIG["thumbcols"] * $CONFIG["thumbrows"];
- $lower_limit = ($PAGE-1) * $users_per_page;
-
- if ($this->can_join_tables){
-
- /* $sql = "SELECT {$f[\'user_id\']} as user_id,";
- $sql .= "{$f[\'username\']} as user_name,";
- $sql .= "COUNT(DISTINCT a.aid) as alb_count,";
- $sql .= "COUNT(DISTINCT pid) as pic_count,";
- $sql .= "MAX(pid) as thumb_pid, ";
- $sql .= "MAX(galleryicon) as gallery_pid ";
- $sql .= "FROM {$CONFIG[\'TABLE_ALBUMS\']} AS a ";
- $sql .= "INNER JOIN {$this->usertable} as u on u.{$f[\'user_id\']} = a.category - " . FIRST_USER_CAT . " ";
- $sql .= "INNER JOIN {$CONFIG[\'TABLE_PICTURES\']} AS p ON p.aid = a.aid ";
- $sql .= "WHERE ((isnull(approved) or approved=\'YES\') AND category > " . FIRST_USER_CAT . ") $forbidden_with_icon ";
- if ($l = $getLetter) $sql .= "AND {$f[\'username\']} LIKE \'$l%\' ";
- $sql .= "GROUP BY category ";
- $sql .= "ORDER BY category ";
- //$sql .= "LIMIT $lower_limit, $users_per_page ";
-
-
- $result = cpg_db_query($sql);
-
- while ($row = mysql_fetch_array($result)) {
- $users[] = $row;
- }
- mysql_free_result($result); */
- ################################### DB ####################################
- if ($l = $getLetter) {
- $like = "AND {$f[\'username\']} LIKE \'$l%\' ";
- } else {
- $like = "";
- }
- $cpgdb->query($cpg_db_usergal_alphatabs[\'list_users_can_join_tables\'], $f[\'user_id\'], $this->usertable,
- FIRST_USER_CAT, $forbidden_with_icon, $like, $lower_limit, $users_per_page);
-
- while ($row = $cpgdb->fetchRow()) {
- $users[] = $row;
- }
- $cpgdb->free();
- ###################################################################################
-
- } else {
- // This is the way we collect the data without a direct join to the forums user table
-
- // This query determines which users we need to collect usernames of - ie just those which have albums with pics
- // and are on the page we are looking at
- /* $sql = "SELECT category - 10000 as user_id ";
- $sql .= "FROM {$CONFIG[\'TABLE_ALBUMS\']} AS a ";
- $sql .= "INNER JOIN {$CONFIG[\'TABLE_PICTURES\']} AS p ON p.aid = a.aid ";
- $sql .= "WHERE ((isnull(approved) or approved=\"YES\") ";
- $sql .= "AND category > " . FIRST_USER_CAT . ") $forbidden_with_icon GROUP BY category ";
- //$sql .= "LIMIT $lower_limit, $users_per_page ";
-
- $result = cpg_db_query($sql);
-
- $user_ids = array();
-
- while ($row = mysql_fetch_array($result)) {
- $user_ids[] = $row["user_id"];
- }
- mysql_free_result($result); */
- #################################### DB ##################################
- $cpgdb->query($cpg_db_usergal_alphatabs[\'user_have_alb_pics\'], FIRST_USER_CAT, $forbidden_with_icon
- $lower_limit, $users_per_page);
-
- $user_ids = array();
-
- while ($row = $cpgdb->fetchRow()) {
- $user_ids[] = $row["user_id"];
- }
- $cpgdb->free();
- #################################################################################
-
- $userlist = implode(",", $user_ids);
-
- // This query collects an array of user_id -> username mappings for the user ids collected above
- /* $sql = "SELECT {$this->field[\'user_id\']} AS user_id, {$this->field[\'username\']} AS user_name FROM {$this->usertable} WHERE {$this->field[\'user_id\']} IN ($userlist)";
- if ($l = $getLetter) $sql .= " AND {$f[\'username\']} LIKE \'$l%\' ";
- $result = cpg_db_query($sql, $this->link_id);
-
- $userdata = array();
-
- while ($row = mysql_fetch_array($result)) {
- $userdata[$row["user_id"]] = $row["user_name"];
- }
-
- mysql_free_result($result); */
- ###################################### DB #####################################
- if ($l = $getLetter) {
- $like = " AND {$f[\'username\']} LIKE \'$l%\' ";
- } else {
- $like = "";
- }
- $this->cpgudb->query($cpg_db_usergal_alphatabs[\'$get_user_data\'], $this->field[\'user_id\'],
- $this->field[\'username\'], $this->usertable, $userlist, $like);
-
- while ($row = $this->cpgudb->fetchRow()) {
- $userdata[$row["user_id"]] = $row["user_name"];
- }
- $this->cpgudb->free();
- #####################################################################################
-
- // This is the main query, similar to the one in the join implementation above but without the join to the user table
- // We use the pics owner_id field as the user_id instead of using category - 10000 as the user_id
- /* $sql = "SELECT owner_id as user_id,";
- $sql .= "COUNT(DISTINCT a.aid) as alb_count,";
- $sql .= "COUNT(DISTINCT pid) as pic_count,";
- $sql .= "MAX(pid) as thumb_pid, ";
- $sql .= "MAX(galleryicon) as gallery_pid ";
- $sql .= "FROM {$CONFIG[\'TABLE_ALBUMS\']} AS a ";
- $sql .= "INNER JOIN {$CONFIG[\'TABLE_PICTURES\']} AS p ON p.aid = a.aid ";
- $sql .= "WHERE ((isnull(approved) or approved=\'YES\') AND category > " . FIRST_USER_CAT . ") $forbidden_with_icon GROUP BY category ";
- $sql .= "ORDER BY category ";
-
- $result = cpg_db_query($sql);
-
- // Here we associate the username with the album details.
- while ($row = mysql_fetch_array($result)) {
- if (strtolower($userdata[$row["user_id"]]{0}) == strtolower($getLetter)) $users[] = array_merge($row, array("user_name" => $userdata[$row["user_id"]]));
- }
-
- mysql_free_result($result); */
- ##################################### DB ####################################
- $cpgdb->query($cpg_db_usergal_alphatabs[\'list_users_main_query\'], FIRST_USER_CAT, $forbidden_with_icon);
- // Here we associate the username with the album details.
- while ($row = $cpgdb->fetchRow()) {
- if (strtolower($userdata[$row["user_id"]]{0}) == strtolower($getLetter)) $users[] = array_merge($row, array("user_name" => $userdata[$row["user_id"]]));
- }
- $cpgdb->free();
- #####################################################################################
- }
-
- $user_count = count($users);
- $totalPages = ceil($user_count / $users_per_page);
- if ($PAGE > $totalPages) $PAGE = 1;
-
- return $users;
- }
- }
- ');
-
- $vars = get_object_vars($cpg_udb);
- $cpg_udb = new new_udb_class;
- foreach ($vars as $name => $value) $cpg_udb->$name = $value;
- }
-
-
- }
- ?>