En primer lugar decir que llevo la cabeza que me explota, diez días dándole vueltas al asunto a ver si consigo crear el script que necesito y no hay manera!!
Supongo que lógicamente esto es debido a que me faltan conocimientos.
Me gustaría plantear aquí a los amigos de forosdelweb la meta que quiero alcanzar con el script a ver si me sugieren algún método sencillo.
Tengo un directorio imágenes donde almaceno archivos que tienen cierta parte de su nombre en común:
Código:
Imagen 1_fecha_autor_idioma.jpg Imagen 1_fecha_autor_idioma_HQ.jpg Imagen 1_fecha_autor_idioma_LQ.jpg
Y aquí va la función de mi clase Files que he planteado hasta ahora:
Código PHP:
public function getFiles($dir=null, $recurse=false, $depth=false)
{
if ($dir == null)
{
$dir = $this->dir;
if(substr($dir, -1) != "/") $dir .= "/";
}
//abro el directorio
$d = @dir($dir) or die("Failed opening directory $dir for reading");
//recorro el directorio obteniendo las imagenes
while(false !== ($entry = $d->read())) {
if($entry[0] == ".") continue;
if(!is_dir("$dir$entry")) {
$file = $dir.$entry;
$pathInfo = pathinfo($file);
//obtengo todos los datos que necesito de cada una de las imagenes
$fileBaseName = $pathInfo['basename'];
$fileName = $pathInfo['filename'];
$fileDirName = $pathInfo['dirname'];
$fileExtension = $pathInfo['extension'];
$fileSize = $this->sizeFormat(filesize($file));
$fileLastMod = filemtime($file);
//[0] = Name, [1] = Date, [2] = Author, [3] = Lang, [4] = Quality
//obtengo el nombre raiz de la imagen, es decir, sin la parte que indica la calidad (HQ, LQ)
$fileInfo = explode('_', $fileName);
$fileInfo = $fileInfo[0].'_'.$fileInfo[1].'_'.$fileInfo[2].'_'.$fileInfo[3];
//Si el nombre raiz de la imagen actual no está en el array $this->files entonces la guardo en dicho array
if (!in_array($fileInfo, $this->files))
{
$this->files[] = array($fileInfo => array(
'name' => $fileName,
'extension' => $fileExtension,
'fullName' => $fileBaseName,
'size' => $fileSize,
'lastMod' => $fileLastMod,
'dir' => $fileDirName
)
);
}
}
}
$d->close();
print_r($this->files);
}
En resumen, lo que persigo es agrupar las imágenes con nombre similar pero diferenciando las que son HQ y LQ (alta y baja calidad) de manera que luego pueda mostrar la imagen sin calidad como un thumnail y debajo de dicho thumbnail enlaces de descarga a su HQ y LQ.
Espero que se haya entendido el problema, estaré por aquí para resolver cualquier cuestión que tengan acerca de dicho script.
Gracias y un saludo.