git-svn-id: https://torrentpier2.googlecode.com/svn/trunk@291 a8ac35ab-4ca4-ca47-4c2d-a49a94f06293
This commit is contained in:
nanosimbiot 2011-09-06 06:31:12 +00:00
commit 4553d083d7
3 changed files with 60 additions and 47 deletions

View file

@ -42,6 +42,10 @@ switch ($ajax->action)
case 'user_register': case 'user_register':
require(INC_DIR .'functions_validate.php'); require(INC_DIR .'functions_validate.php');
break; break;
case 'manage_user':
require(INC_DIR .'functions_admin.php');
break;
} }
// position in $ajax->valid_actions['xxx'] // position in $ajax->valid_actions['xxx']
@ -63,13 +67,13 @@ class ajax_common
'edit_user_profile' => array('admin'), 'edit_user_profile' => array('admin'),
'change_user_rank' => array('admin'), 'change_user_rank' => array('admin'),
'change_user_opt' => array('admin'), 'change_user_opt' => array('admin'),
'delete_userdata' => array('admin'),
'change_tor_status' => array('mod'), 'change_tor_status' => array('mod'),
'mod_action' => array('mod'), 'mod_action' => array('mod'),
'gen_passkey' => array('user'), 'gen_passkey' => array('user'),
'change_torrent' => array('user'), 'change_torrent' => array('user'),
'manage_user' => array('user'),
'view_post' => array('guest'), 'view_post' => array('guest'),
'view_torrent' => array('guest'), 'view_torrent' => array('guest'),
@ -412,17 +416,17 @@ class ajax_common
$this->response['html'] = $html; $this->response['html'] = $html;
$this->response['mode'] = $mode; $this->response['mode'] = $mode;
} }
function get_forum_mods() function get_forum_mods()
{ {
global $lang, $datastore; global $lang, $datastore;
$forum_id = (int) $this->request['forum_id']; $forum_id = (int) $this->request['forum_id'];
$datastore->enqueue(array( $datastore->enqueue(array(
'moderators', 'moderators',
)); ));
$moderators = array(); $moderators = array();
$mod = $datastore->get('moderators'); $mod = $datastore->get('moderators');
@ -433,7 +437,7 @@ class ajax_common
$moderators[] = '<a href="'. PROFILE_URL . $user_id .'">'. $mod['name_users'][$user_id] .'</a>'; $moderators[] = '<a href="'. PROFILE_URL . $user_id .'">'. $mod['name_users'][$user_id] .'</a>';
} }
} }
if (isset($mod['mod_groups'][$forum_id])) if (isset($mod['mod_groups'][$forum_id]))
{ {
foreach ($mod['mod_groups'][$forum_id] as $group_id) foreach ($mod['mod_groups'][$forum_id] as $group_id)
@ -441,10 +445,10 @@ class ajax_common
$moderators[] = '<a href="'. "groupcp.php?". POST_GROUPS_URL ."=". $group_id .'">'. $mod['name_groups'][$group_id] .'</a>'; $moderators[] = '<a href="'. "groupcp.php?". POST_GROUPS_URL ."=". $group_id .'">'. $mod['name_groups'][$group_id] .'</a>';
} }
} }
$html = ':&nbsp;'; $html = ':&nbsp;';
$html .= ($moderators) ? join(', ', $moderators) : $lang['NONE']; $html .= ($moderators) ? join(', ', $moderators) : $lang['NONE'];
$this->response['html'] = '<strong>'.$html.'</strong>'; $this->response['html'] = '<strong>'.$html.'</strong>';
unset($moderators, $mod); unset($moderators, $mod);
$datastore->rm('moderators'); $datastore->rm('moderators');
@ -484,10 +488,10 @@ class ajax_common
{ {
require(AJAX_DIR .'posts.php'); require(AJAX_DIR .'posts.php');
} }
function delete_userdata() function manage_user()
{ {
require(AJAX_DIR .'delete_userdata.php'); require(AJAX_DIR .'manage_user.php');
} }
} }

View file

@ -6,55 +6,66 @@ global $userdata, $lang;
$mode = (string) $this->request['mode']; $mode = (string) $this->request['mode'];
$user_id = $this->request['user_id']; $user_id = $this->request['user_id'];
switch($mode) switch($mode)
{ {
case 'delete_profile': case 'delete_profile':
if ($userdata['user_id'] == $user_id) $this->ajax_die($lang['USER_DELETE_ME']); if ($userdata['user_id'] == $user_id) $this->ajax_die($lang['USER_DELETE_ME']);
if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['USER_DELETE_CONFIRM']); if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['USER_DELETE_CONFIRM']);
if ($user_id != 2 && $user_id != BOT_UID)
{
require(INC_DIR .'functions_admin.php');
if ($user_id != BOT_UID)
{
user_delete($user_id); user_delete($user_id);
delete_user_sessions($user_id); delete_user_sessions($user_id);
$this->response['info'] = $lang['USER_DELETED']; $this->response['info'] = $lang['USER_DELETED'];
} }
else $this->ajax_die($lang['USER_DELETE_CSV']); else $this->ajax_die($lang['USER_DELETE_CSV']);
break; break;
case 'delete_message': case 'delete_topics':
if (empty($this->request['confirmed']) && $userdata['user_id'] == $user_id) $this->prompt_for_confirm($lang['DELETE_USER_POSTS_ME']); if (empty($this->request['confirmed']) && $userdata['user_id'] == $user_id) $this->prompt_for_confirm($lang['DELETE_USER_POSTS_ME']);
if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['DELETE_USER_POSTS_CONFIRM']); if (empty($this->request['confirmed'])) $this->prompt_for_confirm('Óäàëèòü âñå ñîîáùåíèÿ è âñå íà÷àòûå þçåðîì òîïèêè öåëèêîì?');
if (IS_ADMIN) if (IS_ADMIN)
{ {
require(INC_DIR .'functions_admin.php'); $user_topics = DB()->fetch_rowset("SELECT topic_id FROM ". BB_TOPICS ." WHERE topic_poster = $user_id", 'topic_id');
$deleted_topics = topic_delete($user_topics);
post_delete('user', $user_id); $deleted_posts = post_delete('user', $user_id);
$this->response['info'] = $lang['USER_DELETED_POSTS']; $this->response['info'] = $lang['USER_DELETED_POSTS'];
} }
else $this->ajax_die($lang['NOT_ADMIN']); else $this->ajax_die($lang['NOT_ADMIN']);
break; break;
case 'delete_message':
if (empty($this->request['confirmed']) && $userdata['user_id'] == $user_id) $this->prompt_for_confirm($lang['DELETE_USER_POSTS_ME']);
if (empty($this->request['confirmed'])) $this->prompt_for_confirm('Óäàëèòü âñå ñîîáùåíèÿ, êðîìå çàãëàâíûõ?');
if (IS_ADMIN)
{
post_delete('user', $user_id);
$this->response['info'] = $lang['USER_DELETED_POSTS'];
}
else $this->ajax_die($lang['NOT_ADMIN']);
break;
case 'user_activate': case 'user_activate':
if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['DEACTIVATE_CONFIRM']); if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['DEACTIVATE_CONFIRM']);
DB()->query("UPDATE ". BB_USERS ." SET user_active = '1' WHERE user_id = ". $user_id); DB()->query("UPDATE ". BB_USERS ." SET user_active = '1' WHERE user_id = ". $user_id);
$this->response['info'] = $lang['USER_ACTIVATE_ON']; $this->response['info'] = $lang['USER_ACTIVATE_ON'];
break; break;
case 'user_deactivate': case 'user_deactivate':
if ($userdata['user_id'] == $user_id) $this->ajax_die($lang['USER_DEACTIVATE_ME']); if ($userdata['user_id'] == $user_id) $this->ajax_die($lang['USER_DEACTIVATE_ME']);
if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['ACTIVATE_CONFIRM']); if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['ACTIVATE_CONFIRM']);
DB()->query("UPDATE ". BB_USERS ." SET user_active = '0' WHERE user_id = ". $user_id); DB()->query("UPDATE ". BB_USERS ." SET user_active = '0' WHERE user_id = ". $user_id);
delete_user_sessions($user_id); delete_user_sessions($user_id);
$this->response['info'] = $lang['USER_ACTIVATE_OFF']; $this->response['info'] = $lang['USER_ACTIVATE_OFF'];
break; break;
} }

View file

@ -92,9 +92,13 @@ $(document).ready(function(){
<var class="ajax-params">{action: "edit_user_profile", id: "u_up_release"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "u_up_release"}</var>
<var class="ajax-params">{action: "edit_user_profile", id: "u_up_bonus"}</var> <var class="ajax-params">{action: "edit_user_profile", id: "u_up_bonus"}</var>
<!-- ENDIF --> <!-- ENDIF -->
<!-- ENDIF / SHOW_ADMIN_OPTIONS --> <!-- ENDIF / SHOW_ADMIN_OPTIONS -->
<script type="text/javascript">
ajax.callback.manage_user = function(data) {
if(data.info) alert(data.info);
if(data.url) document.location.href = data.url;
};
</script>
<a name="editprofile"></a> <a name="editprofile"></a>
<h1 class="pagetitle">{L_VIEWING_PROFILE}</h1> <h1 class="pagetitle">{L_VIEWING_PROFILE}</h1>
@ -211,7 +215,8 @@ $(document).ready(function(){
<td id="user_regdate"> <td id="user_regdate">
<span class="editable bold">{USER_REGDATE}</span> <span class="editable bold">{USER_REGDATE}</span>
<!-- IF IS_ADMIN --> <!-- IF IS_ADMIN -->
[ <a href="#" onclick="ajax.exec({action : 'delete_userdata', mode: '<!-- IF USER_ACTIVE -->user_deactivate<!-- ELSE -->user_activate<!-- ENDIF -->', user_id : {PROFILE_USER_ID}}); return false;" class="<!-- IF USER_ACTIVE -->adm<!-- ELSE -->seed bold<!-- ENDIF -->"><!-- IF USER_ACTIVE -->{L_USER_DEACTIVATE}<!-- ELSE -->{L_USER_ACTIVATE}<!-- ENDIF --></a> ] [ <a href="#" onclick="ajax.exec({action : 'manage_user', mode: '<!-- IF USER_ACTIVE -->user_deactivate<!-- ELSE -->user_activate<!-- ENDIF -->', user_id : {PROFILE_USER_ID}}); return false;" class="<!-- IF USER_ACTIVE -->adm<!-- ELSE -->seed bold<!-- ENDIF -->"><!-- IF USER_ACTIVE -->{L_USER_DEACTIVATE}<!-- ELSE -->{L_USER_ACTIVATE}<!-- ENDIF --></a> ]&nbsp;
[ <a href="#" onclick="ajax.exec({action : 'manage_user', mode: 'delete_profile', user_id : '{PROFILE_USER_ID}'}); return false;" class="adm">{L_USER_DELETE_EXPLAIN}</a> ]
<!-- ENDIF --> <!-- ENDIF -->
</td> </td>
</tr> </tr>
@ -237,23 +242,16 @@ $(document).ready(function(){
</p> </p>
</td> </td>
</tr> </tr>
<!-- IF IS_ADMIN --> <!-- IF IS_ADMIN -->
<tr id="delete" style="display: none;"> <tr id="delete" style="display: none;">
<td colspan="2" class="med tCenter"> <td colspan="2" class="med tCenter">
[ <a href="#" onclick="ajax.exec({action : 'delete_userdata', mode: 'delete_profile', user_id : '{PROFILE_USER_ID}'}); return false;" class="adm">{L_USER_DELETE_EXPLAIN}</a> ]&nbsp; [ <a href="#" onclick="ajax.exec({action : 'manage_user', mode: 'delete_topics', user_id : '{PROFILE_USER_ID}'}); return false;" class="adm">топики целиком</a> ]&nbsp;
[ <a href="#" onclick="ajax.exec({action : 'delete_userdata', mode: 'delete_message', user_id : '{PROFILE_USER_ID}'}); return false;" class="adm">{L_DELETE_USER_POSTS}</a> ] [ <a href="#" onclick="ajax.exec({action : 'manage_user', mode: 'delete_message', user_id : '{PROFILE_USER_ID}'}); return false;" class="adm">все, кроме заглавных</a> ]
<script type="text/javascript">
ajax.callback.delete_userdata = function(data) {
if(data.info) alert(data.info);
if(data.url) document.location.href = data.url;
};
</script>
</td> </td>
</tr> </tr>
<!-- ENDIF --> <!-- ENDIF -->
<!-- IF LOCATION --> <!-- IF LOCATION -->
<tr> <tr>
<th class="vBottom">{L_LOCATION}:</th> <th class="vBottom">{L_LOCATION}:</th>
@ -383,7 +381,7 @@ $(document).ready(function(){
) / {L_DOWNLOADED} <b class="leechmed">{DOWN_TOTAL}</b> ) / {L_DOWNLOADED} <b class="leechmed">{DOWN_TOTAL}</b>
</td> </td>
</tr> </tr>
<!-- IF SHOW_PASSKEY --> <!-- IF SHOW_PASSKEY -->
<script type="text/javascript"> <script type="text/javascript">
ajax.callback.gen_passkey = function(data){ ajax.callback.gen_passkey = function(data){