Viewing 1 replies (of 1 total)
  • Plugin Author YOP

    (@yourownprogrammer)

    Hi Sam_a,

    Edit yop_poll_model.php and replace the add_poll_to_database function with

    public function add_poll_to_database( $request = array(), $config = NULL ) {
       if ( $this->verify_request_data( $request, $config ) ){
        $this->make_poll_from_request_data( $request, $config );
        $result = self::get_poll_from_database_by_name( $this->poll['name'] );
        if ( !isset( $result['id'] ) ){
         //inserting poll to db
         $this->poll['id'] = self::insert_poll_to_database( $this->poll );
    
         if ( isset( $request['yop_poll_options']['auto_generate_poll_page'] ) ){
          if ( 'yes' == $request['yop_poll_options']['auto_generate_poll_page'] ){
           $_p                   = array();
           $_p['post_title']     = $this->poll['name'];
           $_p['post_content']   = "[yop_poll id='" . $this->poll['id'] . "']";
           $_p['post_status']    = 'publish';
           $_p['post_type']      = 'page';
           $_p['comment_status'] = 'open';
           $_p['ping_status']    = 'open';
           $_p['post_category']  = array( 1 ); // the default 'Uncategorised'
    
           $poll_page_id = wp_insert_post( $_p );
    
           $request['yop_poll_options']['poll_page_url']               = get_permalink( $poll_page_id );
           $request['yop_poll_options']['has_auto_generate_poll_page'] = 'yes';
          }
         }
    
         //inserting poll options to db
         $poll_options    = array();
         $default_options = get_option( 'yop_poll_options', false );
    
         if ( isset( $request['yop_poll_options'] ) ){
          foreach ( $request['yop_poll_options'] as $option_name => $option_value ) {
           if ( $default_options ){
            if ( isset( $default_options[$option_name] ) ){
             if ( $default_options[$option_name] != $option_value ){
              $poll_options[$option_name] = $option_value;
             }
            }
           }
           else {
            $poll_options[$option_name] = $option_value;
           }
          }
         }
         //this is for checkbox options
         if ( !isset( $request['yop_poll_options']['never_expire'] ) ){
          $poll_options['never_expire'] = 'no';
         }
    
         if ( isset( $request['yop_poll_options']['schedule_reset_poll_date'] ) ){
          $poll_options['schedule_reset_poll_date'] = strtotime( $request['yop_poll_options']['schedule_reset_poll_date'] );
         }
         else {
          $poll_options['schedule_reset_poll_date'] = current_time( 'timestamp' );
         }
    
         if ( 'yes' == $request['yop_poll_options']['schedule_reset_poll_stats'] ){
          $default_options['start_scheduler'] = 'yes';
         }
         else {
          $change_start_scheduler_to_no = true;
          $yop_polls                    = self::get_yop_polls_fields( array( 'id' ) );
          if ( count( $yop_polls ) > 0 ){
           foreach ( $yop_polls as $yop_poll_id ) {
            if ( $yop_poll_id['id'] != $this->poll['id'] ){
             $yop_poll_options = get_yop_poll_meta( $yop_poll_id['id'], 'options', true );
             if ( isset( $yop_poll_options['schedule_reset_poll_stats'] ) && 'yes' == $yop_poll_options['schedule_reset_poll_stats'] ){
              $change_start_scheduler_to_no = false;
             }
            }
           }
          }
          if ( $change_start_scheduler_to_no ){
           $default_options['start_scheduler'] = 'no';
          }
          else {
           $default_options['start_scheduler'] = 'yes';
          }
         }
         update_option( 'yop_poll_options', $default_options );
    
         //if ( count( $poll_options ) > 0 )
         update_yop_poll_meta( $this->poll['id'], 'options', $poll_options );
    
         //inserting answers to db
         foreach ( $default_options as $option_name => $option_value ) {
          if ( isset( $poll_options[$option_name] ) ){
           if ( $option_name != 'use_template_bar' ){
            $default_options[$option_name] = $poll_options[$option_name];
           }
          }
         }
         $this->make_answers_from_request_data( $request, $config );
         if ( count( $this->answers ) > 0 ){
          foreach ( $this->answers as $answer ) {
           $answer_id = self::insert_answer_to_database( $answer );
    
           //insert poll answer options to db
           if ( 'other' != $answer['type'] ){
            if ( isset( $request['yop_poll_answer_options'][$answer['name']] ) ){
             $poll_answer_options = array();
             foreach ( $request['yop_poll_answer_options'][$answer['name']] as $option_name => $option_value ) {
              if ( isset( $poll_options[$option_name] ) && $poll_options[$option_name] != $option_value ){
               $poll_answer_options[$option_name] = $option_value;
              }
              elseif ( $default_options[$option_name] != $option_value ) {
               $poll_answer_options[$option_name] = $option_value;
              }
              if ( $option_name == 'is_default_answer' ){
               $poll_answer_options[$option_name] = $option_value;
              }
             }
             //if ( count( $poll_answer_options ) > 0 )
             update_yop_poll_answer_meta( $answer_id, 'options', $poll_answer_options, false );
            }
           }
          }
         }
    
         //inserting custom fields to db
         $this->make_custom_fields_from_request_data( $request, $config );
         if ( count( $this->custom_fields ) > 0 ){
          foreach ( $this->custom_fields as $custom_field ) {
           self::insert_custom_field_to_database( $custom_field );
          }
         }
    
         return $this->poll['id'];
        }
        else {
         $this->error = __( 'This poll already exists! Please choose another name!', 'yop_poll' );
         return false;
        }
       }
       else {
        return false;
       }
      }

    Let us know if you need more help.

    Regards,

    YOP Team

Viewing 1 replies (of 1 total)
  • The topic ‘Poll content and options aren't saved’ is closed to new replies.