USE AT OWN RISK
Generated: Tue Jul 31 15:22:07 2007 from imgview02.php 2005/12/02 12.7 KB bytes.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Image Viewer 2</title> <head> <body> <?php /* imgview02.php AIM: To read a directory, finding thumbs, and allow viewing of then in a table of images, paged ... If there exists a full-size image of the SAME name, minus the -t, then allow click loading of that image, into another window ... 2 December, 2005 Geoff McLane */ $package = 'imgview02.php'; // set SELF name $g_actpage = 1; $g_type = 'a'; // for test $g_file = 'c:/HOMEPAGE/Max5/ozimages/oz_aug93-n.jpg'; $g_file = ''; // get the page value, if any if (isset($_GET['page'])) { $g_actpage = $_GET['page']; } if (isset($_GET['type'])) { $g_type = $_GET['type']; } if (isset($_GET['file'])) { $g_file = $_GET['file']; } if($g_actpage < 1) $g_actpage = 1; //$thumb_folder = 'temp'; //$full_folder = 'c:/HOMEPAGE/P26/mona'; //$thumb_folder = 'C:/HOMEPAGE/Max5/ozimages'; //$full_folder = 'C:/HOMEPAGE/Max5/ozimages'; $thumb_folder = 'ozimages'; $full_folder = 'ozimages'; $inp_file = ''; $full_file = ''; $full_file_n = ''; $file_count = 0; $m_row_wrap = 5; // establish row WRAP $m_max_out = 15; // establish MAX images $m_pg_max = 10; // establish MAXIMUM pages to show in menu line $meol = "\r\n"; $g_filearr = array(); // store the found items here // offset in the array gathered $arr_tn = 0; $arr_ff = 1; $arr_sz = 2; $arr_tm = 3; $arr_st = 4; getfilearr (); // collect the ARRAY of THUMBS - must have -t $imgcnt = count( $g_filearr ); // this is count of images if (($imgcnt == 0) || (ordFileList_by_date() == 0) ) { print "<p>No image count, or order failed! </p>\r\n"; print '<p align="center"><a href="index.htm">Index</a></p>' . $meol; exit(1); } $got_one_file = 0; if ( strlen($g_file) && file_exists($g_file) ) { $got_one_file = 1; } $rmi = $imgcnt % $m_max_out; $cnt = ($imgcnt - $rmi) / $m_max_out; // get PAGE count if($rmi) $cnt++; // bump one more page //echo "Got $imgcnt files rmi=$rmi pages=$cnt tot=" . ($cnt * $m_max_out) . " ap=$g_actpage<br>$meol"; $max = $m_pg_max; // normal MAXIMUM page display if($cnt < $max) $max = $cnt; if($g_actpage > $cnt) $g_actpage = $cnt; $pg = 0; $sp = 0; $rm = $g_actpage % $m_pg_max; // get remainder $sp = ($g_actpage - $rm) / $m_pg_max; // get start page //echo "Got $cnt pages max=$max rm=$rm sp=$sp... ap=$g_actpage<br>$meol"; $rmsg = 'Select Page: '; $i = 0; $pg = 1 + ($sp * $m_pg_max); $mp = $pg + $m_pg_max - 1; if($mp > $cnt) $mp = $cnt; $rng = "(Range: $pg-$mp of $cnt)"; if($pg > $m_pg_max) { $pg--; $rmsg .= $meol . "<a href=\"$package?page=" . $pg . '">Previous</a> '; } for( $i = 0; $i < $max; $i++ ) { $pg = $i + 1 + ($sp * $m_pg_max); if($pg > $cnt) break; if( $g_type == '*' ) { $rmsg .= $meol . "<a href=\"$package?page=" . $pg . '">' . $pg . '</a> '; } else { if(( $pg == $g_actpage ) && ($got_one_file == 0)) { $rmsg .= "$pg "; } else { $rmsg .= $meol . "<a href=\"$package?page=" . $pg . '">' . $pg . '</a> '; } } } if($pg < $cnt) { $pg++; $rmsg .= $meol . "<a href=\"$package?page=" . $pg . '">More</a> '; } if (( $g_type == '*' ) && ($got_one_file == 0) ) { $rmsg .= 'All '; } else { $rmsg .= $meol . "<a href=\"$package?page=" . $g_actpage . '&type=*">All</a> '; } $msg = $meol . '<table width="100%" border="0"><tr>'.$meol; $msg .= '<td width="30%" align="left">' . $meol; $msg .= $rmsg . $meol; if ( $got_one_file ) { $msg .= '</td><td width="30%" align="center">Full Image View' . $meol; } else { $msg .= '</td><td width="30%" align="center">Click on Image to Enlarge' . $meol; } $msg .= '</td><td width="30%" align="right">' . $rng . $meol; $msg .= '</td></tr></table>' . $meol; print add_b_span($msg) . $meol; // now to output the table of images $is = (($g_actpage - 1) * $m_max_out); print $meol . '<table width="100%" border="2">'.$meol; // if ( strlen($g_file) && file_exists($g_file) ) { if ( $got_one_file ) { print '<tr>' . $meol; print '<td align="center" valign="center">' . $meol; $parts = split("/",$g_file); $pc = count($parts); $alt = 'File is ' . $parts[$pc-1]; // last part is FILE NAME $alt .= ' ' . date("F d Y H:i:s.", filemtime($g_file)); $alt .= ' ' . filesize($g_file) . ' bytes'; print '<img src="' . $g_file . '" alt="' . $alt . '" />'; print '</td></tr>' . $meol; } elseif ($g_type == '*') { // output ALL images for( $i = 0; $i < $imgcnt; $i++ ) { $pg = $i; if( ($i % $m_row_wrap) == 0 ) { print '<tr>' . $meol; } print '<td align="center" valign="center">' . $meol; // print get_img_msg($pg) . $meol; print get_img_msg2($pg) . $meol; print "</td>$meol"; if( (($i + 1) % $m_row_wrap) == 0 ) { print '</tr>' . $meol; } } if( ($i % $m_row_wrap) != 0 ) { while( ($i % $m_row_wrap) != 0 ) { print '<td align="center" valign="center">' . $meol; print "No image"; print "</td>$meol"; $i++; } print '</tr>' . $meol; } } else { // NOT ALL - output a SUBSET for( $i = 0; $i < $m_max_out; $i++ ) { // for the set of images $pg = $i + $is; if( ($i % $m_row_wrap) == 0 ) { print '<tr>' . $meol; } print '<td align="center" valign="center">' . $meol; // print get_img_msg($pg) . $meol; print get_img_msg2($pg) . $meol; print "</td>$meol"; if( (($i + 1) % $m_row_wrap) == 0 ) { print '</tr>' . $meol; } } } print '</table>' . $meol; print '<p align="center"><a href="index.htm">Index</a></p>' . $meol; // ############################ // helper functions // ############################ function get_img_msg2( $in_num ) { global $imgcnt, $g_filearr; global $arr_tn, $arr_ff, $arr_sz, $arr_tm, $arr_st; global $meol; global $g_actpage, $g_type, $package; $rmsg = ''; $num = $in_num + 1; if($in_num < $imgcnt) { for( $i = 0; $i < $imgcnt; $i++ ) { $arr = $g_filearr[$i]; if( $arr[$arr_st] == $num ) break; // found our ORDER number } if( $i < $imgcnt ) { $arr = $g_filearr[$i]; $ffl = strlen($arr[$arr_ff]); if($ffl) { // we have a FULL file $fn = $arr[$arr_ff]; $rmsg .= "<a href=\"$package?page=$g_actpage&type=$g_type&file="; $rmsg .= $arr[$arr_ff] . '">' . $meol; } else { $fn = $arr[$arr_tn]; } $parts = split("/",$fn); $pc = count($parts); $alt = 'File is ' . $parts[$pc-1]; // last part is FILE NAME $alt .= ' ' . date("F d Y H:i:s.", $arr[$arr_tm]); $alt .= ' ' . $arr[$arr_sz] . ' bytes'; $rmsg .= '<img src="' . $arr[$arr_tn] . '" alt="' . $alt . '" />'; if($ffl) $rmsg .= $meol . '</a>'; } } if( strlen($rmsg) == 0 ) { $rmsg .= "No image"; } return $rmsg; } function get_img_msg( $in_num ) { global $imgcnt, $g_filearr; global $arr_tn, $arr_ff, $arr_sz, $arr_tm, $arr_st; global $meol; $rmsg = ''; $num = $in_num + 1; if($in_num < $imgcnt) { for( $i = 0; $i < $imgcnt; $i++ ) { $arr = $g_filearr[$i]; if( $arr[$arr_st] == $num ) break; // found our ORDER number } if( $i < $imgcnt ) { $arr = $g_filearr[$i]; $ffl = strlen($arr[$arr_ff]); if($ffl) { // we have a FULL file $fn = $arr[$arr_ff]; $rmsg .= '<a target="_blank" href="' . $arr[$arr_ff] . '">' . $meol; } else { $fn = $arr[$arr_tn]; } $parts = split("/",$fn); $pc = count($parts); $alt = 'File is ' . $parts[$pc-1]; // last part is FILE NAME $alt .= ' ' . date("F d Y H:i:s.", $arr[$arr_tm]); $alt .= ' ' . $arr[$arr_sz] . ' bytes'; $rmsg .= '<img src="' . $arr[$arr_tn] . '" alt="' . $alt . '" />'; if($ffl) $rmsg .= $meol . '</a>'; } } if( strlen($rmsg) == 0 ) { $rmsg .= "No image"; } return $rmsg; } function get_img_msg_no_sort( $num ) { global $imgcnt, $g_filearr; global $arr_tn, $arr_ff, $arr_sz, $arr_tm, $arr_st; $rmsg = ''; if($num < $imgcnt) { $arr = $g_filearr[$num]; $ffl = strlen($arr[$arr_ff]); if($ffl) { // we have a FULL file $alt = 'File is ' . $arr[$arr_ff]; $rmsg .= '<a target="_blank" href="' . $arr[$arr_ff] . '">'; } else { $alt = 'File is ' . $arr[$arr_tn]; } $alt .= ' ' . date("F d Y H:i:s.", $arr[$arr_tm]); $alt .= ' ' . $arr[$arr_sz] . ' bytes'; $rmsg .= '<img src="' . $arr[$arr_tn] . '" alt="' . $alt . '" />'; if($ffl) $rmsg .= '</a>'; } else { $rmsg .= "No image"; } return $rmsg; } function add_b_span ( $msg ) { return '<span style="background-color: #eeeeff;"><font style="color: black;">'. $msg . '</font></span>'; } function add_b_span2 ( $msg ) { return '<span style="background-color: #0066cc;"><font style="color:#ffffff; font-size:small;">'. $msg.'</font></span>'; } function ProcessFile ( $in_file, $f_folder, $f_file, $f_file_n ) { global $meol; global $g_filearr; $ff = $f_folder . '/' . $f_file; $ffn = $f_folder . '/' . $f_file_n; $fff = $ff; $arr = array(); $arr[] = $in_file; // store the THUMB file name = $arr_tn = 0; if( file_exists( $ff ) ) { $fff = $ff; } elseif ( file_exists ( $ffn ) ) { $fff = $ffn; } else { $fff = $ff; } if( file_exists( $fff ) ) { //echo "Found full file $ff ...<br>$meol"; $arr[] = $fff; // store the FULL file name = $arr_ff = 1; $arr[] = filesize($fff); // add file size = $arr_sz = 2; $arr[] = filemtime($fff); // and time = $arr_tm = 3; } else { //echo "NO full file $ff found! ...<br>$meol"; $arr[] = ''; // signal NO full file found $arr[] = filesize($in_file); $arr[] = filemtime($in_file); } $arr[] = 0; // no SORT ORDER yet = $arr_st = 4; $g_filearr[] = $arr; // store this file information... } function IsMYFile( $in_file ) { // this is a VERY SPECIALISED filter global $full_file, $full_file_n; // where to STORE the FULL FILE NAME global $meol; // separate file name and extention $parts = split("\.", $in_file); $pc = count($parts); if( $pc > 1 ) { $file_ext = $parts[$pc-1]; // last part is FILE NAME $filea = array_slice($parts,0,$pc-1); $file_tit = implode( ".", $filea ); } else { $file_tit = $in_file; $file_ext = ""; } // (a) I only want '.jpg' files if( strtolower( $file_ext ) != 'jpg' ) { //echo "IsMYFile: FAILED TEST 1 - not a jpeg file ...<br>$meol"; return 0; // failed test 1 } // (b) File name length MUST be greater than 2 $fnl = strlen($file_tit); if( $fnl <= 2 ) { //echo "IsMYFile: FAILED TEST 2 - does not have length ...<br>$meol"; return 0; // failed length test 2 } // (c) The file name MUST end in '-t' if( substr($file_tit, -2, 2) != '-t' ) { //echo "IsMYFile: FAILED TEST 3 - title $file_tit missing '-t' ...<br>$meol"; return 0; // failed test 3 } // get name, without the '-t' $ffn = substr($file_tit, 0, ($fnl - 2)); $full_file = $ffn . '.jpg'; $full_file_n = $ffn . '-n.jpg'; return 1; } function getfilearr () { global $thumb_folder, $full_folder, $full_file, $full_file_n; global $file_count, $meol; $mydir = opendir($thumb_folder) ; if( !$mydir ) { echo "ERROR: Can not OPEN directory [$thumb_folder] ... aborting ... <br>$meol"; return 0; } while($fn = readdir($mydir)) //scan through the whole directory { if( !(($fn == '.') || ($fn == '..')) ) { $inp_file = $thumb_folder . '/' . $fn; //echo "Processing file $inp_file ...<br>$meol"; if( IsMYFile( $fn ) ) { $file_count++; ProcessFile($inp_file, $full_folder, $full_file, $full_file_n); } } } closedir($mydir); return $file_count; } function ordFileList_by_date () { global $g_filearr; // this is the LIST of found files do display global $arr_tm, $arr_st; $imx = count( $g_filearr ); // get COUNT of FOUND ITEMS - full list of arrays if($imx == 0) { return 0; } $imx2 = $imx; // copy count $got_ord = 1; // SORT the array of files, per their FILETIME // iterate, finding the most recent, non-ordered, each time while($imx2) { // set order to N, N-1, N-2, ..., 1 ... note 1 is last $ft = 0; // start with zero time $idx = $imx; for($i = 0; $i < $imx; $i++) { $arr = $g_filearr[$i]; // extract array if( $arr[$arr_st] == 0 ) { // if NO SORT if( $arr[$arr_tm] > $ft ) { // if later $ft = $arr[$arr_tm]; // get it, $idx = $i; // keeping the index to it } // check each FILETIME ... } } if( $idx < $imx ) { // found highest, latest, NOT previously ORDERED ... (nnn ... 1) $arr = $g_filearr[$idx]; // extract array, of file things $arr[$arr_st] = $imx2; // set ORDER - N to 1 $g_filearr[$idx] = $arr; // replace array, with value update // print "<p>Set order $arr[3]!</p>\r\n"; } else { //print "<p>No order! Internal error, or filetime is ZERO!</p>\r\n"; $got_ord = 0; } $imx2--; } return $got_ord; // 1 = success - should NEVER be zero } ?> </body> </html> <!-- Max5.2005.12.02 - macpcfirstaid.com -->