Cpg1.4.2 > Cpg142 / Bridge / Udb Base.inc.php

Questions? Need Help? Want to share? » PHP Forum
Script Name:
Cpg1.4.2

Download:
cpg1.4.2.zip

Category:
Image Galleries

Archive Content:

Cpg142

Cpg142 > Albums > Edit

Cpg142 > Albums

Cpg142 > Albums > Userpics

Cpg142

Cpg142 > Bridge

Cpg142

Cpg142 > Docs

Cpg142 > Docs > Pics

Cpg142 > Docs

Cpg142 > Docs > Theme

Cpg142 > Docs

Cpg142

Cpg142 > Images

Cpg142 > Images > Flags

Cpg142 > Images

Cpg142 > Images > Smiles

Cpg142 > Images

Cpg142

Cpg142 > Include

Cpg142 > Include > Makers

Cpg142 > Include

Cpg142

Cpg142 > Lang

Cpg142

Cpg142 > Logs

Cpg142

Cpg142 > Plugins > Sample

Cpg142 > Plugins > Sef Urls

Cpg142

Cpg142 > Sql

Cpg142

Cpg142 > Themes > Classic > Images

Cpg142 > Themes > Classic

Cpg142 > Themes > Eyeball > Images

Cpg142 > Themes > Eyeball

Cpg142 > Themes > Fruity > Images

Cpg142 > Themes > Fruity

Cpg142 > Themes > Hardwired > Images

Cpg142 > Themes > Hardwired

Cpg142 > Themes > Igames > Images

Cpg142 > Themes > Igames

Cpg142 > Themes > Mac Ox X > Images

Cpg142 > Themes > Mac Ox X

Cpg142 > Themes > Project Vii > Images

Cpg142 > Themes > Project Vii

Cpg142 > Themes > Rainy Day > Images

Cpg142 > Themes > Rainy Day

Cpg142 > Themes > Sample > Images

Cpg142 > Themes > Sample

Cpg142 > Themes > Water Drop > Images

Cpg142 > Themes > Water Drop

Cpg142

Udb Base.inc.php:


<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2005 Coppermine Dev Team
  v1.1 originaly 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 as published by
  the Free Software Foundation; either version 2 of the License,  or
  (at your option) any later version.
  ********************************************
  Coppermine version: 1.4.2
  $Source: /cvsroot/coppermine/devel/bridge/udb_base.inc.php, v $
  $Revision: 1.14 $
  $Author: gaugau $
  $Date: 2005/10/25 01:16:09 $
**********************************************/

if (!defined('IN_COPPERMINE')) die('Not in Coppermine...');

class 
core_udb {
    
    function 
connect($id '')
    {
        global 
$CONFIG;

        
// Define wheter we can join tables or not in SQL queries (same host & same db or user)
        
define('UDB_CAN_JOIN_TABLES',  ($this->db['host'] == $CONFIG['dbserver'] && ($this->db['name'] == $CONFIG['dbname'] || $this->db['user'] == $CONFIG['dbuser'])));
        
        if (
$id){
            
$this->link_id $id;
        } else {
            
// Connect to udb database if necessary
            
if (!UDB_CAN_JOIN_TABLES) {
                
$this->link_id mysql_connect($this->db['host'],  $this->db['user'],  $this->db['password']);
                if (!
$this->link_id) die("<b>Coppermine critical error</b>:<br />Unable to connect to UDB database !<br /><br />MySQL said: <b>" mysql_error() . "</b>");
                
mysql_select_db ($this->db['name'],  $this->link_id);
            } else {
                
$this->link_id 0;
            }
        }
    }
    
    function 
authenticate()
    {
        global 
$USER_DATA;

        if (!(
$auth $this->session_extraction()) && !($auth $this->cookie_extraction())) {
            
$this->load_guest_data();
        } else {
            list (
$id,  $cookie_pass) = $auth;
            
$f $this->field;
     
            if (isset(
$this->usergroupstable)){
                
$sql "SELECT u.{$f['user_id']} AS id,  u.{$f['username']} AS username,  u.{$f['password']} AS password,  ug.{$f['usertbl_group_id']} AS group_id ".
                       
"FROM {$this->usertable} AS u,  {$this->usergroupstable} AS ug ".
                       
"WHERE u.{$f['user_id']}=ug.{$f['user_id']} AND u.{$f['user_id']}='$id'";
            } else {
                
$sql "SELECT u.{$f['user_id']} AS id,  u.{$f['username']} AS username,  u.{$f['password']} AS password,  u.{$f['usertbl_group_id']}+100 AS group_id ".
                       
"FROM {$this->usertable} AS u INNER JOIN {$this->groupstable} AS g ON u.{$f['usertbl_group_id']}=g.{$f['grouptbl_group_id']} ".
                       
"WHERE u.{$f['user_id']}='$id'";
            }
    
            
$result cpg_db_query($sql,  $this->link_id);
    
            if (
mysql_num_rows($result)){
                
$row mysql_fetch_assoc($result);
                
mysql_free_result($result);
                
                
$db_pass $this->udb_hash_db($row['password']);
                if (
$db_pass === $cookie_pass) {
                    
$this->load_user_data($row);
                } else {
                    
$this->load_guest_data();
                }
            } else {
                
$this->load_guest_data();
            }
        }
        
        
$user_group_set '(' implode(', ',  $USER_DATA['groups']) . ')';

        
$USER_DATA array_merge($USER_DATA,  $this->get_user_data($USER_DATA['groups'][0],  $USER_DATA['groups'],  $this->guestgroup));

        if (
$this->use_post_based_groups){
            
$USER_DATA['has_admin_access'] = (in_array($USER_DATA['groups'][0] - 100, $this->admingroups)) ? 0;
        } else {
            
$USER_DATA['has_admin_access'] = ($USER_DATA['groups'][0] == 1) ? 0;
        }
        
        
$USER_DATA['can_see_all_albums'] = $USER_DATA['has_admin_access'];
        
        
// avoids a template error
        
if (!$USER_DATA['user_id']) $USER_DATA['can_create_albums'] = 0;
        
        
// For error checking
        
$CONFIG['TABLE_USERS'] = '**ERROR**';
            
        
define('USER_ID',  $USER_DATA['user_id']);
        
define('USER_NAME',  addslashes($USER_DATA['user_name']));
        
define('USER_GROUP',  $USER_DATA['group_name']);
        
define('USER_GROUP_SET',  $user_group_set);
        
define('USER_IS_ADMIN',  $USER_DATA['has_admin_access']);
        
define('USER_CAN_SEND_ECARDS',  (int)$USER_DATA['can_send_ecards']);
        
define('USER_CAN_RATE_PICTURES',  (int)$USER_DATA['can_rate_pictures']);
        
define('USER_CAN_POST_COMMENTS',  (int)$USER_DATA['can_post_comments']);
        
define('USER_CAN_UPLOAD_PICTURES',  (int)$USER_DATA['can_upload_pictures']);
        
define('USER_CAN_CREATE_ALBUMS',  (int)$USER_DATA['can_create_albums']);
        
define('USER_UPLOAD_FORM',  (int)$USER_DATA['upload_form_config']);
        
define('CUSTOMIZE_UPLOAD_FORM',  (int)$USER_DATA['custom_user_upload']);
        
define('NUM_FILE_BOXES',  (int)$USER_DATA['num_file_upload']);
        
define('NUM_URI_BOXES',  (int)$USER_DATA['num_URI_upload']);
        
        
$this->session_update();
    }
    
    function 
load_guest_data()
    {
        global 
$USER_DATA;

        
$USER_DATA['user_id'] = 0;
        
$USER_DATA['user_name'] = 'Guest';
        
$USER_DATA['groups'][0] = $this->use_post_based_groups ? ($this->guestgroup) : 3;
        
$USER_DATA['group_quota'] = 1;
        
$USER_DATA['can_rate_pictures'] = 0;
        
$USER_DATA['can_send_ecards'] = 0;
        
$USER_DATA['can_post_comments'] = 0;
        
$USER_DATA['can_upload_pictures'] = 0;
        
$USER_DATA['can_create_albums'] = 0;
        
$USER_DATA['pub_upl_need_approval'] = 1;
        
$USER_DATA['priv_upl_need_approval'] = 1;
        
$USER_DATA['upload_form_config'] = 0;
        
$USER_DATA['num_file_upload'] = 0;
        
$USER_DATA['num_URI_upload'] = 0;
        
$USER_DATA['custom_user_upload'] = 0;
    }
    
    function 
load_user_data($row)
    {

        global 
$USER_DATA;

        
$USER_DATA['user_id'] = $row['id'];
        
$USER_DATA['user_name'] = $row['username'];

        
//changed to "row['group_id']" $group_id = $row[($this->usergroupstable)?$this->field['usertbl_group_id']:$this->field['grouptbl_group_id']];

        
if  ($this->multigroups){
            
$USER_DATA['groups'] = $this->get_groups($row);
        } else {
            if (
$this->use_post_based_groups){
                
$USER_DATA['groups'] = array(=> $row['group_id']);
            } else {
                
$USER_DATA['groups'] = array(=> (in_array($row['group_id'] - 100,  $this->admingroups)) ? 2);
            }
        }
    }

    
/*
     * Prototype function needed for Mambo *maybe others*
     * Keeps the session alive
     */
    
function session_update() {}
    
    function 
get_user_count()
    {
        global 
$CONFIG;
        static 
$user_count 0;
        
        if (!
$user_count) {
            
$result cpg_db_query("SELECT count(*) FROM {$this->usertable} WHERE 1");
            
$nbEnr mysql_fetch_array($result);
            
$user_count $nbEnr[0];
            
mysql_free_result($result);
        }
        
        return 
$user_count;
    }

    function 
get_users($options = array())
    {
        global 
$CONFIG;

        
// Copy UDB fields and config variables (just to make it easier to read)
        
$f =& $this->field;
        
$C =& $CONFIG;
        
        
// Sort codes
        
$sort_codes = array('name_a' => 'user_name ASC',
                            
'name_d' => 'user_name DESC',
                            
'group_a' => 'group_name ASC',
                            
'group_d' => 'group_name DESC',
                            
'reg_a' => 'user_regdate ASC',
                            
'reg_d' => 'user_regdate DESC',
                            
'pic_a' => 'pic_count ASC',
                            
'pic_d' => 'pic_count DESC',
                            
'disku_a' => 'disk_usage ASC',
                            
'disku_d' => 'disk_usage DESC',
                            
'lv_a' => 'user_lastvisit ASC',
                            
'lv_d' => 'user_lastvisit DESC',
                           );

        
// Fix the group id,  if bridging is enabled
        
if ($CONFIG['bridge_enable']) {
            
$f['usertbl_group_id'] .= '+100';
        }
        
        
// Build WHERE clause,  if this is a username search
        
if ($options['search']) {
            
$options['search'] = 'WHERE u.'.$f['username'].' LIKE "'.$options['search'].'" ';
        }

        
// Build SQL table,  should work with all bridges
        
$sql "SELECT {$f['user_id']} as user_id,  {$f['username']} as user_name,  {$f['email']} as user_email,  {$f['regdate']} as user_regdate,  {$f['lastvisit']} as user_lastvisit,  {$f['active']} as user_active,  ".
               
"COUNT(pid) as pic_count,  ROUND(SUM(total_filesize)/1024) as disk_usage,  group_name,  group_quota ".
               
"FROM {$this->usertable} AS u ".
               
"INNER JOIN {$C['TABLE_USERGROUPS']} AS g ON u.{$f['usertbl_group_id']} = g.group_id ".
               
"LEFT JOIN {$C['TABLE_PICTURES']} AS p ON p.owner_id = u.{$f['user_id']} ".
               
$options['search'].
               
"GROUP BY user_id " "ORDER BY " $sort_codes[$options['sort']] . " ".
               
"LIMIT {$options['lower_limit']},  {$options['users_per_page']};";

        
$result cpg_db_query($sql);
        
        
// If no records,  return empty value
        
if (!$result) {
            return array();
        }
        
        
// Extract user list to an array
        
while ($user mysql_fetch_assoc($result)) {
            
$userlist[] = $user;
        }    

        return 
$userlist;
    }


    function 
get_groups() {}

    
// Retrieve the name of a user
    
function get_user_name($uid)
    {
        
$sql "SELECT {$this->field['username']} as user_name FROM {$this->usertable} WHERE {$this->field['user_id']} = '$uid'";

        
$result cpg_db_query($sql,  $this->link_id);

        if (
mysql_num_rows($result)) {
            
$row mysql_fetch_array($result);
            
mysql_free_result($result);
            return 
$row['user_name'];
        } else {
            return 
'';
        }
    }
    
    
// Retrieve the id of a user
    
function get_user_id($username)
    {
        
$username addslashes($username);

        
$sql "SELECT {$this->field['user_id']} AS user_id FROM {$this->usertable} WHERE {$this->field['username']}  = '$username'";

        
$result cpg_db_query($sql,  $this->link_id);

        if (
mysql_num_rows($result)) {
            
$row mysql_fetch_array($result);
            
mysql_free_result($result);
            return 
$row['user_id'];
        } else {
            return 
'';
        }
    }
    
    
// Perform database queries to calculate user's privileges based on group membership
    
function get_user_data($pri_group,  $groups,  $default_group_id 3)
    {
    
            
//Parameters :
            //                $pri_group (scalar) :         Group ID number of the user's 'main' group. This is the group that will be
            //                                                                                        the user's profile display. ($USER_DATA['group_id'])
            //
            //                $groups (array) :                        List of group ids of all the groups that the user is a member of. IF this list
            //                                                                                        does not include the $pri_group,  it will be added.
            //
            //                $default_group_id (scalar) :         The group used as a fall-back if no valid group ids are specified.
            //                                                                                                        If this group also does not exist then CPG will abort with a critical
            //                                                                                                        error.
            //
            // Returns an array containing most of the data to put into in $USER_DATA.
    
            
global $CONFIG;
    
            foreach (
$groups as $key => $val)
                    if (!
is_numeric($val))
                            unset (
$groups[$key]);
            if (!
in_array($pri_group,  $groups)) array_push($groups,  $pri_group);
    
            
$result cpg_db_query("SELECT MAX(group_quota) as disk_max,  MIN(group_quota) as disk_min,  " .
                            
"MAX(can_rate_pictures) as can_rate_pictures,  MAX(can_send_ecards) as can_send_ecards,  " .
                            
"MAX(upload_form_config) as ufc_max,  MIN(upload_form_config) as ufc_min,  " .
                            
"MAX(custom_user_upload) as custom_user_upload,  MAX(num_file_upload) as num_file_upload,  " .
                            
"MAX(num_URI_upload) as num_URI_upload,  " .
                            
"MAX(can_post_comments) as can_post_comments,  MAX(can_upload_pictures) as can_upload_pictures,  " .
                            
"MAX(can_create_albums) as can_create_albums,  " .
                            
"MAX(has_admin_access) as has_admin_access,  " .
                            
"MIN(pub_upl_need_approval) as pub_upl_need_approval,  MIN( priv_upl_need_approval) as  priv_upl_need_approval ".
                            
"FROM {$CONFIG['TABLE_USERGROUPS']} WHERE group_id in (" .  implode(", ",  $groups). ")");
    
            if (
mysql_num_rows($result)) {
                    
$USER_DATA mysql_fetch_assoc($result);
                    
$result cpg_db_query("SELECT group_name FROM  {$CONFIG['TABLE_USERGROUPS']} WHERE group_id= " $pri_group);
                    
$temp_arr mysql_fetch_assoc($result);
                    
$USER_DATA["group_name"] = $temp_arr["group_name"];
            } else {
                    
$result cpg_db_query("SELECT * FROM {$CONFIG['TABLE_USERGROUPS']} WHERE group_id = $default_group_id");
                   if (!
mysql_num_rows($result)) die('<b>Coppermine critical error</b>:<br />The group table does not contain the Anonymous group !');
                           
$USER_DATA mysql_fetch_assoc($result);
                    }
            
mysql_free_result($result);
    
            if ( 
$USER_DATA['ufc_max'] == $USER_DATA['ufc_min'] ) {
                    
$USER_DATA["upload_form_config"] = $USER_DATA['ufc_min'];
            } elseif (
$USER_DATA['ufc_min'] == 0) {
                    
$USER_DATA["upload_form_config"] = $USER_DATA['ufc_max'];
            } elseif (((
$USER_DATA['ufc_max'] == 2) or ($USER_DATA['ufc_max'] == 3)) and ($USER_DATA['ufc_min'] == 1)) {
                    
$USER_DATA["upload_form_config"] = 3;
            } elseif ((
$USER_DATA['ufc_max'] == 3) and ($USER_DATA['ufc_min'] == 2)) {
                    
$USER_DATA["upload_form_config"] = 3;
            } else {
                    
$USER_DATA["upload_form_config"] = 0;
            }
            
$USER_DATA["group_quota"] = ($USER_DATA["disk_min"])?$USER_DATA["disk_max"]:0;
    
            
$USER_DATA['can_see_all_albums'] = $USER_DATA['has_admin_access'];
    
            
$USER_DATA["group_id"] = $pri_group;
            
$USER_DATA['groups'] = $groups;
    
            if (
get_magic_quotes_gpc() == 0)
                            
$USER_DATA['group_name'] = mysql_escape_string($USER_DATA['group_name']);
    
            return(
$USER_DATA);
    }
    
// Redirect
    
function redirect($target)
    {
        
header('Location: '$this->boardurl $target);
        exit;
    }
    
    
// Register
    
function register_page()
    {
        
$this->redirect($this->page['register']);
    }
    
    
// View users
    
function view_users()
    {
        
$this->redirect($this->page['editusers']);
    }

    
// Edit users
    
function edit_users()
    {
        
$this->redirect($this->page['editusers']);
    }

    
// View user profile
    
function view_profile($uid)
    {
        
$this->redirect($this->page['edituserprofile'].($uid $uid USER_ID));
    }

    
// Edit user profile
    
function edit_profile($uid)
    {
        
$this->redirect($this->page['edituserprofile'].$uid);
    }
    
    
// Get user information
    
function get_user_infos($uid)
    {
        global 
$lang_register_php;

        
$sql "SELECT {$this->field['username']} AS user_name,  
                                        {$this->field['email']} AS user_email,  
                                        {$this->field['regdate']} AS user_regdate,  
                                        {$this->field['location']} AS user_location,  
                                        {$this->field['website']} AS user_website 
                                        
                                        FROM  {$this->usertable} WHERE {$this->field['user_id']} = '$uid'"
;
    
        
$result cpg_db_query($sql,  $this->link_id);
        
        if (!
mysql_num_rows($result)) cpg_die(ERROR,  $lang_register_php['err_unk_user'],  __FILE__,  __LINE__);

        
$user_data mysql_fetch_array($result);
        
$user_data['group_name'] = '';
        
mysql_free_result($result);

        return 
$user_data;
    }
    
    
// Query used to list users
    
function list_users_query(&$user_count)
    {
        global 
$CONFIG,  $FORBIDDEN_SET,  $PAGE;

        
$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 '';
        }

        
// Get the total number of users with albums
        
$sql  "select null ";
        
$sql .= "from {$CONFIG['TABLE_ALBUMS']} as p ";
        
$sql .= "where ( category>".FIRST_USER_CAT." $forbidden) ";
        
$sql .= "group by category;";

        
$result cpg_db_query($sql);
        
$user_count mysql_num_rows($result);

        if (
$user_count == 0) {
            return 
false;
        }
        
        
mysql_free_result($result);

        
$users_per_page $CONFIG['thumbcols'] * $CONFIG['thumbrows'];
        
$totalPages ceil($user_count $users_per_page);
        if (
$PAGE $totalPages$PAGE 1;
        
$lower_limit = ($PAGE-1) * $users_per_page;

        
$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']}+".FIRST_USER_CAT."=a.category ";
        
$sql .= "LEFT 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 ";
        
$sql .= "LIMIT $lower_limit,  $users_per_page ";


        
$result cpg_db_query($sql);

        while (
$row mysql_fetch_array($result)) {
            
$users[] = $row;
        }
        
mysql_free_result($result);

        return 
$users;
    }


    
// Group table synchronisation
    
function synchronize_groups()
    {
        global 
$CONFIG ;
    
        if (
$this->use_post_based_groups){
            if (
$this->group_overrride){
                
$udb_groups $this->collect_groups();
            } else {
                
$sql "SELECT * FROM {$this->groupstable} WHERE {$this->field['grouptbl_group_name']} <> ''";
    
                
$result cpg_db_query($sql,  $this->link_id);
    
                
$udb_groups = array();
    
                while (
$row mysql_fetch_assoc($result))
                {
                    
$udb_groups[$row[$this->field['grouptbl_group_id']]+100] = utf_ucfirst(utf_strtolower($row[$this->field['grouptbl_group_name']]));
                }
            }
        } else {
            
$udb_groups = array(=>'Administrators',  2=> 'Registered',  3=>'Guests',  4=> 'Banned');
        }
        
        
$result cpg_db_query("SELECT group_id,  group_name FROM {$CONFIG['TABLE_USERGROUPS']} WHERE 1");
    
        while (
$row mysql_fetch_array($result)) {
            
$cpg_groups[$row['group_id']] = $row['group_name'];
        }
    
        
mysql_free_result($result);
    
        
// Scan Coppermine groups that need to be deleted
        
foreach($cpg_groups as $c_group_id => $c_group_name) {
            if ((!isset(
$udb_groups[$c_group_id]))) {
                
cpg_db_query("DELETE FROM {$CONFIG['TABLE_USERGROUPS']} WHERE group_id = '" $c_group_id "' LIMIT 1");
                unset(
$cpg_groups[$c_group_id]);
            }
        }
    
        
// Scan udb groups that need to be created inside Coppermine table
        
foreach($udb_groups as $i_group_id => $i_group_name) {
            if ((!isset(
$cpg_groups[$i_group_id]))) {
                
// add admin info
                
$admin_access in_array($i_group_id-100,  $this->admingroups) ? '1' '0';
                
cpg_db_query("INSERT INTO {$CONFIG['TABLE_USERGROUPS']} (group_id,  group_name,  has_admin_access) VALUES ('$i_group_id',  '" addslashes($i_group_name) . "',  '$admin_access')");
                
$cpg_groups[$i_group_id] = $i_group_name;
            }
        }
    
        
// Update Group names
        
foreach($udb_groups as $i_group_id => $i_group_name) {
            if (
$cpg_groups[$i_group_id] != $i_group_name) {
                
cpg_db_query("UPDATE {$CONFIG['TABLE_USERGROUPS']} SET group_name = '" addslashes($i_group_name) . "' WHERE group_id = '$i_group_id' LIMIT 1");
            }
        }
        
// fix admin grp
        
if (!$this->use_post_based_groupscpg_db_query("UPDATE {$CONFIG['TABLE_USERGROUPS']} SET has_admin_access = '1' WHERE group_id = '1' LIMIT 1");
        
    }    

    
// Retrieve the album list used in gallery admin mode
    
function get_admin_album_list()
    {
        global 
$CONFIG;

        if (
UDB_CAN_JOIN_TABLES) {
            
$sql "SELECT aid,  CONCAT('(',  {$this->field['username']},  ') ',  a.title) AS title
                            FROM {$CONFIG['TABLE_ALBUMS']} AS a 
                            INNER JOIN {$this->usertable} AS u
                            ON category = (" 
FIRST_USER_CAT " + {$this->field['user_id']}) 
                            ORDER BY title"
;
        } else {
            
$sql "SELECT aid,  IF(category > " FIRST_USER_CAT ",  CONCAT('* ',  title),  CONCAT(' ',  title)) AS title " "FROM {$CONFIG['TABLE_ALBUMS']} " "ORDER BY title";
        }
        return 
$sql;
    }
    
    function 
util_filloptions()
    {
        global 
$lang_util_php,  $CONFIG;

        if (
UDB_CAN_JOIN_TABLES) {

            
$query "SELECT aid,  category,  IF({$this->field['username']} IS NOT NULL,  
                                CONCAT('(',  {$this->field['username']},  ') ',  a.title),  
                                CONCAT(' - ',  a.title)) AS title 
                                FROM {$CONFIG['TABLE_ALBUMS']} AS a 
                                LEFT JOIN {$this->usertable} AS u 
                                ON category = (" 
FIRST_USER_CAT " + {$this->field['user_id']}) 
                                ORDER BY category,  title"
;
                                
            
$result cpg_db_query($query,  $this->link_id);

            echo 
'&nbsp;&nbsp;&nbsp;&nbsp;<select size="1" name="albumid" class="listbox"><option value="0">All Albums</option>';

            while (
$row mysql_fetch_array($result)) {
                
$sql "SELECT name FROM {$CONFIG['TABLE_CATEGORIES']} WHERE cid = " $row["category"];
                
$result2 cpg_db_query($sql);
                
$row2 mysql_fetch_array($result2);
                print 
"<option value=\"" $row["aid"] . "\">" $row2["name"] . $row["title"] . "</option>\n";
            }

            print 
'</select> (3)';
            print 
'&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="'.$lang_util_php['submit_form'].'" class="submit" /> (4)';
            print 
'</form>';

        } else {

        
// Query for list of public albums

            
$public_albums cpg_db_query("SELECT aid,  title,  category FROM {$CONFIG['TABLE_ALBUMS']} WHERE category < " FIRST_USER_CAT " ORDER BY title");

            if (
mysql_num_rows($public_albums)) {
                
$public_result cpg_db_fetch_rowset($public_albums);
            } else {
                
$public_result = array();
            }

            
// Initialize $merged_array
            
$merged_array = array();

            
// Count the number of albums returned.
            
$end count($public_result);

            
// Cylce through the User albums.
            
for($i=0;$i<$end;$i++) {

                
//Create a new array sow we may sort the final results.
                
$merged_array[$i]['id'] = $public_result[$i]['aid'];
                
$merged_array[$i]['album_name'] = $public_result[$i]['title'];

                
// Query the database to get the category name.
                
$vQuery "SELECT name,  parent FROM " $CONFIG['TABLE_CATEGORIES'] . " WHERE cid='" $public_result[$i]['category'] . "'";
                
$vRes mysql_query($vQuery);
                
$vRes mysql_fetch_array($vRes);
                if (isset(
$merged_array[$i]['username_category'])) {
                    
$merged_array[$i]['username_category'] = (($vRes['name']) ? '(' $vRes['name'] . ') ' '').$merged_array[$i]['username_category'];
                } else {
                    
$merged_array[$i]['username_category'] = (($vRes['name']) ? '(' $vRes['name'] . ') ' '');
                }
            }

            
// We transpose and divide the matrix into columns to prepare it for use in array_multisort().
            
foreach ($merged_array as $key => $row) {
               
$aid[$key] = $row['id'];
               
$title[$key] = $row['album_name'];
               
$album_lineage[$key] = $row['username_category'];
            }

            
// We sort all columns in descending order and plug in $album_menu at the end so it is sorted by the common key.
            
array_multisort($album_lineage,  SORT_ASC,  $title,  SORT_ASC,  $aid,  SORT_ASC,  $merged_array);

            
// Query for list of user albums

            
$user_albums cpg_db_query("SELECT aid,  title,  category FROM {$CONFIG['TABLE_ALBUMS']} WHERE category >= " FIRST_USER_CAT " ORDER BY aid");
            if (
mysql_num_rows($user_albums)) {
                
$user_albums_list cpg_db_fetch_rowset($user_albums);
            } else {
                
$user_albums_list = array();
            }

            
// Query for list of user IDs and names

            
$user_album_ids_and_names cpg_db_query("
                SELECT ({$this->field['user_id']} + "
.FIRST_USER_CAT.") AS id,
                CONCAT('(',  {$this->field['username']},  ') ') as name 
                FROM {$this->usertable} 
                ORDER BY name ASC"
, $this->link_id);

            if (
mysql_num_rows($user_album_ids_and_names)) {
                
$user_album_ids_and_names_list cpg_db_fetch_rowset($user_album_ids_and_names);
            } else {
                
$user_album_ids_and_names_list = array();
            }

            
// Glue what we've got together.

            // Initialize $udb_i as a counter.
            
if (count($merged_array)) {
                
$udb_i count($merged_array);
            } else {
            
$udb_i 0;
            }

            
//Begin a set of nested loops to merge the various query results.
            
foreach ($user_albums_list as $aq) {
                foreach (
$user_album_ids_and_names_list as $uq) {
                    if (
$aq['category'] == $uq['id']) {
                        
$merged_array[$udb_i]['id']= $aq['category'];
                        
$merged_array[$udb_i]['album_name']= $aq['title'];
                        
$merged_array[$udb_i]['username_category']= $uq['name'];
                        
$udb_i++;
                    }
                }
            }

            
// The user albums and public albums have been merged into one list. Print the dropdown.
            
echo '&nbsp;&nbsp;&nbsp;&nbsp;<select size="1" name="albumid" class="listbox"><option value="0">All Albums</option>';

            foreach (
$merged_array as $menu_item) {
                echo 
"<option value=\"" $menu_item['id'] . "\">" . (isset($menu_item['username_category']) ? $menu_item['username_category'] : '') . $menu_item['album_name'] . "</option>\n";
            }

            
// Close list,  etc.
            
print '</select> (3)';
            print 
'&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="'.$lang_util_php['submit_form'].'" class="submit" /> (4)';
            print 
'</form>';
        }
    }

    
// Taken from Mambo (com_registration.php)
    
function make_password(){
        
$makepass="";
        
$salt "abchefghjkmnpqrstuvwxyz0123456789";
        
srand((double)microtime()*1000000);
        
$i 0;
        while (
$i <= 7) {
            
$num rand() % 33;
            
$tmp substr($salt,  $num,  1);
            
$makepass $makepass $tmp;
            
$i++;
        }
        return (
$makepass);
    }

    function 
session_extraction() {
        return 
false;
    }
    
    function 
cookie_extraction() {
       return 
false;
    }
    
    
// Simple login by specified username and pass.
    // Used for xp publisher login
    // Needs override for any BBS that is more complex than straight md5(password)
    
function login$username null,  $password null,  $remember false ) {
                
        
$encpassword md5($password);
                
        
// Check for user in users table
        
$sql =  "SELECT {$this->field['user_id']} AS user_id,  {$this->field['username']} AS user_name FROM {$this->usertable} WHERE ";
        
$sql .= "{$this->field['username']} = '$username' AND BINARY {$this->field['password']} = '$encpassword'";
        
$results cpg_db_query($sql);
                
        if (
mysql_num_rows($results)) {
            
$USER_DATA mysql_fetch_assoc($results);
            
mysql_free_result($results);
            return 
$USER_DATA;
        } else {
            return 
false;
        }
    }
}
?>



Other Image Galleries Scripts:

WebMaster Resources Home

©RingsWorld.com