public function uniqueName($dir, $name, $suffix = ' copy', $checkNum = true)
{
$ext = '';
if (preg_match('/\\.((tar\\.(gz|bz|bz2|z|lzo))|cpio\\.gz|ps\\.gz|xcf\\.(gz|bz2)|[a-z0-9]{1,4})$/i', $name, $m)) {
$ext = '.' . $m[1];
$name = substr($name, 0, strlen($name) - strlen($m[0]));
}
if ($checkNum && preg_match('/(' . $suffix . ')(\\d*)$/i', $name, $m)) {
$i = (int) $m[2];
$name = substr($name, 0, strlen($name) - strlen($m[2]));
} else {
$i = 1;
$name .= $suffix;
}
$max = $i + 100000;
while ($i <= $max) {
$n = $name . ($i > 0 ? $i : '') . $ext;
if (!$this->stat($this->_joinPath($dir, $n))) {
$this->clearcache();
return $n;
}
$i++;
}
return $name . md5($dir) . $ext;
}