Edit post library | > Module written by Matt Mecham | > Date started: 19th February 2002 | | > Module Version Number: 1.0.0 +-------------------------------------------------------------------------- */ class post_functions extends Post { var $nav = array(); var $title = ""; var $post = array(); var $topic = array(); var $upload = array(); var $moderator = array( 'member_id' => 0, 'member_name' => "", 'edit_post' => 0 ); var $orig_post = array(); function post_functions($class) { global $ibforums, $std, $DB; // Lets load the topic from the database before we do anything else. $DB->query("SELECT * FROM ibf_topics WHERE tid='".$ibforums->input['t']."'"); $this->topic = $DB->fetch_row(); // Is it legitimate? if (! $this->topic['tid']) { $std->Error( array( LEVEL => 1, MSG => 'missing_files') ); } // Load the old post $DB->query("SELECT * FROM ibf_posts WHERE pid='".$ibforums->input['p']."'"); $this->orig_post = $DB->fetch_row(); if (! $this->orig_post['pid']) { $std->Error( array( LEVEL => 1, MSG => 'missing_files') ); } // Load the moderator if ($ibforums->member['id']) { $DB->query("SELECT member_id, member_name, mid, edit_post FROM ibf_moderators WHERE member_id='".$ibforums->member['id']."' and forum_id='".$class->forum['id']."'"); $this->moderator = $DB->fetch_row(); } //------------------------------------------------- // Lets do some tests to make sure that we are // allowed to edit this topic //------------------------------------------------- $can_edit = 0; if ($ibforums->member['g_is_supmod']) { $can_edit = 1; } if ($this->moderator['edit_post']) { $can_edit = 1; } if ( ($this->orig_post['author_id'] == $ibforums->member['id']) and ($ibforums->member['g_edit_posts']) ) { $can_edit = 1; } if ($can_edit != 1) { $std->Error( array( LEVEL => 1, MSG => 'not_op') ); } // Is the topic locked? if (($this->topic['state'] != 'open') and (!$ibforums->member['g_is_supmod'])) { $std->Error( array( LEVEL => 1, MSG => 'locked_topic') ); } } function process($class) { global $ibforums, $std, $DB, $print; //------------------------------------------------- // Parse the post, and check for any errors. // overwrites saved post intentionally //------------------------------------------------- $this->post = $class->compile_post(); if ($class->obj['post_errors'] == "") { $this->upload = $class->process_upload(); } if ( ($class->obj['post_errors'] != "") or ($class->obj['preview_post'] != "") ) { // Show the form again $this->show_form($class); } else { $this->complete_edit($class); } } function complete_edit($class) { global $ibforums, $std, $DB, $print; $time = $std->get_date( time(), 'LONG' ); //------------------------------------------------- // Reset some data //------------------------------------------------- $this->post['attach_id'] = $this->orig_post['attach_id']; $this->post['attach_type'] = $this->orig_post['attach_type']; $this->post['attach_hits'] = $this->orig_post['attach_hits']; $this->post['ip_address'] = $this->orig_post['ip_address']; $this->post['topic_id'] = $this->orig_post['topic_id']; $this->post['author_id'] = $this->orig_post['author_id']; $this->post['pid'] = $this->orig_post['pid']; $this->post['post_date'] = $this->orig_post['post_date']; $this->post['author_name'] = $this->orig_post['author_name']; // If the post icon has changed, update the topic post icon if ($this->orig_post['new_topic'] == 1) { if ($this->post['icon_id'] != $this->orig_post['icon_id']) { $DB->query("UPDATE ibf_topics SET icon_id='".$this->post['icon_id']."' WHERE tid='".$this->topic['tid']."'"); } } //------------------------------------------------- // Update the database (ib_forum_post) //------------------------------------------------- if ($ibforums->member['g_append_edit']) { $this->post['post'] .= "\n\n

"; } $db_string = $DB->compile_db_update_string( $this->post ); $DB->query("UPDATE ibf_posts SET $db_string WHERE pid='".$this->post['pid']."'"); //------------------------------------------------- // Redirect them back to the topic //------------------------------------------------- $print->redirect_screen( $ibforums->lang['post_edited'], "act=ST&f={$class->forum['id']}&t={$this->topic['tid']}&st={$ibforums->input['st']}#entry{$this->post['pid']}"); } function show_form($class) { global $ibforums, $std, $DB, $print, $HTTP_POST_VARS; //------------------------------------------------- // Sort out the "raw" textarea input and make it safe incase // we have a