Files
web-discuz/uc_client/extend_client.php
2025-06-27 21:04:18 +08:00

141 lines
5.1 KiB
PHP
Executable File

<?php
/*
[NOTICE]
This file is NOT part of UCenter!
Developers should make their own extensions to handle UCenter notifications.
*/
(defined('IN_UC') || defined('IN_API')) or exit('Access denied');
if(!defined('API_RETURN_SUCCEED')) {
define('API_RETURN_SUCCEED', '1');
define('API_RETURN_FAILED', '-1');
define('API_RETURN_FORBIDDEN', '-2');
}
class uc_note_handler {
public static function deleteuser($get, $post) {
global $_G;
$uids = str_replace("'", '', stripslashes($get['ids']));
$ids = array();
$ids = array_keys(C::t('common_member')->fetch_all($uids));
require_once DISCUZ_ROOT.'./source/function/function_delete.php';
$ids && deletemember($ids);
return API_RETURN_SUCCEED;
}
public static function renameuser($get, $post) {
global $_G;
$len = strlen($get['newusername']);
if($len > 22 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&\(\)']/is", $get['newusername'])) {
return API_RETURN_FAILED;
}
$tables = array(
'common_block' => array('id' => 'uid', 'name' => 'username'),
'common_invite' => array('id' => 'fuid', 'name' => 'fusername'),
'common_member_verify_info' => array('id' => 'uid', 'name' => 'username'),
'common_mytask' => array('id' => 'uid', 'name' => 'username'),
'common_report' => array('id' => 'uid', 'name' => 'username'),
'forum_thread' => array('id' => 'authorid', 'name' => 'author'),
'forum_activityapply' => array('id' => 'uid', 'name' => 'username'),
'forum_groupuser' => array('id' => 'uid', 'name' => 'username'),
'forum_pollvoter' => array('id' => 'uid', 'name' => 'username'),
'forum_post' => array('id' => 'authorid', 'name' => 'author'),
'forum_postcomment' => array('id' => 'authorid', 'name' => 'author'),
'forum_ratelog' => array('id' => 'uid', 'name' => 'username'),
'home_album' => array('id' => 'uid', 'name' => 'username'),
'home_blog' => array('id' => 'uid', 'name' => 'username'),
'home_clickuser' => array('id' => 'uid', 'name' => 'username'),
'home_docomment' => array('id' => 'uid', 'name' => 'username'),
'home_doing' => array('id' => 'uid', 'name' => 'username'),
'home_feed' => array('id' => 'uid', 'name' => 'username'),
'home_friend' => array('id' => 'fuid', 'name' => 'fusername'),
'home_friend_request' => array('id' => 'fuid', 'name' => 'fusername'),
'home_notification' => array('id' => 'authorid', 'name' => 'author'),
'home_pic' => array('id' => 'uid', 'name' => 'username'),
'home_poke' => array('id' => 'fromuid', 'name' => 'fromusername'),
'home_share' => array('id' => 'uid', 'name' => 'username'),
'home_show' => array('id' => 'uid', 'name' => 'username'),
'home_specialuser' => array('id' => 'uid', 'name' => 'username'),
'home_visitor' => array('id' => 'vuid', 'name' => 'vusername'),
'portal_article_title' => array('id' => 'uid', 'name' => 'username'),
'portal_comment' => array('id' => 'uid', 'name' => 'username'),
'portal_topic' => array('id' => 'uid', 'name' => 'username'),
'portal_topic_pic' => array('id' => 'uid', 'name' => 'username'),
);
if(!C::t('common_member')->update($get['uid'], array('username' => $get['newusername'])) && isset($_G['setting']['membersplit'])){
C::t('common_member_archive')->update($get['uid'], array('username' => $get['newusername']));
}
loadcache("posttableids");
if($_G['cache']['posttableids']) {
$posttableids = is_array($_G['cache']['posttableids']) ? $_G['cache']['posttableids'] : array(0);
foreach($posttableids AS $tableid) {
$tables[getposttable($tableid)] = array('id' => 'authorid', 'name' => 'author');
}
}
foreach($tables as $table => $conf) {
DB::query("UPDATE ".DB::table($table)." SET `{$conf['name']}`='{$get['newusername']}' WHERE `{$conf['id']}`='{$get['uid']}'");
}
return API_RETURN_SUCCEED;
}
public static function updatepw($get, $post) {
global $_G;
$username = $get['username'];
$newpw = md5(time().rand(100000, 999999));
$uid = 0;
if(($uid = C::t('common_member')->fetch_uid_by_username($username))) {
$ext = '';
} elseif(($uid = C::t('common_member_archive')->fetch_uid_by_username($username))) {
$ext = '_archive';
}
if($uid) {
C::t('common_member'.$ext)->update($uid, array('password' => $newpw));
}
return API_RETURN_SUCCEED;
}
public static function checkavatar($get, $post) {
global $_G;
$uid = $get['uid'];
$size = $get['size'];
$type = $get['type'];
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$uid = abs(intval($uid));
$uid = sprintf("%09d", $uid);
$dir1 = substr($uid, 0, 3);
$dir2 = substr($uid, 3, 2);
$dir3 = substr($uid, 5, 2);
$typeadd = $type == 'real' ? '_real' : '';
if(!UC_AVTPATH) {
$avtpath = './data/avatar/';
} else {
$avtpath = str_replace('..', '', UC_AVTPATH);
}
$avatarfile = realpath(DISCUZ_ROOT.$avtpath).'/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2).$typeadd."_avatar_$size.jpg";
if(file_exists($avatarfile)) {
return API_RETURN_SUCCEED;
} else {
return API_RETURN_FAILED;
}
}
public static function loadavatarpath() {
global $_G;
if(!defined('UC_DELAVTDIR')) {
define('UC_DELAVTDIR', DISCUZ_ROOT.$_G['setting']['avatarpath'].'/');
}
}
}