ploto

ploto Git Source Tree


Root/plog-includes/lib/phpthumb/phpThumb.demo.cacheconvert.php

<?php
//////////////////////////////////////////////////////////////
///  phpThumb() by James Heinrich <info@silisoftware.com>   //
//        available at http://phpthumb.sourceforge.net     ///
//////////////////////////////////////////////////////////////
///                                                         //
// See: phpthumb.readme.txt for usage instructions          //
//                                                         ///
//////////////////////////////////////////////////////////////
//                                                          //
// phpThumb.demo.cacheconvert.php                           //
// James Heinrich <info@silisoftware.com>                   //
// 28 June 2004                                             //
//                                                          //
// phpThumb() cache filename converter                      //
// based on an idea by Josh Gruenberg (joshg�twcny*rr*com)  //
// Can convert cached files from phpThumb() v1.2.4 and      //
// newer (v1.1.2 introduced caching, but the cached         //
// filenames weren't structured in a manner suitable for    //
// conversion until v1.2.4)                                 //
//                                                          //
//////////////////////////////////////////////////////////////
 
function RenameFileIfNeccesary($oldfilename) {
    static $FilenameParameters = array('h', 'w', 'sx', 'sy', 'sw', 'sh', 'bw', 'brx', 'bry', 'bg', 'bgt', 'bc', 'usa', 'usr', 'ust', 'wmf', 'wmp', 'wmm', 'wma', 'xto', 'ra', 'ar', 'iar', 'maxb');
    $FileData = array();
    $oldbasefilename = basename($oldfilename);
 
    $output  = 'Found: <font color="blue"><b>'.htmlentities($oldfilename, ENT_QUOTES).'</b></font><br>';
 
    if (eregi('^phpThumb_cache\.(.*)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.(jpeg|png|gif)$', $oldbasefilename, $matches)) {
 
        $output .= '<font color="darkgreen">matched filename structure for v1.2.4 - v1.3.1</font><br>';
 
        // v1.2.4
        $FileData['src']       = urldecode($matches[1]);
        $FileData['h']         = (($matches[2] > 0) ? $matches[2] : null);
        $FileData['w']         = (($matches[3] > 0) ? $matches[3] : null);
        $FileData['sx']        = (($matches[4] > 0) ? $matches[4] : null);
        $FileData['sy']        = (($matches[5] > 0) ? $matches[5] : null);
        $FileData['sw']        = (($matches[6] > 0) ? $matches[6] : null);
        $FileData['sh']        = (($matches[7] > 0) ? $matches[7] : null);
        $FileData['filemtime'] = $matches[8];
        $FileData['q']         = (($matches[9] == 75) ? null : $matches[9]);
        $FileData['format']    = $matches[10];
 
    } elseif (eregi('^phpThumb_cache\.(.*)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.(.*)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.(jpeg|png|gif)$', $oldbasefilename, $matches)) {
 
        $output .= '<font color="darkgreen">matched filename structure for v1.3.2 - v1.3.5</font><br>';
 
        // v1.3.2:
        $FileData['src']       = urldecode($matches[1]);
        $FileData['h']         = (($matches[2] > 0) ? $matches[2] : null);
        $FileData['w']         = (($matches[3] > 0) ? $matches[3] : null);
        $FileData['sx']        = (($matches[4] > 0) ? $matches[4] : null);
        $FileData['sy']        = (($matches[5] > 0) ? $matches[5] : null);
        $FileData['sw']        = (($matches[6] > 0) ? $matches[6] : null);
        $FileData['sh']        = (($matches[7] > 0) ? $matches[7] : null);
        $FileData['bw']        = (($matches[8] > 0) ? $matches[8] : null);
        $FileData['bg']        = null;           // cached filename value was incorrectly stored
        $FileData['bc']        = null;           // cached filename value was incorrectly stored
        $FileData['usa']       = (($matches[11] > 0) ? $matches[11] : null);
        $FileData['usr']       = (($matches[12] > 0) ? $matches[12] : null);
        $FileData['ust']       = (($matches[13] > 0) ? $matches[13] : null);
        $FileData['wmf']       = null;           // cached filename value was incorrectly stored
        $FileData['wmp']       = null;           // cached filename value was ok, but 'wmf' was incorrectly stored making this useless
        $FileData['wmm']       = null;           // cached filename value was ok, but 'wmf' was incorrectly stored making this useless
        $FileData['wma']       = null;           // cached filename value was incorrectly stored
        $FileData['filemtime'] = $matches[18];
        $FileData['quality']   = $matches[19];
        $FileData['format']    = $matches[20];
 
    } elseif (eregi('^phpThumb_cache\.(.*)\.([0-9]+)\.([0-9]+)\.(jpeg|png|gif)$', $oldbasefilename, $matches)) {
 
        $output .= '<font color="darkgreen">matched filename structure for v1.3.6 - v1.4.0</font><br>';
 
        // v1.3.6:
        $SRCandParameters = $matches[1];
        foreach ($FilenameParameters as $parameter) {
            $SRCandParameters = str_replace('.'.$parameter, "\t".$parameter, $SRCandParameters);
        }
        $SRCandParametersArray = explode("\t", $SRCandParameters);
        $FileData['src'] = urldecode(array_shift($SRCandParametersArray));
        for ($i = 4; $i >= 1; $i--) {
            $MatchedKeys = array();
            foreach ($SRCandParametersArray as $key => $parametervaluepair) {
                if (in_array(substr($parametervaluepair, 0, $i), $FilenameParameters)) {
                    $FileData[substr($parametervaluepair, 0, $i)] = substr($parametervaluepair, $i);
                    $MatchedKeys[] = $key;
                }
            }
            foreach ($MatchedKeys as $key) {
                unset($SRCandParametersArray[$key]);
            }
            if (empty($SRCandParametersArray)) {
                break;
            }
        }
 
        $FileData['filemtime'] = $matches[2];
        $FileData['quality']   = $matches[3];
        $FileData['format']    = $matches[4];
 
    } elseif (eregi('^phpThumb_cache_(.*)_([0-9]+)_([0-9]+)_(jpeg|png|gif)$', $oldbasefilename, $matches)) {
 
        $output .= '<font color="darkgreen">matched filename structure for v1.4.1 - v1.4.5</font><br>';
 
        // v1.4.1:
        $SRCandParameters = $matches[1];
        foreach ($FilenameParameters as $parameter) {
            $SRCandParameters = str_replace('_'.$parameter, "\t".$parameter, $SRCandParameters);
        }
        $SRCandParametersArray = explode("\t", $SRCandParameters);
        $FileData['src'] = urldecode(array_shift($SRCandParametersArray));
        for ($i = 4; $i >= 1; $i--) {
            $MatchedKeys = array();
            foreach ($SRCandParametersArray as $key => $parametervaluepair) {
                if (in_array(substr($parametervaluepair, 0, $i), $FilenameParameters)) {
                    $FileData[substr($parametervaluepair, 0, $i)] = substr($parametervaluepair, $i);
                    $MatchedKeys[] = $key;
                }
            }
            foreach ($MatchedKeys as $key) {
                unset($SRCandParametersArray[$key]);
            }
            if (empty($SRCandParametersArray)) {
                break;
            }
        }
 
        // unneccesary default values removed in v1.4.6
        if (@$FileData['sx'] == '0') {
            unset($FileData['sx']);
        }
        if (@$FileData['sy'] == '0') {
            unset($FileData['sy']);
        }
        if (@$FileData['bg'] == 'FFFFFF') {
            unset($FileData['bg']);
        }
        if (@$FileData['bc'] == '000000') {
            unset($FileData['bc']);
        }
        if (@$FileData['wmp'] == '50') {
            unset($FileData['wmp']);
        }
        if (@$FileData['wmm'] == '5') {
            unset($FileData['wmm']);
        }
        if (@$FileData['wma'] == 'BR') {
            unset($FileData['wma']);
        }
        if (@$FileData['iar'] == '') {
            unset($FileData['iar']);
        }
 
        $FileData['filemtime'] = $matches[2];
        $FileData['quality']   = $matches[3];
        $FileData['format']    = $matches[4];
 
 
    } elseif (eregi('^phpThumb_cache_(.*)_([0-9]+)_q([0-9]+)_(jpeg|png|gif)$', $oldbasefilename, $matches)) {
 
        $output .= '<font color="green">matched filename structure for v1.4.6+ (no need to rename)</font><br>';
 
    } else {
 
        $output .= '<font color="orange">did not match any know filename structure (although could be from v1.1.2 - v1.2.3) - cannot use this file</font><br>';
 
    }
 
    if (!empty($FileData)) {
        // v1.4.6 onwards
        $cache_filename  = 'phpThumb_cache';
        $cache_filename .= '_'.urlencode($FileData['src']);
        foreach ($FilenameParameters as $key) {
            if (isset($FileData[$key])) {
                $cache_filename .= '_'.$key.$FileData[$key];
            }
        }
        $cache_filename .= '_'.$FileData['filemtime'];
        $cache_filename .= '_q'.$FileData['quality'];
        $cache_filename .= '_'.$FileData['format'];
 
        $output .= 'attempting to rename to "'.htmlentities($cache_filename, ENT_QUOTES).'"<br>';
        if (file_exists(dirname($oldfilename).'/'.$cache_filename)) {
 
            $output .= '<font color="red">destination file already exists! cannot rename</a><br><br>';
            echo $output;
            return false;
 
        } elseif (rename($oldfilename, dirname($oldfilename).'/'.$cache_filename)) {
 
            $output .= '<font color="green">success!</a><br><br>';
            echo $output;
            return true;
 
        }
        $output .= '<font color="red">failed to rename! (check permissions?)</a><br><br>';
        echo $output;
        return false;
    }
    $output .= '<font color="orange">not renaming this file</font><br><br>';
    echo $output;
    return true;
}
 
 
echo '<html><head><title>phpThumb() cache converter</title></head><body style="font-family: sans-serif; font-size: 9pt;">';
 
if (!empty($_POST['cachedir'])) {
    $cachedir = realpath($_POST['cachedir']);
    $skipped = 0;
    if (is_dir($cachedir)) {
        if ($dir = opendir($cachedir)) {
            echo 'Processing directory <b>'.htmlentities($cachedir).'</b><br><br>';
            while ($fileName = readdir($dir)) {
                if (ereg('^phpThumb_cache', $fileName)) {
                    RenameFileIfNeccesary($cachedir.'/'.$fileName);
                } elseif (!is_dir($cachedir.'/'.$fileName)) {
                    $skipped++;
                }
            }
        } else {
            echo 'Cannot open directory "<b>'.htmlentities($cachedir).'</b>"<br>';
        }
    } else {
        echo '"<b>'.htmlentities($cachedir).'</b>" is not a directory!<br>';
    }
    if ($skipped > 0) {
        echo '<i>skipped '.$skipped.' files</i><br>';
    }
    echo '<hr>';
}
 
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo 'Enter the directory you wish to convert from old-style phpThumb() cache filenames to the current naming standard:<br>';
echo '<input type="text" name="cachedir" value="'.@$_POST['cachedir'].'"> ';
echo '<input type="submit" value="Convert">';
echo '</form></body></html>';
 
?>

Archive Download this file

Branches

Number of commits:
Page rendered in 0.08867s using 11 queries.