<?php
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>'
;
$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>'
;
$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;
$FileData
[
'bc'
] = null;
$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;
$FileData
[
'wmp'
] = null;
$FileData
[
'wmm'
] = null;
$FileData
[
'wma'
] = null;
$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>'
;
$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>'
;
$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
;
}
}
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
)) {
$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>'
;
?>