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('&#39;', "'", $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&amp;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 + -
显示快捷键?