IMAGETYPE_GIF, 'jpg' => IMAGETYPE_JPEG, 'png' => IMAGETYPE_PNG);
// Define the error messages for bad uploads.
$upload_err = array(false,
"The uploaded file exceeds the upload_max_filesize
directive in php.ini
.",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.",
"The uploaded file was only partially uploaded.",
"No file was uploaded.",
"Missing a temporary folder.",
"Failed to write file to disk.");
$iuerror = false;
// Failing any single one of the following tests is fatal.
// A correct form post will pass this test.
if ( !isset($_POST['action']) || $_POST['action'] != 'save' || count($_FILES) != 1 || ! isset($_FILES['image']) || is_array($_FILES['image']['name']) )
$error = 'Invalid form submission. Only submit approved forms.';
// A successful upload will pass this test.
elseif ( $_FILES['image']['error'] > 0 )
$error = $upload_err[$_FILES['image']['error']];
// A non-empty file will pass this test.
elseif ( 0 == $_FILES['image']['size'] )
$error = 'File is empty. Please upload something more substantial.';
// A correct MIME category will pass this test. Full types are not consistent across browsers.
elseif ( ! 'image/' == substr($_FILES['image']['type'], 0, 6) )
$error = 'Bad MIME type submitted by your browser.';
// An acceptable file extension will pass this test.
elseif ( ! ( ( 0 !== preg_match('#\.?([^\.]*)$#', $_FILES['image']['name'], $matches) ) && ( $ext = strtolower($matches[1]) ) && array_key_exists($ext, $exts) ) )
$error = 'Bad file extension.';
// A valid uploaded file will pass this test.
elseif ( ! is_uploaded_file($_FILES['image']['tmp_name']) )
$error = 'Bad temp file. Try renaming the file and uploading again.';
// A valid image file will pass this test.
elseif ( function_exists('exif_imagetype') && $exts[$ext] != $imagetype = exif_imagetype($_FILES['image']['tmp_name']) )
$error = 'Bad image file. Try again, or try recreating it.';
// An image with at least one pixel will pass this test.
elseif ( ! ( ( $imagesize = getimagesize($_FILES['image']['tmp_name']) ) && $imagesize[0] > 1 && $imagesize[1] > 1 ) )
$error = 'The image has no pixels. Isn\'t that odd?';
// A writable uploads dir will pass this test.
elseif ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
$error = $uploads['error'];
if ( $error )
// Something wasn't right. Abort and never touch the temp file again.
die("$error Back to Image Uploading");
// Increment the file number until we have a unique file to save in $dir
$number = '';
$filename = $_FILES['image']['name'];
while ( file_exists($uploads['path'] . "/$filename") )
$filename = str_replace("$number.$ext", ++$number . ".$ext", $filename);
// Move the file to the uploads dir
$file = $uploads['path'] . "/$filename";
move_uploaded_file($_FILES['image']['tmp_name'], $file);
chmod($file, 0775);
// Compute the URL
$url = $uploads['url'] . "/$filename";
// Construct the object array
$object = array(
'post_title' => $imgtitle ? $imgtitle : $filename,
'post_content' => $descr,
'post_status' => 'object',
'post_parent' => $post,
'post_type' => $_FILES['image']['type'],
'guid' => $url
);
// Save the data
$id = wp_attach_object($object, $post);
// Generate the object's postmeta.
$imagesize = getimagesize($file);
$imagedata['width'] = $imagesize['0'];
$imagedata['height'] = $imagesize['1'];
if ( $imagedata['height'] < 96 && $imagedata['width'] < 128 ) {
$uheight = $imagedata['height'];
$uwidth = $imagedata['width'];
} elseif ( $imagedata['width'] / $imagedata['height'] > 4 / 3 ) {
$uwidth = 128;
$uheight = $imagedata['height'] / $imagedata['width'] * $uwidth;
} else {
$uheight = 96;
$uwidth = $imagedata['width'] / $imagedata['height'] * $uheight;
}
$imagedata['hwstring_small'] = "height='$uheight' width='$uwidth'";
$imagedata['file'] = $file;
if ( false == add_post_meta($id, 'imagedata', $imagedata) )
die("failed to add_post_meta");
header("Location: ".basename(__FILE__)."?post=$post&all=$all&action=view&last=true");
die;
case 'upload':
?>