summaryrefslogtreecommitdiffstats
path: root/core/avatar/controller.php
diff options
context:
space:
mode:
authorkondou <kondou@ts.unde.re>2013-08-26 16:46:55 +0200
committerkondou <kondou@ts.unde.re>2013-08-26 16:46:55 +0200
commit31736a1df36745467ad176ee1ffe442b87546012 (patch)
tree5d65ed5f890abc9c1e275dd382d037f3f52031d4 /core/avatar/controller.php
parent9a8908b643c69451118ab76ca36e5fa0e704bd0a (diff)
downloadnextcloud-server-31736a1df36745467ad176ee1ffe442b87546012.tar.gz
nextcloud-server-31736a1df36745467ad176ee1ffe442b87546012.zip
Have a controller instead ofo avatar.php and fix some cropper-design
Diffstat (limited to 'core/avatar/controller.php')
-rw-r--r--core/avatar/controller.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/core/avatar/controller.php b/core/avatar/controller.php
new file mode 100644
index 00000000000..cd51810e0e0
--- /dev/null
+++ b/core/avatar/controller.php
@@ -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;
+ }
+}