Blame view

sources/lib/private/avatar.php 2.19 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  <?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.
   */
  
  /**
   * This class gets and sets users avatars.
   */
  
  class OC_Avatar implements \OCP\IAvatar {
  
  	private $view;
  
  	/**
6d9380f96   Cédric Dupont   Update sources OC...
18
19
  	 * constructor
  	 * @param string $user user to do avatar-management with
31b7f2792   Kload   Upgrade to ownclo...
20
21
22
23
24
25
  	*/
  	public function __construct ($user) {
  		$this->view = new \OC\Files\View('/'.$user);
  	}
  
  	/**
6d9380f96   Cédric Dupont   Update sources OC...
26
27
  	 * get the users avatar
  	 * @param int $size size in px of the avatar, avatars are square, defaults to 64
31b7f2792   Kload   Upgrade to ownclo...
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  	 * @return boolean|\OC_Image containing the avatar or false if there's no image
  	*/
  	public function get ($size = 64) {
  		if ($this->view->file_exists('avatar.jpg')) {
  			$ext = 'jpg';
  		} elseif ($this->view->file_exists('avatar.png')) {
  			$ext = 'png';
  		} else {
  			return false;
  		}
  
  		$avatar = new OC_Image();
  		$avatar->loadFromData($this->view->file_get_contents('avatar.'.$ext));
  		$avatar->resize($size);
  		return $avatar;
  	}
  
  	/**
6d9380f96   Cédric Dupont   Update sources OC...
46
47
  	 * sets the users avatar
  	 * @param \OC_Image|resource|string $data OC_Image, imagedata or path to set a new avatar
31b7f2792   Kload   Upgrade to ownclo...
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  	 * @throws Exception if the provided file is not a jpg or png image
  	 * @throws Exception if the provided image is not valid
  	 * @throws \OC\NotSquareException if the image is not square
  	 * @return void
  	*/
  	public function set ($data) {
  		if($data instanceOf OC_Image) {
  			$img = $data;
  			$data = $img->data();
  		} else {
  			$img = new OC_Image($data);
  		}
  		$type = substr($img->mimeType(), -3);
  		if ($type === 'peg') {
  			$type = 'jpg';
  		}
  		if ($type !== 'jpg' && $type !== 'png') {
  			$l = \OC_L10N::get('lib');
  			throw new \Exception($l->t("Unknown filetype"));
  		}
  
  		if (!$img->valid()) {
  			$l = \OC_L10N::get('lib');
  			throw new \Exception($l->t("Invalid image"));
  		}
  
  		if (!($img->height() === $img->width())) {
  			throw new \OC\NotSquareException();
  		}
  
  		$this->view->unlink('avatar.jpg');
  		$this->view->unlink('avatar.png');
  		$this->view->file_put_contents('avatar.'.$type, $data);
  	}
  
  	/**
6d9380f96   Cédric Dupont   Update sources OC...
84
  	 * remove the users avatar
31b7f2792   Kload   Upgrade to ownclo...
85
86
87
88
89
90
91
  	 * @return void
  	*/
  	public function remove () {
  		$this->view->unlink('avatar.jpg');
  		$this->view->unlink('avatar.png');
  	}
  }