1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Created by Gorlum 15.08.2019 6:16 |
4
|
|
|
*/ |
5
|
|
|
|
6
|
|
|
namespace Old; |
7
|
|
|
|
8
|
|
|
use Exception; |
9
|
|
|
|
10
|
|
|
class Avatar { |
11
|
|
|
|
12
|
|
|
public static function sys_avatar_upload($subject_id, &$avatar_field, $prefix = 'avatar') { |
13
|
|
|
global $config, $lang, $user; |
14
|
|
|
|
15
|
|
|
try { |
16
|
|
|
$avatar_filename = $fullsize_filename = SN_ROOT_PHYSICAL . 'images/avatar/' . $prefix . '_' . $subject_id; |
17
|
|
|
$avatar_filename .= '.png'; |
18
|
|
|
$fullsize_filename .= '_full.png'; |
19
|
|
|
if (sys_get_param_int('avatar_remove')) { |
20
|
|
|
if (file_exists($avatar_filename) && !unlink($avatar_filename)) { |
21
|
|
|
throw new Exception($lang['opt_msg_avatar_error_delete'], ERR_ERROR); |
22
|
|
|
} |
23
|
|
|
$avatar_field = 0; |
24
|
|
|
throw new Exception($lang['opt_msg_avatar_removed'], ERR_NONE); |
25
|
|
|
} elseif ($_FILES['avatar']['size']) { |
26
|
|
|
if (!in_array($_FILES['avatar']['type'], array('image/gif', 'image/jpeg', 'image/jpg', 'image/pjpeg', 'image/png')) || $_FILES['avatar']['size'] > 204800) { |
27
|
|
|
throw new Exception($lang['opt_msg_avatar_error_unsupported'], ERR_WARNING); |
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
if ($_FILES['avatar']['error']) { |
31
|
|
|
throw new Exception(sprintf($lang['opt_msg_avatar_error_upload'], $_FILES['avatar']['error']), ERR_ERROR); |
32
|
|
|
} |
33
|
|
|
|
34
|
|
|
if (!($avatar_image = imagecreatefromstring(file_get_contents($_FILES['avatar']['tmp_name'])))) { |
35
|
|
|
throw new Exception($lang['opt_msg_avatar_error_unsupported'], ERR_WARNING); |
36
|
|
|
} |
37
|
|
|
|
38
|
|
|
$avatar_size = getimagesize($_FILES['avatar']['tmp_name']); |
39
|
|
|
$avatar_max_width = $config->avatar_max_width; |
40
|
|
|
$avatar_max_height = $config->avatar_max_height; |
41
|
|
|
if ($avatar_size[0] > $avatar_max_width || $avatar_size[1] > $avatar_max_height) { |
42
|
|
|
$aspect_ratio = min($avatar_max_width / $avatar_size[0], $avatar_max_height / $avatar_size[1]); |
43
|
|
|
$avatar_image_new = imagecreatetruecolor($avatar_size[0] * $aspect_ratio, $avatar_size[0] * $aspect_ratio); |
44
|
|
|
$result = imagecopyresized($avatar_image_new, $avatar_image, 0, 0, 0, 0, $avatar_size[0] * $aspect_ratio, $avatar_size[0] * $aspect_ratio, $avatar_size[0], $avatar_size[1]); |
|
|
|
|
45
|
|
|
imagedestroy($avatar_image); |
46
|
|
|
$avatar_image = $avatar_image_new; |
47
|
|
|
} |
48
|
|
|
|
49
|
|
|
if (file_exists($avatar_filename) && !unlink($avatar_filename)) { |
50
|
|
|
throw new Exception($lang['opt_msg_avatar_error_delete'], ERR_ERROR); |
51
|
|
|
} |
52
|
|
|
|
53
|
|
|
if (!imagepng($avatar_image, $avatar_filename, 9)) { |
|
|
|
|
54
|
|
|
throw new Exception($lang['opt_msg_avatar_error_writing'], ERR_ERROR); |
55
|
|
|
} |
56
|
|
|
|
57
|
|
|
$avatar_field = 1; |
58
|
|
|
imagedestroy($avatar_image); |
|
|
|
|
59
|
|
|
throw new Exception($lang['opt_msg_avatar_uploaded'], ERR_NONE); |
60
|
|
|
} |
61
|
|
|
} catch (Exception $e) { |
62
|
|
|
return array( |
63
|
|
|
'STATUS' => in_array($e->getCode(), array(ERR_NONE, ERR_WARNING, ERR_ERROR)) ? $e->getCode() : ERR_ERROR, |
64
|
|
|
'MESSAGE' => $e->getMessage() |
65
|
|
|
); |
66
|
|
|
} |
67
|
|
|
} |
68
|
|
|
|
69
|
|
|
} |
70
|
|
|
|