friendica-addons/jappixmini/jappix/php/avatar-upload.php
2012-04-18 01:12:24 +02:00

119 lines
2.2 KiB
PHP

<?php
/*
Jappix - An open social platform
This is the avatar upload PHP script for Jappix
-------------------------------------------------
License: AGPL
Author: Vanaryon
Last revision: 27/05/11
*/
// PHP base
define('JAPPIX_BASE', '..');
// Get the needed files
require_once('./functions.php');
require_once('./read-main.php');
require_once('./read-hosts.php');
// Optimize the page rendering
hideErrors();
compressThis();
// Not allowed for a special node
if(isStatic() || isUpload())
exit;
// Set a special XML header
header('Content-Type: text/xml; charset=utf-8');
// No file uploaded?
if((!isset($_FILES['file']) || empty($_FILES['file'])) || (!isset($_POST['id']) || empty($_POST['id'])))
exit(
'<jappix xmlns=\'jappix:avatar:post\' id=\'0\'>
<error>bad-request</error>
</jappix>'
);
// Get the POST vars
$id = $_POST['id'];
$tmp_filename = $_FILES['file']['tmp_name'];
$old_filename = $_FILES['file']['name'];
// Get the file extension
$ext = getFileExt($old_filename);
// Hash it!
$filename = md5($old_filename.time()).$ext;
// Define some vars
$path = JAPPIX_BASE.'/store/avatars/'.$filename;
// Define MIME type
if($ext == 'jpg')
$ext = 'jpeg';
$mime = 'image/'.$ext;
// Unsupported file extension?
if(!preg_match('/^(jpeg|png|gif)$/i', $ext))
exit(
'<jappix xmlns=\'jappix:avatar:post\' id=\''.$id.'\'>
<error>forbidden-type</error>
</jappix>'
);
// File upload error?
if(!is_uploaded_file($tmp_filename) || !move_uploaded_file($tmp_filename, $path))
exit(
'<jappix xmlns=\'jappix:file:post\' id=\''.$id.'\'>
<error>move-error</error>
</jappix>'
);
// Resize the image?
if(!function_exists('gd_info') || resizeImage($path, $ext, 96, 96)) {
try {
// Encode the file
$binval = base64_encode(file_get_contents($path));
// Remove the file
unlink($path);
exit(
'<jappix xmlns=\'jappix:file:post\' id=\''.$id.'\'>
<type>'.$mime.'</type>
<binval>'.$binval.'</binval>
</jappix>'
);
}
catch(Exception $e) {
// Remove the file
unlink($path);
exit(
'<jappix xmlns=\'jappix:file:post\' id=\''.$id.'\'>
<error>server-error</error>
</jappix>'
);
}
}
// Remove the file
unlink($path);
// Something went wrong!
exit(
'<jappix xmlns=\'jappix:file:post\' id=\''.$id.'\'>
<error>service-unavailable</error>
</jappix>'
);
?>