/** * Para insertar un nuevo registro, debo pasar la ruta de * una imagen válida (puede ser de un archivo local o uno remoto con http://...) */ public static function INSERT($image_path) { // Compruebo si el archivo es en realidad una imagen: //$finfo = finfo_open(FILEINFO_MIME_TYPE); //$mime = finfo_file($finfo, $image_path); $temp_hash = md5(microtime()); Rack::Write('temp', $temp_hash, $image_path); $temp_path = Rack::Path('temp', $temp_hash); $is = getimagesize($temp_path); $mime = $is['mime']; switch ($mime) { case 'image/jpeg': $gd = @imagecreatefromjpeg($temp_path); break; case 'image/png': $gd = @imagecreatefrompng($temp_path); break; case 'image/gif': $gd = @imagecreatefromgif($temp_path); break; case 'image/bmp': $gd = @imagecreatefrombmp($temp_path); break; default: return null; } if (is_resource($gd)) { $width = imagesx($gd); $height = imagesy($gd); $hash = md5_file($temp_path); $list = Image::SELECT("Hash='" . Database::escape($hash) . "'"); if (count($list)) { // La imagen ya existe :S $image = $list[0]; $image->_setCounter($image->getCounter() + 1); } else { // Creo un nuevo registro de imagen :) $image = parent::INSERT(); $image->_setWidth($width); $image->_setHeight($height); $image->_setMime($mime); $image->_setHash($hash); $image->_setSize(@filesize($temp_path)); $image->_setCounter(1); // Copiar imagen a la carpeta de imágenes con el id de $image->getId(); (o con el hash) Rack::Write('img', md5($image->ID()), $temp_path); } Rack::Remove('temp', $temp_hash); return $image; } else { // Error al abrir la imagen Rack::Remove('temp', $temp_hash); return null; } }
/** * Para insertar un nuevo registro, debo pasar la ruta de * un archivo (puede ser de un archivo local o uno remoto con http://...) */ public static function INSERT($file_path, $mime) { $hash = md5_file($file_path); $list = File::SELECT("Hash='" . Database::escape($hash) . "'"); if (count($list)) { $file = $list[0]; $file->_setCounter($file->getCounter() + 1); } else { $file = parent::INSERT(); $file->_setMime($mime); $file->_setHash($hash); $file->_setSize(filesize($file_path)); $file->_setCounter(1); $file->setUser(Session::getUser()); $file->setTimestamp(time()); Rack::Write('file', md5($file->ID()), $file_path); $file->updateSearchIndex(); } return $file; }