Example #1
0
 public static function save_poll($preview = false)
 {
     $new_poll = new YOP_POLL_Poll_Model($_POST['poll_id']);
     $new_poll->poll_title = stripslashes(trim($_POST['poll_title']));
     $new_poll->poll_name = sanitize_title($new_poll->poll_title);
     $new_poll->poll_author = $GLOBALS['current_user']->ID;
     $new_poll->poll_date = current_time('mysql');
     $new_poll->poll_status = 'active';
     $new_poll->poll_modified = current_time('mysql');
     $new_poll->poll_start_date = $_POST['poll_start_date'];
     $new_poll->poll_end_date = isset($_POST['poll_never_expire']) && 'yes' == $_POST['poll_never_expire'] ? '01-01-2038 23:59:59' : $_POST['poll_end_date'];
     $new_poll->poll_total_votes = 0;
     //poll options area
     if (isset($_POST['yop_poll_options']) && is_array($_POST['yop_poll_options']) && count($_POST['yop_poll_options']) > 0) {
         foreach ($_POST['yop_poll_options'] as $poll_option_field => $poll_option_value) {
             $new_poll->{$poll_option_field} = $poll_option_value;
         }
     }
     if (isset($_POST['yop_poll_options']['use_the_same_template_for_widget'])) {
         $new_poll->use_the_same_template_for_widget = 'yes';
         $new_poll->widget_template_width = $new_poll->template_width;
         $new_poll->widget_template = $new_poll->template;
     } else {
         $new_poll->use_the_same_template_for_widget = 'no';
     }
     $questions = array();
     if (isset($_POST['yop_poll_question']) && is_array($_POST['yop_poll_question']) && count($_POST['yop_poll_question']) > 0) {
         foreach ($_POST['yop_poll_question'] as $question_args) {
             $new_question = new YOP_POLL_Question_Model($question_args['question_id']);
             $new_question->question = trim($question_args['question']);
             $new_question->type = trim($question_args['type']);
             $new_question->question_modified = current_time('mysql');
             $new_question->poll_order = intval($question_args['poll_order']);
             if (!$new_question->exists()) {
                 //for insert
                 $new_question->question_author = $GLOBALS['current_user']->ID;
                 $new_question->question_date = current_time('mysql');
                 $new_question->question_status = 'active';
             }
             //question options area
             if (isset($question_args['options']) && is_array($question_args['options']) && count($question_args['options']) > 0) {
                 foreach ($question_args['options'] as $question_option_field => $question_option_value) {
                     $new_question->{$question_option_field} = $question_option_value;
                 }
             }
             $custom_fields = array();
             //question custom fields area
             if (isset($question_args['custom_fields']) && is_array($question_args['custom_fields']) && count($question_args['custom_fields']) > 0) {
                 foreach ($question_args['custom_fields'] as $question_custom_field) {
                     $cf_id = isset($question_custom_field['id']) ? trim($question_custom_field['id']) : 0;
                     $new_custom_field = new YOP_POLL_Custom_Field_Model($cf_id);
                     $new_custom_field->custom_field = trim($question_custom_field['custom_field']);
                     $new_custom_field->required = isset($question_custom_field['required']) ? trim($question_custom_field['required']) : 'no';
                     $new_custom_field->status = "active";
                     if ($new_custom_field->custom_field == "") {
                         $response['success'] = 0;
                         $response['id'] = -1;
                         $response['error'] = 1;
                         $response['message'] = __yop_poll('Custom Field') . ' ' . $question_custom_field['order'] . ' ' . __yop_poll('from Question') . ' ' . $new_question->poll_order . ' ' . __yop_poll('is empty!');
                         wp_die(json_encode($response));
                     }
                     $custom_fields[] = $new_custom_field;
                 }
             }
             $new_question->custom_fields = $custom_fields;
             $answers = array();
             if (isset($_POST['yop_poll_answer'][$question_args['question_id']]) && is_array($_POST['yop_poll_answer'][$question_args['question_id']]) && count($_POST['yop_poll_answer'][$question_args['question_id']]) > 0) {
                 foreach ($_POST['yop_poll_answer'][$question_args['question_id']] as $answer_args) {
                     $new_answer = new YOP_POLL_Answer_Model($answer_args['answer_id']);
                     $new_answer->answer = trim($answer_args['answer']);
                     $new_answer->type = trim($answer_args['type']);
                     if (isset($answer_args['is_default_answer'])) {
                         $new_answer->is_default_answer = 'yes';
                     } else {
                         $new_answer->is_default_answer = 'no';
                     }
                     $new_answer->description = "";
                     if ($new_answer->type == 'video') {
                         $new_answer->description = trim($answer_args['description_video']);
                     } else {
                         if ($new_answer->type == 'image') {
                             $new_answer->description = trim($answer_args['description_image']);
                         }
                     }
                     $new_answer->question_order = trim($answer_args['question_order']);
                     $new_answer->answer_modified = current_time('mysql');
                     if (!$new_answer->exists()) {
                         //for insert
                         $new_answer->answer_author = $GLOBALS['current_user']->ID;
                         $new_answer->answer_date = current_time('mysql');
                         $new_answer->answer_status = 'active';
                     }
                     if ($new_answer->answer == '') {
                         $response['success'] = 0;
                         $response['id'] = -1;
                         $response['error'] = 1;
                         $response['message'] = __yop_poll('Answer') . ' ' . $new_answer->question_order . ' ' . __yop_poll('from Question') . ' ' . $new_question->poll_order . ' ' . __yop_poll('is empty!');
                         wp_die(json_encode($response));
                     }
                     $answers[] = $new_answer;
                 }
             }
             $new_question->answers = $answers;
             if ($new_question->question == '') {
                 $response['success'] = 0;
                 $response['id'] = -1;
                 $response['error'] = 1;
                 $response['message'] = __yop_poll('Question') . ' ' . $new_question->poll_order . ' ' . __yop_poll('is empty!');
                 wp_die(json_encode($response));
             }
             $questions[] = $new_question;
         }
     }
     $new_poll->questions = $questions;
     if ($preview) {
         $new_poll->ID = 'preview';
         return $new_poll->return_poll_html(array('tr_id' => '', 'location' => 'page', 'load_css' => true, 'load_js' => false));
     } else {
         if (!$new_poll->exists() && YOP_POLL_Poll_Model::get_data_by('name', $new_poll->poll_name)) {
             $response['success'] = 0;
             $response['id'] = -1;
             $response['error'] = 1;
             $response['message'] = __yop_poll('This poll already exists! Please choose another name!');
             wp_die(json_encode($response));
         }
         if ($new_poll->exists() && YOP_POLL_Poll_Model::get_other_model_data_by('name', $new_poll->poll_name, $new_poll->id)) {
             $response['success'] = 0;
             $response['id'] = -1;
             $response['error'] = 1;
             $response['message'] = __yop_poll('This poll already exists! Please choose another name!');
             wp_die(json_encode($response));
         }
         if ($new_poll->save()) {
             self::save_poll_order($new_poll->get('ID'), $_POST['poll_archive_order']);
             $response['success'] = 1;
             $response['id'] = $new_poll->ID;
             $response['error'] = 0;
             $response['message'] = __yop_poll('Poll successfully saved!');
             wp_die(json_encode($response));
         } else {
             $response['success'] = 0;
             $response['id'] = -1;
             $response['error'] = 1;
             $response['message'] = __yop_poll('Poll couldn`t be saved!');
             wp_die(json_encode($response));
         }
     }
 }