Signature

MODs (& more) applied to 4images image gallery.<br>
.:: Preferred language(s): all<br>
.:: Permissions: Registered
Post Reply
User avatar
geohei
Site Admin
Posts: 3388
Joined: Tuesday, 19.11.2002 07:56
Location: Luxembourg
Contact:

Signature

Post by geohei »

Date of modification:
18.11.2005

Link:
http://www.4homepages.de/forum/index.php?topic=6755.0

Added files:
./signature/signature.php
./signature/.htaccess
./signature/jpeg.gif (read this article)
./signature/signatures/signature.png (signature background)

./signature/signature.php

Code: Select all

<?php
################################
#  signature.php version 2.21  #
# - - - - - - - - - - - - - - -#
#    Copyright © V@no 2004     #
################################
#                              #
#        TERMS OF USE          #
#                              #
#   NO PORNOGRAPHY OR ANY      #
#   OTHER PICTURES THAT COULD  #
#   BE TREATED AS OFFENSIVE    #
#   MAY BE SHOWED ON 4IMAGES   #
#   FORUM OR ANYWHERE ELSE     #
#   WHERE ITS NOT ACCEPTIBLE.  #
#                              #
#    PLEASE RESPECT OTHERS!    #
#                              #
################################

// ------- Config -----------
$random_image = 1; //show random image
$random_fast = 1; //if your mysql account doesn't have permission to create/delete temporary tables, set this to 0
$debug = 0; //turning this on, will ignore expiration time, meaning every request will create a new image. change this to 0 before u publish your signature!
$expire = 20; //seconds before image will be expired and recompilled with new random image and information (lower this will encrease server load!)
$type = "png"; //image type: png or jpeg
$quality = "50"; //image quality when used jpeg
define('ROOT_PATH', './'); //path to your 4images root dir with trailing slash! must be ralative ( ./ or ../ or combination of these) and NOT full internet or local (http://example/4images/ or /www/blah/4images/)
$signature_template_dir = "./signatures/"; //directory with signature template images WITH TRAILING SLASH!!!
$signature_template = "signature.png"; //default signature template image filename
$signature_template_random = 1; //use random template image? (0 = no | 1 = yes)
$path = "/tmp/"; // WRITEBLE dir (chmod 777), where compilled image will be stored (does not requere access from web)
$tmpfname = $path."signature.tmp"; // filename for the compilled image (extension does not metter)
$tmptname = $path."signature.id"; // filename for the file where some extra info will be stored in (image id)
$template = "default"; //name of the template which icons will be used, if thumbnail not found
$sitename = "Statistics for my site"; //signature header
$fonts_dir = ""; //directory with custom fonts WITH TRAILING SLASH! (leave blank if no fonts)
$fonts = array(); // an array with font names the first number is the number that u can use in $fsize variable, it must be sequenced! and first item must have number 6 or larger!
/*
//an example array:
$fonts = array(
               6  => "micross8px.gdf",
               7  => "micross9px.gdf",
               8  => "micross10px.gdf",
               9  => "micross12px.gdf"
);
*/
$fsize = 2; //font type (1 to 5 for build-in fonts and 6 to XX for your custom fonts (see $font array above)
$offset = 7; //offset from the left, right and bottom, uses for random image and the text (not used if random image disabled)
$offset2 = 99; //extra offset from the left (place where random image will be embeded if its enabled. Not used if random image disabled)
$spacing = 11; //height of each line of text
$start = 21; //offset from top (space where header shows)
$tiny = 9; //an extra space at the begining of each line (needed for offset from the random image space)
$not_in_cat = "0"; //list of categories which should not be included for random image, separated by coma (i.e. "1,2,3,7") "0" - means disabled
$auth = 0; //permission level for auth_viewimage (0 = All, 2 = Members, 3 = Private or 9 = Admin) Refer in /includes/constants.php
$peruser = 1; //alow per user random image (images uploaded by XX user. Usage: signature.php?user=XX)
$noimage = "jpeg.gif"; //icon name if no random image was found
$new_cutoff = 7; //Days when images treated as new
$lang_images = "Images: ";
$lang_users = "Members: ";
$lang_cat = "Categories: ";
$lang_new_user = "Newest member: ";
$lang_online = "Online: ";
$lang_comments = "Comments: ";
// --------- End Config ----------

$peruser = ($peruser && isset($_GET['user']) && intval($_GET['user'])) ? intval($_GET['user']) : "";
$tmpfname .= $peruser;
$tmptname .= $peruser;
if (isset($_GET['go']) && $_GET['go'])
{
  if ($handle = @fopen($tmptname, "rb"))
  {
    while (!feof($handle))
    {
      $buffer = fgets($handle, 4096);
      $imgid = intval($buffer);
    }
    fclose($handle);
  }
  $nozip = 1;
  define('GET_CACHES', 1);
  include(ROOT_PATH.'global.php');
  require(ROOT_PATH.'includes/sessions.php');
  $user_access = get_permission();
  $url = $site_sess->url(ROOT_PATH."index.php", "&");
  if ($imgid && $random_image)
  {
    $sql = "SELECT cat_id
            FROM ".IMAGES_TABLE."
            WHERE image_id = $imgid";
    if ($row = $site_db->query_firstrow($sql))
    {
      if (check_permission("auth_viewcat", $row['cat_id']) || check_permission("auth_viewimage", $row['cat_id']))
      {
        $url = (check_permission("auth_viewimage", $row['cat_id']) && check_permission("auth_viewcat", $row['cat_id'])) ? $site_sess->url(ROOT_PATH."details.php?image_id=".$imgid) : ((check_permission("auth_viewcat", $row['cat_id'])) ? $site_sess->url(ROOT_PATH."categories.php?cat_id=".$row['cat_id']) : $url);
      }
    }
  }
  header("Location: ".$url);
  exit;
}
$imageid = 0;
$time = @filemtime($tmpfname);
if ($handle = @fopen($tmptname, "r"))
{
  if (!feof($handle))
  {
    $buffer = fgets($handle, 4096);
    $imageid = intval($buffer);
  }
  fclose($handle);
}
$current_time = time();
if (!$time || (($current_time - $time) > $expire || ($current_time - $time) < 0) || $debug)
{
  $show = array();
  include(ROOT_PATH.'config.php');
  include(ROOT_PATH.'includes/constants.php');
  include(ROOT_PATH.'includes/db_mysql.php');
  define('MEDIA_PATH', ROOT_PATH.MEDIA_DIR);
  define('THUMB_PATH', ROOT_PATH.THUMB_DIR);
  define('MEDIA_TEMP_PATH', ROOT_PATH.MEDIA_TEMP_DIR);
  define('THUMB_TEMP_PATH', ROOT_PATH.THUMB_TEMP_DIR);
  define('TEMPLATE_PATH', ROOT_PATH.TEMPLATE_DIR."/".$template);
  define('ICON_PATH', ROOT_PATH.TEMPLATE_DIR."/".$template."/icons");
  include(ROOT_PATH.'includes/functions.php');
  $site_db = new Db($db_host, $db_user, $db_password, $db_name);

// --- Random image -----
  if ($random_image)
  {
    if ($random_fast)
    {
      mt_srand((double)microtime() * intval(session_id()));
      $temptab = "tab_".mt_rand(0,1000000);
      $sql = "CREATE TEMPORARY TABLE ".$temptab." TYPE  =  HEAP
              SELECT i.image_id, i.cat_id
              FROM ".IMAGES_TABLE." i
              LEFT JOIN ".CATEGORIES_TABLE." c ON c.cat_id = i.cat_id
              WHERE i.image_active = 1 AND c.auth_viewcat = $auth AND i.cat_id NOT IN ($not_in_cat)".(($peruser) ? " AND i.user_id = ".$peruser : "").(($imageid) ? " AND i.image_id <> ".$imageid : "")."
              ORDER  BY RAND()
              LIMIT 1";
      $result = $site_db->query($sql);
      $sql = "SELECT t.image_id, t.cat_id, i.user_id, i.image_name, i.image_media_file, i.image_thumb_file
              FROM ".$temptab." AS t
              LEFT JOIN ".IMAGES_TABLE." AS i ON i.image_id=t.image_id";
      $imagedata = $site_db->query_firstrow($sql);
      $sql = "DROP TABLE ".$temptab;
      $result = $site_db->query($sql);
    }
    else
    {
      $sql = "SELECT i.image_id, i.cat_id, i.user_id, i.image_name, i.image_media_file, i.image_thumb_file
              FROM ".IMAGES_TABLE." i
              LEFT JOIN ".CATEGORIES_TABLE." c ON c.cat_id = i.cat_id
              WHERE i.image_active = 1 AND c.auth_viewcat = $auth AND i.cat_id NOT IN ($not_in_cat)".(($peruser) ? " AND i.user_id = ".$peruser : "").(($imageid) ? " AND i.image_id <> ".$imageid : "")."
              ORDER  BY RAND()
              LIMIT 1";
      $imagedata = $site_db->query_firstrow($sql);
    }
    $thumb = (empty($imagedata)) ? ICON_PATH."/".$noimage : get_file_path($imagedata['image_media_file'], "thumb", $imagedata['cat_id']);
  }
  else
  {
    $offset = $offset2 = 0; //no need any offset if random image disabled
  }
// --- Total users -----
  $sql = "SELECT COUNT(*) AS total_users
          FROM ".USERS_TABLE."
          WHERE user_level > ".USER_AWAITING;
  $row = $site_db->query_firstrow($sql);
  $show['total_users'] = $row['total_users'];

// --- Total not activated users -----
  $sql = "SELECT COUNT(*) AS total_users
          FROM ".USERS_TABLE."
          WHERE user_level = ".USER_AWAITING;
  $row = $site_db->query_firstrow($sql);
  $show['total_users_awaiting'] = $row['total_users'];

// --- Lattest username -----
  $sql = "SELECT user_name
          FROM ".USERS_TABLE."
          WHERE user_level > ".USER_AWAITING."
          ORDER BY user_id DESC";
  $row = $site_db->query_firstrow($sql);
  $show['new_user'] = stripslashes($row['user_name']);

// --- Total images -----
  $sql = "SELECT COUNT(*) AS total_images
          FROM ".IMAGES_TABLE."
          WHERE image_active = 1";
  $row = $site_db->query_firstrow($sql);
  $show['total_images'] = $row['total_images'];

// --- Total new images -----
  $new_cutoff = time() - 60 * 60 * 24 * $new_cutoff;
  $sql = "SELECT COUNT(*) AS total_new_images
          FROM ".IMAGES_TABLE."
          WHERE image_active = 1 AND image_date > ".$new_cutoff;
  $row = $site_db->query_firstrow($sql);
  $show['total_new_images'] = $row['total_new_images'];

// --- Total categories -----
  $sql = "SELECT COUNT(*) AS total_categories
          FROM ".CATEGORIES_TABLE;
  $row = $site_db->query_firstrow($sql);
  $show['total_categories'] = $row['total_categories'];

// --- Total comments -----
  $sql = "SELECT SUM(image_comments) AS sum
          FROM ".IMAGES_TABLE;
  $row = $site_db->query_firstrow($sql);
  $show['comments'] = $row['sum'];

// --- Online users -----
  $time_out = time() - 300;
  $sql = "SELECT session_user_id, session_ip
          FROM ".SESSIONS_TABLE."
          WHERE session_lastaction >= $time_out";
  $result = $site_db->query($sql);
  $show['guests_online'] = $show['reg_online'] = 0;
  while ($row = $site_db->fetch_array($result))
  {
    if ($row['session_user_id'] != GUEST)
    {
      if (!isset($prev_user_ids[$row['session_user_id']]))
      {
        $show['reg_online']++;
      }
      $prev_user_ids[$row['session_user_id']] = 1;
    }
    else
    {
      if (!isset($prev_session_ips[$row['session_ip']]))
      {
        $show['guests_online']++;
      }
    }
    $prev_session_ips[$row['session_ip']] = 1;
  }
//-----------------------

  if (!empty($fonts_dir) && count($fonts))
  {
    foreach ($fonts as $key => $val)
    {
      imageloadfont($fonts_dir.$val);
    }
  }
  $total_online = $show['reg_online'] + $show['guests_online'];
  $online = " (".$show['reg_online']." member".(($show['reg_online'] > 1 || !$show['reg_online'])? "s" : "")." and ".$show['guests_online']." guest".(($show['guests_online'] > 1 || !$show['guests_online'])? "s" : "").")";
  $far = $offset2+$tiny+(strlen($lang_new_user))*($fsize+4);
  //array with data:
  //[0] - font type
  //[1] - offset
  //[2] - text
  //[3] - color (i.e. "text_color" will use $text_color variable)
  $stats = array(
                  array(array($fsize, $offset2+$tiny, $lang_images, "text_color"), array($fsize, $far, $show['total_images']." (".$show['total_new_images']." new)", "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_cat, "text_color"), array($fsize, $far, $show['total_categories'], "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_comments, "text_color"), array($fsize, $far, $show['comments'], "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_users, "text_color"), array($fsize, $far, $show['total_users'], "text_color"), array($fsize, $far+strlen($show['total_users'])*($fsize+4), " and ".$show['total_users_awaiting']." not activated", "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_online, "text_color"), array($fsize, $far, $total_online, "red"), array($fsize, $far+strlen($total_online)*($fsize+4), $online, "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_new_user, "text_color"), array($fsize, $far, $show['new_user'], "text_color"))
  );
  if ($signature_template_random)
  {
    if ($dir = @opendir($signature_template_dir))
    {
      $list = array();
      while ($file = @readdir($dir))
      {
        if (!is_dir($signature_template_dir.$file) && is_file($signature_template_dir.$file) && strtolower(substr(strrchr($file,"."), 1)) == "png")
        {
          $list[] = $file;
        }
      }
      @closedir($dir);
      $signature_template = $list[array_rand($list)];
    }
  }
  $im = ImageCreateFromPNG($signature_template_dir.$signature_template);
  $width = imagesx($im);
  $height = imagesy($im);
  $text_color = ImageColorAllocate ($im, 0, 0, 0);
  $red = ImageColorAllocate ($im, 255, 0, 0);
//  ImageString($im, 3, $offset2+(($width-$offset2)/2)-(strlen($sitename)*7/2), 4, $sitename, $text_color);
  ImageString($im, 3, $offset2+$tiny, 4, $sitename, $text_color);
  $i = $start;
  foreach ($stats as $key)
  {
    if ($key[0][2] == $lang_online && !$total_online)
    {
      continue;
    }
    foreach ($key as $val)
    {
      ImageString($im, $val[0], $val[1], $i, $val[2], $$val[3]);
    }
    $i = $i + $spacing;
  }
  if ($random_image)
  {
    $image_info = getimagesize($thumb);
    $types = array(1 => "gif", 2 => "jpeg", 3 => "png");
    $th = "imagecreatefrom".$types[$image_info[2]];
    $width_start = $image_info[0];
    $height_start = $image_info[1];
    $dimension = $offset2-$offset*2;
    if ($height - $image_info[1] < $offset && $height - $offset2 < $offset)
    {
      $dimension = $height - $offset*2;
    }
    $width_end = $dimension;
    $height_end = $dimension;
    if (($width_start > $width_end || $height_start > $height_end) && $width_start && $height_start && $width_end && $height_end)
    {
       $ratio = $width_start / $height_start;
      if ($ratio > 1)
      {
        $width_end = $dimension;
        $height_end = round(($dimension/$width_start) * $height_start);
      }
      else
      {
        $width_end = round(($dimension/$height_start) * $width_start);
        $height_end = $dimension;
       }
    }
    elseif ($width_start || $height_start)
    {
       $width_end = $width_start;
       $height_end = $height_start;
    }
    $temp = imagecreateTrueColor($width_end, $height_end);
    if ($image = $th($thumb))
    {
      imagecopyresampled($temp, $image, 0, 0, 0, 0, $width_end, $height_end, ImageSX($image), ImageSY($image));
    }
    $posx = round(($offset2-$width_end)/2);
    $posy = round(($height-$height_end)/2);
    imagecopymerge($im,$temp, $posx, $posy, 0, 0, $width_end, $height_end, 100);
    ImageRectangle($im, $posx-1, $posy-1, $posx+$width_end-1, $posy+$height_end-1, $text_color);
  }
  $function = "Image".$type;
  $function($im,$tmpfname,$quality);
  ImageDestroy($im);
  $handle = @fopen($tmptname, "wb");
  $contents = @fwrite($handle, (($random_image) ? $imagedata['image_id'] : 0));
  @fclose($hande);
} //end compilling new image
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header("Content-disposition: filename=signature".MD5(time()).".".$type);
header("Content-Type: image/".$type);
readfile($tmpfname);
?>
./signature/signature.php

Code: Select all

RewriteEngine On
#RewriteBase /
RewriteRule ^signature\.png$ signature.php?%{QUERY_STRING}
RewriteRule ^go$ signature.php?go=1&%{QUERY_STRING}
Add this in profile settings of forum:

Code: Select all

[url=http://www.mysite.com/signature/go][img]http://www.mysite.com/signature/signature.png[/img][/url]
Image
User avatar
jc
Posts even during sleep
Posts: 515
Joined: Friday, 28.05.2004 18:37

Post by jc »

Gudd Idee :idea: , gefällt mer ganz gudd :!:
User avatar
geohei
Site Admin
Posts: 3388
Joined: Tuesday, 19.11.2002 07:56
Location: Luxembourg
Contact:

Post by geohei »

The code above only works with PHP 4.4.2. Upgrading the sever to PHP 5.1.2 make the code fail (no picture).
http://www.4homepages.de/forum/index.php?topic=15811.0
Last edited by geohei on Sunday, 24.06.2007 14:09, edited 1 time in total.
Image
User avatar
geohei
Site Admin
Posts: 3388
Joined: Tuesday, 19.11.2002 07:56
Location: Luxembourg
Contact:

Post by geohei »

The following code is modified in order to match PHP 5 requirements. On top of it, the $not_in_cat variable is not used anymore. Instead, the $in_cat variable in introduced. Some typos corrected as well.

Code: Select all

<?php
################################
#  signature.php version 2.21  #
# - - - - - - - - - - - - - - -#
#    Copyright © V@no 2004     #
#                              #
#    modified by geohei        #
#    to make it PHP 5          #
#    compatible. Added         #
#    $in_cat varable           #
#    15.06.2006                #
#                              #
################################
#                              #
#        TERMS OF USE          #
#                              #
#   NO PORNOGRAPHY OR ANY      #
#   OTHER PICTURES THAT COULD  #
#   BE TREATED AS OFFENSIVE    #
#   MAY BE SHOWED ON 4IMAGES   #
#   FORUM OR ANYWHERE ELSE     #
#   WHERE ITS NOT ACCEPTIBLE.  #
#                              #
#   PLEASE RESPECT OTHERS!     #
#                              #
################################

// ------- Config -----------
$random_image = 1; //show random image
$random_fast = 1; //if your mysql account doesn't have permission to create/delete temporary tables, set this to 0
$debug = 0; //turning this on, will ignore expiration time, meaning every request will create a new image. change this to 0 before u publish your signature!
$expire = 20; //seconds before image will be expired and recompilled with new random image and information (lower this will encrease server load!)
$type = "jpeg"; //image type: gif, jpeg or png
$quality = "100"; //image quality when used jpeg
define('ROOT_PATH', './'); //path to your 4images root dir with trailing slash! must be ralative ( ./ or ../ or combination of these) and NOT full internet or local (http://example/4images/ or /www/blah/4images/)
$signature_template_dir = "./signatures/"; //directory with signature template images WITH TRAILING SLASH!!!
$signature_template = "signature.png"; //default signature template image filename
$signature_template_random = 1; //use random template image? (0 = no | 1 = yes)
$path = "/tmp/"; // WRITEBLE dir (chmod 777), where compilled image will be stored (does not require access from web)
$tmpfname = $path."signature.tmp"; // filename for the compilled image (extension does not metter)
$tmptname = $path."signature.id"; // filename for the file where some extra info will be stored in (image id)
$template = "default"; //name of the template which icons will be used, if thumbnail not found
$sitename = "Statistics for my site"; //signature header
$fonts_dir = ""; //directory with custom fonts WITH TRAILING SLASH! (leave blank if no fonts)
$fonts = array(); // an array with font names the first number is the number that u can use in $fsize variable, it must be sequenced! and first item must have number 6 or larger!
/*
//an example array:
$fonts = array(
               6  => "micross8px.gdf",
               7  => "micross9px.gdf",
               8  => "micross10px.gdf",
               9  => "micross12px.gdf"
);
*/
$fsize = 2; //font type (1 to 5 for build-in fonts and 6 to XX for your custom fonts (see $font array above)
$offset = 7; //offset from the left, right and bottom, uses for random image and the text (not used if random image disabled)
$offset2 = 99; //extra offset from the left (place where random image will be embeded if its enabled. Not used if random image disabled)
$spacing = 11; //height of each line of text
$start = 21; //offset from top (space where header shows)
$tiny = 9; //an extra space at the begining of each line (needed for offset from the random image space)
$in_cat = "1,2,3,4,5,6,7,8,9,10,11"; //list of categories which should be included for random image, separated by comma (i.e. "1,2,3,7") "0" - means disabled
$not_in_cat = "0"; //list of categories which should not be included for random image, separated by comma (i.e. "1,2,3,7") "0" - means disabled
$auth = 0; //permission level for auth_viewimage (0 = All, 2 = Members, 3 = Private or 9 = Admin) Refer in /includes/constants.php
$peruser = 1; //allow per user random image (images uploaded by XX user. Usage: signature.php?user=XX)
$noimage = "jpeg.gif"; //icon name if no random image was found
$new_cutoff = 7; //days when images treated as new
$lang_images = "Images: ";
$lang_users = "Members: ";
$lang_cat = "Categories: ";
$lang_new_user = "Newest member: ";
$lang_online = "Online: ";
$lang_comments = "Comments: ";
// --------- End Config ----------

$peruser = ($peruser && isset($_GET['user']) && intval($_GET['user'])) ? intval($_GET['user']) : "";
$tmpfname .= $peruser;
$tmptname .= $peruser;
if (isset($_GET['go']) && $_GET['go'])
{
  if ($handle = @fopen($tmptname, "rb"))
  {
    while (!feof($handle))
    {
      $buffer = fgets($handle, 4096);
      $imgid = intval($buffer);
    }
    fclose($handle);
  }
  $nozip = 1;
  define('GET_CACHES', 1);
  include(ROOT_PATH.'global.php');
  require(ROOT_PATH.'includes/sessions.php');
  $user_access = get_permission();
  $url = $site_sess->url(ROOT_PATH."index.php", "&");
  if ($imgid && $random_image)
  {
    $sql = "SELECT cat_id
            FROM ".IMAGES_TABLE."
            WHERE image_id = $imgid";
    if ($row = $site_db->query_firstrow($sql))
    {
      if (check_permission("auth_viewcat", $row['cat_id']) || check_permission("auth_viewimage", $row['cat_id']))
      {
        $url = (check_permission("auth_viewimage", $row['cat_id']) && check_permission("auth_viewcat", $row['cat_id'])) ? $site_sess->url(ROOT_PATH."details.php?image_id=".$imgid) : ((check_permission("auth_viewcat", $row['cat_id'])) ? $site_sess->url(ROOT_PATH."categories.php?cat_id=".$row['cat_id']) : $url);
      }
    }
  }
  header("Location: ".$url);
  exit;
}
$imageid = 0;
$time = @filemtime($tmpfname);
if ($handle = @fopen($tmptname, "r"))
{
  if (!feof($handle))
  {
    $buffer = fgets($handle, 4096);
    $imageid = intval($buffer);
  }
  fclose($handle);
}
$current_time = time();
if (!$time || (($current_time - $time) > $expire || ($current_time - $time) <0>query($sql);
      $sql = "SELECT t.image_id, t.cat_id, i.user_id, i.image_name, i.image_media_file, i.image_thumb_file
              FROM (".$temptab." AS t)
              LEFT JOIN ".IMAGES_TABLE." AS i ON i.image_id=t.image_id";
      $imagedata = $site_db->query_firstrow($sql);
      $sql = "DROP TABLE ".$temptab;
      $result = $site_db->query($sql);
    }
    else
    {
      $sql = "SELECT i.image_id, i.cat_id, i.user_id, i.image_name, i.image_media_file, i.image_thumb_file
              FROM (".IMAGES_TABLE." i)
              LEFT JOIN ".CATEGORIES_TABLE." c ON c.cat_id = i.cat_id
              WHERE i.image_active = 1 AND c.auth_viewcat = $auth AND i.cat_id IN ($in_cat)".(($peruser) ? " AND i.user_id = ".$peruser : "").(($imageid) ? " AND i.image_id <imageid>query_firstrow($sql);
    }
    $thumb = (empty($imagedata)) ? ICON_PATH."/".$noimage : get_file_path($imagedata['image_media_file'], "thumb", $imagedata['cat_id']);
  }
  else
  {
    $offset = $offset2 = 0; //no need any offset if random image disabled
  }
// --- Total users -----
  $sql = "SELECT COUNT(*) AS total_users
          FROM ".USERS_TABLE."
          WHERE user_level > ".USER_AWAITING;
  $row = $site_db->query_firstrow($sql);
  $show['total_users'] = $row['total_users'];

// --- Total not activated users -----
  $sql = "SELECT COUNT(*) AS total_users
          FROM ".USERS_TABLE."
          WHERE user_level = ".USER_AWAITING;
  $row = $site_db->query_firstrow($sql);
  $show['total_users_awaiting'] = $row['total_users'];

// --- Lattest username -----
  $sql = "SELECT user_name
          FROM ".USERS_TABLE."
          WHERE user_level > ".USER_AWAITING."
          ORDER BY user_id DESC";
  $row = $site_db->query_firstrow($sql);
  $show['new_user'] = stripslashes($row['user_name']);

// --- Total images -----
  $sql = "SELECT COUNT(*) AS total_images
          FROM ".IMAGES_TABLE."
          WHERE image_active = 1";
  $row = $site_db->query_firstrow($sql);
  $show['total_images'] = $row['total_images'];

// --- Total new images -----
  $new_cutoff = time() - 60 * 60 * 24 * $new_cutoff;
  $sql = "SELECT COUNT(*) AS total_new_images
          FROM ".IMAGES_TABLE."
          WHERE image_active = 1 AND image_date > ".$new_cutoff;
  $row = $site_db->query_firstrow($sql);
  $show['total_new_images'] = $row['total_new_images'];

// --- Total categories -----
  $sql = "SELECT COUNT(*) AS total_categories
          FROM ".CATEGORIES_TABLE;
  $row = $site_db->query_firstrow($sql);
  $show['total_categories'] = $row['total_categories'];

// --- Total comments -----
  $sql = "SELECT SUM(image_comments) AS sum
          FROM ".IMAGES_TABLE;
  $row = $site_db->query_firstrow($sql);
  $show['comments'] = $row['sum'];

// --- Online users -----
  $time_out = time() - 300;
  $sql = "SELECT session_user_id, session_ip
          FROM ".SESSIONS_TABLE."
          WHERE session_lastaction >= $time_out";
  $result = $site_db->query($sql);
  $show['guests_online'] = $show['reg_online'] = 0;
  while ($row = $site_db->fetch_array($result))
  {
    if ($row['session_user_id'] != GUEST)
    {
      if (!isset($prev_user_ids[$row['session_user_id']]))
      {
        $show['reg_online']++;
      }
      $prev_user_ids[$row['session_user_id']] = 1;
    }
    else
    {
      if (!isset($prev_session_ips[$row['session_ip']]))
      {
        $show['guests_online']++;
      }
    }
    $prev_session_ips[$row['session_ip']] = 1;
  }
//-----------------------

  if (!empty($fonts_dir) && count($fonts))
  {
    foreach ($fonts as $key => $val)
    {
      imageloadfont($fonts_dir.$val);
    }
  }
  $total_online = $show['reg_online'] + $show['guests_online'];
  $online = " (".$show['reg_online']." member".(($show['reg_online'] > 1 || !$show['reg_online'])? "s" : "")." and ".$show['guests_online']." guest".(($show['guests_online'] > 1 || !$show['guests_online'])? "s" : "").")";
  $far = $offset2+$tiny+(strlen($lang_new_user))*($fsize+4);
  //array with data:
  //[0] - font type
  //[1] - offset
  //[2] - text
  //[3] - color (i.e. "text_color" will use $text_color variable)
  $stats = array(
                  array(array($fsize, $offset2+$tiny, $lang_images, "text_color"), array($fsize, $far, $show['total_images']." (".$show['total_new_images']." new)", "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_cat, "text_color"), array($fsize, $far, $show['total_categories'], "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_comments, "text_color"), array($fsize, $far, $show['comments'], "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_users, "text_color"), array($fsize, $far, $show['total_users'], "text_color"), array($fsize, $far+strlen($show['total_users'])*($fsize+4), " and ".$show['total_users_awaiting']." not activated", "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_online, "text_color"), array($fsize, $far, $total_online, "red"), array($fsize, $far+strlen($total_online)*($fsize+4), $online, "text_color")),
                  array(array($fsize, $offset2+$tiny, $lang_new_user, "text_color"), array($fsize, $far, $show['new_user'], "text_color"))
  );
  if ($signature_template_random)
  {
    if ($dir = @opendir($signature_template_dir))
    {
      $list = array();
      while ($file = @readdir($dir))
      {
        if (!is_dir($signature_template_dir.$file) && is_file($signature_template_dir.$file) && strtolower(substr(strrchr($file,"."), 1)) == "png")
        {
          $list[] = $file;
        }
      }
      @closedir($dir);
      $signature_template = $list[array_rand($list)];
    }
  }
  $im = ImageCreateFromPNG($signature_template_dir.$signature_template);
  $width = imagesx($im);
  $height = imagesy($im);
  $text_color = ImageColorAllocate ($im, 0, 0, 0);
  $red = ImageColorAllocate ($im, 255, 0, 0);
//  ImageString($im, 3, $offset2+(($width-$offset2)/2)-(strlen($sitename)*7/2), 4, $sitename, $text_color);
  ImageString($im, 3, $offset2+$tiny, 4, $sitename, $text_color);
  $i = $start;
  foreach ($stats as $key)
  {
    if ($key[0][2] == $lang_online && !$total_online)
    {
      continue;
    }
    foreach ($key as $val)
    {
      ImageString($im, $val[0], $val[1], $i, $val[2], $$val[3]);
    }
    $i = $i + $spacing;
  }
  if ($random_image)
  {
    $image_info = getimagesize($thumb);
    $types = array(1 => "gif", 2 => "jpeg", 3 => "png");
    $th = "imagecreatefrom".$types[$image_info[2]];
    $width_start = $image_info[0];
    $height_start = $image_info[1];
    $dimension = $offset2-$offset*2;
    if ($height - $image_info[1] < $offset && $height - $offset2 <offset> $width_end || $height_start > $height_end) && $width_start && $height_start && $width_end && $height_end)
    {
       $ratio = $width_start / $height_start;
      if ($ratio > 1)
      {
        $width_end = $dimension;
        $height_end = round(($dimension/$width_start) * $height_start);
      }
      else
      {
        $width_end = round(($dimension/$height_start) * $width_start);
        $height_end = $dimension;
       }
    }
    elseif ($width_start || $height_start)
    {
       $width_end = $width_start;
       $height_end = $height_start;
    }
    $temp = imagecreateTrueColor($width_end, $height_end);
    if ($image = $th($thumb))
    {
      imagecopyresampled($temp, $image, 0, 0, 0, 0, $width_end, $height_end, ImageSX($image), ImageSY($image));
    }
    $posx = round(($offset2-$width_end)/2);
    $posy = round(($height-$height_end)/2);
    imagecopymerge($im,$temp, $posx, $posy, 0, 0, $width_end, $height_end, 100);
    ImageRectangle($im, $posx-1, $posy-1, $posx+$width_end-1, $posy+$height_end-1, $text_color);
  }
  $function = "Image".$type;
  $function($im,$tmpfname,$quality);
  ImageDestroy($im);
  $handle = @fopen($tmptname, "wb");
  $contents = @fwrite($handle, (($random_image) ? $imagedata['image_id'] : 0));
  @fclose($hande);
} //end compilling new image
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header("Content-disposition: filename=signature".MD5(time()).".".$type);
header("Content-Type: image/".$type);
readfile($tmpfname);
?>
Last edited by geohei on Sunday, 24.06.2007 14:08, edited 3 times in total.
User avatar
jc
Posts even during sleep
Posts: 515
Joined: Friday, 28.05.2004 18:37

Post by jc »

Lucky you!
Klengen positiven Nieweneffekt :)
Post Reply