149 lines
5.8 KiB
PHP
149 lines
5.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This is NOT a freeware, use is subject to license terms
|
|
* 应用名称: 修改用户名 5.4.0
|
|
* 下载地址: https://addon.dismall.com/plugins/k_gaiming.html
|
|
* 应用开发者: Discuz!扩展中心
|
|
* 开发者QQ: 1608304093
|
|
* 更新日期: 202505311944
|
|
* 授权域名: www.shitangsweet.com
|
|
* 授权码: 2025053119aA5zhH76A0
|
|
* 未经应用程序开发者/所有者的书面许可,不得进行反向工程、反向汇编、反向编译等,不得擅自复制、修改、链接、转载、汇编、发表、出版、发展与之有关的衍生产品、作品等
|
|
*/
|
|
|
|
if (!defined('IN_DISCUZ')) {
|
|
exit('Access Denied');
|
|
}
|
|
if(!$_G['uid']){
|
|
showmessage('to_login', '', array(), array('showmsg' => true,'login' => 1));
|
|
}
|
|
|
|
$kgaiming = $_G['cache']['plugin']['k_gaiming'];
|
|
$kgaiming['usergroups'] = unserialize($kgaiming['usergroups']);
|
|
$kgaiming['creditunit'] = $kgaiming['creditunit'] ? $kgaiming['creditunit'] : 2;
|
|
foreach ($kgaiming['usergroups'] as $k => $v){
|
|
$grouptitle[] = $_G['cache']['usergroups'][$v]['grouptitle'];
|
|
}
|
|
$allowgroup['num'] = count($grouptitle);
|
|
$c = getuserprofile('extcredits'.$kgaiming['creditunit']);
|
|
|
|
$isAppbyme = stripos($_SERVER['HTTP_USER_AGENT'], 'Appbyme') !== false ? true : false;
|
|
$isMagapp = stripos($_SERVER['HTTP_USER_AGENT'], 'Magapp') !== false ? true : false;
|
|
$isQFapp = stripos($_SERVER['HTTP_USER_AGENT'], 'QianFan') !== false ? true : false;
|
|
$isWechat = stripos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ? true : false;
|
|
$isQQapp = stripos($_SERVER['HTTP_USER_AGENT'], 'QQ') !== false ? true : false;
|
|
$isInapp = $isAppbyme || $isMagapp || $isQFapp || $isWechat || $isQQapp;
|
|
|
|
require_once libfile('function/core', 'plugin/k_gaiming');
|
|
require_once libfile('data/field', 'plugin/k_gaiming');
|
|
|
|
$re = '';
|
|
$hash = formhash();
|
|
|
|
if(submitcheck('formhash')){
|
|
if($extend['wsq'] && defined('IN_MOBILE')){
|
|
require_once libfile('extend/mobile', 'plugin/k_gaiming');
|
|
}else{
|
|
if(!in_array($_G['member']['groupid'], $kgaiming['usergroups'])){
|
|
showmessage(lang('plugin/k_gaiming', 'notp'));
|
|
}
|
|
$lastlog = DB::fetch_first("SELECT * FROM ".DB::table("plugin_k_gaiming_log")." WHERE uid='".$_G['uid']."' ORDER BY dateline DESC LIMIT 1");
|
|
if($lastlog['dateline'] && ($_G['timestamp'] - $lastlog['dateline'] < 60*60*$kgaiming['jianxie']) ){
|
|
showmessage(lang('plugin/k_gaiming', 'notp2').$kgaiming['jianxie'].lang('plugin/k_gaiming', 'notp2_unit'));
|
|
}
|
|
if($kgaiming['maxtimes']){
|
|
$times = DB::result_first("SELECT count(*) FROM ".DB::table("plugin_k_gaiming_log")." WHERE uid='".$_G['uid']."'");
|
|
if($times >= $kgaiming['maxtimes']){
|
|
showmessage(lang('plugin/k_gaiming', 'overmaxtimes'));
|
|
}
|
|
}
|
|
loaducenter();
|
|
$oldusername = $_G['username'];
|
|
$olduserid = $_G['uid'];
|
|
if($_G['charset'] == 'gbk'){
|
|
$newusername = addslashes(dhtmlspecialchars($_GET['newname'],ENT_COMPAT,'GB2312'));
|
|
}else{
|
|
$newusername = addslashes(dhtmlspecialchars($_GET['newname'],ENT_COMPAT,'utf-8'));
|
|
}
|
|
if ($newusername == '') {
|
|
$re = lang('plugin/k_gaiming', 'nonewusername');
|
|
} else {
|
|
$censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($_G['setting']['censoruser'] = trim($_G['setting']['censoruser'])), '/')).')$/i';
|
|
if($_G['setting']['censoruser'] && @preg_match($censorexp, $newusername)) {
|
|
showmessage('profile_username_protect');
|
|
}
|
|
$check = uc_user_checkname($newusername);
|
|
$error_info = array(
|
|
'-1' => lang('plugin/k_gaiming', 'error_1'),
|
|
'-2' => lang('plugin/k_gaiming', 'error_2'),
|
|
'-3' => lang('plugin/k_gaiming', 'error_3')
|
|
);
|
|
if ($check != 1) {
|
|
$re = $error_info[$check];
|
|
}else{
|
|
if($kgaiming['creditunit'] && $kgaiming['creditnum']){
|
|
if($kgaiming['creditnum'] && $c < $kgaiming['creditnum']){
|
|
showmessage(lang('plugin/k_gaiming', 'nocredit'));
|
|
}
|
|
}
|
|
if($kgaiming['unsettables']){
|
|
$tables = explode("\n", $kgaiming['unsettables']);
|
|
foreach($tables as $table){
|
|
unset($dz_update_field[$table]);
|
|
}
|
|
}
|
|
changename($olduserid, $newusername, $dz_update_field);
|
|
changename_for_uc($olduserid, $newusername, $uc_update_field);
|
|
|
|
if($kgaiming['tables']){
|
|
$tables = explode("\n", $kgaiming['tables']);
|
|
foreach($tables as $value){
|
|
$table = explode(",", $value);
|
|
if($table[0]){
|
|
$tablelist[$table[0]] = array('uid' => $table[1], 'username' => $table[2]);
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach($tablelist as $table => $v) {
|
|
DB::query('UPDATE %t SET '.$v['username'].'=%s WHERE '.$v['uid'].'=%d', array($table, $newusername, $olduserid), 'SILENT');
|
|
}
|
|
|
|
if($kgaiming['creditunit'] && $kgaiming['creditnum']){
|
|
updatemembercount($_G['uid'], array('extcredits'.$kgaiming['creditunit'] => '-'.$kgaiming['creditnum']), true, 'KGM', $_G['uid'], '', lang('plugin/k_gaiming', 'title'));
|
|
}
|
|
$logdata = array(
|
|
'uid' => $_G['uid'],
|
|
'creditunit' => $kgaiming['creditunit'],
|
|
'creditnum' => $kgaiming['creditnum'],
|
|
'oldname' => addslashes($oldusername),
|
|
'newname' => addslashes($newusername),
|
|
'dateline' => $_G['timestamp'],
|
|
);
|
|
DB::insert('plugin_k_gaiming_log', $logdata);
|
|
C::memory()->clear();
|
|
$re = '<font color="green">'.lang('plugin/k_gaiming', 'success').'</font>';
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
@include_once DISCUZ_ROOT.'./source/discuz_version.php';
|
|
if($kgaiming['mobile_header'] && defined('IN_MOBILE')){
|
|
include template('k_gaiming:k_gaiming');
|
|
}
|
|
}
|
|
|
|
function changename($olduid = 0, $newname = '', $dz_update_field){
|
|
foreach ($dz_update_field as $table => $conf) {
|
|
DB::query("UPDATE ".DB::table($table)." SET `".$conf['name']."`=%s WHERE `".$conf['id']."`=%d", array($newname, $olduid));
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function changename_for_uc($olduid = 0, $newname = '', $uc_update_field){
|
|
foreach ($uc_update_field as $table => $conf) {
|
|
DB::query("UPDATE ".UC_DBTABLEPRE.$table." SET `".$conf['name']."`=%s WHERE `".$conf['id']."`=%d", array($newname, $olduid));
|
|
}
|
|
return true;
|
|
} |