First commit

This commit is contained in:
2025-06-18 10:24:27 +08:00
commit ebc39cd5dd
3873 changed files with 412712 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: admincp.inc.php 29364 2012-04-09 02:51:41Z monkey $
*/
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');
}
$Plang = $scriptlang['myrepeats'];
if($_GET['op'] == 'lock') {
$myrepeat = C::t('#myrepeats#myrepeats')->fetch_all_by_uid_username($_GET['uid'], $_GET['username']);
$lock = $myrepeat[0]['locked'];
$locknew = $lock ? 0 : 1;
C::t('#myrepeats#myrepeats')->update_locked_by_uid_username($_GET['uid'], $_GET['username'], $locknew);
ajaxshowheader();
echo $lock ? $Plang['normal'] : $Plang['lock'];
ajaxshowfooter();
} elseif($_GET['op'] == 'delete') {
C::t('#myrepeats#myrepeats')->delete_by_uid_usernames($_GET['uid'], $_GET['username']);
ajaxshowheader();
echo $Plang['deleted'];
ajaxshowfooter();
}
$ppp = 100;
$resultempty = FALSE;
$srchadd = $searchtext = $extra = $srchuid = '';
$page = max(1, intval($_GET['page']));
if(!empty($_GET['srchuid'])) {
$srchuid = intval($_GET['srchuid']);
$srchadd = "AND uid='$srchuid'";
} elseif(!empty($_GET['srchusername'])) {
$srchuid = C::t('common_member')->fetch_uid_by_username($_GET['srchusername']);
if($srchuid) {
$srchadd = "AND uid='$srchuid'";
} else {
$resultempty = TRUE;
}
} elseif(!empty($_GET['srchrepeat'])) {
$extra = '&srchrepeat='.rawurlencode($_GET['srchrepeat']);
$srchadd = "AND username='".addslashes($_GET['srchrepeat'])."'";
$searchtext = $Plang['search'].' "'.$_GET['srchrepeat'].'" '.$Plang['repeats'].'&nbsp;';
}
if($srchuid) {
$extra = '&srchuid='.$srchuid;
$member = getuserbyuid($srchuid);
$searchtext = $Plang['search'].' "'.$member['username'].'" '.$Plang['repeatusers'].'&nbsp;';
}
$statary = array(-1 => $Plang['status'], 0 => $Plang['normal'], 1 => $Plang['lock']);
$status = isset($_GET['status']) ? intval($_GET['status']) : -1;
if(isset($status) && $status >= 0) {
$srchadd .= " AND locked='$status'";
$searchtext .= $Plang['search'].$statary[$status].$Plang['statuss'];
}
if($searchtext) {
$searchtext = '<a href="'.ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=myrepeats&pmod=admincp">'.$Plang['viewall'].'</a>&nbsp'.$searchtext;
}
loadcache('usergroups');
showtableheader();
showformheader('plugins&operation=config&do='.$pluginid.'&identifier=myrepeats&pmod=admincp', 'repeatsubmit');
showsubmit('repeatsubmit', $Plang['search'], $lang['username'].': <input name="srchusername" value="'.htmlspecialchars($_GET['srchusername']).'" class="txt" />&nbsp;&nbsp;'.$Plang['repeat'].': <input name="srchrepeat" value="'.htmlspecialchars($_GET['srchrepeat']).'" class="txt" />', $searchtext);
showformfooter();
$statselect = '<select onchange="location.href=\''.ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=myrepeats&pmod=admincp'.$extra.'&status=\' + this.value">';
foreach($statary as $k => $v) {
$statselect .= '<option value="'.$k.'"'.($k == $status ? ' selected' : '').'>'.$v.'</option>';
}
$statselect .= '</select>';
echo '<tr class="header"><th>'.$Plang['username'].'</th><th>'.$lang['usergroup'].'</th><th>'.$Plang['repeat'].'</th><th>'.$Plang['lastswitch'].'</th><th>'.$statselect.'</th><th></th></tr>';
if(!$resultempty) {
$count = C::t('#myrepeats#myrepeats')->count_by_search($srchadd);
$myrepeats = C::t('#myrepeats#myrepeats')->fetch_all_by_search($srchadd, ($page - 1) * $ppp, $ppp);
$uids = array();
foreach($myrepeats as $myrepeat) {
$uids[] = $myrepeat['uid'];
}
$users = C::t('common_member')->fetch_all($uids);
$i = 0;
foreach($myrepeats as $myrepeat) {
$myrepeat['lastswitch'] = $myrepeat['lastswitch'] ? dgmdate($myrepeat['lastswitch']) : '';
$myrepeat['usernameenc'] = rawurlencode($myrepeat['username']);
$opstr = !$myrepeat['locked'] ? $Plang['normal'] : $Plang['lock'];
$i++;
echo '<tr><td><a href="'.ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=myrepeats&pmod=admincp&srchuid='.$myrepeat['uid'].'">'.$users[$myrepeat['uid']]['username'].'</a></td>'.
'<td>'.$_G['cache']['usergroups'][$users[$myrepeat['uid']]['groupid']]['grouptitle'].'</td>'.
'<td><a href="'.ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=myrepeats&pmod=admincp&srchrepeat='.rawurlencode($myrepeat['username']).'" title="'.htmlspecialchars($myrepeat['comment']).'">'.$myrepeat['username'].'</a>'.'</td>'.
'<td>'.($myrepeat['lastswitch'] ? $myrepeat['lastswitch'] : '').'</td>'.
'<td><a id="d'.$i.'" onclick="ajaxget(this.href, this.id, \'\');return false" href="'.ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=myrepeats&pmod=admincp&uid='.$myrepeat['uid'].'&username='.$myrepeat['usernameenc'].'&op=lock">'.$opstr.'</a></td>'.
'<td><a id="p'.$i.'" onclick="ajaxget(this.href, this.id, \'\');return false" href="'.ADMINSCRIPT.'?action=plugins&operation=config&do='.$pluginid.'&identifier=myrepeats&pmod=admincp&uid='.$myrepeat['uid'].'&username='.$myrepeat['usernameenc'].'&op=delete">['.$lang['delete'].']</a></td></tr>';
}
}
showtablefooter();
echo multi($count, $ppp, $page, ADMINSCRIPT."?action=plugins&operation=config&do=$pluginid&identifier=myrepeats&pmod=admincp$extra");
?>

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<item id="Title"><![CDATA[Discuz! Plugin]]></item>
<item id="Data">
<item id="plugin">
<item id="available"><![CDATA[1]]></item>
<item id="adminid"><![CDATA[1]]></item>
<item id="name"><![CDATA[我的马甲]]></item>
<item id="identifier"><![CDATA[myrepeats]]></item>
<item id="description"><![CDATA[]]></item>
<item id="datatables"><![CDATA[]]></item>
<item id="directory"><![CDATA[myrepeats/]]></item>
<item id="copyright"><![CDATA[Comsenz Inc.]]></item>
<item id="version"><![CDATA[2.4]]></item>
<item id="__modules">
<item id="0">
<item id="name"><![CDATA[memcp]]></item>
<item id="menu"><![CDATA[我的马甲]]></item>
<item id="url"><![CDATA[]]></item>
<item id="type"><![CDATA[7]]></item>
<item id="adminid"><![CDATA[0]]></item>
<item id="displayorder"><![CDATA[0]]></item>
</item>
<item id="1">
<item id="name"><![CDATA[myrepeats]]></item>
<item id="menu"><![CDATA[]]></item>
<item id="url"><![CDATA[]]></item>
<item id="type"><![CDATA[11]]></item>
<item id="adminid"><![CDATA[0]]></item>
<item id="displayorder"><![CDATA[0]]></item>
</item>
<item id="2">
<item id="name"><![CDATA[admincp]]></item>
<item id="menu"><![CDATA[管理]]></item>
<item id="url"><![CDATA[]]></item>
<item id="type"><![CDATA[3]]></item>
<item id="adminid"><![CDATA[1]]></item>
<item id="displayorder"><![CDATA[0]]></item>
</item>
</item>
</item>
<item id="version"><![CDATA[X3.2,X3.3,X3.4,X3.5]]></item>
<item id="var">
<item id="0">
<item id="displayorder"><![CDATA[0]]></item>
<item id="title"><![CDATA[允许使用马甲]]></item>
<item id="description"><![CDATA[设置哪些用户组可以使用马甲切换功能]]></item>
<item id="variable"><![CDATA[usergroups]]></item>
<item id="type"><![CDATA[groups]]></item>
<item id="extra"><![CDATA[]]></item>
</item>
</item>
<item id="intro"><![CDATA[本插件方便用户快速的在自己的多个账户间自由切换]]></item>
<item id="installfile"><![CDATA[install.php]]></item>
<item id="uninstallfile"><![CDATA[uninstall.php]]></item>
<item id="language">
<item id="scriptlang">
<item id="login_strike"><![CDATA[密码错误次数过多,请重新设置马甲账号信息并在 15 分钟后再尝试切换。]]></item>
<item id="login_succeed"><![CDATA[您已切换到 {user} {comment}账号,现在将转入切换前页面。]]></item>
<item id="login_succeed_rsnonexistence"><![CDATA[您已切换到 {user} {comment}账号,但是此账号尚未设置 {olduser} 为马甲。<br /><a href="home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp&username={olduserenc}" target="_blank">[ 设置 {olduser} 为本账号的马甲 ]</a><br /><a href="{referer}">[ 转入切换前页面 ]</a>]]></item>
<item id="login_activation"><![CDATA[{user} 账号未在本论坛激活,现在将转入账号激活页面。]]></item>
<item id="login_invalid"><![CDATA[账号切换失败,请重新设置账号信息,您还可以尝试 {loginperm} 次。]]></item>
<item id="login_password_invalid"><![CDATA[账号切换失败,请重新设置账号信息。]]></item>
<item id="login_question_empty"><![CDATA[请重新设置账号的安全提问以及正确的答案。]]></item>
<item id="login_question_invalid"><![CDATA[安全提问选择错误,请重新设置。]]></item>
<item id="user_nonexistence"><![CDATA[无效的马甲账号信息,请重新设置。]]></item>
<item id="user_locked"><![CDATA[此马甲账号被管理员锁定,您无法切换到 {user},请与管理员联系。]]></item>
<item id="switch"><![CDATA[马甲]]></item>
<item id="memcp"><![CDATA[设置马甲]]></item>
<item id="usergroup_disabled"><![CDATA[您所在用户组无法使用本功能]]></item>
<item id="normal"><![CDATA[正常]]></item>
<item id="lock"><![CDATA[锁定]]></item>
<item id="username"><![CDATA[用户名]]></item>
<item id="repeat"><![CDATA[马甲]]></item>
<item id="lastswitch"><![CDATA[最后切换时间]]></item>
<item id="status"><![CDATA[状态]]></item>
<item id="search"><![CDATA[搜索]]></item>
<item id="repeats"><![CDATA[被哪些账号马甲]]></item>
<item id="repeatusers"><![CDATA[的马甲]]></item>
<item id="statuss"><![CDATA[状态的记录]]></item>
<item id="viewall"><![CDATA[查看全部]]></item>
<item id="deleted"><![CDATA[- 已删除 -]]></item>
<item id="adduser_succeed"><![CDATA[马甲账号 {usernamenew} 已成功添加。]]></item>
<item id="updateuser_succeed"><![CDATA[马甲账号信息已成功更新。]]></item>
</item>
<item id="templatelang">
<item id="myrepeats"><![CDATA[我的马甲]]></item>
<item id="adduser"><![CDATA[添加马甲账号]]></item>
<item id="add"><![CDATA[添加]]></item>
<item id="lastswitch"><![CDATA[最后切换时间]]></item>
<item id="nouse"><![CDATA[尚未使用]]></item>
<item id="locked"><![CDATA[被管理员锁定]]></item>
<item id="comment"><![CDATA[备 注]]></item>
<item id="commentrow"><![CDATA[备注]]></item>
<item id="username"><![CDATA[用户名]]></item>
<item id="password"><![CDATA[密码]]></item>
<item id="security_question"><![CDATA[安全提问]]></item>
<item id="security_question_1"><![CDATA[母亲的名字]]></item>
<item id="security_question_2"><![CDATA[爷爷的名字]]></item>
<item id="security_question_3"><![CDATA[父亲出生的城市]]></item>
<item id="security_question_4"><![CDATA[您其中一位老师的名字]]></item>
<item id="security_question_5"><![CDATA[您个人计算机的型号]]></item>
<item id="security_question_6"><![CDATA[您最喜欢的餐馆名称]]></item>
<item id="security_question_7"><![CDATA[驾驶执照的最后四位数字]]></item>
<item id="security_answer"><![CDATA[回答]]></item>
<item id="delete_check"><![CDATA[删?]]></item>
<item id="switch_title"><![CDATA[请输入密码]]></item>
<item id="switch_tips"><![CDATA[你是首次切换到此账号,请输入密码]]></item>
<item id="confirm"><![CDATA[确定]]></item>
<item id="select_rrepeats"><![CDATA[选择马甲]]></item>
</item>
</item>
</item>
</root>

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,34 @@
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: install.php 8889 2010-04-23 07:48:22Z monkey $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$sql = <<<EOF
DROP TABLE IF EXISTS cdb_myrepeats;
CREATE TABLE cdb_myrepeats (
`uid` mediumint(8) unsigned NOT NULL,
`username` varchar(15) NOT NULL DEFAULT '',
`logindata` varchar(255) NOT NULL DEFAULT '',
`locked` tinyint(1) NOT NULL DEFAULT '0',
`lastswitch` int(10) unsigned NOT NULL DEFAULT '0',
`comment` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`uid`,`username`),
KEY `username` (`username`)
) ENGINE=INNODB;
EOF;
runquery($sql);
$finish = TRUE;
?>

View File

@@ -0,0 +1,75 @@
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: memcp.inc.php 29364 2012-04-09 02:51:41Z monkey $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
if(!$_G['uid']) {
showmessage('not_loggedin', NULL, array(), array('login' => 1));
}
$myrepeatsusergroups = (array)dunserialize($_G['cache']['plugin']['myrepeats']['usergroups']);
if(in_array('', $myrepeatsusergroups)) {
$myrepeatsusergroups = array();
}
$singleprem = FALSE;
$permusers = $permuids = array();
if(!in_array($_G['groupid'], $myrepeatsusergroups)) {
$singleprem = TRUE;
}
foreach(C::t('#myrepeats#myrepeats')->fetch_all_by_username($_G['username']) as $user) {
$permuids[] = $user['uid'];
}
$permusers = C::t('common_member')->fetch_all_username_by_uid($permuids);
if(!$permusers && $singleprem) {
showmessage('myrepeats:usergroup_disabled');
}
if($_GET['pluginop'] == 'add' && submitcheck('adduser')) {
if($singleprem && in_array($_GET['usernamenew'], $permusers) || !$singleprem) {
$usernamenew = addslashes(strip_tags($_GET['usernamenew']));
$logindata = addslashes(authcode($_GET['passwordnew']."\t".$_GET['questionidnew']."\t".$_GET['answernew'], 'ENCODE', $_G['config']['security']['authkey']));
if(C::t('#myrepeats#myrepeats')->count_by_uid_username($_G['uid'], $usernamenew)) {
DB::query("UPDATE ".DB::table('myrepeats')." SET logindata='$logindata' WHERE uid='{$_G['uid']}' AND username='$usernamenew'");
} else {
$_GET['commentnew'] = addslashes($_GET['commentnew']);
DB::query("INSERT INTO ".DB::table('myrepeats')." (uid, username, logindata, comment) VALUES ('{$_G['uid']}', '$usernamenew', '$logindata', '".strip_tags($_GET['commentnew'])."')");
}
dsetcookie('mrn', '');
dsetcookie('mrd', '');
showmessage('myrepeats:adduser_succeed', 'home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp', array('usernamenew' => stripslashes($usernamenew)));
}
} elseif($_GET['pluginop'] == 'update' && submitcheck('updateuser')) {
if(!empty($_GET['delete'])) {
C::t('#myrepeats#myrepeats')->delete_by_uid_usernames($_G['uid'], $_GET['delete']);
}
$_GET['comment'] = daddslashes($_GET['comment']);
foreach($_GET['comment'] as $user => $v) {
C::t('#myrepeats#myrepeats')->update_comment_by_uid_username($_G['uid'], $user, strip_tags($v));
}
dsetcookie('mrn', '');
dsetcookie('mrd', '');
showmessage('myrepeats:updateuser_succeed', 'home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp');
}
$username = empty($_GET['username']) ? '' : htmlspecialchars($_GET['username']);
$repeatusers = array();
foreach(C::t('#myrepeats#myrepeats')->fetch_all_by_uid($_G['uid']) as $myrepeat) {
$myrepeat['lastswitch'] = $myrepeat['lastswitch'] ? dgmdate($myrepeat['lastswitch']) : '';
$myrepeat['usernameenc'] = rawurlencode($myrepeat['username']);
$myrepeat['comment'] = htmlspecialchars($myrepeat['comment']);
$repeatusers[] = $myrepeat;
}
$_G['basescript'] = 'home';
?>

View File

@@ -0,0 +1,57 @@
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: myrepeats.class.php 29558 2012-04-18 10:17:22Z monkey $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class plugin_myrepeats {
var $value = array();
function __construct() {
global $_G;
if(!$_G['uid']) {
return;
}
$myrepeatsusergroups = (array)dunserialize($_G['cache']['plugin']['myrepeats']['usergroups']);
if(in_array('', $myrepeatsusergroups)) {
$myrepeatsusergroups = array();
}
$userlist = array();
if(!in_array($_G['groupid'], $myrepeatsusergroups)) {
if(!isset($_G['cookie']['myrepeat_rr'])) {
$users = count(C::t('#myrepeats#myrepeats')->fetch_all_by_username($_G['username']));
dsetcookie('myrepeat_rr', 'R'.$users, 86400);
} else {
$users = substr($_G['cookie']['myrepeat_rr'], 1);
}
if(!$users) {
return '';
}
}
$this->value['global_usernav_extra1'] = '<script>'.
'function showmyrepeats() {if(!$(\'myrepeats_menu\')) {'.
'menu=document.createElement(\'div\');menu.id=\'myrepeats_menu\';menu.style.display=\'none\';menu.className=\'p_pop\';'.
'$(\'append_parent\').appendChild(menu);'.
'ajaxget(\'plugin.php?id=myrepeats:switch&list=yes\',\'myrepeats_menu\',\'ajaxwaitid\');}'.
'showMenu({\'ctrlid\':\'myrepeats\',\'duration\':2});}'.
'</script>'.
'<span class="pipe">|</span><a id="myrepeats" href="home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp" class="showmenu cur1" onmouseover="delayShow(this, showmyrepeats)">'.lang('plugin/myrepeats', 'switch').'</a>'."\n";
}
function global_usernav_extra1() {
return $this->value['global_usernav_extra1'];
}
}
?>

View File

@@ -0,0 +1,178 @@
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: switch.inc.php 29558 2012-04-18 10:17:22Z monkey $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
if(!$_G['uid']) {
showmessage('not_loggedin', NULL, array(), array('login' => 1));
}
$myrepeatsusergroups = (array)dunserialize($_G['cache']['plugin']['myrepeats']['usergroups']);
if(!empty($_GET['list'])) {
if(in_array('', $myrepeatsusergroups)) {
$myrepeatsusergroups = array();
}
$userlist = array();
if(!in_array($_G['groupid'], $myrepeatsusergroups)) {
$userlist = get_rrepeats($_G['username']);
$count = count($userlist);
if(!$count) {
unset($_G['setting']['plugins']['spacecp']['myrepeats:memcp']);
}
}
foreach(C::t('#myrepeats#myrepeats')->fetch_all_by_uid($_G['uid']) as $user) {
$userlist[$user['username']] = $user['username'];
}
$list = '<ul>';
foreach($userlist as $user) {
if(!$user) {
continue;
}
$list .= '<li><a href="plugin.php?id=myrepeats:switch&username='.rawurlencode($user).'&formhash='.FORMHASH.'" onclick="showWindow(\'myrepeat\', this.href);return false;">'.$user.'</a></li>';
}
$list .= '<li><a href="home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp">'.lang('plugin/myrepeats', 'memcp').'</a></li>';
include template('common/header_ajax');
echo $list;
include template('common/footer_ajax');
exit;
}
if($_GET['formhash'] != FORMHASH) {
showmessage('undefined_action');
}
$referer = dreferer();
if(in_array('', $myrepeatsusergroups)) {
$myrepeatsusergroups = array();
}
if(!in_array($_G['groupid'], $myrepeatsusergroups)) {
$users = C::t('#myrepeats#myrepeats')->fetch_all_by_username($_G['username']);
if(!$users) {
showmessage('myrepeats:usergroup_disabled');
} else {
$permusers = array();
foreach($users as $user) {
$permusers[] = $user['uid'];
}
$member = C::t('common_member')->fetch_by_username($_GET['username']);
if(!$member || !in_array($member['uid'], $permusers)) {
showmessage('myrepeats:usergroup_disabled');
}
}
}
require_once libfile('function/member');
$_G['myrepeats_loginperm'] = logincheck($_GET['username']);
if(!$_G['myrepeats_loginperm']) {
showmessage('myrepeats:login_strike', '', array('loginperm' => $_G['myrepeats_loginperm']));
}
if(!empty($_GET['authorfirst']) && submitcheck('myrepeatssubmit')) {
$result = userlogin($_GET['username'], $_GET['password'], $_GET['questionid'], $_GET['answer'], 'username', $_G['clientip']);
$_G['myrepeats_ucresult'] = $result['ucresult'];
if($result['status'] > 0) {
$logindata = addslashes(authcode($_GET['password']."\t".$_GET['questionid']."\t".$_GET['answer'], 'ENCODE', $_G['config']['security']['authkey']));
if(C::t('#myrepeats#myrepeats')->count_by_uid_username($_G['uid'], $_GET['username'])) {
C::t('#myrepeats#myrepeats')->update_logindata_by_uid_username($_G['uid'], $_GET['username'], $logindata);
} else {
C::t('#myrepeats#myrepeats')->insert(array(
'uid' => $_G['uid'],
'username' => $_GET['username'],
'logindata' => $logindata,
'comment' => ''
));
}
} else {
myrepeats_loginfailure($_GET['username'], $_GET['password'], $_GET['questionid'], $_GET['answer']);
}
}
$user = C::t('#myrepeats#myrepeats')->fetch_all_by_uid_username($_G['uid'], $_GET['username']);
$user = current($user);
$olddiscuz_uid = $_G['uid'];
$olddiscuz_user = $_G['username'];
$olddiscuz_userss = $_G['member']['username'];
if(!$user) {
$newuid = C::t('common_member')->fetch_uid_by_username($_GET['username']);
if(C::t('#myrepeats#myrepeats')->count_by_uid_username($newuid, $olddiscuz_userss)) {
$username = htmlspecialchars($_GET['username']);
include template('myrepeats:switch_login');
exit;
}
showmessage('myrepeats:user_nonexistence');
} elseif($user['locked']) {
showmessage('myrepeats:user_locked', '', array('user' => $_GET['username']));
}
list($password, $questionid, $answer) = explode("\t", authcode($user['logindata'], 'DECODE', $_G['config']['security']['authkey']));
$result = userlogin($_GET['username'], $password, $questionid, $answer, 'username', $_G['clientip']);
$_G['myrepeats_ucresult'] = $result['ucresult'];
if($result['status'] > 0) {
setloginstatus($result['member'], 2592000);
C::t('#myrepeats#myrepeats')->update_lastswitch_by_uid_username($olddiscuz_uid, $_GET['username'], TIMESTAMP);
C::t('common_member_status')->update($_G['uid'], array('lastvisit' => TIMESTAMP), 'UNBUFFERED');
$ucsynlogin = $_G['setting']['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : '';
dsetcookie('mrn', '');
dsetcookie('mrd', '');
$comment = $user['comment'] ? '('.$user['comment'].') ' : '';
showmessage('myrepeats:login_succeed', $referer, array('user' => $_G['member']['username'], 'usergroup' => $_G['group']['grouptitle'], 'comment' => $comment), array('showmsg' => 1, 'showdialog' => 1, 'locationtime' => 3, 'extrajs' => $ucsynlogin));
} elseif($result['status'] == -1) {
clearcookies();
$_G['myrepeats_ucresult']['username'] = addslashes($_G['myrepeats_ucresult']['username']);
$_G['username'] = '';
$_G['uid'] = 0;
$auth = authcode($_G['myrepeats_ucresult']['username']."\t".formhash(), 'ENCODE');
showmessage('myrepeats:login_activation', 'member.php?mod='.$_G['setting']['regname'].'&action=activation&auth='.rawurlencode($auth).'&referer='.rawurlencode($referer), array('user' => $_G['myrepeats_ucresult']['username']), array('showmsg' => 1, 'showdialog' => 1, 'locationtime' => 3));
} else {
myrepeats_loginfailure($_GET['username'], $password, $questionid, $answer);
}
function myrepeats_loginfailure($username, $password, $questionid, $answer) {
global $_G;
$password = preg_replace("/^(.{".round(strlen($password) / 4)."})(.+?)(.{".round(strlen($password) / 6)."})$/s", "\\1***\\3", $password);
$errorlog = dhtmlspecialchars(
TIMESTAMP."\t".
($_G['myrepeats_ucresult']['username'] ? $_G['myrepeats_ucresult']['username'] : stripslashes($username))."\t".
$password."\t".
"Ques #".intval($questionid)."\t".
$_G['clientip']);
writelog('illegallog', $errorlog);
loginfailed($username);
$fmsg = $_G['myrepeats_ucresult']['uid'] == '-3' ? (empty($questionid) || $answer == '' ? 'login_question_empty' : 'login_question_invalid') : 'login_invalid';
if($_G['myrepeats_loginperm'] > 1) {
showmessage('myrepeats:'.$fmsg, '', array('loginperm' => $_G['myrepeats_loginperm']));
} elseif($_G['myrepeats_loginperm'] == -1) {
showmessage('myrepeats:login_password_invalid');
} else {
showmessage('myrepeats:login_strike');
}
}
function get_rrepeats($username) {
$users = C::t('#myrepeats#myrepeats')->fetch_all_by_username($username);
$uids = array();
foreach($users as $user) {
$uids[] = $user['uid'];
}
$userlist = array();
foreach(C::t('common_member')->fetch_all($uids) as $user) {
$userlist[$user['username']] = $user['username'];
}
return $userlist;
}
?>

View File

View File

@@ -0,0 +1,69 @@
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: table_myrepeats.php 31512 2012-09-04 07:11:08Z monkey $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class table_myrepeats extends discuz_table
{
public function __construct() {
$this->_table = 'myrepeats';
$this->_pk = '';
parent::__construct();
}
public function fetch_all_by_uid($uid) {
return DB::fetch_all("SELECT * FROM %t WHERE uid=%d", array($this->_table, $uid));
}
public function fetch_all_by_username($username) {
return DB::fetch_all("SELECT * FROM %t WHERE username=%s", array($this->_table, $username));
}
public function fetch_all_by_uid_username($uid, $username) {
return DB::fetch_all("SELECT * FROM %t WHERE uid=%d AND username=%s", array($this->_table, $uid, $username));
}
public function count_by_uid_username($uid, $username) {
return DB::result_first("SELECT COUNT(*) FROM %t WHERE uid=%d AND username=%s", array($this->_table, $uid, $username));
}
public function delete_by_uid_usernames($uid, $usernames) {
DB::query("DELETE FROM %t WHERE uid=%d AND username IN (%n)", array($this->_table, $uid, $usernames));
}
public function update_comment_by_uid_username($uid, $username, $value) {
DB::query("UPDATE %t SET comment=%s WHERE uid=%d AND username=%s", array($this->_table, $value, $uid, $username));
}
public function update_locked_by_uid_username($uid, $username, $value) {
DB::query("UPDATE %t SET locked=%d WHERE uid=%d AND username=%s", array($this->_table, $value, $uid, $username));
}
public function update_logindata_by_uid_username($uid, $username, $value) {
DB::query("UPDATE %t SET logindata=%s WHERE uid=%d AND username=%s", array($this->_table, $value, $uid, $username));
}
public function update_lastswitch_by_uid_username($uid, $username, $value) {
DB::query("UPDATE %t SET lastswitch=%d WHERE uid=%d AND username=%s", array($this->_table, $value, $uid, $username));
}
public function count_by_search($condition) {
return DB::result_first("SELECT COUNT(*) FROM %t WHERE 1 %i", array($this->_table, $condition));
}
public function fetch_all_by_search($condition, $start, $ppp) {
return DB::fetch_all("SELECT * FROM %t WHERE 1 %i ORDER BY uid LIMIT %d, %d", array($this->_table, $condition, $start, $ppp));
}
}
?>

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,66 @@
<form method="post" autocomplete="off" action="home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp&pluginop=add">
<input type="hidden" name="formhash" value="{FORMHASH}" />
<p class="tbmu">{lang myrepeats:adduser}</p>
<table cellspacing="0" cellpadding="0" class="tfm" style="table-layout:fixed;margin-top:10px;">
<tbody>
<tr><td class="mtm pns">
<p>
<!--{if !$singleprem}-->
{lang myrepeats:username}
<!--{if $permusers}-->
<select id="userselect" onchange="$('usernamenew').value = this.value" class="ps vm">
<option value="">{lang myrepeats:select_rrepeats}</option>
<!--{loop $permusers $user}-->
<option value="$user">$user</option>
<!--{/loop}-->
</select>
<!--{/if}-->
<input name="usernamenew" id="usernamenew" type="text" class="px vm" value="$username" style="width:100px" />&nbsp;
<!--{else}-->
{lang myrepeats:username} <select name="usernamenew" id="usernamenew" class="ps vm">
<!--{loop $permusers $user}-->
<option value="$user"{if $user == $username} selected="selected"{/if}>$user</option>
<!--{/loop}-->
</select>
<!--{/if}-->
{lang myrepeats:password} <input type="password" name="passwordnew" class="px vm" style="width:100px" />
<select name="questionidnew" onchange="if(this.value > 0) {$('answernew').style.display='';} else {$('answernew').style.display='none';}" class="ps vm">
<option value="0">{lang myrepeats:security_question}</option>
<option value="1">{lang myrepeats:security_question_1}</option>
<option value="2">{lang myrepeats:security_question_2}</option>
<option value="3">{lang myrepeats:security_question_3}</option>
<option value="4">{lang myrepeats:security_question_4}</option>
<option value="5">{lang myrepeats:security_question_5}</option>
<option value="6">{lang myrepeats:security_question_6}</option>
<option value="7">{lang myrepeats:security_question_7}</option>
</select>
<span id="answernew" style="display:none">{lang myrepeats:security_answer} <input type="text" name="answernew" class="px vm" style="width:100px" class="txt" /></span>
<br /><br />
<p>
{lang myrepeats:comment} <input type="text" name="commentnew" class="px vm" size="40" />
<button type="submit" name="adduser" class="pn vm" value="yes" ><span>{lang myrepeats:add}</span></button>
</p>
</td></tr>
</tbody>
</table>
</form>
<form method="post" autocomplete="off" action="home.php?mod=spacecp&ac=plugin&id=myrepeats:memcp&pluginop=update">
<input type="hidden" name="formhash" value="{FORMHASH}" />
<!--{if $repeatusers}-->
<table cellspacing="0" cellpadding="0" class="dt mtm">
<thead class="alt">
<tr><td width="40"></td><td width="140">{lang myrepeats:username}</td><td>{lang myrepeats:commentrow}</td><td width="120">{lang myrepeats:lastswitch}</td></tr>
</thead>
<!--{loop $repeatusers $user}-->
<tr>
<td><input name="delete[]" type="checkbox" class="pc" value="$user[username]" /></td>
<td><b><!--{if !$user[locked]}--><a href="plugin.php?id=myrepeats:switch&username=$user[usernameenc]&formhash={FORMHASH}">$user[username]</a></b><!--{else}-->$user[username] ({lang myrepeats:locked})<!--{/if}--></td>
<td><input name="comment[{$user[username]}]" class="px" value="$user[comment]" size="40" /></td>
<td><!--{if $user[lastswitch]}-->$user[lastswitch]<!--{else}-->{lang myrepeats:nouse}<!--{/if}--></td>
</tr>
<!--{/loop}-->
<tr class="bw0_all"><td><label for="chkall"><input class="pc" type="checkbox" id="chkall" name="chkall" onclick="checkall(this.form);" />{lang myrepeats:delete_check}</label></td>
<td class="mtm pns"><button type="submit" class="pn" name="updateuser" value="yes" ><span>{lang submit}</span></button></td></tr>
</table>
<!--{/if}-->
</form>

View File

@@ -0,0 +1,76 @@
<!--{template common/header}-->
<!--{if empty($_GET['infloat'])}-->
<div id="ct" class="wp w cl">
<div class="mn mw">
<!--{/if}-->
<div class="blr" id="main_messaqge_myrepeats" style="width:260px">
<div id="layer_login_myrepeats">
<h3 class="flb">
<em>{lang myrepeats:switch_title}</em>
<span><!--{if !empty($_GET['infloat'])}--><a href="javascript:;" class="flbc" onclick="hideWindow('$_GET[handlekey]', 0, 1);" title="{lang close}">{lang close}</a><!--{/if}--></span>
</h3>
<form method="post" autocomplete="off" name="myrepeats" id="loginform_myrepeats" class="cl" action="plugin.php?id=myrepeats:switch&myrepeatssubmit=yes&handlekey=myrepeat" onsubmit="ajaxpost('loginform_myrepeats', 'returnmessage_myrepeats', 'returnmessage_myrepeats', 'onerror');return false;">
<div class="c cl">
<input type="hidden" name="formhash" value="{FORMHASH}" />
<input type="hidden" name="authorfirst" value="yes" />
<input type="hidden" name="referer" value="$referer" />
<div class="lgfm nlf" style="border:0;width:240px">
<p class="notice">
{lang myrepeats:switch_tips}
</p>
<div class="ftid sipt lpsw" id="account_myrepeats">
<label for="username">{lang myrepeats:username}</label>
<input type="text" name="username" id="username_myrepeats" autocomplete="off" size="36" class="txt" value="$username" readonly />
</div>
<p class="sipt lpsw">
<label for="password3_myrepeats">{lang myrepeats:password}</label>
<input type="password" id="password3_myrepeats" name="password" size="36" class="txt" />
</p>
<div class="ftid sltp">
<select id="loginquestionid_myrepeats" width="213" name="questionid" change="if($('loginquestionid_myrepeats').value > 0) {$('loginanswer_myrepeats').style.display='';} else {$('loginanswer_myrepeats').style.display='none';}">
<option value="0">{lang myrepeats:security_question}</option>
<option value="1">{lang myrepeats:security_question_1}</option>
<option value="2">{lang myrepeats:security_question_2}</option>
<option value="3">{lang myrepeats:security_question_3}</option>
<option value="4">{lang myrepeats:security_question_4}</option>
<option value="5">{lang myrepeats:security_question_5}</option>
<option value="6">{lang myrepeats:security_question_6}</option>
<option value="7">{lang myrepeats:security_question_7}</option>
</select>
</div>
<p><input type="text" name="answer" id="loginanswer_myrepeats" style="display:none" autocomplete="off" size="36" class="sipt" /></p>
<p id="returnmessage_myrepeats"></p>
</div>
</div>
<p class="fsb pns cl">
<button class="y pn pnc" type="submit" name="myrepeatssubmit" value="true"><span>{lang myrepeats:confirm}</span></button>
</p>
</form>
</div>
</div>
<script type="text/javascript" reload="1">
function initinput_login() {
document.body.focus();
if($('loginform_myrepeats')) {
$('loginform_myrepeats').password.focus();
}
simulateSelect('loginquestionid_myrepeats');
}
if(BROWSER.ie && BROWSER.ie < 7) {
setTimeout('initinput_login()', 500);
} else {
initinput_login();
}
</script>
<!--{if empty($_GET['infloat'])}-->
</div></div>
</div>
<!--{/if}-->
<!--{template common/footer}-->

View File

@@ -0,0 +1,21 @@
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: uninstall.php 24473 2011-09-21 03:53:05Z monkey $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$sql = <<<EOF
DROP TABLE cdb_myrepeats;
EOF;
$finish = TRUE;