class_post_reply.php

来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 649 行 · 第 1/2 页

PHP
649
字号
			$this->post['post_key']    = $this->post_key;			$this->post['post_parent'] = intval($this->ipsclass->input['parent_id']);						//-----------------------------------------			// Typecast			//-----------------------------------------						$this->ipsclass->DB->force_data_type = array( 'pid'  => 'int',														  'post' => 'string' );						$this->ipsclass->DB->do_insert( 'posts', $this->post );						$this->post['pid'] = $this->ipsclass->DB->get_insert_id();		}				//-----------------------------------------		// If we are still here, lets update the		// board/forum/topic stats		//-----------------------------------------				$this->pf_update_forum_and_stats($this->topic['tid'], $this->topic['title'], 'reply');				//-----------------------------------------		// Get the correct number of replies		//-----------------------------------------				$this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(*) as posts', 'from' => 'posts', 'where' => "topic_id={$this->topic['tid']} and queued != 1" ) );		$this->ipsclass->DB->simple_exec();				$posts = $this->ipsclass->DB->fetch_row();				$pcount = intval( $posts['posts'] - 1 );				//-----------------------------------------		// Get the correct number of queued replies		//-----------------------------------------				$this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(*) as posts', 'from' => 'posts', 'where' => "topic_id={$this->topic['tid']} and queued=1" ) );		$this->ipsclass->DB->simple_exec();				$qposts  = $this->ipsclass->DB->fetch_row();				$qpcount = intval( $qposts['posts'] );				//-----------------------------------------		// UPDATE TOPIC		//-----------------------------------------				$poster_name = $this->ipsclass->member['id'] ? $this->ipsclass->member['members_display_name'] : $this->ipsclass->input['UserName'];				$update_array = array(							  'posts'			 => $pcount,							  'topic_queuedposts'=> $qpcount							 );							 		if ( $this->obj['moderate'] != 1 and $this->obj['moderate'] != 3 )		{					 			$update_array['last_poster_id']   = $this->ipsclass->member['id'];			$update_array['last_poster_name'] = $poster_name;			$update_array['last_post']        = time();			$update_array['pinned']           = $this->topic['pinned'];			$update_array['state']            = $this->topic['state'];						if ( count( $this->poll_questions ) AND $this->can_add_poll )			{				$update_array['poll_state'] = 1;			}		}				$this->ipsclass->DB->force_data_type = array( 'title'            => 'string',													  'description'      => 'string',													  'starter_name'     => 'string',													  'last_poster_name' => 'string' );													  		$this->ipsclass->DB->do_update( 'topics', $update_array, "tid={$this->topic['tid']}"  );				//-----------------------------------------		// Add the poll to the polls table		//-----------------------------------------				if ( count( $this->poll_questions ) AND $this->can_add_poll )		{			$this->ipsclass->DB->do_insert( 'polls', 											array (													  'tid'           => $this->topic['tid'],													  'forum_id'      => $this->forum['id'],													  'start_date'    => time(),													  'choices'       => addslashes(serialize( $this->poll_questions )),													  'starter_id'    => $this->ipsclass->member['id'],													  'votes'         => 0,													  'poll_question' => $this->ipsclass->input['poll_question'],											)     );		}				//-----------------------------------------		// If we are a member, lets update thier last post		// date and increment their post count.		//-----------------------------------------				if ( ! $this->is_merging_posts )		{			$this->pf_increment_user_post_count();		}				//-----------------------------------------		// Make attachments "permanent"		//-----------------------------------------				$this->pf_make_attachments_permanent($this->post_key, $this->topic['tid'], $this->post['pid']);				//-----------------------------------------		// MAKE SURE ATTACHMENTS FOR MERGED POSTS		// ARE UPDATED		//-----------------------------------------				if ( $this->is_merging_posts )		{			//-----------------------------------------			// Update attachments			//-----------------------------------------						$this->ipsclass->DB->do_update( 'attachments', array( 'attach_post_key' => $this->post['post_key'] ), 'attach_pid='.$this->post['pid'] );		}				//-----------------------------------------		// Moderating?		//-----------------------------------------				if ( ! $this->is_merging_posts AND ( $this->obj['moderate'] == 1 or $this->obj['moderate'] == 3) )		{			//-----------------------------------------			// Boing!!!			//-----------------------------------------						$this->notify_new_topic_approval( $this->topic['tid'], $this->topic['title'], $this->topic['starter_name'], $this->post['pid'], 'reply' );						$page = floor( ($this->topic['posts'] + 1) / $this->ipsclass->vars['display_max_posts']);			$page = $page * $this->ipsclass->vars['display_max_posts'];						$this->ipsclass->print->redirect_screen( $this->ipsclass->lang['moderate_post'], "showtopic={$this->topic['tid']}&st=$page" );		}				//-----------------------------------------		// Are we tracking topics we reply in 'auto_track'?		//-----------------------------------------				$this->pf_add_tracked_topic($this->topic['tid'], 1);				//-----------------------------------------		// Check for subscribed topics		// Pass on the previous last post time of the topic		// to see if we need to send emails out		//-----------------------------------------				$this->topic_tracker( $this->topic['tid'], $this->post['post'], $poster_name, $this->last_post );				//-----------------------------------------		// Redirect them back to the topic		//-----------------------------------------				if ($return_to_move == 1)		{			$this->ipsclass->boink_it($this->ipsclass->base_url."act=Mod&CODE=02&f={$this->forum['id']}&t={$this->topic['tid']}");		}		else		{			if ( $this->ipsclass->vars['post_order_sort'] == 'desc' )			{				$this->ipsclass->boink_it($this->ipsclass->base_url."showtopic={$this->topic['tid']}&#entry{$this->post['pid']}");			}			else			{				$page = floor( ($this->topic['posts'] + 1) / $this->ipsclass->vars['display_max_posts']);				$page = $page * $this->ipsclass->vars['display_max_posts'];				$this->ipsclass->boink_it($this->ipsclass->base_url."showtopic={$this->topic['tid']}&st=$page&gopid={$this->post['pid']}&#entry{$this->post['pid']}");			}		}	}	/*-------------------------------------------------------------------------*/	// SHOW FORM	/*-------------------------------------------------------------------------*/	function show_form()	{		//-----------------------------------------		// Are we quoting posts?		//-----------------------------------------				$raw_post = $this->check_multi_quote();				//-----------------------------------------		// RTE? Convert RIGHT tags that QUOTE would		// have put there		//-----------------------------------------				if ( $this->han_editor->method == 'rte' )		{			$raw_post = $this->parser->convert_ipb_html_to_html( $raw_post );		}				//-----------------------------------------		// Do we have any posting errors?		//-----------------------------------------				if ( $this->obj['post_errors'] )		{			$this->output .= $this->ipsclass->compiled_templates['skin_post']->errors( $this->ipsclass->lang[ $this->obj['post_errors'] ]);		}				if ( $this->obj['preview_post'] )		{			$this->output .= $this->ipsclass->compiled_templates['skin_post']->preview( $this->show_post_preview( $this->post['post'] ) );		}				$this->output .= $this->html_start_form( array( 1 => array( 'CODE'     , '03' ),														2 => array( 't'        , $this->topic['tid'] ),														3 => array( 'post_key' , $this->post_key     ),														4 => array( 'parent_id', $this->ipsclass->input['parent_id'] ),											   )      );																//-----------------------------------------		// START TABLE		//-----------------------------------------				$this->output .= $this->ipsclass->compiled_templates['skin_post']->table_structure();				$start_table = $this->ipsclass->compiled_templates['skin_post']->table_top( "{$this->ipsclass->lang['top_txt_reply']} {$this->topic['title']}");				$name_fields = $this->html_name_field();				$post_box    = $this->html_post_body( $raw_post );				$mod_options = $this->mod_options('reply');				$end_form    = $this->ipsclass->compiled_templates['skin_post']->EndForm( $this->ipsclass->lang['submit_reply'] );				$post_icons  = $this->html_post_icons();				//-----------------------------------------		// Still here?		//-----------------------------------------				if ( $this->can_add_poll )		{			//-----------------------------------------			// Did someone hit preview / do we have			// post info?			//-----------------------------------------						$poll_questions = "";			$poll_choices   = "";			$show_open      = 0;						if ( is_array( $_POST['question'] ) and count( $_POST['question'] ) )			{				foreach( $_POST['question'] as $id => $question )				{					$poll_questions .= "\t{$id} : '".str_replace( "'", '&#39;', $question )."',\n";				}								$poll_question = $this->ipsclass->input['poll_question'];				$show_open     = 1;			}						if ( is_array( $_POST['choice'] ) and count( $_POST['choice'] ) )			{				foreach( $_POST['choice'] as $id => $choice )				{					$poll_choices .= "\t'{$id}' : '".str_replace( "'", '&#39;', $choice )."',\n";				}			}						//-----------------------------------------			// Trim off trailing commas (Safari hates it)			//-----------------------------------------						$poll_questions = preg_replace( "#,(\n)?$#", "\\1", $poll_questions );			$poll_choices   = preg_replace( "#,(\n)?$#", "\\1", $poll_choices );						$poll_box = $this->ipsclass->compiled_templates['skin_post']->poll_box( $this->max_poll_questions, $this->max_poll_choices_per_question, $poll_questions, $poll_choices, $poll_votes, $show_open, $poll_question );		}				if ( $this->can_upload )		{			$upload_field = $this->html_build_uploads($this->post_key,'reply');		}				$this->output = str_replace( "<!--START TABLE-->" , $start_table  , $this->output );		$this->output = str_replace( "<!--NAME FIELDS-->" , $name_fields  , $this->output );		$this->output = str_replace( "<!--POLL BOX-->"    , $poll_box     , $this->output );		$this->output = str_replace( "<!--POST BOX-->"    , $post_box     , $this->output );		$this->output = str_replace( "<!--POST ICONS-->"  , $post_icons   , $this->output );		$this->output = str_replace( "<!--UPLOAD FIELD-->", $upload_field , $this->output );		$this->output = str_replace( "<!--MOD OPTIONS-->" , $mod_options  , $this->output );		$this->output = str_replace( "<!--END TABLE-->"   , $end_form     , $this->output );		$this->output = str_replace( "<!--FORUM RULES-->" , $this->ipsclass->print_forum_rules($this->forum), $this->output );				$this->output = $this->html_add_smilie_box( $this->output );				//-----------------------------------------		// Add in siggy buttons and such		//-----------------------------------------				$this->html_checkboxes('reply', $this->topic['tid'], $this->forum['id']);				$this->html_topic_summary($this->topic['tid']);				$this->show_post_navigation();						  		$this->title = $this->ipsclass->lang['replying_in'].' '.$this->topic['title'];				$this->ipsclass->print->add_output( $this->output );		        $this->ipsclass->print->do_output( array( 'TITLE'    => $this->ipsclass->vars['board_name']." -> ".$this->title,												  'JS'       => 1,												  'NAV'      => $this->nav,										 )      );			}	}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?