You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

86 lines
3.0 KiB

<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if (!defined('IN_DZZ')) {
exit('Access Denied');
}
Hook::listen('check_login');
if (submitcheck('avatarsubmit')) {
if ($_GET['imagedata']) $success = upbase64($_GET['imagedata'], $_G['uid']);
if ($_GET['aid']) IO::delete('attach::' . intval($_GET['aid']));
if ($success) exit(json_encode(array('msg' => 'success')));
else exit(json_encode(array('error' => '头像保存错误,请稍候重试')));
showmessage('do_success', 'user.php?mod=profile&op=avatar');
} elseif ($_GET['do'] == 'imageupload') {
include libfile('class/uploadhandler');
$options = array('accept_file_types' => '/\.(gif|jpe?g|png)$/i',
'upload_dir' => $_G['setting']['attachdir'] . 'cache/',
'upload_url' => $_G['setting']['attachurl'] . 'cache/',
'thumbnail' => array('max-width' => 512, 'max-height' => 512)
);
$upload_handler = new uploadhandler($options);
exit();
}
$user = C::t('user')->get_user_by_uid($_G['uid']);
if (empty($user['avatarstatus']) && dzz_check_avatar($_G['uid'], 'middle')) {
C::t('user')->update($_G['uid'], array('avatarstatus' => '1'));
}
$navtitle = lang('Modify_the_picture');
include template("avatar");
function dzz_check_avatar($uid, $size = 'middle', $type = 'virtual') {
global $_G;
$url = $_G['siteurl'] . "avatar.php?uid=$uid&size=$size&type=$type&check_file_exists=1";
$res = dfsockopen($url, 500000, '', '', TRUE, '', 20);
if ($res == 1) {
return 1;
} else {
return 0;
}
}
function upBase64($base64Data, $uid) {
$img = base64_decode(str_replace('data:image/png;base64,', '', $base64Data));
$temp = getglobal('setting/attachdir') . 'cache/' . random(5) . '.png';
//移动文件
if (!(file_put_contents($temp, $img))) { //移动失败
return false;
} else { //移动成功,生成3种尺寸头像
$home = get_home($uid);
if (!is_dir(DZZ_ROOT . './data/avatar/' . $home)) {
set_home($uid, DZZ_ROOT . './data/avatar/');
}
$bigavatarfile = DZZ_ROOT . './data/avatar/' . get_avatar($uid, 'big');
$middleavatarfile = DZZ_ROOT . './data/avatar/' . get_avatar($uid, 'middle');
$smallavatarfile = DZZ_ROOT . './data/avatar/' . get_avatar($uid, 'small');
include_once libfile('class/image');
$image = new image();
$success = 0;
if ($thumb = $image->Thumb($temp, $bigavatarfile, 200, 200, 1)) {
$success++;
}
if ($thumb = $image->Thumb($temp, $middleavatarfile, 120, 120, 1)) {
$success++;
}
if ($thumb = $image->Thumb($temp, $smallavatarfile, 48, 48, 1)) {
$success++;
}
if ($success > 2) {
C::t('user')->update($uid, array('avatarstatus' => '1'));
}
@unlink($temp);
return $success;
}
}