New Post module | > Module written by Matt Mecham | +-------------------------------------------------------------------------- */ class post_functions extends Post { var $nav = array(); var $title = ""; var $post = array(); var $topic = array(); var $upload = array(); var $mod_topic = array(); var $poll_count = 0; var $poll_choices = ""; var $m_group = ""; function post_functions($class) { global $ibforums, $std, $DB; //------------------------------------------------------------------------- // Sort out maximum number of poll choices allowed //------------------------------------------------------------------------- $ibforums->vars['max_poll_choices'] = $ibforums->vars['max_poll_choices'] ? $ibforums->vars['max_poll_choices'] : 10; $ibforums->lang['poll_choices'] = sprintf( $ibforums->lang['poll_choices'], $ibforums->vars['max_poll_choices'] ); //------------------------------------------------------------------------- // Lets do some tests to make sure that we are allowed to start a new topic //------------------------------------------------------------------------- if (! $ibforums->member['g_post_polls']) { $std->Error( array( LEVEL => 1, MSG => 'no_start_polls') ); } if ( ! $class->forum['allow_poll'] ) { $std->Error( array( LEVEL => 1, MSG => 'no_start_polls') ); } if ( $std->check_perms($class->forum['start_perms']) == FALSE ) { $std->Error( array( LEVEL => 1, MSG => 'no_start_polls') ); } if ( ! intval($ibforums->input['t']) ) { $std->Error( array( 'LEVEL' => 1, 'MSG' => 'is_broken_link') ); } else { $tid = intval($ibforums->input['t']); $DB->query("SELECT * from ibf_topics WHERE tid=$tid"); if ( ! $this->topic = $DB->fetch_row() ) { $std->Error( array( 'LEVEL' => 1, 'MSG' => 'is_broken_link') ); } } $pass = 0; if ( $ibforums->member['id'] ) { if ( $ibforums->member['g_is_supmod'] == 1 ) { $pass = 1; } else if ( $this->topic['starter_id'] == $ibforums->member['id'] ) { if ( ($ibforums->vars['startpoll_cutoff'] > 0) AND ( $this->topic['start_date'] + ($ibforums->vars['startpoll_cutoff'] * 3600) > time() ) ) { $pass = 1; } } } if ( $pass != 1 ) { $std->Error( array( LEVEL => 1, MSG => 'no_start_polls') ); } } function process($class) { global $ibforums, $std, $DB, $print; //------------------------------------------------- // check to make sure we have a correct # of choices //------------------------------------------------- $this->poll_choices = $ibforums->input['PollAnswers']; $this->poll_choices = preg_replace( "/

/" , "" , $this->poll_choices ); $this->poll_choices = preg_replace( "/
/e" , "\$this->regex_count_choices()" , $this->poll_choices ); if ($this->poll_count > $ibforums->vars['max_poll_choices']) { $class->obj['post_errors'] = 'poll_to_many'; } if ($this->poll_count < 1) { $class->obj['post_errors'] = 'poll_not_enough'; } if ($class->obj['post_errors'] != "") { // Show the form again $this->show_form($class); } else { $this->add_new_poll($class); } } function add_new_poll($class) { global $ibforums, $std, $DB, $print; //------------------------------------------------- // Sort out the poll stuff // This is somewhat contrived, but it has to be // compatible with the current perl version. //------------------------------------------------- $poll_array = array(); $count = 0; $polls = explode( "
", $this->poll_choices ); foreach ($polls as $polling) { if ( $polling == "" ) { continue; } $poll_array[] = array( $count , $class->parser->bad_words($polling), 0 ); $count++; } //------------------------------------------------- // Add the poll to the forum_polls table // if we are moderating this post //------------------------------------------------- $db_string = $std->compile_db_string( array ( 'tid' => $this->topic['tid'], 'forum_id' => $class->forum['id'], 'start_date' => time(), 'choices' => addslashes(serialize($poll_array)), 'starter_id' => $ibforums->member['id'], 'votes' => 0, 'poll_question' => $class->parser->bad_words($ibforums->input['pollq']), ) ); $DB->query("INSERT INTO ibf_polls (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"); $DB->query("UPDATE ibf_topics SET poll_state='open' WHERE tid={$this->topic['tid']}"); //------------------------------------------------- // Redirect them back to the topic //------------------------------------------------- $std->boink_it($class->base_url."act=ST&f={$class->forum['id']}&t={$this->topic['tid']}"); } 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