prepare($sql); try { $sth->execute($params); } catch (PDOexception $e) { $g_error->Add('SQL-Error: '. $e->getMessage()); $g_error->Add($sql); $g_error->Add(print_r($params, true)); } return $newsize; } function file_get_docname($docid, $doctype, $extension) { global $g_doc_typemap; return sprintf('%s-%06d.%s', $g_doc_typemap[$doctype], $docid, $extension); } function dir_get_size($path) { // gets the size of a directory in bytes recursively $total = 0; $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS) ); foreach ($iterator as $file){ $total += $file->getSize(); } return $total; } function image_scale($imagefile, $mimetype, $width, $height, $factor) { // scales down image in place // returns size in bytes for new scaled image or -1 in case of error global $g_message, $g_error; if ($factor <= 0 || $factor >= 1) { $g_error->Add("Internal error: Invalid image scale factor"); return -1; } $width = (int)($width * $factor); $height = (int)($height * $factor); if ($width < 1 || $height < 1) { $g_error->Add("Internal error: Scaled image dimensions are too small"); return -1; } if ($mimetype == 'image/jpeg') { $orig = imagecreatefromjpeg($imagefile); if ($orig === false) { $g_error->Add("Internal error: imagecreatefromjpeg failed"); return -1; } $scaled = imagescale($orig, $width, $height, IMG_BICUBIC); // TODO IMG_BICUBIC_FIXED? if ($scaled === false) { imagedestroy($orig); $g_error->Add("Internal error: jpeg imagescale failed"); return -1; } if (!imagejpeg($scaled, $imagefile, 85)) { imagedestroy($scaled); imagedestroy($orig); $g_error->Add("Internal error: imagejpeg failed"); return -1; } } else if ($mimetype == 'image/png') { $orig = imagecreatefrompng($imagefile); if ($orig === false) { $g_error->Add("Internal error: imagecreatefrompng failed"); return -1; } $scaled = imagescale($orig, $width, $height, IMG_BICUBIC); if ($scaled === false) { imagedestroy($orig); $g_error->Add("Internal error: png imagescale failed"); return -1; } // Preserve PNG transparency imagealphablending($scaled, false); imagesavealpha($scaled, true); if (!imagepng($scaled, $imagefile, 9)) { imagedestroy($scaled); imagedestroy($orig); $g_error->Add("Internal error: imagepng failed"); return -1; } } else { $g_error->Add(sprintf(_('Internal error: Unknown mimetype %s!'), $mimetype)); return -1; } $g_message->add(sprintf(_('Image scaled down to %dx%d'), $width, $height)); imagedestroy($scaled); imagedestroy($orig); clearstatcache(true, $imagefile); $size = filesize($imagefile); if ($size === false) { $g_error->Add("Internal error: filesize failed"); return -1; } return $size; }