usercp.php
来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 1,953 行 · 第 1/5 页
PHP
1,953 行
if ( $this->ipsclass->vars['converge_login_method'] == 'username' ) { $this->han_login->login_password_check( $this->ipsclass->member['name'], $display_pass ); } else { $this->han_login->login_password_check( $this->ipsclass->member['email'], $display_pass ); } if ( $this->han_login->return_code != 'SUCCESS' ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'wrong_pass' ) ); } //----------------------------------------- // Load ban filters //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'banfilters' ) ); $this->ipsclass->DB->simple_exec(); while( $r = $this->ipsclass->DB->fetch_row() ) { $banfilters[ $r['ban_type'] ][] = $r['ban_content']; } //----------------------------------------- // Grab # changes > 24 hours //----------------------------------------- $time_check = time() - 86400 * $this->ipsclass->member['g_dname_date']; $name_count = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'COUNT(*) as count, MIN(dname_date) as min_date', 'from' => 'dnames_change', 'where' => "dname_member_id={$this->ipsclass->member['id']} AND dname_date > $time_check" ) ); $name_count['count'] = intval( $name_count['count'] ); $name_count['min_date'] = intval( $name_count['min_date'] ) ? intval( $name_count['min_date'] ) : $time_check; if ( intval( $name_count['count'] ) >= $this->ipsclass->member['g_dname_changes'] ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_permission' ) ); } //----------------------------------------- // Check for missing fields / chars. //----------------------------------------- if ( ! $display_name OR strlen( $display_name ) < 2 AND strlen( $display_name ) > 32 ) { $error .= $this->ipsclass->lang['dname_error_no_name']."<br />"; } if ( ! $display_pass ) { $error .= $this->ipsclass->lang['dname_error_no_pass']."<br />"; } if ( preg_match( "#[\[\];,\|]#", str_replace(''', "'", $unicode_name ) ) ) { $error .= $this->ipsclass->lang['dname_error_chars']."<br />"; } //----------------------------------------- // Are they banned [NAMES]? //----------------------------------------- if ( is_array( $banfilters['name'] ) and count( $banfilters['name'] ) ) { foreach ( $banfilters['name'] as $n ) { if ( $n == "" ) { continue; } if ( preg_match( "/".preg_quote($n, '/' )."/i", $display_name ) ) { $found_name = 1; break; } } } //----------------------------------------- // Check for existing name. //----------------------------------------- $this->ipsclass->DB->build_query( array( 'select' => "members_display_name, id", 'from' => 'members', 'where' => "LOWER(members_display_name)='".strtolower($display_name)."' AND id != ".$this->ipsclass->member['id'], 'limit' => array( 0,1 ) ) ); $this->ipsclass->DB->exec_query(); //----------------------------------------- // Got any results? //----------------------------------------- if ( $this->ipsclass->DB->get_num_rows() ) { $found_name = 1; } //----------------------------------------- // Check for existing LOG IN name. //----------------------------------------- if ( $this->ipsclass->vars['auth_dnames_nologinname'] ) { $this->ipsclass->DB->build_query( array( 'select' => "members_display_name, id", 'from' => 'members', 'where' => "LOWER(name)='".strtolower($display_name)."' AND id != ".$this->ipsclass->member['id'], 'limit' => array( 0,1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $this->ipsclass->DB->get_num_rows() ) { $found_name = 1; } } //----------------------------------------- // Test for unicode name //----------------------------------------- if ( $unicode_name != $display_name ) { //----------------------------------------- // Check for existing name. //----------------------------------------- $this->ipsclass->DB->build_query( array( 'select' => "members_display_name, id, email", 'from' => 'members', 'where' => "LOWER(members_display_name)='".strtolower($unicode_name)."' AND id != ".$this->ipsclass->member['id'], 'limit' => array( 0,1 ) ) ); $this->ipsclass->DB->exec_query(); //----------------------------------------- // Got any results? //----------------------------------------- if ( $this->ipsclass->DB->get_num_rows() ) { $found_name = 1; } //----------------------------------------- // Check for existing LOG IN name. //----------------------------------------- if ( $this->ipsclass->vars['auth_dnames_nologinname'] ) { $this->ipsclass->DB->build_query( array( 'select' => "members_display_name, id", 'from' => 'members', 'where' => "LOWER(name)='".strtolower($unicode_name)."' AND id != ".$this->ipsclass->member['id'], 'limit' => array( 0,1 ) ) ); $this->ipsclass->DB->exec_query(); if ( $this->ipsclass->DB->get_num_rows() ) { $found_name = 1; } } } //----------------------------------------- // Got a name? //----------------------------------------- if ( $found_name ) { $error .= $this->ipsclass->lang['dname_error_taken']."<br />"; } //----------------------------------------- // Got an error? //----------------------------------------- if ( $error ) { $this->display_name_change( $error ); return; } //----------------------------------------- // Insert into change log //----------------------------------------- $this->ipsclass->DB->force_data_type = array( 'dname_previous' => 'string', 'dname_current' => 'string' ); $this->ipsclass->DB->do_insert( 'dnames_change', array( 'dname_member_id' => $this->ipsclass->member['id'], 'dname_date' => time(), 'dname_ip_address' => $this->ipsclass->ip_address, 'dname_previous' => $this->ipsclass->member['members_display_name'], 'dname_current' => $display_name ) ); //----------------------------------------- // Still here? Change it then //----------------------------------------- $this->ipsclass->DB->do_update( 'members' , array( 'members_display_name' => $display_name ), "id=" .$this->ipsclass->member['id'] ); $this->ipsclass->DB->do_update( 'contacts' , array( 'contact_name' => $display_name ), "contact_id=" .$this->ipsclass->member['id'] ); $this->ipsclass->DB->do_update( 'forums' , array( 'last_poster_name' => $display_name ), "last_poster_id=".$this->ipsclass->member['id'] ); $this->ipsclass->DB->do_update( 'sessions' , array( 'member_name' => $display_name ), "member_id=" .$this->ipsclass->member['id'] ); $this->ipsclass->DB->do_update( 'topics' , array( 'starter_name' => $display_name ), "starter_id=" .$this->ipsclass->member['id'] ); $this->ipsclass->DB->do_update( 'topics' , array( 'last_poster_name' => $display_name ), "last_poster_id=".$this->ipsclass->member['id'] ); //----------------------------------------- // Recache moderators //----------------------------------------- if ( $this->ipsclass->member['is_mod'] ) { define ( 'IN_ACP', 1 ); require_once( ROOT_PATH .'sources/action_admin/moderator.php' ); $admod = new ad_moderator(); $admod->ipsclass =& $this->ipsclass; $admod->rebuild_moderator_cache(); } //----------------------------------------- // Recache announcements //----------------------------------------- require_once( ROOT_PATH.'sources/action_public/announcements.php' ); $announcements = new announcements(); $announcements->ipsclass =& $this->ipsclass; $announcements->announce_recache(); //----------------------------------------- // Recache forums //----------------------------------------- $this->ipsclass->update_forum_cache(); //----------------------------------------- // Bounce back //----------------------------------------- $this->display_name_change( "", $this->ipsclass->lang['dname_change_ok'] ); return; } /*-------------------------------------------------------------------------*/ // DISPLAY NAME: CHANGE START /*-------------------------------------------------------------------------*/ function display_name_change( $error="", $okmessage="" ) { //----------------------------------------- // INIT //----------------------------------------- $form = array(); //----------------------------------------- // CHECK (please) //----------------------------------------- if ( ! $this->ipsclass->vars['auth_allow_dnames'] OR $this->ipsclass->member['g_dname_changes'] < 1 OR $this->ipsclass->member['g_dname_date'] < 1 ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_permission' ) ); } //----------------------------------------- // Grab # changes > 24 hours //----------------------------------------- $time_check = time() - 86400 * $this->ipsclass->member['g_dname_date']; $name_count = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'COUNT(*) as count, MIN(dname_date) as min_date', 'from' => 'dnames_change', 'where' => "dname_member_id={$this->ipsclass->member['id']} AND dname_date > $time_check" ) ); $name_count['count'] = intval( $name_count['count'] ); $name_count['min_date'] = intval( $name_count['min_date'] ) ? intval( $name_count['min_date'] ) : $time_check; //----------------------------------------- // Calculate # left //----------------------------------------- $form['_changes_left'] = $this->ipsclass->member['g_dname_changes'] - $name_count['count']; $form['_changes_done'] = $name_count['count']; # Make sure changes done isn't larger than allowed # This happens when changing via ACP if ( $form['_changes_done'] > $this->ipsclass->member['g_dname_changes'] ) { $form['_changes_done'] = $this->ipsclass->member['g_dname_changes']; } $form['_first_change'] = $this->ipsclass->get_date( $name_count['min_date'], 'SHORT', 1 ); $form['_lang_string'] = sprintf( $this->ipsclass->lang['dname_string'], $form['_changes_done'], $this->ipsclass->member['g_dname_changes'], $form['_first_change'], $this->ipsclass->member['g_dname_changes'], $this->ipsclass->member['g_dname_date'] ); //----------------------------------------- // Print //----------------------------------------- $this->output .= $this->ipsclass->compiled_templates['skin_ucp']->ucp_dname_change( $form, $error, $okmessage ); $this->page_title = $this->ipsclass->lang['m_dname_change']; $this->nav = array( "<a href='".$this->ipsclass->base_url."act=UserCP&CODE=00'>".$this->ipsclass->lang['t_title']."</a>" ); $this->nav[] = $this->ipsclass->lang['m_dname_change']; } /*-------------------------------------------------------------------------*/ // ANNOUNCEMENTS: DELETE /*-------------------------------------------------------------------------*/ function mod_announce_delete() { if ( ! $this->ipsclass->member['g_is_supmod'] ) { $this->output .= $this->ipsclass->compiled_templates['skin_ucp']->dead_section(); return; } $id = intval( $this->ipsclass->input['id'] ); if ( $id ) { $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'announcements', 'where' => 'announce_id='.$id ) ); } //----------------------------------------- // Update cache //----------------------------------------- require_once( ROOT_PATH.'sources/action_public/announcements.php' ); $announcements = new announcements(); $announcements->ipsclass =& $this->ipsclass; $announcements->announce_recache(); $this->mod_announce_start(); } /*-------------------------------------------------------------------------*/ // ANNOUNCEMENTS: SAVE (new/edit) /*-------------------------------------------------------------------------*/ function mod_announce_save() { $type = $this->ipsclass->input['type']; $forums_to_save = ""; if ( ! $this->ipsclass->member['g_is_supmod'] ) { $this->output .= $this->ipsclass->compiled_templates['skin_ucp']->dead_section(); return; } //----------------------------------------- // check... //----------------------------------------- if ( ! $this->ipsclass->input['announce_title'] or ! $this->ipsclass->input['announce_post'] ) { $this->mod_announce_form( $type, $this->ipsclass->lang['announce_error_title'] ); return; } //----------------------------------------- // Get forums to add announce in //----------------------------------------- if ( is_array( $_POST['announce_forum'] ) and count( $_POST['announce_forum'] ) ) { if ( in_array( '*', $_POST['announce_forum'] ) ) { $forums_to_save = '*'; } else { $forums_to_save = implode( ",", $_POST['announce_forum'] ); } } if ( ! $forums_to_save ) { $this->mod_announce_form( $type, $this->ipsclass->lang['announce_error_forums'] ); return; }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?