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)); } } }