Random Images

FIXME translate

Random Images alias based

Tag: {GET_RANDOM_ALIAS_IMG_URL:image-path}

E.g. {GET_RANDOM_ALIAS_IMG_URL:picture/images/test}

Forum: {GET_RANDOM_ALIAS_IMG_URL}

Authors: tinoo, pepe(starter), RCS robin c. sherwood (adapting and mixing up the code)
Last modified: 23.01.2006 created/mixed up

Filename: rt_get_random_alias_img_url.php

Folder: /template/inc_script/frontend_render/

Switch: $phpwcms['allow_ext_render'] = 1; (/config/phpwcms/conf.inc.php)



Location: /template/inc_script/frontend_render/rt_get_random_alias_img_url.php

{GET_RANDOM_ALIAS_IMG_URL:image-path}

<?php
/********************************************
titel:          {GET_RANDOM_ALIAS_IMG_URL} Replacement-Tag
description:    {GET_RANDOM_ALIAS_IMG_URL:image-path}
    This Replacement-Tag is based on {RANDOM} tag. It started as a mixup of
    tinoos adapted random code and pepes strip-prefix.php. It creates the
    path info of random pictures related to your point of view in a website
    (like "picture/Image/structure- aliasname/pic1.png".
    This tag can be used at places like table background where no <img>-tag is required.
---------------------------------------------
example:    {GET_RANDOM_ALIAS_IMG_URL:picture/Image} or
        <table style="background-image: url ({GET_RANDOM_ALIAS_IMG_URL:picture/Image});"
        or even <img src="{GET_RANDOM_ALIAS_IMG_URL:picture/Image}"> in an "HTML" contentpart.
        <a href="link-to-somewhere"><img src="{GET_RANDOM_ALIAS_IMG_URL:picture/Image}" border="0"></a>
---------------------------------------------
    The directories "alias1" "alias2" ... are subdirectories of picture/Image
    (you have to create them according to your given aliases "alias1" "alias2"...
    in admin/site structure).
    The complete path to the random pictures is then:
    www.yourdomain.com/picture/Image/alias1/
    www.yourdomain.com/picture/Image/alias2/
    and so on.
    The advantage of defining the alias-dirs in "picture/Image" is that this dir is used by fckeditor
    and you then can upload pictures per FTP and/or per fckeditor.
    It will deliver the pictures of the appropriately defined dir according to where
    you are in the site.
---------------------------------------------
notice:    name this file get_random_alias_img_url.php and copy it to
        phpwcms_template/inc_script/frontend_render
---------------------------------------------
authors:    tinoo, pepe(starter), RCS robin c. sherwood    (adapting and mixing up the code)
last modified:  23.01.2006 created/mixed up
********************************************/
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day."); }
// ----------------------------------------------------------------
 
function get_random_image_url_based_on_alias($path)
{
// returns a random image url from the given path
// it looks for image of following type: gif, jpg, jpeg, png
    $alias = $GLOBALS['content']['struct'][($GLOBALS['aktion'][0])]['acat_alias'];
    $mypath = ($path."/".$alias);
    $imgArray = array();
    $imgpath = str_replace("//", "/", PHPWCMS_ROOT."/".$mypath."/");
    $imageinfo = false;
    if(is_dir($imgpath)) {
        $handle = opendir( $imgpath );
        while($file = readdir( $handle )) {
            if( $file != "." && $file != ".." ) {
            if( preg_match('/(\.jpg|\.jpeg|\.gif|\.png)$/', strtolower($file)) ) $imgArray[] = $file;
            }
        }
        closedir( $handle );
    }
    if(sizeof($imgArray)) $imageinfo = is_random_image($imgArray, $imgpath);
    return ($imageinfo) ?   "".$mypath."/".$imageinfo["imagename"]: "";
}
    $content["all"] = preg_replace('/\{GET_RANDOM_ALIAS_IMG_URL:(.*?)\}/ie', 'get_random_image_url_based_on_alias("$1");', $content["all"]);
?>


Random Images level based

This snippet can be used at places like background in css constructions where no <img>-tag is required.

Description: rt_get_random_level_img_url.php

This snippet is using the function of {RANDOM} tag. It search for pictures in the path you have setup in $_image_path like e.g. picture/random[XX]/pic1.png”.
Where XX is the id of the active category in site structure of the given level ( setup in $_level_base).

If you have setup $_level_base to “false”, $_image_path is the fallback image path. All pictures will be searched in the folder.
If you have setup $_level_base to e.g. “1” and your active category is a sub category of the category in level 1 e.g. “id=43”, the image path is converted to “picture/random43/”.
From all the images in “picture/random43/” one becomes randomly selected.



Example: given structure:

 home         (id=0)   level 0
 - cat01      (id=01)  level 1
 - cat02      (id=22)  level 1
 --- cat02_01 (id=45)  level 2
 --- cat02_02 (id=46)  level 2 - [active category]
 - cat03      (id=33)  level 1
 $_level_base = 1;
 $_image_path = picture/random;

The snippet will generate a path like picture/random22/ and checks for all images in this path.

If “picture/random22/” does not exist, then the images will be searched in the fallback path “picture/random/”.
The same if $_level_base = false;



Notice: Name this file rt_get_random_level_img_url.php and copy it to phpwcms_template/inc_script/frontend_init/
Condition:/config/phpwcms/conf.inc.php

  • $phpwcms['allow_ext_init'] = 1;

Author: Knut Heermann (flip-flop) http://planmatrix.de
Last modified: 03.01.2010 created/mixed up


Code

Location: /template/inc_script/frontend_init/rt_get_random_level_img_url.php

rt_get_random_level_img_url.php

<?php
/*********************************************************************************************
This snippet can be used at places like background where no <img>-tag is required.
 
description:    rt_get_random_level_img_url.php
    This snippet is using the function of {RANDOM} tag. It search for pictures in the
    path you have setup in $_image_path like e.g. "picture/random[XX]/pic1.png".
    Where XX is the id of the active category in site structure of the given level
    ( setup in $_level_base).
    If you have setup $_level_base to "false", $_image_path is the fallback image path.
    All pictures will be searched in the folder.
    If you have setup $_level_base to e.g. "1" and your active category is a sub category of the
    category in level 1 e.g. "id=43", the image path is converted to "picture/random43/".
    From all the images in "picture/random43/" one becomes randomly selected.
    This tag can be used at places like table background where no <img>-tag is required.
---------------------------------------------------------------------
 
example:    given structure:
            home         (id=0)   level 0
            - cat01      (id=01)  level 1
            - cat02      (id=22)  level 1
            --- cat02_01 (id=45)  level 2
            --- cat02_02 (id=46)  level 2 - [active category]
            - cat03      (id=33)   level 1
 
            $_level_base = 1;
            $_image_path = picture/random;
 
The snippet will generate a path like picture/random22/ and checks for all images in this path.
If "picture/random22/" does not exist, then the images will be searched in the fallback path "picture/random/"
The same if  $_level_base = false;
---------------------------------------------------------------------
 
notice:    name this file rt_get_random_level_img_url.php and copy it to
        phpwcms_template/inc_script/frontend_init
---------------------------------------------------------------------
 
author:    Knut Heermann (flip-flop) http://planmatrix.de
last modified:  03.01.2010 created/mixed up
 
**********************************************************************************************/
 
// -------------------------------------------------------------------------------------------
// obligate check for phpwcms constants
  if (!defined('PHPWCMS_ROOT')) {
    die("You Cannot Access This Script Directly, Have a Nice Day."); }
// -------------------------------------------------------------------------------------------
 
// ===== CUSTOM SETTINGS =====================================================================
$_image_path    = 'picture/random'; // path where the default (and fallback) images are
$_level_base    = 1;                // false = off | Level-No = on   e.g. 1 = TopLevel
// ===== CUSTOM SETTINGS END =================================================================
 
 
if ( ($_level_base !== false) AND (isset($LEVEL_ID[$_level_base])) AND (is_dir($_image_path.$LEVEL_ID[$_level_base] )) )
    $_image_path .= $LEVEL_ID[$_level_base]; // e.g. picture/random24 is the image path for images in category ID=24 and their subcategories
 
 
 
// $template_default['body']['id'] = 'bg-image';  // it will be produced always "bg-image[cat-id]"
$template_default['body']['class'] = 'bg-image id-';  // it will be produced always "bg-image[cat-id]"
 
   // Hm I want to write some default CSS
   $block['custom_htmlhead']['mycss']  = '  <style type="text/css" media="screen">' . LF . '  <!--' . LF;
//   $block['custom_htmlhead']['mycss'] .= '   #bg-image'.$content['cat_id'].' { ' . LF;
   $block['custom_htmlhead']['mycss'] .= '   .bg-image { ' . LF;
   $block['custom_htmlhead']['mycss'] .= '      background: transparent url('.get_random_image_tag("SRC:$_image_path").') no-repeat left top;' . LF;
 
   $block['custom_htmlhead']['mycss'] .= '   }';
   $block['custom_htmlhead']['mycss'] .= LF . '  //-->' . LF . '  </style>';
 
?>


Another Random Background Images Script

Forum: {CSS trick: random body background image}

Only images with the name “rand[0-25].jpg” are available (Folder: “images/skins/”).

<head>
 
<style type="text/css" media="screen">
.bg-image {
   background-image: url(images/skins/[PHP] echo ("skins".rand(0,25).".jpg")[/PHP]) ;
}
</style>
 
</head>
 
<body class="bg-image id-33">


Setup in config/phpwcms/conf.template_default.inc.php

$template_default['body']['class'] = 'bg-image id-';


Random Images from account folder

{RANDOMX:%SRC-LB%:%path%:%WIDTH%x%HEIGHT%}

From a specified folder of the accounts a picture is randomly selected and presented. This extended TAG allows the specification of the thumbnails size and a call of the Lightbox (SlimBox).

Like {RANDOM:path}, with the following properties:

  • Returns a random image from the specified path
  • It looks for image of following type: gif, jpg, jpeg, png.
  • {RANDOMX:path} will return with "path=path/rand_image/" –> <img src="path/rand_image/..." />
  • {RANDOMX:SRC:path} will return the absolute URI PHPWCMS_URL/path/rand_image/...
  • {RANDOMX:SRC-R:path} will return the relative URI path/rand_image/....
  • {RANDOMX:SRC-LB:path:WIDTHxHEIGHT} willl return a complete html set thumb/LightBox with WIDTHxHEIGHT for the thumb
    • The LightBox presents the images in original size.
    • The thumbs are simply scaled down, not stored/recalculated or cropped.


Example: {RANDOMX:SRC-LB:picture/upload/image/:200x150}

PHP:

File: template/inc_Script/forntend_render/rt_randomX_img.php

rt_randomX_img.php

<?php
// KH 19.06.11 flip-flop: Random image from normal folder
 
// -------------------------------------------------------------------------------------------
// obligate check for phpwcms constants
  if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// -------------------------------------------------------------------------------------------
 
function get_random_image_tagX($path) {
    // returns an random image from the give path
    // it looks for image of following type: gif, jpg, jpeg, png
    // {RANDOMX:path} willl return <img src="path/rand_image" />
    // {RANDOMX:SRC:path} will return absolute URI PHPWCMS_URL/path/rand_image
    // {RANDOMX:SRC-R:path} will return only relative path/rand_image
    // {RANDOMX:SRC-LB:path:%WIDTH%x%HEIGHT%} will return a complete html set for LightBox with WIDTHxHEIGHT for the thumb
 
 
    $imgArray    = array();
    $path        = trim($path);
    $tagX        = false;    //+KH
    if(strtoupper(substr($path, 0, 4)) == 'SRC:') {
        $tag    = false;
        $path    = trim(substr($path, 4));
 
    // relative path/rand_image
    } elseif (strtoupper(substr($path, 0, 6)) == 'SRC-R:') { // +KH
        $tag    = false;
        $tagX    = 1;
        $path    = trim(substr($path, 6));
 
    // complete html set for LightBox with WIDTHxHEIGHT for the thumb
    } elseif (strtoupper(substr($path, 0, 7)) == 'SRC-LB:') { // +KH
        // %WIDTH%x%HEIGHT fallback
        $width    = 150;
        $height    = 100;
 
        $tag    = false;
        $tagX    = 2;
        $path    = trim(substr($path, 7));
        $data     = explode(':', $path);
        $path     = $data[0];
 
        if (isset($data[1])) {  // find WIDTH x HEIGHT
            $data[1]    = preg_replace('/[^0-9x]/', '', $data[1]);
            $attribute    = explode('x', $data[1]);
            $width        = intval($attribute[0]);
            $height        = isset($attribute[1]) ? intval($attribute[1]) : 0;
        }
 
    } else {
        $tag    = true;
    }
 
    $path        = trim($path, '/');
    $imgpath    = PHPWCMS_ROOT . '/' . $path . '/';
    $imageinfo    = false;
 
    if(is_dir($imgpath)) {
        $handle = opendir( $imgpath );
        while($file = readdir( $handle )) {
               if( $file{0} != '.' && preg_match('/(\.jpg|\.jpeg|\.gif|\.png)$/i', $file)) {
                $imgArray[] = $file;
            }
        }
        closedir( $handle );
    }
 
    if(count($imgArray) && ($imageinfo = is_random_image($imgArray, $imgpath))) {
        if($tag) {  // normal output
            return '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
        } else {
 
            if ($tagX === 2) {  // SRC-LB
                initializeLightbox();
//                $x = '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
 
                $x  = '<a href="image_resized.php?format=jpg&q=85&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" rel="lightbox" target="_blank">';
                $x .= '<img src="image_resized.php?format=jpg&q=85&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" class="image_img" alt="'.html_specialchars($imageinfo["imagename"]).'" height="'.$height.'" width="'.$width.'"></a>';
                return $x;
            } elseif (($tagX === 1))  // SRC-R
                return  $path . '/' . urlencode($imageinfo['imagename']);
 
            else
                return PHPWCMS_URL . $path . '/' . urlencode($imageinfo['imagename']);
        }
    }
 
    return '';
}
 
    // randomX Image Tag
    $search        = '/\{RANDOMX:(.*?)\}/e';
    $replace    = 'get_random_image_tagX("$1");';
 
    $content["all"] = preg_replace($search, $replace, $content["all"]);
//    $string = str_replace('&#92;&#039;', '&#039;', $string);
//    $string = str_replace('&amp;quot;', '&quot;', $string);
 
?>


V1.1

FIXME Better translate

Identical to the version shown above, but enhanced by the appearance of all images in the specified directory using LightBox (Next/Prev).

  • {RANDOMX:SRC-LBNP:path:WIDTHxHEIGHT} returns the complete set of html instructions for the LightBox with WIDTHxHEIGHT for the thumbs and provides all the image files from the specified path in the LightBox.
    • The LightBox presents the images in original size.
    • The Thumb is simply scaled down, not newly calculated / stored or trimmed (cropping).
    • Update 21.06.11:
      1. The Thumb is reduced proportionally shown according to the size specifications (Identical procedure as in the pictures CPs - The largest division ratio is the benchmark for both sides).
      2. Correction to image type.


Example: {RANDOMX:SRC-LBNP:picture/upload/image/:200x150}

The random thumb is displayed with a maximum size of 200x150px and a link to the LightBox (show above “proportionally”), then all the images from the directory in original size with (Next/Prev) can be represented.

PHP V1.1:

File: template/inc_Script/forntend_render/rt_randomX_img.php

rt_randomX_img.php

<?php
// KH 21.06.11 flip-flop: Random image from normal folder V1.1
 
// -------------------------------------------------------------------------------------------
// obligate check for phpwcms constants
  if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// -------------------------------------------------------------------------------------------
 
 
function get_random_image_tagX($path) {
    // returns an random image from the given path
    // it looks for image of following type: gif, jpg, jpeg, png
    // {RANDOMX:path} will return <img src="path/rand_image" />
    // {RANDOMX:SRC:path} will return absolute URI PHPWCMS_URL/path/rand_image
    // {RANDOMX:SRC-R:path} will return only relative path/rand_image
    // {RANDOMX:SRC-LB:path:%WIDTH%x%HEIGHT%} will return a complete html set for LightBox with proportional WIDTHxHEIGHT for the thumb
    // {RANDOMX:SRC-LBNP:path:%WIDTH%x%HEIGHT%} the same like SRC-LB with LightBox Next/Prev pictures from this folder
 
 
    $imgArray    = array();
    $path        = trim($path);
    $tagX        = false;    //+KH
    if(strtoupper(substr($path, 0, 4)) == 'SRC:') {
        $tag    = false;
        $path    = trim(substr($path, 4));
 
    // relative path/rand_image
    } elseif (strtoupper(substr($path, 0, 6)) == 'SRC-R:') { // +KH
        $tag    = false;
        $tagX    = 1;
        $path    = trim(substr($path, 6));
 
    // complete html set for LightBox with WIDTHxHEIGHT for the thumb
    } elseif (strtoupper(substr($path, 0, 6)) == 'SRC-LB') { // +KH
        // %WIDTH%x%HEIGHT fallback
        $width    = 150;
        $height    = 100;
 
        $tag    = false;
        $tagX    = 2;
        if (strtoupper(substr($path, 0, 9)) == 'SRC-LBNP:') {
            $path    = trim(substr($path, 9));
            $tagX    = 3;
        } else
            $path    = trim(substr($path, 7));
        $data     = explode(':', $path);
        $path     = $data[0];
 
        if (isset($data[1])) {  // find WIDTH x HEIGHT
            $data[1]    = preg_replace('/[^0-9x]/', '', $data[1]);
            $attribute    = explode('x', $data[1]);
            $width        = intval($attribute[0]);
            $height        = isset($attribute[1]) ? intval($attribute[1]) : 0;
        }
 
    } else {
        $tag    = true;
    }
 
    $path        = trim($path, '/');
    $imgpath    = PHPWCMS_ROOT . '/' . $path . '/';
    $imageinfo    = false;
 
    if(is_dir($imgpath)) {
        $handle = opendir( $imgpath );
        while($file = readdir( $handle )) {
            if( $file{0} != '.' && preg_match('/(\.jpg|\.jpeg|\.gif|\.png)$/i', $file)) {
                $imgArray[] = $file;
            }
        }
        closedir( $handle );
    }
 
    // RANDOM
    if(count($imgArray) && ($imageinfo = is_random_image($imgArray, $imgpath))) {
        if($tag) {  // normal output
            return '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
        } else {
 
            // LightBox output
            if ($tagX === 2 OR $tagX === 3) {  // SRC-LB OR SRC-LBNP:
                initializeLightbox();
//                $x = '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
 
                // Type of image
                $img_type = substr($imageinfo['mime'], 6);             // e.g. image/jpeg -> jpeg
                if ($imageinfo['2'] == 2) $img_type .= '&q=85';     // Only if jpg = type Nr 2
 
                // Proportional image size
                $img_x = $imageinfo[0] / $width;  // z.B. 800 / 200 = 4,00
                $img_y = $imageinfo[1] / $height; // z.B. 532 / 100 = 5,32
 
                if ($img_x < $img_y)     $width     = $imageinfo[0] / $img_y;
                else                     $height = $imageinfo[1] / $img_x;
 
                $x  = '<a href="image_resized.php?format='.$img_type.'&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" rel="lightbox[NextPrev]" target="_blank">';
                $x .= '<img src="image_resized.php?format='.$img_type.'&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" class="random-img" alt="'.html_specialchars($imageinfo["imagename"]).'" height="'.$height.'" width="'.$width.'"></a>'.LF;
                $random_image = $imageinfo['imagename'];
 
                // LightBox with Next/Prev: Read all available images in path
                if ($tagX === 3 ) {  // SRC-LBNP:
                    foreach ($imgArray as $key=>$value) {
 
                        $imageinfo = @getimagesize($imgpath.$value);  // is it an image?
 
                        if ($imageinfo) {
 
                            $img_type = substr($imageinfo['mime'], 6);             // e.g. image/jpeg -> jpeg
                            if ($imageinfo['2'] == 2) $img_type .= '&q=85';     // Only if jpg = type Nr 2
 
                            if ($random_image != $value)  // No double image entry except the random image
                                $x .= '<a href="image_resized.php?format='.$img_type.'&imgfile='.$path.'/'.urlencode($value).'" rel="lightbox[NextPrev]" target="_blank"></a>'.LF;
                        //        $x .= '<img src="image_resized.php?format=jpg&q=85&imgfile='.$path.'/'.urlencode($value).'" class="image_img" alt="'.html_specialchars($value).'" height="'.$height.'" width="'.$width.'"></a>'.LF;
                        }
                    }
 
                }
 
                return $x;
            } elseif (($tagX === 1))  // SRC-R
                return  $path . '/' . urlencode($imageinfo['imagename']);
 
            else // SRC:
                return PHPWCMS_URL . $path . '/' . urlencode($imageinfo['imagename']);
        }
    }
 
    return '';
}
 
    // randomX Image Tag
    $search        = '/\{RANDOMX:(.*?)\}/e';
    $replace    = 'get_random_image_tagX("$1");';
 
    $content["all"] = preg_replace($search, $replace, $content["all"]);
//    $string = str_replace('&#92;&#039;', '&#039;', $string);
//    $string = str_replace('&amp;quot;', '&quot;', $string);
 
 
?>


english/phpwcms_replacer_rts/frontend_render/random_image.txt · Last modified: 2011/06/25 06:40 by Knut Heermann (flip-flop)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0