• [MOD] PMv2 Tutorial Republished here 5 0 5 1
Currently:  

Author Topic: [MOD] PMv2 Tutorial Republished here  (Read 775971 times)

0 Members and 2 Guests are viewing this topic.

Offline thunderstrike

  • 4images Guru
  • *******
  • Posts: 2.327
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #540 on: December 27, 2007, 04:42:26 PM »
Hi @ all,

if unregistered users klick on "New images" or "All images"  they get the message:

Notice: Undefined variable: pm_inbox in /homepages/26/d83193504/htdocs/birdgallery/includes/page_header.php on line 205

Notice: Undefined variable: pm_outbox in /homepages/26/d83193504/htdocs/birdgallery/includes/page_header.php on line 206

Notice: Undefined variable: pm_sentbox in /homepages/26/d83193504/htdocs/birdgallery/includes/page_header.php on line 207

Notice: Undefined variable: pm_new_count in /homepages/26/d83193504/htdocs/birdgallery/includes/page_header.php on line 208

If registered users klick on  "New images" or "All images" is all right.

What' that?  8O

Can I comment this lines out without any restrictions/crashes? When I do that it no messages. ;-)
Is there a better/right solution?

Best Chris.

No for uncomment.

In includes/page_header.php file,

find:

Code: [Select]
// "pm_inbox_total" => ($pm_inbox) ? $pm_inbox : 0,
 // "pm_outbox_total" => ($pm_outbox) ? $pm_outbox : 0,
 // "pm_sentbox_total" => ($pm_sentbox) ? $pm_sentbox : 0,
 // "pm_new_total" => ($pm_new_count) ? $pm_new_count : 0,

replace:

Code: [Select]
"pm_inbox_total" => (isset($pm_inbox) && !empty($pm_inbox)) ? $pm_inbox : 0,
"pm_outbox_total" => (isset($pm_outbox) && !empty($pm_outbox)) ? $pm_outbox : 0,
"pm_sentbox_total" => (isset($pm_sentbox) && !empty($pm_sentbox)) ? $pm_sentbox : 0,
"pm_new_total" => (isset($pm_new_count) && !empty($pm_new_count)) ? $pm_new_count : 0,
8 steps need when ask question -

- PHP version (ACP - > phpinfo())
- mySQL version (ACP - > phpinfo())
- 4images version
- Post screenshot / URL
- Post code in BB Code (no need full file for code) or post attach file
- It doesn't work. What is say - what is do for no work
- Install MOD ? If so - please say (troubleshooting)
- Read FAQ ? Install Bug fixes ?

skiemor

  • Guest
Re: [MOD] PMv2 Tutorial Republished here
« Reply #541 on: December 27, 2007, 07:17:44 PM »
...aaaannd??? Works (of course), thank you thunderstrike!

Offline allister

  • Pre-Newbie
  • Posts: 4
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #542 on: February 27, 2008, 12:19:20 AM »
I installed PM mod with following missing steps. Every thing working fine except 1 error :?

Can't delete any msgs. getting same msg every time I tried to delete a msg "Nothing to delete".

Need help here pls any one  :D

SQL
Code: [Select]
-- --------------------------------------------------------

--
-- Table structure for table `PM_TABLE`
--

CREATE TABLE `PM_TABLE` (
  `pm_id` mediumint(10) unsigned NOT NULL auto_increment,
  `pm_type` tinyint(2) NOT NULL default '0',
  `pm_to` mediumint(8) NOT NULL default '0',
  `pm_from` mediumint(8) NOT NULL default '0',
  `pm_subject` varchar(255) NOT NULL default '',
  `pm_text` text,
  `pm_date` int(11) NOT NULL default '0',
  `pm_date_rcvd` int(11) NOT NULL default '0',
  `pm_ip` varchar(20) NOT NULL default '0',
  `pm_html` tinyint(1) NOT NULL default '0',
  `pm_bbcode` tinyint(1) NOT NULL default '0',
  `pm_smiles` tinyint(1) NOT NULL default '0',
  `PM_SENT` int(11) NOT NULL default '0',
  `PM_UNREAD` int(11) NOT NULL default '0',
  `PM_SDLT` int(11) NOT NULL default '0',
  `PM_USDLT` int(11) NOT NULL default '0',
  `PM_RDLT` int(11) NOT NULL default '0',
  KEY `pm_id` (`pm_id`,`pm_to`,`pm_from`)
) TYPE=MyISAM AUTO_INCREMENT=11 ;



--
-- Dumping data for table `PM_TABLE`
--

/lang/<yourlanguage>/main.php:
Code: [Select]
//--- PM (Private Messaging) ---
$lang['pm'] = "Private Messaging";
$lang['pm_inbox'] = "Inbox";
$lang['pm_outbox'] = "Outbox";
$lang['pm_sentbox'] = "Sentbox";
$lang['pm_link'] = "&nbsp;&nbsp;&nbsp;You have<br />&raquo&nbsp;<b>{msg_new_count}</b> new message(s)<br />&nbsp;&nbsp;&nbsp;in your <b>{inbox}</b>.";
$lang['pm'] = "Private Messaging";
$lang['pm_short'] = "PMS";
$lang['pm_error'] = "Error";
$lang['pm_error_to'] = "You must select a recipient.";
$lang['pm_error_to_notfound'] = "Recipients not found.";
$lang['pm_error_subject'] = "You must enter a subject.";
$lang['pm_error_message'] = "You must enter a message.";
$lang['pm_error_folder'] = "No folder selected.";
$lang['pm_error_id'] = "Nothing to show.";
$lang['pm_error_delete'] = "Nothing to delete.";
$lang['pm_compose'] = "Compose";
$lang['pm_delete'] = "Delete";
$lang['pm_delete_selected'] = "Delete selected";
$lang['pm_delete_all'] = "Delete all";
$lang['pm_delete_success'] = "The messages where deleted successfuly";
$lang['pm_delete_confirm'] = "Are you sure you want to delete that message from <b>".$lang['pms_'.$mode]."</b>?";
$lang['pm_delete_confirm_select'] = "Are you sure you want to delete selected messages from <b>".$lang['pms_'.$mode]."</b>?";
$lang['pm_delete_confirm_all'] = "Are you sure you want to delete ALL messages from <b>".$lang['pms_'.$mode]."</b>?";
$lang['pm_new'] = "New message";
$lang['pm_new_messages'] = "New messages";
$lang['pm_new_is_one'] = "You <b>{count}</b> new messages"; //You have xx new message(s)
$lang['pm_ppm'] = "<b>{count}</b> New";
$lang['pm_message_single'] = "Message";
$lang['pm_message_plural'] = "News";
$lang['pm_select_user'] = "Select a user";
$lang['pm_sent_success'] = "The message was send successfully";
$lang['pm_save_success'] = "The message was saved successfully.";
$lang['pm_redirect'] = "Please wait a moment";
$lang['pm_empty'] = "No messages in this folder";
$lang['pm_reply'] = "Reply";
$lang['pm_view'] = "View message";
$lang['pm_mark'] = "Mark";
$lang['pm_edit'] = "Edit";
$lang['pm_subject'] = "Subject";
$lang['pm_message'] = "Message";
$lang['pm_to'] = "Recipient";
$lang['pm_date'] = "Date";
$lang['pm_send'] = "Send";
$lang['pm_preview'] = "Preview";
$lang['pm_status'] = "Status";
$lang['pm_from'] = "Sender";
$lang['pm_html'] = "Enable HTML in this message";
$lang['pm_bbcode'] = "Enable BBCode in this message";
$lang['pm_smiles'] = "Enable Smilies in this message"; 
$lang['pm_perpage'] = "Messages per page";
$lang['pm_user_pm'] = "PM";
$lang['pm_user_pm_alt'] = "PM to this user";
$lang['pm_total'] = "Total messages";
$lang['pm_received'] = "Received";
$lang['pm_quote'] = "Quote";
$lang['pm_error_save'] = "Error saving message. (the message could has been received)";
$lang['pm_error_notfound'] = "Can't find message.";
$lang['pm_paging_stats'] = "You have {total_cat_images} message(s) {new} on {total_pages} page(s) in your {box}.<br />Displayed: massage {first_page} to {last_page}.";
$lang['pm_email'] = "Notify by email on new Private Message";
$lang['pm_popup'] = "Pop up window on new Private Message";
$lang['pm_popup_confirm'] = "You have a new private message. Click OK to view it, or cancel to hide this prompt.";
$lang['pm_popup_newwindow'] = "Open in new window?\\n\\n(Press cancel to open your Inbox in the current window.)";
$lang['pm_email_new'] = "New private message";
$lang['pm_comment_quote'] = "comment";
$lang['pm_mark_read'] = "All messages as read.";
$lang['pm_storage'] = "The folder {box} and (size)% full size";
$lang['pm_storage_unlimited'] = "(The folder box) has no limit";
$lang['pm_user_limit_reached'] = "{user}'s user's inbox is full";
$lang['pm_inbox_limit'] = "Inbox Messages Limit";
$lang['pm_sentbox_limit'] = "Sentbox Messages Limit";
$lang['pm_finduser'] = "By Name";
$lang['pm_finduser_notfound'] = "No Username.";
$lang['pm_finduser_wildcards'] = "Use * as a wildcard in the user name.";
$lang['pm_select'] = "Auswählen";
$lang['pm_finduser_many'] = "More than one user found.";
$lang['pm_user_id_priority'] = "Username <b>Selection</b> has a higher priority than the user name <b>Feld</b>.";
$lang['pm_user_inbox'] = "Inbox limit<span class=\"smalltext\"><br />set to <font color=red><b>0</b></font> to use global settings<br>or <font color=red><b>-1</b></font> for unlimited</span>";
$lang['pm_user_sentbox'] = "Sentbox limit<span class=\"smalltext\"><br />set to <font color=red><b>0</b></font> to use global settings<br>or <font color=red><b>-1</b></font> for unlimited</span>";
$lang['pm_toosoon'] = "Sorry, you can not have as many messages vershcicken behind each other.";
$lang['pm_toosoon_user'] = "Sorry, you can not behind each other so often another user to send a message.";
$lang['pm_next'] = "Next;";
$lang['pm_prev'] = "Back ";

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #543 on: April 03, 2008, 02:08:28 AM »
Ich kann es nicht installieren, ich verstehe das mit der functions.php nicht! Da ich kein Englisch kann ist das extrem schwierig, sowas einzubauen wenn es auf Englisch ist!

Ich verstehe STEP 6 + STEP 6.2 nicht!
http://www.4homepages.de/forum/index.php?topic=6692.0

Kann mir bitte einer helfen wie ich das einbaue?

Das ist meine functions.php

Code: [Select]
<?php
/**************************************************************************
 *                                                                        *
 *    4images - A Web Based Image Gallery Management System               *
 *    ----------------------------------------------------------------    *
 *                                                                        *
 *             File: functions.php                                        *
 *        Copyright: (C) 2002 Jan Sorgalla                                *
 *            Email: jan@4homepages.de                                    *
 *              Web: http://www.4homepages.de                             *
 *    Scriptversion: 1.7.6                                                *
 *                                                                        *
 *    Never released without support from: Nicky (http://www.nicky.net)   *
 *                                                                        *
 **************************************************************************
 *                                                                        *
 *    Dieses Script ist KEINE Freeware. Bitte lesen Sie die Lizenz-       *
 *    bedingungen (Lizenz.txt) für weitere Informationen.                 *
 *    ---------------------------------------------------------------     *
 *    This script is NOT freeware! Please read the Copyright Notice       *
 *    (Licence.txt) for further information.                              *
 *                                                                        *
 *************************************************************************/
if (!defined('ROOT_PATH')) {
  die(
"Security violation");
}

function 
set_download_token($token) {
  global 
$site_sess$user_info;

  if (
$user_info['user_level'] == ADMIN) {
    return;
  }

  
$download_token = @unserialize($site_sess->get_session_var('download_token'));

  if (!
$download_token) {
    
$download_token = array();
  }

  
$download_token[md5($token)] = 1;

  
$site_sess->set_session_var('download_token'serialize($download_token));
}

function 
clear_download_token($token) {
  global 
$site_sess$user_info;

  if (
$user_info['user_level'] == ADMIN) {
    return;
  }

  
$download_token = @unserialize($site_sess->get_session_var('download_token'));

  if (!
$download_token) {
    return;
  }

  
$token md5($token);

  if (isset(
$download_token[$token])) {
    unset(
$download_token[$token]);
    
$site_sess->set_session_var('download_token'serialize($download_token));
  }
}

function 
check_download_token($token) {
  global 
$site_sess$user_info;

  if (
$user_info['user_level'] == ADMIN) {
    return 
true;
  }

  
$download_token = @unserialize($site_sess->get_session_var('download_token'));

  if (isset(
$download_token[md5($token)])) {
    return 
true;
  }

  return 
false;
}

function 
get_gallery_image($image_name) {
  global 
$config;
  if (
file_exists(TEMPLATE_PATH."/images_".$config['language_dir']."/".$image_name)) {
    return 
TEMPLATE_PATH."/images_".$config['language_dir']."/".$image_name;
  }
  else {
    return 
TEMPLATE_PATH."/images/".$image_name;
  }
}

function 
get_basename($path) {
  
$path str_replace("\\""/"$path);
  
$name substr(strrchr($path"/"), 1);
  return 
$name $name $path;
}

function 
get_basefile($path) {
  
$basename get_basename($path);
  
ereg("(.+)\?(.+)"$basename$regs);
  return isset(
$regs[1]) ? $regs[1] : $basename;
}

function 
redirect($url) {
  global 
$script_url$site_sess;
  if (
strpos($url'://') === false) {
    
$url $script_url.'/'.$url;
  }
  
$location = @preg_match('/Microsoft|WebSTAR|Xitami/'getenv('SERVER_SOFTWARE')) ? 'Refresh: 0; URL=' 'Location: ';
  if (
is_object($site_sess)) {
    
$url $site_sess->url($url"&");
  }
  
header($location.$url);
  exit;
}

function 
is_remote($file_name) {
  return 
strpos($file_name'://') > 0;
}

function 
is_remote_file($file_name) {
  return 
is_remote($file_name) && preg_match("#\.[a-zA-Z0-9]{1,4}$#"$file_name) ? 0;
}

function 
is_local_file($file_name) {
  return !
is_remote($file_name) && get_basefile($file_name) != $file_name && preg_match("#\.[a-zA-Z0-9]{1,4}$#"$file_name) ? 0;
}

function 
check_remote_media($remote_media_file) {
  global 
$config;
  return 
is_remote($remote_media_file) && preg_match("#\.[".$config['allowed_mediatypes_match']."]+$#i"$remote_media_file) ? 0;
}

function 
check_local_media($local_media_file) {
  global 
$config;
  return !
is_remote($local_media_file) && get_basefile($local_media_file) != $local_media_file && preg_match("#\.[".$config['allowed_mediatypes_match']."]+$#i"$local_media_file) ? 0;
}

function 
check_remote_thumb($remote_thumb_file) {
  return 
is_remote($remote_thumb_file) && preg_match("#\.[gif|jpg|jpeg|png]+$#is"$remote_thumb_file) ? 0;
}

function 
check_local_thumb($local_thumb_file) {
  return !
is_remote($local_thumb_file) && get_basefile($local_thumb_file) != $local_thumb_file && preg_match("#\.[gif|jpg|jpeg|png]+$#i"$local_thumb_file) ? 0;
}

function 
get_file_extension($file_name) {
  
ereg("(.+)\.(.+)"get_basefile($file_name), $regs);
  return 
strtolower($regs[2]);
}

function 
get_file_name($file_name) {
  
ereg("(.+)\.(.+)"get_basefile($file_name), $regs);
  return 
$regs[1];
}

function 
check_media_type($file_name) {
  global 
$config;
  return (
in_array(get_file_extension($file_name), $config['allowed_mediatypes_array'])) ? 0;
}

function 
check_thumb_type($file_name) {
  return (
preg_match("#(gif|jpg|jpeg|png)$#is"$file_name)) ? 0;
}

function 
check_executable($file_name) {
  if (
substr(PHP_OS03) == "WIN" && !eregi("\.exe$"$file_name)) {
    
$file_name .= ".exe";
  }
  elseif (
substr(PHP_OS03) != "WIN") {
    
$file_name eregi_replace("\.exe$"""$file_name);
  }
  return 
$file_name;
}

function 
get_file_path($file_name ""$image_type "media"$cat_id 0$in_admin 0$return_icon 1$check_remote CHECK_REMOTE_FILES) {
  
$return_code = ($return_icon) ? ICON_PATH."/404.gif" 0;
  if (empty(
$file_name)) {
    return 
$return_code;
  }
  if (
is_remote($file_name)) {
    
$check_handle "check_remote_".$image_type;
    return (
$check_handle($file_name) && remote_file_exists($file_name$check_remote)) ? (($in_admin && !preg_match("#(gif|jpg|jpeg|png)$#is"$file_name)) ? ICON_PATH."/".get_file_extension($file_name).".gif" $file_name) : $return_code;
  }
  elseif (
is_local_file($file_name)) {
    
$check_handle "check_local_".$image_type;
    
$file_name = ($in_admin && preg_match("/^([\.]+|[^\/])/"$file_name)) ? "../".$file_name $file_name;
    if (!
file_exists($file_name)) {
      
$file_path preg_replace("/\/{2,}/""/"get_document_root()."/".$file_name);
      return (
$check_handle($file_name) && file_exists($file_path)) ? (($in_admin && !preg_match("#(gif|jpg|jpeg|png)$#is"$file_name)) ? ICON_PATH."/".get_file_extension($file_name).".gif" $file_name) : $return_code;
    }
    else {
      return 
$file_name;
    }
  }
  else {
    
$check_handle "check_".$image_type."_type";
    
$path = (($image_type == "media") ? (($cat_id) ? MEDIA_PATH."/".$cat_id MEDIA_TEMP_PATH) : (($cat_id) ? THUMB_PATH."/".$cat_id THUMB_TEMP_PATH))."/".$file_name;
    return (
$check_handle($file_name) && file_exists($path)) ? (($in_admin && !preg_match("#(gif|jpg|jpeg|png)$#is"$file_name)) ? ICON_PATH."/".get_file_extension($file_name).".gif" $path) : $return_code;
  }
}

function 
safe_htmlspecialchars($chars) {
  
// Translate all non-unicode entities
  
$chars preg_replace(
    
'/&(?!(#[0-9]+|[a-z]+);)/si',
    
'&amp;',
    
$chars
  
);

  
$chars str_replace(">""&gt;",   $chars);
  
$chars str_replace("<""&lt;",   $chars);
  
$chars str_replace('"'"&quot;"$chars);
  return 
$chars;
}

function 
un_htmlspecialchars($text) {
  
$text str_replace(
    array(
'&lt;''&gt;''&quot;''&amp;'),
    array(
'<',    '>',    '"',      '&'),
    
$text
  
);

  return 
$text;
}

function 
get_iptc_info($info) {
  
$iptc_match = array();
  
$iptc_match['2#120'] = "caption";
  
$iptc_match['2#122'] = "caption_writer";
  
$iptc_match['2#105'] = "headline";
  
$iptc_match['2#040'] = "special_instructions";
  
$iptc_match['2#080'] = "byline";
  
$iptc_match['2#085'] = "byline_title";
  
$iptc_match['2#110'] = "credit";
  
$iptc_match['2#115'] = "source";
  
$iptc_match['2#005'] = "object_name";
  
$iptc_match['2#055'] = "date_created";
  
$iptc_match['2#090'] = "city";
  
$iptc_match['2#095'] = "state";
  
$iptc_match['2#101'] = "country";
  
$iptc_match['2#103'] = "original_transmission_reference";
  
$iptc_match['2#015'] = "category";
  
$iptc_match['2#020'] = "supplemental_category";
  
$iptc_match['2#025'] = "keyword";
  
$iptc_match['2#116'] = "copyright_notice";

  
$iptc iptcparse($info);
  
$iptc_array = array();
  if (
is_array($iptc)) {
    foreach (
$iptc as $key => $val) {
      if (isset(
$iptc_match[$key])) {
        
$iptc_info "";
        foreach (
$val as $val2) {
          
$iptc_info .= (($iptc_info != "" ) ? ", " "").$val2;
        }
        if (
$key == "2#055") {
          
$iptc_array[$iptc_match[$key]] = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/""\\3.\\2.\\1"$iptc_info);
        }
        else {
          
$iptc_array[$iptc_match[$key]] = $iptc_info;
        }
      }
    }
  }
  return 
$iptc_array;
}

function 
get_exif_info($exif) {
  
$exif_match = array();
  
$exif_match['Make'] = "make";
  
$exif_match['Model'] = "model";
  
$exif_match['DateTimeOriginal'] = "datetime";
  
$exif_match['ISOSpeedRatings'] = "isospeed";
  
$exif_match['ExposureTime'] = "exposure";
  
$exif_match['FNumber'] = "aperture";
  
$exif_match['FocalLength'] = "focallen";

  
$exif_array = array();
  if (
is_array($exif)) {
    foreach (
$exif as $key => $val) {
      if (isset(
$exif_match[$key])) {
        
$exif_info $val;
        if (
$key == "DateTimeOriginal") {
          
$exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/""\\3.\\2.\\1"$exif_info);
        }
        elseif (
$key == "ExposureTime") {
  $exposure explode("/"$exif_info);
          
$exif_array[$exif_match[$key]] = "1/" . ($exposure[1] / $exposure[0]);
        }
        elseif (
$key == "FNumber") {
  $aperture explode("/"$exif_info);
          
$exif_array[$exif_match[$key]] = "F/" . ($aperture[0] / $aperture[1]);
        }
        elseif (
$key == "FocalLength") {
  $focalLen explode("/"$exif_info);
          
$exif_array[$exif_match[$key]] = ($focalLen[0] / $focalLen[1]) . "mm";
        }
        else {
          
$exif_array[$exif_match[$key]] = $exif_info;
        }
      }
    }
  }
  return 
$exif_array;
}

function 
show_image($image_row$mode ""$show_link 1$detailed_view 0) {
  global 
$self_url$site_template$site_sess$user_info$config$cat_cache$lang$additional_image_fields$user_table_fields$url_show_profile;

  
$is_new = ($image_row['image_date'] >= (time() - 60 60 24 $config['new_cutoff'])) ? 0;
  
$description = (!empty($image_row['image_description'])) ? format_text($image_row['image_description'], 101) : REPLACE_EMPTY;

  if (!empty(
$image_row['image_keywords'])) {
    
$split_keywords explode(" "$image_row['image_keywords']);
    
$keywords "";
    foreach (
$split_keywords as $key => $val) {
      
$keywords .= (($keywords != "" ) ? ", " "")."<a href=\"".$site_sess->url(ROOT_PATH."search.php?search_keywords=".urlencode($val))."\">".format_text($val2)."</a>";
    }
  }
  else {
    
$keywords REPLACE_EMPTY;
  }

  if (!
check_permission("auth_readcomment"$image_row['cat_id'])) {
    
$image_row['image_allow_comments'] = 0;
  }

  
$num_comments = ($image_row['image_allow_comments'] == 1) ? $image_row['image_comments'] : "";

  if (
$user_info['user_level'] != GUEST) {
    
$lightbox_url $self_url;
    
$lightbox_url .= (!empty($mode)) ? ((strpos($lightbox_url'?') !== false) ? "&amp;" "?")."mode=".$mode "";
    
$lightbox_url .= strpos($lightbox_url'?') !== false "&amp;" "?";
    if (
check_lightbox($image_row['image_id'])) {
      
$lightbox_url .= "action=removefromlightbox&amp;id=".$image_row['image_id'];
      
$lightbox_button "<a href=\"".$site_sess->url($lightbox_url)."\"><img src=\"".get_gallery_image("lightbox_yes.gif")."\" border=\"0\" alt=\"\" /></a>";
    }
    else {
      
$lightbox_url .= "action=addtolightbox&amp;id=".$image_row['image_id'];
      
$lightbox_button "<a href=\"".$site_sess->url($lightbox_url)."\"><img src=\"".get_gallery_image("lightbox_no.gif")."\" border=\"0\" alt=\"\" /></a>";
    }
  }
  else {
    
$lightbox_button "<img src=\"".get_gallery_image("lightbox_off.gif")."\" border=\"0\" alt=\"\" />";
  }

  if (!
check_permission("auth_download"$image_row['cat_id'])) {
    
$download_button "<img src=\"".get_gallery_image("download_off.gif")."\" border=\"0\" alt=\"\" />";
    
$download_zip_button = (function_exists("gzcompress") && function_exists("crc32")) ? "<img src=\"".get_gallery_image("download_zip_off.gif")."\" border=\"0\" alt=\"\" />" "";
    
$allow_download 0;
    
clear_download_token($image_row['image_id']);
  }
  else {
    
$target = (!empty($image_row['image_download_url']) && !is_remote_file($image_row['image_download_url']) && !is_local_file($image_row['image_download_url'])) ? "target=\"_blank\"" "";
    
$download_button "<a href=\"".$site_sess->url(ROOT_PATH."download.php?".URL_IMAGE_ID."=".$image_row['image_id'])."\"".$target."><img src=\"".get_gallery_image("download.gif")."\" border=\"0\" alt=\"\" /></a>";
    
$download_zip_button = ($target == "" && function_exists("gzcompress") && function_exists("crc32")) ? "<a href=\"".$site_sess->url(ROOT_PATH."download.php?action=zip&amp;".URL_IMAGE_ID."=".$image_row['image_id'])."\"".$target."><img src=\"".get_gallery_image("download_zip.gif")."\" border=\"0\" alt=\"\" /></a>" "";
    
$allow_download 1;
    
set_download_token($image_row['image_id']);
  }

  if (!
check_permission("auth_sendpostcard"$image_row['cat_id'])) {
    
$postcard_button "<img src=\"".get_gallery_image("postcard_off.gif")."\" border=\"0\" alt=\"\" />";
  }
  else {
    
$postcard_button "<a href=\"".$site_sess->url(ROOT_PATH."postcards.php?".URL_IMAGE_ID."=".$image_row['image_id'].((!empty($mode)) ? "&amp;mode=".$mode ""))."\"><img src=\"".get_gallery_image("postcard.gif")."\" border=\"0\" alt=\"\" /></a>";
  }

  if (!
check_permission("auth_viewimage"$image_row['cat_id']) || !check_permission("auth_viewcat"$image_row['cat_id'])) {
    
$show_link 0;
  }

  
$file_size "n/a";
  if (!
is_remote($image_row['image_media_file'])) {
    if (
$file_size = @filesize(MEDIA_PATH."/".$image_row['cat_id']."/".$image_row['image_media_file'])) {
      
$file_size format_file_size($file_size);
    }
  }
  elseif (
$detailed_view) {
    
$file_size get_remote_file_size($image_row['image_media_file']);
  }

  if (isset(
$image_row[$user_table_fields['user_name']]) && $image_row['user_id'] != GUEST) {
    
$user_name format_text($image_row[$user_table_fields['user_name']], 2);

    
$user_profile_link = (!empty($url_show_profile)) ? str_replace("{user_id}"$image_row['user_id'], $url_show_profile) : ROOT_PATH."member.php?action=showprofile&amp;".URL_USER_ID."=".$image_row['user_id'];
    
$user_name_link "<a href=\"".$site_sess->url($user_profile_link)."\">".$user_name."</a>";
  }
  else {
    
$user_name format_text($lang['userlevel_guest'], 2);
    
$user_name_link $user_name;
  }

  
$site_template->register_vars(array(
    
"image_id" => $image_row['image_id'],
    
"user_id" => $image_row['user_id'],
    
"user_name" => $user_name,
    
"user_name_link" => $user_name_link,
    
"image_name" => format_text($image_row['image_name'], 2),
    
"image_description" => $description,
    
"image_keywords" => $keywords,
    
"image_date" => format_date($config['date_format']." ".$config['time_format'],$image_row['image_date']),
    
"image_is_new" => $is_new,
    
"lang_new" => $lang['new'],
    
"image_active" => $image_row['image_active'],
    
"cat_id" => $image_row['cat_id'],
    
"cat_name" => format_text($image_row['cat_name'], 2),
    
"cat_url" => $site_sess->url(ROOT_PATH."categories.php?".URL_CAT_ID."=".$image_row['cat_id']),
    
"image_downloads" => $image_row['image_downloads'],
    
"image_votes" => $image_row['image_votes'],
    
"image_rating" => $image_row['image_rating'],
    
"image_hits" => $image_row['image_hits'],
    
"allow_comments" => $image_row['image_allow_comments'],
    
"lang_comments" => $lang['comments'],
    
"image_comments" => $num_comments,
    
"lightbox_button" => $lightbox_button,
    
"postcard_button" => $postcard_button,
    
"download_button" => $download_button,
    
"download_zip_button" => $download_zip_button,
    
"image_download_url" => $image_row['image_download_url'],
    
"allow_download" => $allow_download,
    
"url_download" => $site_sess->url(ROOT_PATH."download.php?".URL_IMAGE_ID."=".$image_row['image_id']),
    
"image_file_size" => $file_size,
    
"image_url" => ($show_link) ? $site_sess->url(ROOT_PATH."details.php?".URL_IMAGE_ID."=".$image_row['image_id'].((!empty($mode)) ? "&amp;mode=".$mode "")) : "",
    
"image" => get_media_code($image_row['image_media_file'], $image_row['image_id'], $image_row['cat_id'], $image_row['image_name'], $mode$show_link$detailed_view),
    
"thumbnail" => get_thumbnail_code($image_row['image_media_file'], $image_row['image_thumb_file'], $image_row['image_id'], $image_row['cat_id'], $image_row['image_name'], $mode$show_link),
    
"thumbnail_openwindow" => get_thumbnail_code($image_row['image_media_file'], $image_row['image_thumb_file'], $image_row['image_id'], $image_row['cat_id'], $image_row['image_name'], $mode$show_link1),
    
"image_file_name" => $image_row['image_media_file'],
    
"thumbnail_file_name" => $image_row['image_thumb_file']
  ));

  if (!empty(
$additional_image_fields)) {
    
$additional_field_array = array();
    foreach (
$additional_image_fields as $key => $val) {
      
$additional_field_array[$key] = (!empty($image_row[$key])) ? format_text($image_row[$key], 1) : REPLACE_EMPTY;
      
$additional_field_array['lang_'.$key] = $val[0];
    }
    if (!empty(
$additional_field_array)) {
      
$site_template->register_vars($additional_field_array);
    }
  }

  
$rate_form "";
  if (
check_permission("auth_vote"$image_row['cat_id'])) {
    
$site_template->register_vars("rate"$lang['rate']);
    
$rate_form $site_template->parse_template("rate_form");
  }
  
$site_template->register_vars("rate_form"$rate_form);
  return 
true;
}

// ################ Start Mod Star Rating * Mouseover/ Hover * Rating without pagereload ##################
function rating_bar($image_id,$units='',$units_detail,$rating_image_width,$static='') {
global 
$site_db$config$site_sess$lang$user_info$setting;

$rating_details $config['starrating_details'];
$rating_images $config['starrating_details_images'];
$rating_details_text $config['starrating_details_text'];
$rating_thumbs_text $config['starrating_thumbs_text'];
$rating_image_width $config['starrating_details_width'];
$thumbnails_rating $config['starrating_thumbs'];
$thumbnails_rating_images $config['starrating_thumbs_images'];
$thumbnails_rating_image_width $config['starrating_thumbs_width'];

if (!
$rating_images) {$rating_images 10;}
if (!
$thumbnails_rating_images) {$thumbnails_rating_images 5;}
if (!
$static) {$static FALSE;}

$sql "SELECT i.image_id, i.cat_id, i.user_id, i.image_name, i.image_active, i.image_votes, i.image_rating, i.image_hits, i.image_used_ids, c.cat_id, c.auth_vote
        FROM ("
.IMAGES_TABLE." i,  ".CATEGORIES_TABLE." c)
        WHERE i.image_id = 
$image_id AND c.cat_id = i.cat_id";
$image_row $site_db->query_firstrow($sql);
$cat_id = (isset($image_row['cat_id'])) ? $image_row['cat_id'] : 0;
$auth_vote = (isset($image_row['auth_vote'])) ? $image_row['auth_vote'] : 0;
$image_used_ids_array explode(","$image_row['image_used_ids']);
$ip $_SERVER['REMOTE_ADDR'];

if (
$image_row['image_votes'] < 1) {
$count 0;
}
else {
$count$image_row['image_votes'];
}
if (
$user_info['user_id'] == $image_row['user_id']) {
$is_image_owner 1// replace 1 with 0, if Guests can upload images and vote
$is_already_voted 0;
}
elseif ((
in_array($user_info['user_id'], $image_used_ids_array)) && ($user_info['user_level'] != GUEST)) {
$is_image_owner 1;
$is_already_voted 1;
}
else {
$is_image_owner 0;
$is_already_voted 0;
}

$current_rating $image_row['image_rating'];
$current_rating_text = @number_format($current_rating,1);
$thumbnails_current_rating = @number_format($current_rating/$rating_images*$thumbnails_rating_images,2);
$thumbnails_current_rating_text = @number_format($current_rating/$rating_images*$thumbnails_rating_images,1);

$tense=($count==1) ? $lang['vote'] : $lang['votes'];
$voted=mysql_num_rows(mysql_query("SELECT image_used_ips FROM ".IMAGES_TABLE." WHERE image_used_ips LIKE '%".$ip."%' AND image_id='".$image_id."' "));

$rating_width = @number_format($current_rating,2)*$rating_image_width;
$thumbnails_rating_width = @number_format($thumbnails_current_rating,2)*$thumbnails_rating_image_width;
$image_idx2 = ($image_id*2);

// --- Thumbnails static ---

                
$static_rater_thumb[]  ='<br /><br /><table border="0" cellspacing="0" cellpadding="1" width="10" align="center"><tr><td class="bordercolor">';
                
$static_rater_thumb[] .='<table border="0" cellspacing="0" cellpadding="3"><tr><td bgcolor="#ffffff" align="left">';
                
$static_rater_thumb[] .= '<div class="ratingblock">';
                
$static_rater_thumb[] .= '<div id="unit_long'.$image_id.'">';
                if (
$is_already_voted == 1) {
                
$static_rater_thumb[] .= '<ul id="unit_ul'.$image_id.'" class="unit-rating-thumbnails" style="width:'.$thumbnails_rating_image_width*$thumbnails_rating_images.'px;" title ="'.$lang['already_voted'].'">';
                
$static_rater_thumb[] .= '<li class="current-rating-thumbnails" style="width:'.$thumbnails_rating_width.'px;" title="'.$lang['rating'].'&nbsp;'.$thumbnails_current_rating.'&nbsp;'.$lang['vote_between'].'&nbsp;'.$thumbnails_rating_images.'&nbsp;&nbsp;&nbsp;'.$lang['already_voted'].'"></li>';
                }
                elseif (
$is_image_owner == 1) {
                
$static_rater_thumb[] .= '<ul id="unit_ul'.$image_id.'" class="unit-rating-thumbnails" style="width:'.$thumbnails_rating_image_width*$thumbnails_rating_images.'px;" title ="'.$lang['image_owner'].'">';
                
$static_rater_thumb[] .= '<li class="current-rating-thumbnails" style="width:'.$thumbnails_rating_width.'px;" title="'.$lang['rating'].'&nbsp;'.$thumbnails_current_rating.'&nbsp;'.$lang['vote_between'].'&nbsp;'.$thumbnails_rating_images.'&nbsp;&nbsp;&nbsp;'.$lang['image_owner'].'"></li>';
                }
                else {
                
$static_rater_thumb[] .= '<ul id="unit_ul'.$image_id.'" class="unit-rating-thumbnails" style="width:'.$thumbnails_rating_image_width*$thumbnails_rating_images.'px;" title ="">';
                
$static_rater_thumb[] .= '<li class="current-rating-thumbnails" style="width:'.$thumbnails_rating_width.'px;" title="'.$lang['rating'].'&nbsp;'.$thumbnails_current_rating.'&nbsp;'.$lang['vote_between'].'&nbsp;'.$thumbnails_rating_images.'"></li>';
                }
                 
$static_rater_thumb[] .= '</ul>';
                if (
$rating_thumbs_text == 'enable') {
                
$static_rater_thumb[] .='<font class="voted"><center>'.$thumbnails_current_rating.'&nbsp;('.$count.' '.$tense.')</center></font>';
                }
                
$static_rater_thumb[] .= '</div>';
                
$static_rater_thumb[] .= '</div>';
                
$static_rater_thumb[] .= '</td></tr></table></td></tr></table>';

// --- Thumbnails rater ---

                
$rater_thumb  ='<br /><br /><table border="0" cellspacing="0" cellpadding="1" width="10" align="center"><tr><td class="bordercolor">';
                
$rater_thumb .='<table border="0" cellspacing="0" cellpadding="3"><tr><td bgcolor="#ffffff" align="left">';
                
$rater_thumb .='<div class="ratingblock">';
                
$rater_thumb .='<div id="unit_long'.$image_id.'">';
                if(!
$voted) {
                
$rater_thumb .='<ul id="unit_ul'.$image_id.'" class="unit-rating-thumbnails" style="width:'.$thumbnails_rating_image_width*$thumbnails_rating_images.'px;">';
                }
                else {
                
$rater_thumb .='<ul id="unit_ul'.$image_id.'" class="unit-rating-thumbnails" style="width:'.$thumbnails_rating_image_width*$thumbnails_rating_images.'px;" title="'.$lang['already_voted'].'">';
                }
                
$rater_thumb .='<li class="current-rating-thumbnails" style="width:'.$thumbnails_rating_width.'px;" title="'.$lang['rating'].'&nbsp;'.$thumbnails_current_rating_text.'&nbsp;'.$lang['vote_between'].'&nbsp;'.$thumbnails_rating_images.'"></li>';

                for (
$ncount 1$ncount <= $thumbnails_rating_images$ncount++) {
                if(!
$voted) {
                
$rater_thumb .='<li><a href="index.php?j='.$ncount.'&q='.$image_id.'&c='.$thumbnails_rating_images.'&cd='.$rating_images.'&w='.$thumbnails_rating_image_width.'&v=1" title="'.$lang['rate'].': '.$ncount.' '.$lang['vote_between'].' '.$thumbnails_rating_images.'" class="r'.$ncount.'-unit-thumbnails rater" rel="nofollow">'.$ncount.'</a></li>';
                }
                else {
                
$rater_thumb .='<li class="current-rating-thumbnails" style="width:'.$thumbnails_rating_width.'px;" title="'.$lang['already_voted'].'"></li>';
                }
                }
                
$ncount=0;
                
$rater_thumb .='</ul>';
                if(
$voted){ $rater_thumb .=''; }
                if (
$rating_thumbs_text == 'enable') {
                
$rater_thumb .='<font class="voted"><center>'.$thumbnails_current_rating.'&nbsp;('.$count.' '.$tense.')</center></font>';
                }
                
$rater_thumb .='</div></div></td></tr></table></td></tr></table>';

// --- Details static---

                
$static_rater_details[]  ='<table border="0" cellspacing="0" cellpadding="0" width="10" align="center"><tr><td>';
                
$static_rater_details[] .='<table border="0" cellspacing="0" cellpadding="3"><tr><td align="left">';
                
$static_rater_details[] .= '<div class="ratingblock">';
                
$static_rater_details[] .= '<div id="unit_long'.$image_id.'">';
                if (
$is_already_voted == 1) {
                
$static_rater_details[] .= '<ul id="unit_ul'.$image_id.'" class="unit-rating" style="width:'.$rating_image_width*$rating_images.'px;" title="'.$lang['already_voted'].'">';
                
$static_rater_details[] .= '<li class="current-rating" style="width:'.$rating_width.'px;" title="'.$lang['already_voted'].'"></li>';
                }
                elseif (
$is_image_owner == 1) {
                
$static_rater_details[] .= '<ul id="unit_ul'.$image_id.'" class="unit-rating" style="width:'.$rating_image_width*$rating_images.'px;" title="'.$lang['image_owner'].'">';
                
$static_rater_details[] .= '<li class="current-rating" style="width:'.$rating_width.'px;" title="'.$lang['image_owner'].'"></li>';
                }
                else {
                
$static_rater_details[] .= '<ul id="unit_ul'.$image_id.'" class="unit-rating" style="width:'.$rating_image_width*$rating_images.'px;" title="'.$lang['already_voted'].'">';
                
$static_rater_details[] .= '<li class="current-rating" style="width:'.$rating_width.'px;" title="'.$lang['already_voted'].'"></li>';
                }
                
$static_rater_details[] .= '</ul>';
                if (
$rating_details_text == 'enable') {
                
$static_rater_details[] .='<font class="voted"><center>'.$lang['rating'].'&nbsp;&nbsp;'.$current_rating.'&nbsp;('.$count.' '.$tense.')</center></font>';
                }
                
$static_rater_details[] .= '</div>';
                
$static_rater_details[] .= '</div>';
                
$static_rater_details[] .= '</td></tr></table></td></tr></table>';

// --- Details rater---

                
$rater_details  ='<div class="ratingblock">';
                
$rater_details .='<div id="unit_long'.$image_idx2.'">';
                if(!
$voted) {
                
$rater_details .='<ul id="unit_ul'.$image_idx2.'" class="unit-rating" style="width:'.$rating_image_width*$rating_images.'px;">';
                }
                else {
                
$rater_details .='<ul id="unit_ul'.$image_idx2.'" class="unit-rating" style="width:'.$rating_image_width*$rating_images.'px;" title="'.$lang['already_voted'].'">';
                }
                
$rater_details .='<li class="current-rating" style="width:'.$rating_width.'px;" title="'.$lang['rating'].'&nbsp;'.$current_rating_text.'&nbsp;'.$lang['vote_between'].'&nbsp;'.$rating_images.'"></li>';

                for (
$ncount 1$ncount <= $rating_images$ncount++) {
                if(!
$voted) {
                
$rater_details .='<li><a href="index.php?j='.$ncount.'&q='.$image_idx2.'&c='.$rating_images.'&cd='.$rating_images.'&w='.$rating_image_width.'&v=2" title="'.$lang['rate'].': '.$ncount.' '.$lang['vote_between'].' '.$rating_images.' " class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
                }
                else {
                
$rater_details .='<li class="current-rating" style="width:'.$rating_width.'px;" title="'.$lang['already_voted'].'"></li>';
                }
                }
                
$ncount=0;
                
$rater_details .='</ul>';
                if(
$voted){ $rater_details .=' '; }
                if (
$rating_details_text == 'enable') {
                
$rater_details .='<font class="voted"><center>'.$lang['rating'].'&nbsp;&nbsp;'.$current_rating.'&nbsp;('.$count.' '.$tense.')</center></font>';
                }
                
$rater_details .='</div></div>';


// --- Details ajax form---
if ($static == '6') {
                
$rater  ='<table border="0" cellspacing="0" cellpadding="0"><tr><td class="head1">';
                
$rater .='<table border="0" cellspacing="0" cellpadding="3" class="row1"><tr>';
                if (
$is_image_owner == '0') {
                
$rater .='<form method="post" action="details.php?image_id='.$image_id.'">';
                }
                
$rater .='<td valign="bottom">';
                
$rater .='<select name="rating" class="select">';
                
$rater .='<option value="">--</option>';
                
$rater .='<option value="5">5</option>';
                
$rater .='<option value="4">4</option>';
                
$rater .='<option value="3">3</option>';
                
$rater .='<option value="2">2</option>';
                
$rater .='<option value="1">1</option>';
                
$rater .='</select></td><td>';
                
$rater .='<input type="hidden" name="action" value="rateimage" />';
                
$rater .='<input type="hidden" name="id" value="'.$image_id.'" />';
                
$rater .='<input type="submit" value="'.$lang['rate'].'" class="button" name="submit" />';
                
$rater .='</td>';
                if (
$is_image_owner == '0') {
                
$rater .='</form>';
                }
                
$rater .='</tr></table></td></tr></table>';
                return 
$rater;
}
elseif (
$static == '4' && $user_info['user_level'] == GUEST && $auth_vote != 9) {
                
$static_rater $static_rater_details;
                return 
join("\n"$static_rater);
}
elseif (
$static == '4' && $is_image_owner == '0' && $user_info['user_level'] >= USER && $auth_vote != 9) {
                
$rater $rater_details;
                return 
$rater;
}
elseif (
$static == '4' && $is_image_owner == '1' && $user_info['user_level'] >= USER && $auth_vote != 9) {
                
$static_rater $static_rater_details;
                return 
join("\n"$static_rater);
}
elseif (
$static == '5' && $is_image_owner == '0' && $auth_vote != 9) {
                
$rater $rater_details;
                return 
$rater;
}
elseif (
$static == '5' && $is_image_owner == '1' && $auth_vote != 9) {
                
$static_rater $static_rater_details;
                return 
join("\n"$static_rater);
}
// --- Thumbnails Ajax form ---
elseif ($static == '1' && $auth_vote != 9) {
                
$static_rater $static_rater_thumb;
                return 
join("\n"$static_rater);
}
elseif (
$static == '2' && $user_info['user_level'] == GUEST && $auth_vote != 9) {
                
$static_rater $static_rater_thumb;
                return 
join("\n"$static_rater);
}
elseif (
$static == '2' && $is_image_owner == '0' && $user_info['user_level'] >= USER && $auth_vote != 9) {
                
$rater $rater_thumb;
                return 
$rater;
}
elseif (
$static == '2' && $is_image_owner == '1' && $user_info['user_level'] >= USER && $auth_vote != 9) {
                
$static_rater $static_rater_thumb;
                return 
join("\n"$static_rater);
}
elseif (
$static == '3' && $is_image_owner == '0' && $auth_vote != 9) {
                
$rater $rater_thumb;
                return 
$rater;
}
elseif (
$static == '3' && $is_image_owner == '1' && $auth_vote != 9) {
                
$static_rater $static_rater_thumb;
                return 
join("\n"$static_rater);
}
else {
                
$rater  ='<br />';
                return 
$rater;
}
}
// ################## End Mod Star Rating * Mouseover/ Hover * Rating without pagereload ##############

function get_thumbnail_code($media_file_name$thumb_file_name ""$image_id$cat_id$image_name ""$mode ""$show_link 1$open_window 0) {
  global 
$site_sess$config$user_info$setting;

$thumbnails_rating $config['starrating_thumbs'];

  if (!
check_media_type($media_file_name)) {
    
$thumb "<img src=\"".ICON_PATH."/404.gif\" border=\"0\" alt=\"\" />";
  }
  else {
    if (!
get_file_path($thumb_file_name"thumb"$cat_id00)) {
      
$file_src ICON_PATH."/".get_file_extension($media_file_name).".gif";
      
$image_info = @getimagesize($file_src);
      
$width_height = (!empty($image_info[3])) ? " ".$image_info[3] : "";
      
$thumb "<img src=\"".$file_src."\" border=\"0\"".$width_height." alt=\"".$image_name."\" />";
    }
    else {
      
$file_src get_file_path($thumb_file_name"thumb"$cat_id01);
      
$image_info = @getimagesize($file_src);
      
$width_height = (!empty($image_info[3])) ? " ".$image_info[3] : "";
      
$thumb "<img src=\"".$file_src."\" border=\"".$config['image_border']."\"".$width_height." alt=\"".$image_name."\" />";
// ################## Start Mod Star Rating * Mouseover/ Hover * Rating without pagereload ##############
      
$thumb .= rating_bar(''.$image_id.'','$thumbnails_rating_images','$rating_images','$thumbnails_rating_image_width',''.$thumbnails_rating.'','1');
// ################## End Mod Star Rating * Mouseover/ Hover * Rating without pagereload ##############
    
}
  }

  if (
$show_link) {
    if (
$open_window) {
      
$thumb "<a href=\"".$site_sess->url(ROOT_PATH."details.php?".URL_IMAGE_ID."=".$image_id.((!empty($mode)) ? "&amp;mode=".$mode ""))."\" onclick=\"opendetailwindow()\" target=\"detailwindow\">".$thumb."</a>";
    }
    else {
      
$thumb "<a href=\"".$site_sess->url(ROOT_PATH."details.php?".URL_IMAGE_ID."=".$image_id.((!empty($mode)) ? "&amp;mode=".$mode ""))."\">".$thumb."</a>";
    }
  }
  return 
$thumb;
}

function 
get_media_code($media_file_name$image_id 0$cat_id 0$image_name ""$mode ""$show_link 0$detailed_view 0) {
  global 
$site_template$site_sess$lang$mode;

  if (!
get_file_path($media_file_name"media"$cat_id00)) {
    
$media "<img src=\"".ICON_PATH."/404.gif\" border=\"0\" alt=\"\" />";
    
$site_template->register_vars("iptc_info""");
    
$site_template->register_vars("exif_info""");
  }
  else {
    
$media_src get_file_path($media_file_name"media"$cat_id01);
    
$file_extension get_file_extension($media_file_name);
    
$media_icon "<img src=\"".ICON_PATH."/".$file_extension.".gif\" border=\"0\" alt=\"".format_text($image_name2)."\" />";
    if (
$show_link) {
      
$media_icon "<a href=\"".$site_sess->url(ROOT_PATH."details.php?".URL_IMAGE_ID."=".$image_id.((!empty($mode)) ? "&amp;mode=".$mode ""))."\">".$media_icon."</a>";
    }
    
$width_height "";
    
$width "";
    
$height "";
    
$iptc_info "";
    
$exif_info "";
    if (!
is_remote($media_src)) {
      
$src = (!file_exists($media_src) && file_exists(preg_replace("/\/{2,}/""/"get_document_root()."/".$media_src))) ? preg_replace("/\/{2,}/""/"get_document_root()."/".$media_src) : $media_src;
      if (
in_array(strtolower($file_extension), array('gif','jpg','jpeg','png','swf')) && $image_info = @getimagesize($src$info)) {
        
$width_height " ".$image_info[3];
        
$width $image_info[0];
        
$height $image_info[1];
        if (
$detailed_view && isset($info['APP13'])) {
          
$iptc_array get_iptc_info($info['APP13']);
          
$bgcounter 0;
          foreach (
$iptc_array as $key => $val) {
            
$row_bg_number = ($bgcounter++ % == 0) ? 2;
            
$site_template->register_vars(array(
              
"iptc_value" => format_text($val),
              
"iptc_name" => $lang['iptc_'.$key],
              
"row_bg_number" => $row_bg_number
            
));
            
$iptc_info .= $site_template->parse_template("iptc_bit");
          }
        }
        if (
$detailed_view && $image_info[2] == && function_exists('exif_read_data') && $exif_data = @exif_read_data($src'EXIF')) {
          
$exif_array get_exif_info($exif_data);
          
$bgcounter 0;
          foreach (
$exif_array as $key => $val) {
            
$row_bg_number = ($bgcounter++ % == 0) ? 2;
            
$site_template->register_vars(array(
              
"exif_value" => format_text($val),
              
"exif_name" => $lang['exif_'.$key],
              
"row_bg_number" => $row_bg_number
            
));
            
$exif_info .= $site_template->parse_template("exif_bit");
          }
        }
      }
    }
    
$site_template->register_vars(array(
      
"media_src" => $media_src,
      
"media_icon" => $media_icon,
      
"image_name" => format_text($image_name2),
      
"width_height" => $width_height,
      
"width" => $width,
      
"height" => $height,
      
"iptc_info" => $iptc_info,
      
"exif_info" => $exif_info
    
));
    
$media $site_template->parse_template("media/".$file_extension);
  }
  return 
$media;
}

function 
get_random_image_cache() {
  global 
$site_db$cat_cache$total_images;

  
$random_image_cache = array();
  
$cat_id_sql get_auth_cat_sql("auth_viewcat""NOTIN");

  if (
SHOW_RANDOM_CAT_IMAGE) {
    
$sql "SELECT DISTINCT i.image_id, i.cat_id, i.user_id, i.image_name, i.image_description, i.image_keywords, i.image_date, i.image_active, i.image_media_file, i.image_thumb_file, i.image_download_url, i.image_allow_comments, i.image_comments, i.image_downloads, i.image_votes, i.image_rating, i.image_hits, c.cat_name".get_user_table_field(", u.""user_name")."
            FROM ("
.IMAGES_TABLE." i,  ".CATEGORIES_TABLE." c)
            LEFT JOIN "
.USERS_TABLE." u ON (".get_user_table_field("u.""user_id")." = i.user_id)
            WHERE i.image_active = 1 AND i.cat_id NOT IN (
$cat_id_sql) AND c.cat_id = i.cat_id
            ORDER BY RAND()"
;
    
$result $site_db->query($sql);
    while (
$row $site_db->fetch_array($result)) {
      
$random_image_cache[$row['cat_id']] = $row;
    }
  }
  else {
    if (empty(
$total_images)) {
      
$sql "SELECT COUNT(*) as total_images
              FROM "
.IMAGES_TABLE."
              WHERE image_active = 1 AND cat_id NOT IN (
$cat_id_sql)";
      
$row $site_db->query_firstrow($sql);
      
$total_images $row['total_images'];
    }
    if (empty(
$total_images)) {
      return 
$random_image_cache;
    }
    
mt_srand((double)microtime() * 1000000);
    
$number = ($total_images 1) ? mt_rand(0$total_images 1) : 0;

    
$sql "SELECT i.image_id, i.cat_id, i.user_id, i.image_name, i.image_description, i.image_keywords, i.image_date, i.image_active, i.image_media_file, i.image_thumb_file, i.image_download_url, i.image_allow_comments, i.image_comments, i.image_downloads, i.image_votes, i.image_rating, i.image_hits, c.cat_name".get_user_table_field(", u.""user_name")."
            FROM ("
.IMAGES_TABLE." i,  ".CATEGORIES_TABLE." c)
            LEFT JOIN "
.USERS_TABLE." u ON (".get_user_table_field("u.""user_id")." = i.user_id)
            WHERE i.image_active = 1 AND i.cat_id NOT IN (
$cat_id_sql) AND c.cat_id = i.cat_id
            LIMIT 
$number, 1";
    
$random_image_cache[0] = $site_db->query_firstrow($sql);
  }
  return 
$random_image_cache;
}

function 
get_random_image($cat_id 0$show_link 1$return_file 0) {
  global 
$site_template$random_image_cache;

  if (!isset(
$random_image_cache)) {
    
$random_image_cache get_random_image_cache();
  }

  if (
$cat_id && SHOW_RANDOM_CAT_IMAGE) {
    
$template 'random_cat_image';
    
$category_id $cat_id;
  }
  else {
    
$template 'random_image';
    if (
SHOW_RANDOM_CAT_IMAGE) {
      
srand((float)microtime() * 1000000);
      
$category_id array_rand($random_image_cache);
    }
    else {
      
$category_id 0;
    }
  }

  if (!empty(
$random_image_cache[$category_id])) {
    if (!
$return_file) {
      
show_image($random_image_cache[$category_id], ""$show_link);
      
$random_image $site_template->parse_template($template);
      return 
$random_image;
    }
    else {
      return 
get_file_path($random_image_cache[$category_id]['image_thumb_file'], "thumb"$category_id01);
    }
  }
}

function 
format_file_size($file_size 0) {
  
//$file_size = intval($file_size);
  
if (!$file_size) {
    return 
"n/a";
  }
  if (
strlen($file_size) <= && strlen($file_size) >= 7) {
    
$file_size number_format($file_size 1048576,1);
    return 
$file_size."&nbsp;MB";
  }
  elseif (
strlen($file_size) >= 10) {
    
$file_size number_format($file_size 1073741824,1);
    return 
$file_size."&nbsp;GB";
  }
  else {
    
$file_size number_format($file_size 1024,1);
    return 
$file_size."&nbsp;KB";
  }
}

function 
get_remote_file_size($file_path) {
  if (!
CHECK_REMOTE_FILES) {
    return 
'n/a';
  }
  
ob_start();
  @
readfile($file_path);
  
$file_data ob_get_contents();
  
ob_end_clean();
  return 
format_file_size(strlen($file_data));
}

function 
update_comment_count($image_id 0$user_id 0) {
  global 
$site_db$user_table_fields;
  if (
$image_id) {
    
$sql "SELECT COUNT(comment_id) AS comments
            FROM "
.COMMENTS_TABLE."
            WHERE image_id = 
$image_id";
    
$countcomments $site_db->query_firstrow($sql);
    
$sql "UPDATE ".IMAGES_TABLE."
            SET image_comments = "
.$countcomments['comments']."
            WHERE image_id = 
$image_id";
    
$site_db->query($sql);
  }
  if (
$user_id != GUEST && $user_id && !empty($user_table_fields['user_comments'])) {
    
$sql "SELECT COUNT(comment_id) AS comments
            FROM "
.COMMENTS_TABLE."
            WHERE user_id = 
$user_id";
    
$countcomments $site_db->query_firstrow($sql);
    
$sql "UPDATE ".USERS_TABLE."
            SET "
.get_user_table_field("""user_comments")." = ".$countcomments['comments']."
            WHERE "
.get_user_table_field("""user_id")." = $user_id";
    
$site_db->query($sql);
  }
}

function 
update_image_rating($image_id$rating) {
  global 
$site_db$user_info;
  
$sql "SELECT cat_id, image_votes, image_rating
          FROM "
.IMAGES_TABLE."
          WHERE image_id = 
$image_id";
  
$image_row $site_db->query_firstrow($sql);
  if (
check_permission("auth_vote"$image_row['cat_id'])) {
    
$old_votes $image_row['image_votes'];
    
$old_rating $image_row['image_rating'];
    
$new_rating = (($old_rating $old_votes) + $rating) / ($old_votes 1);
    
$new_rating sprintf("%.2f"$new_rating);
   if (
$user_info['user_id'] != GUEST) {
        
$sql "INSERT INTO ".VOTED_TABLE."
                (user_id, image_id, vote)
                VALUES
                ("
.$user_info['user_id'].", ".$image_id.", ".$rating.")";
        
$site_db->query($sql);
    }
    
$sql "UPDATE ".IMAGES_TABLE."
            SET image_votes = (
$old_votes + 1), image_rating = '$new_rating'
            WHERE image_id = 
$image_id";
    
$site_db->query($sql);
  }
}

function 
check_email($email) {
  return (
preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+@([-0-9A-Z]+\.)+([0-9A-Z]){2,4}$/i'$email)) ? 0;
}

function 
format_date($format$timestamp) {
  global 
$user_info;
  
$timezone_offset = (defined("TIME_OFFSET")) ? TIME_OFFSET 0;
  return 
date($format$timestamp + (3600 $timezone_offset));
}

function 
format_url($url) {
  if (empty(
$url)) {
    return 
'';
  }

  if (!
preg_match("/^https?:\/\//i"$url)) {
    
$url "http://".$url;
  }

  return 
$url;
}

function 
replace_url($text) {
  
$text " ".$text." ";
  
$url_search_array = array(
    
"#([^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^, \(\)<>\n\r]*)?)#si",
    
"#([^]_a-z0-9-=\"'\/])([a-z]+?)://([^, \(\)<>\n\r]+)#si"
  
);

  
$url_replace_array = array(
    
"\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\" rel=\"nofollow\">www.\\2.\\3\\4</a>",
    
"\\1<a href=\"\\2://\\3\" target=\"_blank\" rel=\"nofollow\">\\2://\\3</a>",
  );
  
$text preg_replace($url_search_array$url_replace_array$text);

  if (
strpos($text"@")) {
    
$text preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i""\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"$text);
  }
  return 
substr($text1, -1);
}

function 
replace_badwords($text) {
  global 
$config$split_badwords;
  if (
$config['badword_list'] != "") {
    if (!isset(
$split_badwords)) {
      
$badwords trim($config['badword_list']);
      
$badwords preg_replace("/[\n\r]/is"" "$badwords);
      
$badwords str_replace(","," ",$badwords);
      
$badwords preg_quote($badwords);
      
$badwords str_replace('/''\\/'$badwords);
      
$split_badwords preg_split("/\s+/"$badwords);
    }

    foreach (
$split_badwords as $key => $val) {
      if (
$val != "") {
        if (
substr($val02) == "\\{") {
          
$val substr($val2, -2);
          
$text trim(preg_replace("/([^A-Za-z])".$val."(?=[^A-Za-z])/si""\\1".str_repeat($config['badword_replace_char'], strlen($val)), $text "));
        }
        else {
          
$text trim(preg_replace("/$val/si"str_repeat($config['badword_replace_char'], strlen($val)), $text "));
        }
      }
    }
  }
  return 
$text;
}

function 
format_text($text$html 0$word_wrap 0$bbcode 0$bbcode_img 0) {
  if (
$word_wrap && $text != "") {
    
$text preg_replace("/([^\n\r ?&\.\/<>\"\\-]{".$word_wrap."})/i"" \\1\n"$text);
  }

  if (
$html == || $html == 2) {
    
$text safe_htmlspecialchars($text);
  }

  
// Replace { to prevent parsing in templates
  
global $site_template;
  
$text preg_replace(
    
'='.preg_quote($site_template->start).'([A-Z0-9_]+)'.preg_quote($site_template->end).'=Usi',
    
'&#38;#123;\1&#38;#125;',
    
$text
  
);

  if (
$html !== 2) {
    
$text nl2br(trim($text));
    
$text replace_url($text);
  }

  if (
$bbcode == 1) {
    
$search_array = array(
      
"/(\[)(list)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/list)(((=)(\\4)([^\"']*)(\\4]))|(\]))/siU",
      
"/(\[)(list)(])(.*)(\[\/list\])/siU",
      
"/(\[\*\])/siU",
      
"/(\[\/\*\])/siU",
      
"/(\[)(url)(=)(['\"]?)(www\.)([^\"']*)(\\4])(.*)(\[\/url\])/siU",
      
"/(\[)(url)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/url\])/siU",
      
"/(\[)(url)(])(www\.)([^\"]*)(\[\/url\])/siU",
      
"/(\[)(url)(])([^\"]*)(\[\/url\])/siU",
      
"/(\[)(code)(])(\r\n)*(.*)(\[\/code\])/siU",
      
"/javascript:/si",
      
"/about:/si"
    
);
    
$replace_array = array(
      
"<ol type=\"\\5\">\\7</ol>",
      
"<ul>\\4</ul>",
      
"<li>",
      
"</li>",
      
"<a href=\"http://www.\\6\" target=\"_blank\" rel=\"nofollow\">\\8</a>",
      
"<a href=\"\\5\" target=\"_blank\" rel=\"nofollow\">\\7</a>",
      
"<a href=\"http://www.\\5\" target=\"_blank\" rel=\"nofollow\">www.\\5</a>",
      
"<a href=\"\\4\" target=\"_blank\" rel=\"nofollow\">\\4</a>",
      
"<pre>Code:<hr size=1>\\5<hr size=1></pre>",
      
"java script:",
      
"about :"
    
);
    
$text preg_replace($search_array$replace_array$text);
    if (!
$bbcode_img)  {
      
$text preg_replace("/(\[)(img)(])(\r\n)*([^\"]*)(\[\/img\])/siU""<a href=\"\\5\" target=\"_blank\">\\5</a>"$text);
    }
    else  {
      
$text preg_replace("/(\[)(img)(])(\r\n)*([^\"]*)(\[\/img\])/siU""<img src=\"\\5\">"$text);
    }
    
$text preg_replace("/(\[)(b)(])(\r\n)*([^\"]*)(\[\/b\])/siU""<b>\\5</b>"$text);
    
$text preg_replace("/(\[)(i)(])(\r\n)*([^\"]*)(\[\/i\])/siU""<i>\\5</i>"$text);
    
$text preg_replace("/(\[)(u)(])(\r\n)*([^\"]*)(\[\/u\])/siU""<u>\\5</u>"$text);

    
$text replace_badwords($text);
  }

  
$text str_replace("\\'""'"$text);
    
// Smilie Mod
  
$text show_smilies($text);
  
// End Smilie Mod

  
return $text;
}

function 
utf8_to_htmlentities($source) {
  
// array used to figure what number to decrement from character order
  // value
  // according to number of characters used to map unicode to ascii by
  // utf-8
  
$decrement = array();
  
$decrement[4] = 240;
  
$decrement[3] = 224;
  
$decrement[2] = 192;
  
$decrement[1] = 0;

  
// the number of bits to shift each charNum by
  
$shift = array();
  
$shift[1][0] = 0;
  
$shift[2][0] = 6;
  
$shift[2][1] = 0;
  
$shift[3][0] = 12;
  
$shift[3][1] = 6;
  
$shift[3][2] = 0;
  
$shift[4][0] = 18;
  
$shift[4][1] = 12;
  
$shift[4][2] = 6;
  
$shift[4][3] = 0;

  
$pos 0;
  
$len strlen($source);
  
$str '';
  while (
$pos $len) {
    
$asciiPos ord(substr($source$pos1));
    if ((
$asciiPos >= 240) && ($asciiPos <= 255)) {
      
// 4 chars representing one unicode character
      
$thisLetter substr($source$pos4);
      
$pos += 4;
    }
    elseif ((
$asciiPos >= 224) && ($asciiPos <= 239)) {
      
// 3 chars representing one unicode character
      
$thisLetter substr($source$pos3);
      
$pos += 3;
    }
    else if ((
$asciiPos >= 192) && ($asciiPos <= 223)) {
      
// 2 chars representing one unicode character
      
$thisLetter substr($source$pos2);
      
$pos += 2;
    }
    else {
      
// 1 char (lower ascii)
      
$thisLetter substr($source$pos1);
      
$pos += 1;
    }

    
// process the string representing the letter to a unicode entity
    
$thisLen strlen($thisLetter);
    
$thisPos 0;
    
$decimalCode 0;

    while (
$thisPos $thisLen) {
      
$thisCharOrd ord(substr($thisLetter$thisPos1));
      if (
$thisPos == 0) {
        
$charNum intval($thisCharOrd $decrement[$thisLen]);
        
$decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
      } else {
        
$charNum intval($thisCharOrd 128);
        
$decimalCode += ($charNum << $shift[$thisLen][$thisPos]);
      }
      
$thisPos++;
    }
    if ((
$thisLen == 1) && ($decimalCode <= 128)) {
      
$encodedLetter $thisLetter;
    }
    else {
      
$encodedLetter '&#38;#' $decimalCode ';';
    }
    
$str .= $encodedLetter;
  }
  return 
$str;
}

function 
uni_to_utf8($char) {
  
$char intval($char);

  switch (
$char) {
    case (
$char 128) :
      
// its an ASCII char no encoding needed
      
return chr($char);

    case (
$char << 11) :
      
// its a 2 byte UTF-8 char
      
return chr(192 + ($char >> 6)) .
             
chr(128 + ($char 63));

    case (
$char << 16) :
      
// its a 3 byte UTF-8 char
      
return chr(224 + ($char >> 12)) .
             
chr(128 + (($char >> 6) & 63)) .
             
chr(128 + ($char 63));

    case (
$char << 21) :
      
// its a 4 byte UTF-8 char
      
return chr(240 + ($char >> 18)) .
             
chr(128 + (($char >> 12) & 63)) .
             
chr(128 + (($char >>  6) & 63)) .
             
chr(128 + ($char 63));

    case (
$char << 26) :
      
// its a 5 byte UTF-8 char
      
return chr(248 + ($char >> 24)) .
             
chr(128 + (($char >> 18) & 63)) .
             
chr(128 + (($char >> 12) & 63)) .
             
chr(128 + (($char >> 6) & 63)) .
             
chr(128 + ($char 63));
    default:
      
// its a 6 byte UTF-8 char
      
return chr(252 + ($char >> 30)) .
             
chr(128 + (($char >> 24) & 63)) .
             
chr(128 + (($char >> 18) & 63)) .
             
chr(128 + (($char >> 12) & 63)) .
             
chr(128 + (($char >> 6) & 63)) .
             
chr(128 + ($char 63));
  }
}

// Smilie Mod
function show_smilies($text) {
    
$search_smilie  = array(":)",":-)",":smile:",    ":D",":-D",":grin:",           ":(",":-(",":sad:""8o","8-o",":shock",":eek:"":?:",      ":?",":-?",":???:",               "8)","8-)",":cool:",  ":x",":-x",":mad:"":p",":P",":-p",":-P",":razz:",     ":*",":-*",":oops:",           ":'(",":'-(",":cry:"">:(",">:-(",":evil:",  ":roll:",   ";)",";-)",":wink:",  ":|",":-|",":neutral:",        ":o",":-o",              ">:)",">:-)",":twisted:",      ":lol:","LOL"":!:",     ":idea:"":arrow:"":mrgreen:");
    
$replace_smilie = array("smile","smile","smile""biggrin","biggrin","biggrin""sad","sad","sad",  "eek","eek","eek","eek",     "question""confused","confused","confused""cool","cool","cool""mad","mad","mad",  "razz","razz","razz","razz","razz""redface","redface","redface""cry","cry","cry",    "evil""evil""evil""rolleyes""wink","wink","wink""neutral","neutral","neutral""surprised","surprised""twisted","twisted","twisted""lol","lol",     "exclaim""idea",   "arrow",   "mrgreen");
  for(
$smile=0;$smile<count($search_smilie);$smile++){
    
$text str_replace($search_smilie[$smile],"<img src=\"".TEMPLATE_PATH."/smilies/icon_".$replace_smilie[$smile].".gif\">",$text);
  }

  return 
$text;
}
// End Smilie Mod

function get_user_info($user_id 0) {
  global 
$site_db$user_table_fields;
  
$user_info 0;
  if (
$user_id != && $user_id != GUEST) {
    
$sql "SELECT *
            FROM "
.USERS_TABLE."
            WHERE "
.get_user_table_field("""user_id")." = $user_id";
    if (
$user_info $site_db->query_firstrow($sql)) {
      foreach (
$user_table_fields as $key => $val) {
        if (isset(
$user_info[$val])) {
          
$user_info[$key] = $user_info[$val];
        }
        elseif (!isset(
$user_info[$key])) {
          
$user_info[$key] = "";
        }
      }
    }
  }
  return 
$user_info;
}

function 
get_icq_status($uin) {
  if (!
is_numeric($uin)) return false;

  
$fp = @fsockopen('status.icq.com'80$errno$errstr8);
  if (!
$fp) return false;

  
$request "HEAD /online.gif?icq=$uin&img=3 HTTP/1.0\r\n"
            
."Host: status.icq.com\r\n"
            
."Connection: close\r\n\r\n";
  
fputs($fp$request);

  do {
     
$response fgets($fp1024);
  }
  while (!
feof($fp) && !stristr($response'Location'));

  
fclose($fp);
  if (
strstr($response'online1')) return 'online';
  if (
strstr($response'online0')) return 'offline';
  if (
strstr($response'online2')) return 'disabled';
  return 
FALSE;
}

function 
add_to_lightbox($id) {
  global 
$user_info$site_db;
  
$id intval($id);
  if (!
$id) {
    return 
false;
  }
  
$lightbox_ids $user_info['lightbox_image_ids'];
  
$lightbox_array explode(" "$lightbox_ids);
  if (!
in_array($id$lightbox_array)) {
    
$lightbox_ids .= " ".$id;
  }
  
$user_info['lightbox_image_ids'] = trim($lightbox_ids);
  
$user_info['lightbox_lastaction'] = time();
  
$sql "UPDATE ".LIGHTBOXES_TABLE."
          SET lightbox_lastaction = "
.$user_info['lightbox_lastaction'].", lightbox_image_ids = '".$user_info['lightbox_image_ids']."'
          WHERE user_id = "
.$user_info['user_id'];
  return (
$site_db->query($sql)) ? 0;
}

function 
remove_from_lightbox($id) {
  global 
$user_info$site_db;
  
$lightbox_array explode(" ",$user_info['lightbox_image_ids']);
  foreach (
$lightbox_array as $key => $val) {
    if (
$val == $id) {
      unset(
$lightbox_array[$key]);
    }
  }
  
$user_info['lightbox_image_ids'] = trim(implode(" "$lightbox_array));
  
$user_info['lightbox_lastaction'] = time();
  
$sql "UPDATE ".LIGHTBOXES_TABLE."
          SET lightbox_lastaction = "
.$user_info['lightbox_lastaction'].", lightbox_image_ids = '".$user_info['lightbox_image_ids']."'
          WHERE user_id = "
.$user_info['user_id'];
  return (
$site_db->query($sql)) ? 0;
}

function 
clear_lightbox() {
  global 
$user_info$site_db;
  
$current_time time();
  
$sql "UPDATE ".LIGHTBOXES_TABLE."
          SET lightbox_image_ids = '', lightbox_lastaction = 
$current_time
          WHERE user_id = "
.$user_info['user_id'];
  if (
$site_db->query($sql)) {
    
$user_info['lightbox_image_ids'] = "";
    
$user_info['lightbox_lastaction'] = $current_time;
    return 
true;
  }
  else {
    return 
false;
  }
}

function 
check_lightbox($id) {
  global 
$user_info;
  
$lightbox_array explode(" "$user_info['lightbox_image_ids']);
  return 
in_array($id$lightbox_array);
}

function 
get_random_key($db_table ""$db_column "") {
  global 
$site_db;
  
$key md5(uniqid(microtime()));
  if (
$db_table != "" && $db_column != "") {
    
$i 0;
    while (
$i == 0) {
      
$sql "SELECT ".$db_column."
              FROM "
.$db_table."
              WHERE "
.$db_column." = '$key'";
      if (
$site_db->is_empty($sql)) {
        
$i 1;
      }
      else {
        
$i 0;
        
$key md5(uniqid(microtime()));
      }
    }
  }
  return 
$key;
}

function 
get_subcat_ids($cid 0$cat_id 0$cat_parent_cache) {
  global 
$subcat_ids;

  if (!isset(
$cat_parent_cache[$cid])) {
    return 
false;
  }
  foreach (
$cat_parent_cache[$cid] as $key => $val) {
    if (
check_permission("auth_viewcat"$val)) {
      
$subcat_ids[$cat_id][] = $val;
      
get_subcat_ids($val$cat_id$cat_parent_cache);
    }
  }
  return 
$subcat_ids;
}

function 
get_subcategories($parent_id) {
  global 
$cat_parent_cache$cat_cache$site_sess$config;

  if (!isset(
$cat_parent_cache[$parent_id]) || $config['num_subcats'] < 1) {
    return 
"";
  }

  
$visible_cat_cache = array();
  foreach (
$cat_parent_cache[$parent_id] as $key => $val) {
    if (
check_permission("auth_viewcat"$val)) {
      
$visible_cat_cache[$key] = $val;
    }
  }

  
$num_subs sizeof($visible_cat_cache);
  
$sub_cat_list "";
  
$i 1;
  foreach (
$visible_cat_cache as $subcat_id) {
    if (
$i <= $num_subs && $i <= $config['num_subcats']) {
      
$sub_url $site_sess->url(ROOT_PATH."categories.php?".URL_CAT_ID."=".$subcat_id);
      
$sub_cat_list .= "<a href=\"".$sub_url."\" class=\"subcat\">".format_text($cat_cache[$subcat_id]['cat_name'], 2)."</a>";
      if (
$i != $config['num_subcats'] && $i $config['num_subcats'] && $i $num_subs) {
        
$sub_cat_list .= ", ";
      }
      if (
$i == $config['num_subcats'] && $i $num_subs) {
        
$sub_cat_list .= " ...\n";
      }
    }
    
$i++;
  }
  return 
$sub_cat_list;
}

function 
get_categories($cat_id 0) {
  global 
$site_template$site_db$site_sess$config$lang;
  global 
$cat_cache$cat_parent_cache$new_image_cache$subcat_ids;

  
$cattable_width ceil((intval($config['cat_table_width'])) / $config['cat_cells']);
  if ((
substr($config['cat_table_width'],-1)) == "%") {
    
$cattable_width .= "%";
  }

  if (!isset(
$cat_parent_cache[$cat_id])) {
    return 
"";
  }

  
$visible_cat_cache = array();
  foreach (
$cat_parent_cache[$cat_id] as $key => $val) {
    if (
check_permission("auth_viewcat"$val)) {
      
$visible_cat_cache[$key] = $val;
    }
  }

  if (empty(
$visible_cat_cache)) {
    return 
"";
  }

  
$total sizeof($visible_cat_cache);
  
$table_columns = (intval($config['cat_cells'])) ? intval($config['cat_cells']) : 2;
  if (
$total <= $table_columns) {
    
$table_rows 1;
  }
  else {
    
$table_rows $total $table_columns;
    if (
$total >= $table_columns && !is_integer($table_rows)) {
      
$table_rows intval($table_rows) + 1;
    }
  }

  
$categories "\n<table width=\"".$config['cat_table_width']."\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n<tr>\n<td valign=\"top\" width=\"".$cattable_width."\" class=\"catbgcolor\">\n";
  
$categories .= "<table border=\"0\" cellpadding=\"".$config['cat_table_cellpadding']."\" cellspacing=\"".$config['cat_table_cellspacing']."\">\n";
  
$count 0;
  
$count2 0;
  foreach (
$visible_cat_cache as $key => $category_id) {
    
$categories .= "<tr>\n<td valign=\"top\">\n";

    
$is_new = (isset($new_image_cache[$category_id]) && $new_image_cache[$category_id] > 0) ? 0;
    
$num_images = (isset($cat_cache[$category_id]['num_images'])) ? $cat_cache[$category_id]['num_images'] : 0;

    
$subcat_ids = array();
    
get_subcat_ids($category_id$category_id$cat_parent_cache);

    if (isset(
$subcat_ids[$category_id])) {
      foreach (
$subcat_ids[$category_id] as $val) {
        if (isset(
$new_image_cache[$val]) && $new_image_cache[$val] > 0) {
          
$is_new 1;
        }
        if (isset(
$cat_cache[$val]['num_images'])) {
          
$num_images += $cat_cache[$val]['num_images'];
        }
      }
    }

    if (
defined("SHOW_RANDOM_IMAGE") && SHOW_RANDOM_IMAGE == || defined("SHOW_RANDOM_CAT_IMAGE") && SHOW_RANDOM_CAT_IMAGE == 0) {
      
$random_cat_image_file "";
    }
    else {
      
$random_cat_image_file get_random_image($category_id01);
    }

    
$site_template->register_vars(array(
      
"cat_id" => $category_id,
      
"cat_name" => format_text($cat_cache[$category_id]['cat_name'], 2),
      
"cat_description" => format_text($cat_cache[$category_id]['cat_description'], 1),
      
"cat_hits" => $cat_cache[$category_id]['cat_hits'],
      
"cat_is_new" => $is_new,
      
"lang_new" => $lang['new'],
      
"sub_cats" => get_subcategories($category_id),
      
"cat_url" => $site_sess->url(ROOT_PATH."categories.php?".URL_CAT_ID."=".$category_id),
      
"random_cat_image_file" => $random_cat_image_file,
      
"num_images" => $num_images
    
));
    
$categories .= $site_template->parse_template("category_bit");
    
$count++;
    
$count2++;
    
$categories .= "</td>\n</tr>\n";

    if (
$count == $table_rows && $count2 sizeof($visible_cat_cache)) {
      
$categories .= "</table></td>\n";
      
$categories .= "<td valign=\"top\" width=\"".$cattable_width."\" class=\"catbgcolor\">\n";
      
$categories .= "<table border=\"0\" cellpadding=\"".$config['cat_table_cellpadding']."\" cellspacing=\"".$config['cat_table_cellspacing']."\">\n";

      
$total $total $count2;
      
$table_columns $table_columns 1;
      
/*if ($total <= $table_columns && $table_columns > 1) {
        $table_rows = 1;
      }
      else {
        $table_rows = $total / $table_columns;
        if ($total >= $table_columns && !is_integer($table_rows)) {
          $table_rows = intval($table_rows) + 1;
        }
      }*/
      
$count 0;
    }
  }

  
$categories .= "</table>\n</td>\n</tr>\n</table>\n";
  return 
$categories;
}

function 
get_category_path($cat_id 0$detail_path 0) {
  global 
$site_sess$config$cat_cache$url;
  
$parent_id 1;
  while (
$parent_id) {
    if (!isset(
$cat_cache[$cat_id]['cat_parent_id'])) {
      return 
false;
    }
    
$parent_id $cat_cache[$cat_id]['cat_parent_id'];

    if (empty(
$path)) {
      if (
$detail_path) {
        
$cat_url ROOT_PATH."categories.php?".URL_CAT_ID."=".$cat_id;
        if (
preg_match("/".URL_PAGE."=([0-9]+)/"$url$regs)) {
          if (!empty(
$regs[1]) && $regs[1] != 1) {
            
$cat_url .= "&amp;".URL_PAGE."=".$regs[1];
          }
        }
        
$path "<a href=\"".$site_sess->url($cat_url)."\" class=\"clickstream\">".format_text($cat_cache[$cat_id]['cat_name'], 2)."</a>";
      }
      else  {
        
$path format_text($cat_cache[$cat_id]['cat_name'], 2);
      }
    }
    else {
      
$path "<a href=\"".$site_sess->url(ROOT_PATH."categories.php?".URL_CAT_ID."=".$cat_id)."\" class=\"clickstream\">".format_text($cat_cache[$cat_id]['cat_name'], 2)."</a>".$config['category_separator'].$path;
    }
    
$cat_id $parent_id;
  } 
// end while
  
return $path;
}

function 
get_category_dropdown_bits($cat_id$cid 0$depth 1) {
  global 
$site_db$drop_down_cat_cache$cat_cache;

  if (!isset(
$drop_down_cat_cache[$cid])) {
    return 
"";
  }
  
$category_list "";
  foreach (
$drop_down_cat_cache[$cid] as $key => $category_id) {
    if (
check_permission("auth_viewcat"$category_id)) {
      
$category_list .= "<option value=\"".$category_id."\"";
      if (
$cat_id == $category_id) {
        
$category_list .= " selected=\"selected\"";
      }
      if (
$cat_cache[$category_id]['cat_parent_id'] == 0) {
        
$category_list .= " class=\"dropdownmarker\"";
      }

      if (
$depth 1) {
        
$category_list .= ">".str_repeat("--"$depth 1)." ".format_text($cat_cache[$category_id]['cat_name'], 2)."</option>\n";
      }
      else {
        
$category_list .= ">".format_text($cat_cache[$category_id]['cat_name'], 2)."</option>\n";
      }
      
$category_list .= get_category_dropdown_bits($cat_id$category_id$depth 1);
    }
  }
  unset(
$drop_down_cat_cache[$cid]);
  return 
$category_list;
}

function 
get_category_dropdown($cat_id$jump 0$admin 0$i 0) {
  global 
$lang$drop_down_cat_cache$cat_parent_cache;
  
// $admin = 1  Main Cat (update/add cats)
  // $admin = 2  All Cats (find/validate images...)
  // $admin = 3  Select Cat (update/add image)
  // $admin = 4  No Cat (check new images)

  
switch ($admin) {
  case 
1:
    
$category "\n<select name=\"cat_parent_id\" class=\"categoryselect\">\n";
    
$category .= "<option value=\"0\">".$lang['main_category']."</option>\n";
    
$category .= "<option value=\"0\">--------------</option>\n";
    break;

  case 
2:
    
$category "\n<select name=\"cat_id\" class=\"categoryselect\">\n";
    
$category .= "<option value=\"0\">".$lang['all_categories']."</option>\n";
    
$category .= "<option value=\"0\">-------------------------------</option>\n";
    break;

  case 
3:
    
$i = ($i) ? "_".$i "";
    
$category "\n<select name=\"cat_id".$i."\" class=\"categoryselect\">\n";
    
$category .= "<option value=\"0\">".$lang['select_category']."</option>\n";
    
$category .= "<option value=\"0\">-------------------------------</option>\n";
    break;

  case 
4:
    
$category "\n<select name=\"cat_id\" class=\"categoryselect\">\n";
    
$category .= "<option value=\"0\">".$lang['no_category']."</option>\n";
    
$category .= "<option value=\"0\">-------------------------------</option>\n";
    break;

  case 
0:
  default:
    if (
$jump) {
      
$category "\n<select name=\"".URL_CAT_ID."\" onchange=\"if (this.options[this.selectedIndex].value != 0){ forms['jumpbox'].submit() }\" class=\"categoryselect\">\n";
    }
    else {
      
$category "\n<select name=\"".URL_CAT_ID."\" class=\"categoryselect\">\n";
    }
    
$category .= "<option value=\"0\">".$lang['select_category']."</option>\n";
    
$category .= "<option value=\"0\">-------------------------------</option>\n";
  } 
// end switch

  
$drop_down_cat_cache = array();
  
$drop_down_cat_cache $cat_parent_cache;
  
$category .= get_category_dropdown_bits($cat_id);
  
$category .= "</select>\n";
  return 
$category;
}

function 
show_error_page($error_msg$clickstream "") {
  global 
$site_template$site_sess$lang$config;
  if (empty(
$clickstream)) {
    
$clickstream "<a href=\"".$site_sess->url(ROOT_PATH."index.php")."\">".$lang['home']."</a>".$config['category_separator'].$lang['error'];
  }
  
$site_template->register_vars(array(
    
"error_msg" => $error_msg,
    
"lang_error" => $lang['error'],
    
"clickstream" => $clickstream,
    
"random_image" => ""
  
));
  
$site_template->print_template($site_template->parse_template("error"));
  exit;
}

function 
get_mysql_version() {
  global 
$global_info$site_db;
  if (!empty(
$global_info['mysql_version'])) {
    return 
$global_info['mysql_version'];
  }
  
$split_info = array();
  if (
$row $site_db->query_firstrow("SELECT VERSION() AS version")) {
    
$split_info explode('.'$row['version']);
  }
  else {
    if (
$row $site_db->query_firstrow("SHOW VARIABLES LIKE 'version'")){
      
$split_info explode('.'$row[1]);
    }
  }
  
$first  = (empty($split_info) || empty($split_info[0])) ? intval($split_info[0]);
  
$second = (empty($split_info[1])) ? 21 intval($split_info[1]);
  
$third  = (empty($split_info[2])) ? intval($split_info[2]);
  
$global_info['mysql_version'] = sprintf('%d%02d%02d'$first$second$third);
  return 
$global_info['mysql_version'];
}

function 
get_php_version() {
  global 
$global_info;
  if (!empty(
$global_info['php_version'])) {
    return 
$global_info['php_version'];
  }
  
$split_info = array();
  
preg_match("/([0-9]{1,2})\.([0-9]{1,2})(\.([0-9]{1,2}))?/"phpversion(), $split_info);

  
$global_info['php_version'] = 0;
  if (!empty(
$split_info) && !empty($split_info[1])) {
    
$first  intval($split_info[1]);
    
$second = (empty($split_info[2])) ? intval($split_info[2]);
    
$third  = (empty($split_info[4])) ? intval($split_info[4]);
    
$global_info['php_version'] = sprintf('%d%02d%02d'$first$second$third);
  }
  return 
$global_info['php_version'];
}

function 
get_user_os() {
  global 
$global_info$HTTP_USER_AGENT$HTTP_SERVER_VARS;
  if (!empty(
$global_info['user_os'])) {
    return 
$global_info['user_os'];
  }
  if (!empty(
$HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
    
$HTTP_USER_AGENT $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
  }
  elseif (
getenv("HTTP_USER_AGENT")) {
    
$HTTP_USER_AGENT getenv("HTTP_USER_AGENT");
  }
  elseif (empty(
$HTTP_USER_AGENT)) {
    
$HTTP_USER_AGENT "";
  }
  if (
eregi("Win"$HTTP_USER_AGENT)) {
    
$global_info['user_os'] = "WIN";
  }
  elseif (
eregi("Mac"$HTTP_USER_AGENT)) {
    
$global_info['user_os'] = "MAC";
  }
  else {
    
$global_info['user_os'] = "OTHER";
  }
  return 
$global_info['user_os'];
}

function 
get_browser_info() {
  global 
$global_info$HTTP_USER_AGENT$HTTP_SERVER_VARS;
  if (!empty(
$global_info['browser_agent'])) {
    return 
$global_info['browser_agent'];
  }
  if (!empty(
$HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
    
$HTTP_USER_AGENT $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
  }
  elseif (
getenv("HTTP_USER_AGENT")) {
    
$HTTP_USER_AGENT getenv("HTTP_USER_AGENT");
  }
  elseif (empty(
$HTTP_USER_AGENT)) {
    
$HTTP_USER_AGENT "";
  }
  if (
eregi("MSIE ([0-9].[0-9]{1,2})"$HTTP_USER_AGENT$regs)) {
    
$global_info['browser_agent'] = "MSIE";
    
$global_info['browser_version'] = $regs[1];
  }
  elseif (
eregi("Mozilla/([0-9].[0-9]{1,2})"$HTTP_USER_AGENT$regs)) {
    
$global_info['browser_agent'] = "MOZILLA";
    
$global_info['browser_version'] = $regs[1];
  }
  elseif (
eregi("Opera(/| )([0-9].[0-9]{1,2})"$HTTP_USER_AGENT$regs)) {
    
$global_info['browser_agent'] = "OPERA";
    
$global_info['browser_version'] = $regs[2];
  }
  else {
    
$global_info['browser_agent'] = "OTHER";
    
$global_info['browser_version'] = 0;
  }
  return 
$global_info['browser_agent'];
}

function 
get_document_root() {
  global 
$global_info$DOCUMENT_ROOT$HTTP_SERVER_VARS;
  if (!empty(
$global_info['document_root'])) {
    return 
$global_info['document_root'];
  }
  if (!empty(
$HTTP_SERVER_VARS['DOCUMENT_ROOT'])) {
    
$DOCUMENT_ROOT $HTTP_SERVER_VARS['DOCUMENT_ROOT'];
  }
  elseif (
getenv("DOCUMENT_ROOT")) {
    
$DOCUMENT_ROOT getenv("DOCUMENT_ROOT");
  }
  elseif (empty(
$DOCUMENT_ROOT)) {
    
$DOCUMENT_ROOT "";
  }
  return 
$global_info['document_root'] = $DOCUMENT_ROOT;
}

function 
remote_file_exists($url$check_remote CHECK_REMOTE_FILES) { // similar to file_exists(), checks existence of remote files
  
if (!$check_remote || !CHECK_REMOTE_FILES) {
    return 
true;
  }
  
$url trim($url);
  if (!
preg_match("=://="$url)) $url "http://$url";
  if (!(
$url = @parse_url($url))) {
    return 
false;
  }
  if (!
eregi("http"$url['scheme'])) {
    return 
false;
  }
  
$url['port'] = (!isset($url['port'])) ? 80 $url['port'];
  
$url['path'] = (!isset($url['path'])) ? "/" $url['path'];
  
$fp fsockopen($url['host'], $url['port'], $errno$errstr30);
  if (!
$fp) {
    return 
false;
  }
  else {
    
$head "";
    
$httpRequest "HEAD ".$url['path']." HTTP/1.1\r\n"
                  
."HOST: ".$url['host']."\r\n"
                  
."Connection: close\r\n\r\n";
    
fputs($fp$httpRequest);
    while (!
feof($fp)) {
      
$head .= fgets($fp1024);
    }
    
fclose($fp);

    
preg_match("=^(HTTP/\d+\.\d+) (\d{3}) ([^\r\n]*)="$head$matches);
    if (
$matches[2] == 200) {
      return 
true;
    }
  }
}

if (!
function_exists('is_executable')) {
  function 
is_executable($file) {
    return 
is_file($file);
  }
}

if (!
function_exists('session_regenerate_id')) {
  function 
session_regenerate_id() {
   
$id md5(uniqid(microtime()));
   if (
session_id($id)) {
     return 
true;
   } else {
     return 
false;
   }
  }
}

function 
get_mime_content_type($file) {
    if (
function_exists('mime_content_type')) {
      
$type mime_content_type($file);
      if (
$type) {
        return 
$type;
      }
    }

    
$info = @getimagesize($file);

    if (isset(
$info['mime'])) {
      return 
$info['mime'];
    }

    
$type = @exec(trim('file -bi '.escapeshellarg($file)));

    if (
strpos($type';') !== false) {
      list(
$type) = explode(';'$type);
    }

    if (
$type) {
      return 
$type;
    }

    static 
$types = array(
      
'ai' => 'application/postscript',
     
'aif' => 'audio/x-aiff',
    
'aifc' => 'audio/x-aiff',
    
'aiff' => 'audio/x-aiff',
     
'asc' => 'text/plain',
      
'au' => 'audio/basic',
     
'avi' => 'video/x-msvideo',
   
'bcpio' => 'application/x-bcpio',
     
'bin' => 'application/octet-stream',
       
'c' => 'text/plain',
      
'cc' => 'text/plain',
    
'ccad' => 'application/clariscad',
     
'cdf' => 'application/x-netcdf',
   
'class' => 'application/octet-stream',
    
'cpio' => 'application/x-cpio',
     
'cpt' => 'application/mac-compactpro',
     
'csh' => 'application/x-csh',
     
'css' => 'text/css',
     
'dcr' => 'application/x-director',
     
'dir' => 'application/x-director',
     
'dms' => 'application/octet-stream',
     
'doc' => 'application/msword',
     
'drw' => 'application/drafting',
     
'dvi' => 'application/x-dvi',
     
'dwg' => 'application/acad',
     
'dxf' => 'application/dxf',
     
'dxr' => 'application/x-director',
     
'eps' => 'application/postscript',
     
'etx' => 'text/x-setext',
     
'exe' => 'application/octet-stream',
      
'ez' => 'application/andrew-inset',
       
'f' => 'text/plain',
     
'f90' => 'text/plain',
     
'fli' => 'video/x-fli',
     
'gif' => 'image/gif',
    
'gtar' => 'application/x-gtar',
      
'gz' => 'application/x-gzip',
       
'h' => 'text/plain',
     
'hdf' => 'application/x-hdf',
      
'hh' => 'text/plain',
     
'hqx' => 'application/mac-binhex40',
     
'htm' => 'text/html',
    
'html' => 'text/html',
     
'ice' => 'x-conference/x-cooltalk',
     
'ief' => 'image/ief',
    
'iges' => 'model/iges',
     
'igs' => 'model/iges',
     
'ips' => 'application/x-ipscript',
     
'ipx' => 'application/x-ipix',
     
'jpe' => 'image/jpeg',
    
'jpeg' => 'image/jpeg',
     
'jpg' => 'image/jpeg',
      
'js' => 'application/x-javascript',
     
'kar' => 'audio/midi',
   
'latex' => 'application/x-latex',
     
'lha' => 'application/octet-stream',
     
'lsp' => 'application/x-lisp',
     
'lzh' => 'application/octet-stream',
       
'm' => 'text/plain',
     
'man' => 'application/x-troff-man',
      
'me' => 'application/x-troff-me',
    
'mesh' => 'model/mesh',
     
'mid' => 'audio/midi',
    
'midi' => 'audio/midi',
     
'mif' => 'application/vnd.mif',
    
'mime' => 'www/mime',
     
'mov' => 'video/quicktime',
   
'movie' => 'video/x-sgi-movie',
     
'mp2' => 'audio/mpeg',
     
'mp3' => 'audio/mpeg',
     
'mpe' => 'video/mpeg',
    
'mpeg' => 'video/mpeg',
     
'mpg' => 'video/mpeg',
    
'mpga' => 'audio/mpeg',
      
'ms' => 'application/x-troff-ms',
     
'msh' => 'model/mesh',
      
'nc' => 'application/x-netcdf',
     
'oda' => 'application/oda',
     
'pbm' => 'image/x-portable-bitmap',
     
'pdb' => 'chemical/x-pdb',
     
'pdf' => 'application/pdf',
     
'pgm' => 'image/x-portable-graymap',
     
'pgn' => 'application/x-chess-pgn',
     
'png' => 'image/png',
     
'pnm' => 'image/x-portable-anymap',
     
'pot' => 'application/mspowerpoint',
     
'ppm' => 'image/x-portable-pixmap',
     
'pps' => 'application/mspowerpoint',
     
'ppt' => 'application/mspowerpoint',
     
'ppz' => 'application/mspowerpoint',
     
'pre' => 'application/x-freelance',
     
'prt' => 'application/pro_eng',
      
'ps' => 'application/postscript',
      
'qt' => 'video/quicktime',
      
'ra' => 'audio/x-realaudio',
     
'ram' => 'audio/x-pn-realaudio',
     
'ras' => 'image/cmu-raster',
     
'rgb' => 'image/x-rgb',
      
'rm' => 'audio/x-pn-realaudio',
    
'roff' => 'application/x-troff',
     
'rpm' => 'audio/x-pn-realaudio-plugin',
     
'rtf' => 'text/rtf',
     
'rtx' => 'text/richtext',
     
'scm' => 'application/x-lotusscreencam',
     
'set' => 'application/set',
     
'sgm' => 'text/sgml',
    
'sgml' => 'text/sgml',
      
'sh' => 'application/x-sh',
    
'shar' => 'application/x-shar',
    
'silo' => 'model/mesh',
     
'sit' => 'application/x-stuffit',
     
'skd' => 'application/x-koan',
     
'skm' => 'application/x-koan',
     
'skp' => 'application/x-koan',
     
'skt' => 'application/x-koan',
     
'smi' => 'application/smil',
    
'smil' => 'application/smil',
     
'snd' => 'audio/basic',
     
'sol' => 'application/solids',
     
'spl' => 'application/x-futuresplash',
     
'src' => 'application/x-wais-source',
    
'step' => 'application/STEP',
     
'stl' => 'application/SLA',
     
'stp' => 'application/STEP',
'sv4cpio' => 'application/x-sv4cpio',
  
'sv4crc' => 'application/x-sv4crc',
     
'swf' => 'application/x-shockwave-flash',
       
't' => 'application/x-troff',
     
'tar' => 'application/x-tar',
     
'tcl' => 'application/x-tcl',
     
'tex' => 'application/x-tex',
    
'texi' => 'application/x-texinfo',
  
'texinfo -  application/x-texinfo',
     
'tif' => 'image/tiff',
    
'tiff' => 'image/tiff',
      
'tr' => 'application/x-troff',
     
'tsi' => 'audio/TSP-audio',
     
'tsp' => 'application/dsptype',
     
'tsv' => 'text/tab-separated-values',
     
'txt' => 'text/plain',
     
'unv' => 'application/i-deas',
   
'ustar' => 'application/x-ustar',
     
'vcd' => 'application/x-cdlink',
     
'vda' => 'application/vda',
     
'viv' => 'video/vnd.vivo',
    
'vivo' => 'video/vnd.vivo',
    
'vrml' => 'model/vrml',
     
'wav' => 'audio/x-wav',
     
'wrl' => 'model/vrml',
     
'xbm' => 'image/x-xbitmap',
     
'xlc' => 'application/vnd.ms-excel',
     
'xll' => 'application/vnd.ms-excel',
     
'xlm' => 'application/vnd.ms-excel',
     
'xls' => 'application/vnd.ms-excel',
     
'xlw' => 'application/vnd.ms-excel',
     
'xml' => 'text/xml',
     
'xpm' => 'image/x-xpixmap',

     
'xwd' => 'image/x-xwindowdump',
     
'xyz' => 'chemical/x-pdb',
     
'zip' => 'application/zip',
    );

    
$ext get_file_extension($file);

    if (isset(
$types[$ext])) {
        return 
$types[$ext];
    }

    return 
'application/octet-stream';
}

?>

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #544 on: April 08, 2008, 11:07:39 AM »
Hey, wasn los ?
Der Support hier ist echt schleppend bis garnicht vorhanden!

Läuft das Teil unter 1.7.6? Wenn ja, kann mir jemand ab Step6 helfen? Es ist schwierig für die jenigen die kein Englisch können, das zu entziffern, sofern auch noch Fehler im Thread sind.

Ich bitte doch nur darum das mir da jemand helfen kann!

Oder gibt es eine bessere PM/Pn/IM Version ?

Lasst es mich wissen!

Danke im Voraus!

Offline mawenzi

  • Moderator
  • 4images Guru
  • *****
  • Posts: 4.500
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #545 on: April 08, 2008, 11:59:41 AM »
... wenn du kein Englisch kannst, wen willst du dafür verantwortlich machen ... den Support ...  :wink:
... Step 6 : bedeutet auskommentieren der "function format_text" in der functions.php mittels ... /* und */ ...
... Step 6.2 : wenn du einen "Smiles-Mod" installiert hast, so sollst du das Gleiche (nämlich auskommentiern) mit diesem tun ...
Your first three "must do" before you ask a question ! ( © by V@no )
- please read the Forum Rules ...
- please study the FAQ ...
- please try to Search for your answer ...

You are on search for top 4images MOD's ?
- then please search here ... Mawenzi's Top 100+ MOD List (unsorted sorted) ...

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #546 on: April 08, 2008, 04:44:14 PM »
lol, ich mache keinen Verantwortlich dafür, nur dann fragt man und bekommt keine Antworten!
Danke für die weiteren Antworten!

Meine Frage ist auch, muss ich erst die Version 1 installiert haben?
Un warum fängt die Version 2 erst ab Step 4 an?

Offline mawenzi

  • Moderator
  • 4images Guru
  • *****
  • Posts: 4.500
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #547 on: April 08, 2008, 05:14:49 PM »
1. die Version 2.0 muss unabhängig von der Vorgängerversion installiert werden ...
2. da es sich bei dieser Veröffentlichung nicht um den Original-Thread von V@no handelt, denn der ist bei dem letzten Forum-Hack (schon etwas her) verloren gegangen, sondern um eine Wiederveröffentlichung von MarkGunter, sind in der MOD-Beschreibung einige Formatierungsfehler (aber wie gesagt, nur in der Beschreibung des MODs) ... Wenn du nun genau hinschaust, so beginnt die Beschreibung mit 1) und 2) ... 3) und geht dann weiter mit Step4 ... alles klar ...
3. viel Erfolg bei der Installation ... es lohnt sich ... !
Your first three "must do" before you ask a question ! ( © by V@no )
- please read the Forum Rules ...
- please study the FAQ ...
- please try to Search for your answer ...

You are on search for top 4images MOD's ?
- then please search here ... Mawenzi's Top 100+ MOD List (unsorted sorted) ...

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #548 on: April 08, 2008, 09:33:15 PM »
@mawenzi, du hast eine PN von mir

Wenn ich nun die pm_install.php ausführe, nach dem ich alles angepasst habe *hoffentlich diesesmal richtig*, dann kommt folgender Fehler:


Also muss wieder was falsch sein oder?
Kann mir das keiner anpassen? Ich versuche das mitlerweile seit Wochen, doch hinbekommen tuhe ich es nicht wirklich!

Offline bmack

  • Pre-Newbie
  • Posts: 8
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #549 on: April 17, 2008, 01:55:28 PM »
When I start pm_install.php I got this message:

SHOW TABLES LIKE '4images\_pm'

MOD Private Messaging v2    (by V@no)
 

Sorry, can not continue, you missed some steps of the installation..

what's the problem? And why tutorial starts from step 4? where are previous steps? may be I'm having problems with them? I've folowed instructions, dowloaded the peckege and put files from it as it placed in archieve. Please help!

Offline bmack

  • Pre-Newbie
  • Posts: 8
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #550 on: April 17, 2008, 03:45:44 PM »
ok, I got it. Here are first and second step.

1. Open /includes/constants.php
At the end of the file, just before closing ?> add this:

Code: [Select]
//PMS
define('PM_TABLE', $table_prefix.'pm');
define('PM_RDLT', 0); //Recipient deleted message (message only in: Sender's Setbox)
define('PM_SDLT', 1); //Sender deleted message (message only in: Recipient's Inbox)
define('PM_SENT', 2); //Recipient read message (message in: Sender's Sentbox and Recipient's Inbox)
define('PM_UNREAD', 3); //Recipient not read message (message in: Sender's Outbox and Recipient's Inbox - New Message)

2. Open /lang/<yourlanguage>/main.php
At the end of the file, just before closing ?> add this:

Code: [Select]
//--- PMS ----
$lang['pm_inbox'] = "Inbox";
$lang['pm_outbox'] = "Outbox";
$lang['pm_sentbox'] = "Sentbox";
$lang['pm_link'] = "&nbsp;&nbsp;&nbsp;You have<br />&raquo&nbsp;<b>{msg_new_count}</b> new message(s)<br />&nbsp;&nbsp;&nbsp;in your <b>{inbox}</b>.";
$lang['pm'] = "Private Messaging";
$lang['pm_short'] = "PMS";
$lang['pm_error'] = "Error";
$lang['pm_error_to'] = "You must select a recipient.";
$lang['pm_error_subject'] = "You must enter a subject.";
$lang['pm_error_message'] = "You must enter a message.";
$lang['pm_error_folder'] = "No folder selected.";
$lang['pm_error_id'] = "Nothing to show.";
$lang['pm_error_delete'] = "Nothing to delete.";
$lang['pm_compose'] = "Compose";
$lang['pm_delete'] = "Delete";
$lang['pm_delete_selected'] = "Delete selected";
$lang['pm_delete_all'] = "Delete all";
$lang['pm_delete_success'] = "The messages where deleted successfuly";
$lang['pm_delete_confirm'] = "Are you sure you want to delete that message from <b>".$lang['pms_'.$mode]."</b>?";
$lang['pm_delete_confirm_select'] = "Are you sure you want to delete selected messages from <b>".$lang['pms_'.$mode]."</b>?";
$lang['pm_delete_confirm_all'] = "Are you sure you want to delete ALL messages from <b>".$lang['pms_'.$mode]."</b>?";
$lang['pm_new'] = "New message";
$lang['pm_select_user'] = "Select a user";
$lang['pm_sent_success'] = "The message was send successfully";
$lang['pm_redirect'] = "Please wait a moment";
$lang['pm_empty'] = "No messages in this folder";
$lang['pm_reply'] = "Reply";
$lang['pm_view'] = "View message";
$lang['pm_mark'] = "Mark";
$lang['pm_edit'] = "Edit";
$lang['pm_subject'] = "Subject";
$lang['pm_message'] = "Message";
$lang['pm_to'] = "Recipient";
$lang['pm_date'] = "Date";
$lang['pm_send'] = "Send";
$lang['pm_preview'] = "Preview";
$lang['pm_status'] = "Status";
$lang['pm_from'] = "Sender";
$lang['pm_html'] = "Anable HTML in this message";
$lang['pm_bbcode'] = "Anable BBCode in this message";
$lang['pm_perpage'] = "Messages per page";
$lang['pm_user_pm'] = "PM";
$lang['pm_user_pm_alt'] = "PM to this user";
$lang['pm_total'] = "Total messages";
$lang['pm_received'] = "Received";
$lang['pm_quote'] = "Quote";
$lang['pm_error_save'] = "Error saving message. (the message could has been received)";
$lang['pm_error_notfound'] = "Can't find message.";
$lang['pm_paging_stats'] = "You have {total_cat_images} message(s) {new} on {total_pages} page(s) in your {box}.<br />Displayed: massage {first_page} to {last_page}.";
$lang['pm_email'] = "Notify by email on new Private Message";
$lang['pm_popup'] = "Pop up window on new Private Message";
$lang['pm_popup_confirm'] = "You have a new private message. Click OK to view it, or cancel to hide this prompt.";
$lang['pm_popup_newwindow'] = "Open in new window?\\n\\n(Press cancel to open your Inbox in the current window.)";
$lang['pm_email_new'] = "New private message";

run install_pm.php again and everything should be fine!

Offline bmack

  • Pre-Newbie
  • Posts: 8
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #551 on: April 17, 2008, 05:16:24 PM »
After install start to get this problem

Code: [Select]
DB Error: Bad SQL Query: SELECT COUNT(pm_id) AS total FROM 4images_pm WHERE pm_to = 6430 AND (pm_type = 2 OR pm_type = 1 OR pm_type = 3 OR pm_type = PM_USDLT)
Unknown column 'PM_USDLT' in 'where clause'

DB Error: Bad SQL Query: SELECT COUNT(pm_id) AS total FROM 4images_pm WHERE pm_from = 6430 AND (pm_type = 3 OR pm_type = PM_USDLT)
Unknown column 'PM_USDLT' in 'where clause'

DB Error: Bad SQL Query: SELECT COUNT(pm_id) AS new FROM 4images_pm WHERE pm_to = 6430 AND (pm_type = 3 OR pm_type = PM_USDLT) ORDER BY pm_date DESC
Unknown column 'PM_USDLT' in 'where clause'

DB Error: Bad SQL Query: SELECT pm_date FROM 4images_pm WHERE pm_to = 6430 AND (pm_type = 3 OR pm_type = PM_USDLT) ORDER BY pm_date DESC
Unknown column 'PM_USDLT' in 'where clause'

how to solve it? please help!!!
можно и на русском )

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #552 on: April 18, 2008, 02:36:52 AM »
This Problem... me2

4images 1.7.6 !! help!

Offline bmack

  • Pre-Newbie
  • Posts: 8
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #553 on: April 18, 2008, 01:35:16 PM »
you need to put additional fields in your SQL, everything working fine!  :P

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
Re: [MOD] PMv2 Tutorial Republished here
« Reply #554 on: April 18, 2008, 08:49:35 PM »
And this?

Code: [Select]
DB Error: Bad SQL Query: SELECT COUNT(pm_id) AS total FROM 4images_pm WHERE pm_to = 6430 AND (pm_type = 2 OR pm_type = 1 OR pm_type = 3 OR pm_type = PM_USDLT)
Unknown column 'PM_USDLT' in 'where clause'

DB Error: Bad SQL Query: SELECT COUNT(pm_id) AS total FROM 4images_pm WHERE pm_from = 6430 AND (pm_type = 3 OR pm_type = PM_USDLT)
Unknown column 'PM_USDLT' in 'where clause'

DB Error: Bad SQL Query: SELECT COUNT(pm_id) AS new FROM 4images_pm WHERE pm_to = 6430 AND (pm_type = 3 OR pm_type = PM_USDLT) ORDER BY pm_date DESC
Unknown column 'PM_USDLT' in 'where clause'

DB Error: Bad SQL Query: SELECT pm_date FROM 4images_pm WHERE pm_to = 6430 AND (pm_type = 3 OR pm_type = PM_USDLT) ORDER BY pm_date DESC
Unknown column 'PM_USDLT' in 'where clause'

By New Message:

Code: [Select]
Warning: Invalid argument supplied for foreach() in /var/www/html/web937/html/cbvote/pm.php on line 414

Template Error: Couldn't open Template ./templates/default/BBCODE.html

Dont wok with 1.7.6!?