parent
9a8908b643
commit
31736a1df3
@ -1,83 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
require_once 'lib/base.php'; |
|
||||||
|
|
||||||
if (!\OC_User::isLoggedIn()) { |
|
||||||
header("HTTP/1.0 403 Forbidden"); |
|
||||||
\OC_Template::printErrorPage("Permission denied"); |
|
||||||
} |
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === "GET") { |
|
||||||
if (isset($_GET['user'])) { |
|
||||||
//SECURITY TODO does this fully eliminate directory traversals? |
|
||||||
$user = stripslashes($_GET['user']); |
|
||||||
} else { |
|
||||||
exit(); |
|
||||||
} |
|
||||||
|
|
||||||
if (isset($_GET['size']) && ((int)$_GET['size'] > 0)) { |
|
||||||
$size = (int)$_GET['size']; |
|
||||||
if ($size > 2048) { |
|
||||||
$size = 2048; |
|
||||||
} |
|
||||||
} else { |
|
||||||
$size = 64; |
|
||||||
} |
|
||||||
|
|
||||||
$image = \OC_Avatar::get($user, $size); |
|
||||||
|
|
||||||
if ($image instanceof \OC_Image) { |
|
||||||
$image->show(); |
|
||||||
} elseif ($image === false) { |
|
||||||
OC_JSON::success(array('user' => $user, 'size' => $size)); |
|
||||||
} |
|
||||||
} elseif ($_SERVER['REQUEST_METHOD'] === "POST") { |
|
||||||
$user = OC_User::getUser(); |
|
||||||
|
|
||||||
// Select an image from own files |
|
||||||
if (isset($_POST['path'])) { |
|
||||||
$path = stripslashes($_POST['path']); |
|
||||||
$avatar = OC::$SERVERROOT.'/data/'.$user.'/files'.$path; |
|
||||||
} |
|
||||||
|
|
||||||
if (isset($_POST['crop'])) { |
|
||||||
$crop = json_decode($_POST['crop'], true); |
|
||||||
if (!isset($path)) { |
|
||||||
// TODO get path to temporarily saved uploaded-avatar |
|
||||||
} |
|
||||||
$image = new \OC_Image($avatar); |
|
||||||
$image->crop($x, $y, $w, $h); |
|
||||||
$avatar = $image->data(); |
|
||||||
} |
|
||||||
|
|
||||||
// Upload a new image |
|
||||||
if (!empty($_FILES)) { |
|
||||||
$files = $_FILES['files']; |
|
||||||
if ($files['error'][0] === 0) { |
|
||||||
$avatar = file_get_contents($files['tmp_name'][0]); |
|
||||||
unlink($files['tmp_name'][0]); |
|
||||||
// TODO make the tmp_name reusable, if the uploaded avatar is not square |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
try { |
|
||||||
\OC_Avatar::set($user, $avatar); |
|
||||||
OC_JSON::success(); |
|
||||||
} catch (\OC\NotSquareException $e) { |
|
||||||
$tmpname = \OC_Util::generate_random_bytes(10); |
|
||||||
// TODO Save the image temporarily here |
|
||||||
// TODO add a cronjob that cleans up stale tmpimages |
|
||||||
OC_JSON::error(array("data" => array("message" => "notsquare", "tmpname" => $tmpname) )); |
|
||||||
} catch (\Exception $e) { |
|
||||||
OC_JSON::error(array("data" => array("message" => $e->getMessage()) )); |
|
||||||
} |
|
||||||
} elseif ($_SERVER['REQUEST_METHOD'] === "DELETE") { |
|
||||||
$user = OC_User::getUser(); |
|
||||||
|
|
||||||
try { |
|
||||||
\OC_Avatar::remove($user); |
|
||||||
OC_JSON::success(); |
|
||||||
} catch (\Exception $e) { |
|
||||||
OC_JSON::error(array("data" => array ("message" => $e->getMessage()) )); |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,88 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> |
||||||
|
* This file is licensed under the Affero General Public License version 3 or |
||||||
|
* later. |
||||||
|
* See the COPYING-README file. |
||||||
|
*/ |
||||||
|
|
||||||
|
class CoreAvatarController { |
||||||
|
public static function getAvatar($args) { |
||||||
|
if (!\OC_User::isLoggedIn()) { |
||||||
|
header("HTTP/1.0 403 Forbidden"); |
||||||
|
\OC_Template::printErrorPage("Permission denied"); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
$user = stripslashes($args['user']); |
||||||
|
$size = (int)$args['size']; |
||||||
|
if ($size > 2048) { |
||||||
|
$size = 2048; |
||||||
|
} |
||||||
|
// Undefined size |
||||||
|
elseif ($size === 0) { |
||||||
|
$size = 64; |
||||||
|
} |
||||||
|
|
||||||
|
$image = \OC_Avatar::get($user, $size); |
||||||
|
|
||||||
|
if ($image instanceof \OC_Image) { |
||||||
|
$image->show(); |
||||||
|
} elseif ($image === false) { |
||||||
|
\OC_JSON::success(array('user' => $user, 'size' => $size)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static function postAvatar($args) { |
||||||
|
$user = \OC_User::getUser(); |
||||||
|
|
||||||
|
if (isset($_POST['path'])) { |
||||||
|
$path = stripslashes($_POST['path']); |
||||||
|
$avatar = OC::$SERVERROOT.'/data/'.$user.'/files'.$path; |
||||||
|
} |
||||||
|
|
||||||
|
if (!empty($_FILES)) { |
||||||
|
$files = $_FILES['files']; |
||||||
|
if ($files['error'][0] === 0) { |
||||||
|
$avatar = file_get_contents($files['tmp_name'][0]); |
||||||
|
unlink($files['tmp_name'][0]); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
\OC_Avatar::set($user, $avatar); |
||||||
|
\OC_JSON::success(); |
||||||
|
} catch (\OC\NotSquareException $e) { |
||||||
|
// TODO move unfitting avatar to /datadir/$user/tmpavatar{png.jpg} here |
||||||
|
\OC_JSON::error(array("data" => array("message" => "notsquare") )); |
||||||
|
} catch (\Exception $e) { |
||||||
|
\OC_JSON::error(array("data" => array("message" => $e->getMessage()) )); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static function deleteAvatar($args) { |
||||||
|
$user = OC_User::getUser(); |
||||||
|
|
||||||
|
try { |
||||||
|
\OC_Avatar::remove($user); |
||||||
|
\OC_JSON::success(); |
||||||
|
} catch (\Exception $e) { |
||||||
|
\OC_JSON::error(array("data" => array ("message" => $e->getMessage()) )); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static function getTmpAvatar($args) { |
||||||
|
// TODO deliver /datadir/$user/tmpavatar.{png|jpg} here, filename may include a timestamp |
||||||
|
// TODO make a cronjob that cleans up the tmpavatar after it's older than 2 hours, should be run every hour |
||||||
|
$user = OC_User::getUser(); |
||||||
|
} |
||||||
|
|
||||||
|
public static function postCroppedAvatar($args) { |
||||||
|
$user = OC_User::getUser(); |
||||||
|
$crop = json_decode($_POST['crop'], true); |
||||||
|
$image = new \OC_Image($avatar); |
||||||
|
$image->crop($x, $y, $w, $h); |
||||||
|
$avatar = $image->data(); |
||||||
|
$cropped = true; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue