PluginProbe
Survey Maker by AYS / 5.2.4.1
Survey Maker by AYS v5.2.4.1
5.2.4.1 5.2.4.0 5.2.3.9 5.2.3.8 5.2.3.7 5.2.3.6 5.2.3.5 5.2.3.4 5.2.3.3 5.2.3.2 5.2.3.1 5.2.3.0 5.2.2.9 5.2.2.8 5.2.2.7 5.2.2.6 5.2.2.5 5.2.2.4 5.2.2.3 5.2.2.2 5.2.2.1 5.2.2.0 5.2.1.9 5.2.1.8 5.2.0.8 All 154 releases
← All changes | public/class-survey-maker-public.php +446 -131 5.2.2.6 → 5.2.4.1 View file →
@@ -133,8 +133,9 @@
133 133
134 134 wp_localize_script( $this->plugin_name . '-plugin', 'aysSurveyMakerAjaxPublic', array(
135 135 'ajaxUrl' => admin_url('admin-ajax.php'),
136 136 'warningIcon' => SURVEY_MAKER_PUBLIC_URL . "/images/warning.svg",
137 + 'ajaxNonce' => wp_create_nonce( 'ays_survey_ajax_nonce' ),
137 138 'autofill_nonce' => wp_create_nonce('survey_maker_autofill_nonce')
138 139 ) );
139 140 wp_localize_script( $this->plugin_name, 'aysSurveyLangObj', array(
140 141 'notAnsweredText' => __( 'You have not answered this question', "survey-maker" ),
@@ -159,8 +160,9 @@
159 160 public function enqueue_scripts_popups() {
160 161 wp_enqueue_script( $this->plugin_name . '-popups', plugin_dir_url( __FILE__ ) . 'js/survey-maker-public-popups.js', array( 'jquery' ), $this->version, false );
161 162 wp_localize_script( $this->plugin_name . '-popups', 'aysSurveyMakerPopupsAjaxPublic', array(
162 163 'ajaxUrl' => admin_url('admin-ajax.php'),
164 + 'ajaxNonce' => wp_create_nonce( 'ays_survey_ajax_nonce' ),
163 165 ) );
164 166 }
165 167
166 168 public function ays_survey_ajax(){
@@ -165,8 +167,14 @@
165 167
166 168 public function ays_survey_ajax(){
167 169 global $wpdb;
168 170
171 + if ( 'POST' !== strtoupper( isset( $_SERVER['REQUEST_METHOD'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REQUEST_METHOD'] ) ) : '' ) ) {
172 + wp_send_json_error( array( 'message' => __( 'Invalid request method.', 'survey-maker' ) ), 405 );
173 + }
174 +
175 + check_ajax_referer( 'ays_survey_ajax_nonce', '_ajax_nonce' );
176 +
169 177 $results = array(
170 178 "status" => false
171 179 );
172 180 $function = isset($_REQUEST['function']) ? $_REQUEST['function'] : null;
@@ -188,16 +196,14 @@
188 196 }
189 197
190 198 ob_end_clean();
191 199 $ob_get_clean = ob_get_clean();
192 - echo json_encode( $results );
193 - wp_die();
200 + wp_send_json( $results );
194 201 }
195 202
196 203 ob_end_clean();
197 204 $ob_get_clean = ob_get_clean();
198 - echo json_encode( $results );
199 - wp_die();
205 + wp_send_json( $results );
200 206 }
201 207
202 208 public function ays_finish_survey( $data ){
203 209 $unique_id = isset($data['unique_id']) ? $data['unique_id'] : null;
@@ -223,14 +229,25 @@
223 229
224 230 $answered_questions = isset( $data[ $name_prefix . 'answers-' . $unique_id ] ) && !empty( $data[ $name_prefix . 'answers-' . $unique_id ] ) ? $data[ $name_prefix . 'answers-' . $unique_id ] : array();
225 231 $questions_data = isset( $data[ $name_prefix . 'questions-' . $unique_id ] ) && !empty( $data[ $name_prefix . 'questions-' . $unique_id ] ) ? $data[ $name_prefix . 'questions-' . $unique_id ] : array();
226 232
227 - $survey_additional_wp_data = isset($data[ $valid_name_prefix . 'additional_wp_data' ]) && $data[ $valid_name_prefix . 'additional_wp_data' ] != '' ? json_decode(base64_decode($data[ $valid_name_prefix . 'additional_wp_data' ]) , true) : array();
233 + $survey_additional_wp_data = array();
234 + if ( isset( $data[ $valid_name_prefix . 'additional_wp_data' ] ) && is_string( $data[ $valid_name_prefix . 'additional_wp_data' ] ) && '' !== $data[ $valid_name_prefix . 'additional_wp_data' ] ) {
235 + $decoded_additional_wp_data = base64_decode( wp_unslash( $data[ $valid_name_prefix . 'additional_wp_data' ] ), true );
236 + if ( false !== $decoded_additional_wp_data ) {
237 + $decoded_additional_wp_data = json_decode( $decoded_additional_wp_data, true );
238 + if ( is_array( $decoded_additional_wp_data ) ) {
239 + $survey_additional_wp_data = $decoded_additional_wp_data;
240 + }
241 + }
242 + }
228 243
229 - $survey_current_page_link = isset( $data['ays_'.$valid_name_prefix.'_current_page_link'] ) && $data['ays_'.$valid_name_prefix.'_current_page_link'] != '' ? sanitize_url( $data['ays_'.$valid_name_prefix.'_current_page_link'] ) : "";
244 + $survey_current_page_link = isset( $data['ays-survey-current_page_link'] ) && $data['ays-survey-current_page_link'] != '' ? sanitize_url( $data['ays-survey-current_page_link'] ) : "";
230 245
231 - $survey_current_page_link_html = "<a href='". esc_sql( $survey_current_page_link ) ."' target='_blank' class='ays-survey-current-page-link-a-tag'>". __( "Survey link", "survey-maker" ) ."</a>";
246 + $survey_current_page_title = isset( $data['ays-survey-current_page_title'] ) && $data['ays-survey-current_page_title'] != '' ? sanitize_text_field( $data['ays-survey-current_page_title'] ) : "";
232 247
248 + $survey_current_page_link_html = "<a href='". esc_sql( $survey_current_page_link ) ."' target='_blank' class='ays-survey-current-page-link-a-tag'>". __( "Survey link", "survey-maker" ) ."</a>";
249 +
233 250 // Survey modified date
234 251 $survey_modified_date = (isset($survey->date_modified) && $survey->date_modified != '') ? esc_attr( $survey->date_modified ) : "";
235 252 if( $survey_modified_date != "" ){
236 253 $survey_modified_date = date_i18n( get_option( 'date_format' ), strtotime( $survey_modified_date ) );
@@ -369,8 +386,9 @@
369 386 $current_survey_author_email = '';
370 387 $current_survey_author_nickname = '';
371 388 $current_survey_author_display_name = '';
372 389 $current_survey_author_website_url = '';
390 + $current_survey_author_registered = '';
373 391 if ( isset( $current_survey_user_data ) && $current_survey_user_data ) {
374 392 // Get survey author name
375 393 $current_survey_author = ( isset( $current_survey_user_data->data->display_name ) && $current_survey_user_data->data->display_name != '' ) ? sanitize_text_field( $current_survey_user_data->data->display_name ) : "";
376 394 // Get survey author email
@@ -380,10 +398,16 @@
380 398 // Get survey author display name
381 399 $current_survey_author_display_name = ( isset( $current_survey_user_data->data->display_name ) && $current_survey_user_data->data->display_name != '' ) ? sanitize_text_field( $current_survey_user_data->data->display_name ) : "";
382 400 // Get survey author Website URL
383 401 $current_survey_author_website_url = ( isset( $current_survey_user_data->data->user_url ) && $current_survey_user_data->data->user_url != '' ) ? sanitize_text_field( $current_survey_user_data->data->user_url ) : "";
402 + // Get survey author Website URL
403 + $current_survey_author_registered = ( isset( $current_survey_user_data->data->user_registered ) && $current_survey_user_data->data->user_registered != '' ) ? sanitize_text_field( $current_survey_user_data->data->user_registered ) : "";
384 404 }
385 405
406 + if ( ! empty( $current_survey_author_website_url ) ) {
407 + $current_survey_author_website_url = '<a href="'. $current_survey_author_website_url .'" target="_blank">'. $current_survey_author_website_url .'</a>';
408 + }
409 +
386 410 $super_admin_email = "";
387 411 $wp_all_admins = get_users('role=Administrator');
388 412 if(!empty($wp_all_admins)){
389 413 $super_admin_email = isset($wp_all_admins[0]) ? $wp_all_admins[0]->data->user_email : '';
@@ -397,97 +421,121 @@
397 421 $survey_current_post_author_last_name = '';
398 422 $survey_current_post_author_website_url = '';
399 423 $survey_current_post_author_roles = '';
400 424 $survey_current_post_title = '';
401 - if(!empty($survey_additional_wp_data)){
402 - if(isset($survey_additional_wp_data['survey_post_type']) && $survey_additional_wp_data['survey_post_type'] == 'post'){
403 - $survey_current_post_id = isset($survey_additional_wp_data['survey_post_id']) && $survey_additional_wp_data['survey_post_id'] != '' ? $survey_additional_wp_data['survey_post_id'] : '';
425 + if ( ! empty( $survey_additional_wp_data ) ) {
426 + $sanitize_additional_text = static function( $value ) {
427 + return is_scalar( $value ) ? esc_html( sanitize_text_field( wp_unslash( (string) $value ) ) ) : '';
428 + };
429 +
430 + $survey_post_type = isset( $survey_additional_wp_data['survey_post_type'] ) && is_scalar( $survey_additional_wp_data['survey_post_type'] ) ? sanitize_key( wp_unslash( (string) $survey_additional_wp_data['survey_post_type'] ) ) : '';
431 + if ( 'post' === $survey_post_type ) {
432 + $survey_current_post_id = isset( $survey_additional_wp_data['survey_post_id'] ) && is_scalar( $survey_additional_wp_data['survey_post_id'] ) ? absint( $survey_additional_wp_data['survey_post_id'] ) : '';
404 433 }
405 434
406 - $survey_current_post_author_email = isset($survey_additional_wp_data['survey_post_author_email']) && $survey_additional_wp_data['survey_post_author_email'] != '' ? esc_attr($survey_additional_wp_data['survey_post_author_email']) : '';
407 - $survey_current_post_author_nickname = isset($survey_additional_wp_data['survey_current_post_author_nickname']) && $survey_additional_wp_data['survey_current_post_author_nickname'] != '' ? esc_attr($survey_additional_wp_data['survey_current_post_author_nickname']) : '';
408 - $survey_current_post_author_display_name = isset($survey_additional_wp_data['survey_current_post_author_display_name']) && $survey_additional_wp_data['survey_current_post_author_display_name'] != '' ? esc_attr($survey_additional_wp_data['survey_current_post_author_display_name']) : '';
409 - $survey_current_post_author_first_name = isset($survey_additional_wp_data['survey_current_post_author_first_name']) && $survey_additional_wp_data['survey_current_post_author_first_name'] != '' ? esc_attr($survey_additional_wp_data['survey_current_post_author_first_name']) : '';
410 - $survey_current_post_author_last_name = isset($survey_additional_wp_data['survey_current_post_author_last_name']) && $survey_additional_wp_data['survey_current_post_author_last_name'] != '' ? esc_attr($survey_additional_wp_data['survey_current_post_author_last_name']) : '';
411 - $survey_current_post_author_website_url = isset($survey_additional_wp_data['survey_current_post_author_website_url']) && $survey_additional_wp_data['survey_current_post_author_website_url'] != '' ? esc_attr($survey_additional_wp_data['survey_current_post_author_website_url']) : '';
412 - $survey_current_post_author_roles = isset($survey_additional_wp_data['survey_current_post_author_roles']) && $survey_additional_wp_data['survey_current_post_author_roles'] != '' ? $survey_additional_wp_data['survey_current_post_author_roles'] : '';
413 - $survey_current_post_title = isset($survey_additional_wp_data['survey_current_post_title']) && $survey_additional_wp_data['survey_current_post_title'] != '' ? esc_attr($survey_additional_wp_data['survey_current_post_title']) : '';
435 + $survey_current_post_author_email = isset( $survey_additional_wp_data['survey_post_author_email'] ) && is_scalar( $survey_additional_wp_data['survey_post_author_email'] ) ? esc_html( sanitize_email( wp_unslash( (string) $survey_additional_wp_data['survey_post_author_email'] ) ) ) : '';
436 + $survey_current_post_author_nickname = isset( $survey_additional_wp_data['survey_current_post_author_nickname'] ) ? $sanitize_additional_text( $survey_additional_wp_data['survey_current_post_author_nickname'] ) : '';
437 + $survey_current_post_author_display_name = isset( $survey_additional_wp_data['survey_current_post_author_display_name'] ) ? $sanitize_additional_text( $survey_additional_wp_data['survey_current_post_author_display_name'] ) : '';
438 + $survey_current_post_author_first_name = isset( $survey_additional_wp_data['survey_current_post_author_first_name'] ) ? $sanitize_additional_text( $survey_additional_wp_data['survey_current_post_author_first_name'] ) : '';
439 + $survey_current_post_author_last_name = isset( $survey_additional_wp_data['survey_current_post_author_last_name'] ) ? $sanitize_additional_text( $survey_additional_wp_data['survey_current_post_author_last_name'] ) : '';
440 + $survey_current_post_author_website_url = isset( $survey_additional_wp_data['survey_current_post_author_website_url'] ) && is_scalar( $survey_additional_wp_data['survey_current_post_author_website_url'] ) ? esc_url_raw( wp_unslash( (string) $survey_additional_wp_data['survey_current_post_author_website_url'] ) ) : '';
441 + $survey_current_post_author_roles = isset( $survey_additional_wp_data['survey_current_post_author_roles'] ) ? $survey_additional_wp_data['survey_current_post_author_roles'] : '';
442 + $survey_current_post_title = isset( $survey_additional_wp_data['survey_current_post_title'] ) ? $sanitize_additional_text( $survey_additional_wp_data['survey_current_post_title'] ) : '';
414 443 }
415 444
416 445 if ( ! empty( $survey_current_post_author_website_url ) ) {
417 - $survey_current_post_author_website_url = '<a href="'.$survey_current_post_author_website_url.'" target="_blank">'.$survey_current_post_author_website_url.'</a>';
446 + $survey_current_post_author_website_url = '<a href="' . esc_url( $survey_current_post_author_website_url ) . '" target="_blank" rel="noopener noreferrer">' . esc_html( $survey_current_post_author_website_url ) . '</a>';
418 447 }
419 448
420 - if ( ! empty( $survey_current_post_author_roles ) && $survey_current_post_author_roles != "" ) {
421 - if ( is_array( $survey_current_post_author_roles ) ) {
422 - $survey_current_post_author_roles = implode( ", ", $survey_current_post_author_roles );
423 - }
449 + if ( is_array( $survey_current_post_author_roles ) ) {
450 + $survey_current_post_author_roles = array_filter( $survey_current_post_author_roles, 'is_scalar' );
451 + $survey_current_post_author_roles = array_map( static function( $role ) {
452 + return sanitize_text_field( wp_unslash( (string) $role ) );
453 + }, $survey_current_post_author_roles );
454 + $survey_current_post_author_roles = implode( ', ', $survey_current_post_author_roles );
424 455 }
456 + $survey_current_post_author_roles = is_scalar( $survey_current_post_author_roles ) ? esc_html( sanitize_text_field( wp_unslash( (string) $survey_current_post_author_roles ) ) ) : '';
425 457
426 458 $get_site_title = get_bloginfo('name');
427 459 $get_site_description = get_bloginfo('description');
428 460
461 + // Survey category title
462 + $survey_category_title = "";
463 +
464 + $survey_cats = $survey->category_ids;
465 + $survey_category_ids = isset( $survey_cats ) && $survey_cats != "" ? sanitize_text_field( $survey_cats ) : '';
466 +
467 + if ( $survey_category_ids != '' ) {
468 + $categories = self::get_survey_category_by_ids($survey_category_ids);
469 + $category_names = wp_list_pluck( $categories, 'title' );
470 +
471 + $survey_category_title = implode( ', ', $category_names );
472 + }
473 +
429 474 $detectedDevice = Survey_Maker_Data::ays_survey_detected_device_chart();
430 475
431 476 $message_data = array(
432 - 'survey_title' => stripslashes($survey->title),
433 - 'survey_id' => stripslashes($survey->id),
434 - 'post_id' => $survey_current_post_id,
435 - 'user_name' => $user_name,
436 - 'user_email' => $user_email,
437 - 'user_wordpress_email' => $user_wordpress_email,
438 - 'user_id' => $user_id,
439 - 'user_registered' => $user_registered,
440 - 'questions_count' => $survey_question_count,
441 - 'current_date' => $survey_current_date,
442 - 'current_time' => $survey_current_time_only,
443 - 'current_day' => $survey_current_day,
444 - 'current_month' => $survey_current_month,
445 - 'unique_code' => $result_unique_code,
446 - 'sections_count' => $survey_sections_count,
447 - 'users_count' => $survey_passed_users_count,
448 - 'users_first_name' => $user_first_name,
449 - 'users_last_name' => $user_last_name,
450 - 'users_nick_name' => $user_nick_name,
451 - 'users_display_name' => $user_display_name,
452 - 'users_ip_address' => $user_ip_address,
453 - 'user_wordpress_roles' => $user_wordpress_roles,
454 - 'user_website_url' => $user_website_url,
455 - 'creation_date' => date_i18n( get_option( 'date_format' ), strtotime( sanitize_text_field( $survey->date_created ) ) ),
456 - 'modified_date' => $survey_modified_date,
457 - 'current_survey_author' => $current_survey_author,
458 - 'current_survey_author_email' => $current_survey_author_email,
459 - 'current_survey_author_nickname' => $current_survey_author_nickname,
460 - 'current_survey_author_display_name' => $current_survey_author_display_name,
461 - 'current_survey_author_website_url' => $current_survey_author_website_url,
462 - 'current_survey_page_link' => $survey_current_page_link_html,
463 - 'admin_email' => $super_admin_email,
464 - 'home_page_url' => $wp_home_page_url,
465 - 'post_author_email' => $survey_current_post_author_email,
466 - 'post_author_nickname' => $survey_current_post_author_nickname,
467 - 'post_author_display_name' => $survey_current_post_author_display_name,
468 - 'post_author_first_name' => $survey_current_post_author_first_name,
469 - 'post_author_last_name' => $survey_current_post_author_last_name,
470 - 'post_author_website_url' => $survey_current_post_author_website_url,
471 - 'post_author_roles' => $survey_current_post_author_roles,
472 - 'post_title' => $survey_current_post_title,
473 - 'site_title' => $get_site_title,
474 - 'site_description' => $get_site_description,
477 + 'survey_title' => stripslashes($survey->title),
478 + 'survey_category_title' => $survey_category_title,
479 + 'survey_id' => stripslashes($survey->id),
480 + 'post_id' => $survey_current_post_id,
481 + 'user_name' => $user_name,
482 + 'user_email' => $user_email,
483 + 'user_wordpress_email' => $user_wordpress_email,
484 + 'user_id' => $user_id,
485 + 'user_registered' => $user_registered,
486 + 'questions_count' => $survey_question_count,
487 + 'current_date' => $survey_current_date,
488 + 'current_time' => $survey_current_time_only,
489 + 'current_day' => $survey_current_day,
490 + 'current_month' => $survey_current_month,
491 + 'unique_code' => $result_unique_code,
492 + 'sections_count' => $survey_sections_count,
493 + 'users_count' => $survey_passed_users_count,
494 + 'users_first_name' => $user_first_name,
495 + 'users_last_name' => $user_last_name,
496 + 'users_nick_name' => $user_nick_name,
497 + 'users_display_name' => $user_display_name,
498 + 'users_ip_address' => $user_ip_address,
499 + 'user_wordpress_roles' => $user_wordpress_roles,
500 + 'user_website_url' => $user_website_url,
501 + 'creation_date' => date_i18n( get_option( 'date_format' ), strtotime( sanitize_text_field( $survey->date_created ) ) ),
502 + 'modified_date' => $survey_modified_date,
503 + 'current_survey_author' => $current_survey_author,
504 + 'current_survey_author_email' => $current_survey_author_email,
505 + 'current_survey_author_nickname' => $current_survey_author_nickname,
506 + 'current_survey_author_display_name' => $current_survey_author_display_name,
507 + 'current_survey_author_website_url' => $current_survey_author_website_url,
508 + 'current_survey_author_registered' => $current_survey_author_registered,
509 + 'current_survey_page_link' => $survey_current_page_link_html,
510 + 'current_survey_page_title' => $survey_current_page_title,
511 + 'admin_email' => $super_admin_email,
512 + 'home_page_url' => $wp_home_page_url,
513 + 'post_author_email' => $survey_current_post_author_email,
514 + 'post_author_nickname' => $survey_current_post_author_nickname,
515 + 'post_author_display_name' => $survey_current_post_author_display_name,
516 + 'post_author_first_name' => $survey_current_post_author_first_name,
517 + 'post_author_last_name' => $survey_current_post_author_last_name,
518 + 'post_author_website_url' => $survey_current_post_author_website_url,
519 + 'post_author_roles' => $survey_current_post_author_roles,
520 + 'post_title' => $survey_current_post_title,
521 + 'site_title' => $get_site_title,
522 + 'site_description' => $get_site_description,
475 523 );
476 524
477 525 $send_data = array(
478 - 'questions_data' => $questions_data,
479 - 'answered_questions' => $answered_questions,
480 - 'survey' => $survey,
481 - 'questions_ids' => $survey->question_ids,
482 - 'user_id' => $user_id,
483 - 'user_ip' => $user_ip,
484 - 'user_name' => $user_name,
485 - 'user_email' => $user_email,
486 - 'start_date' => current_time( 'mysql' ),
487 - 'end_date' => current_time( 'mysql' ),
488 - 'unique_code' => $result_unique_code,
489 - 'detectedDevice' => $detectedDevice,
526 + 'questions_data' => $questions_data,
527 + 'answered_questions' => $answered_questions,
528 + 'survey' => $survey,
529 + 'questions_ids' => $survey->question_ids,
530 + 'user_id' => $user_id,
531 + 'user_ip' => $user_ip,
532 + 'user_name' => $user_name,
533 + 'user_email' => $user_email,
534 + 'start_date' => current_time( 'mysql' ),
535 + 'end_date' => current_time( 'mysql' ),
536 + 'unique_code' => $result_unique_code,
537 + 'detectedDevice' => $detectedDevice,
490 538 );
491 539 $check_limitations = false;
492 540 if(isset($options['survey_limit_users']) && $options['survey_limit_users']){
493 541 $limit_users_by = isset($options['survey_limit_users_by']) && $options['survey_limit_users_by'] != "" ? $options['survey_limit_users_by'] : "";
@@ -1056,9 +1104,9 @@
1056 1104 if ( $this->options[ $this->name_prefix . 'allow_html_in_section_description' ] ) {
1057 1105
1058 1106 $survey_allowed_html = Survey_Maker_Data::ays_survey_custom_allowed_html();
1059 1107
1060 - $sections[$section_key]['description'] = (isset($section['description']) && $section['description'] != '') ? nl2br( wp_kses( $section['description'] ), $survey_allowed_html ) : '';
1108 + $sections[$section_key]['description'] = (isset($section['description']) && $section['description'] != '') ? nl2br( wp_kses( $section['description'], $survey_allowed_html ) ) : '';
1061 1109 } else {
1062 1110 $sections[$section_key]['description'] = (isset($section['description']) && $section['description'] != '') ? nl2br( esc_html( $section['description'] ) ) : '';
1063 1111 }
1064 1112
@@ -1097,8 +1145,13 @@
1097 1145 //Admin note
1098 1146 $opts['enable_admin_note'] = ( isset( $opts['enable_admin_note'] ) && $opts['enable_admin_note'] == 'on' ) ? true : false;
1099 1147 $opts['admin_note'] = isset( $opts['admin_note'] ) && $opts['admin_note'] != '' ? stripslashes( esc_attr( $opts['admin_note'] ) ) : '';
1100 1148
1149 + $opts['enable_value_prefix'] = (isset($opts['enable_value_prefix']) && $opts['enable_value_prefix'] == 'on') ? true : false;
1150 + $opts['value_prefix'] = isset( $opts['value_prefix'] ) && $opts['value_prefix'] != '' ? stripslashes( esc_attr( $opts['value_prefix'] ) ) : '';
1151 + $opts['enable_value_suffix'] = (isset($opts['enable_value_suffix']) && $opts['enable_value_suffix'] == 'on') ? true : false;
1152 + $opts['value_suffix'] = isset( $opts['value_suffix'] ) && $opts['value_suffix'] != '' ? stripslashes( esc_attr( $opts['value_suffix'] ) ) : '';
1153 +
1101 1154 if( $section_questions[$question_key]['type'] == 'checkbox' ){
1102 1155 $this->options[ 'survey_checkbox_options' ][$question['id']]['enable_max_selection_count'] = $opts['enable_max_selection_count'];
1103 1156 $this->options[ 'survey_checkbox_options' ][$question['id']]['max_selection_count'] = $opts['max_selection_count'];
1104 1157 $this->options[ 'survey_checkbox_options' ][$question['id']]['min_selection_count'] = $opts['min_selection_count'];
@@ -1243,8 +1296,11 @@
1243 1296 $ays_survey_protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
1244 1297 $current_survey_page_link = esc_url( $ays_survey_protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
1245 1298 $content[] = '<input type="hidden" name="'. $this->html_name_prefix .'current_page_link" value="'. $current_survey_page_link .'">';
1246 1299
1300 + $current_survey_page_title = get_the_title();
1301 + $content[] = '<input type="hidden" name="'. $this->html_name_prefix .'current_page_title" value="'. $current_survey_page_title .'">';
1302 +
1247 1303 if( !$limit && !$is_expired ){
1248 1304 $content[] = $this->create_sections( $sections );
1249 1305 }else{
1250 1306 if( $is_expired && !$limit ){
@@ -1274,9 +1330,60 @@
1274 1330
1275 1331 $content = array();
1276 1332 $content[] = '<div class="' . $this->html_class_prefix . 'sections">';
1277 1333
1278 -
1334 + if(isset($this->options[ $this->name_prefix .'enable_password']) && $this->options[ $this->name_prefix .'enable_password'] ){
1335 + $ays_survey_show_password_flag = true;
1336 +
1337 + $password_type = 'general';
1338 + $general_psw_input = $this->options[$this->name_prefix .'password_survey'];
1339 + // $active_psw = $this->options['options'][ $this->name_prefix .'generated_passwords'][ $this->name_prefix .'active_passwords'];
1340 +
1341 + if( $password_type == 'general' && $general_psw_input == '' ){
1342 + $ays_survey_show_password_flag = false;
1343 + }else{
1344 + $ays_survey_show_password_flag = true;
1345 + }
1346 +
1347 + if($ays_survey_show_password_flag){
1348 + $if_generated = isset($this->options[ $this->name_prefix .'password_type']) && $this->options[ $this->name_prefix .'password_type'] == 'generated_password' ? 'name="' . $this->html_class_prefix . 'password"' : '';
1349 + $content[] = '<div class="' . $this->html_class_prefix . 'section">';
1350 +
1351 + $content[] = '<div class="' . $this->html_class_prefix . 'section-content">';
1352 +
1353 + $content[] = '<div style="margin-bottom:10px;">';
1354 + $content[] = '<div>';
1355 + $content[] = $this->options[ $this->name_prefix .'password_message'];
1356 + $content[] = '</div>';
1357 + $content[] = '</div>';
1358 + $content[] = '<div style="margin-bottom:10px;">';
1359 + $content[] = '<div class="' . $this->html_class_prefix . 'question-input-box">';
1360 + $content[] = '<input class="' . $this->html_class_prefix . 'remove-default-border ' . $this->html_class_prefix . 'password ' . $this->html_class_prefix . 'question-input ' .
1361 + $this->html_class_prefix . 'input" type="password" autocomplete="off" tabindex="0" placeholder="Please enter password" '.$if_generated.'/>';
1362 + $content[] = '<div class="' . $this->html_class_prefix . 'input-underline" style="margin:0;"></div>';
1363 + $content[] = '<div class="' . $this->html_class_prefix . 'input-underline-animation" style="margin:0;"></div>';
1364 + $content[] = '</div>';
1365 + $content[] = '</div>';
1366 +
1367 + $content[] = '<div class="' . $this->html_class_prefix . 'check-password-block">';
1368 +
1369 + $content[] = '<div class="' . $this->html_class_prefix . 'section-buttons">';
1370 + $content[] = '<div class="' . $this->html_class_prefix . 'section-button-container" tabindex="0">';
1371 + $content[] = '<div class="' . $this->html_class_prefix . 'section-button-content">';
1372 +
1373 + $content[] = '<input type="button" class="' . $this->html_class_prefix . 'section-button ays-check-survey-password" value="Check" />';
1374 +
1375 + $content[] = '</div>';
1376 + $content[] = '</div>';
1377 + $content[] = '</div>';
1378 +
1379 + $content[] = '</div>';
1380 + $content[] = '</div>';
1381 +
1382 + $content[] = '</div>';
1383 + }
1384 + }
1385 +
1279 1386 if( $this->options[ $this->name_prefix . 'enable_start_page'] === true ){
1280 1387 $content[] = '<div class="' . $this->html_class_prefix . 'section ' . $this->html_class_prefix . 'section-start-page">';
1281 1388
1282 1389 $content[] = '<div class="' . $this->html_class_prefix . 'section-content ' . $this->options[ $this->name_prefix .'start_page_custom_class'] . '">';
@@ -1512,13 +1619,67 @@
1512 1619
1513 1620 $content[] = '</div>';
1514 1621
1515 1622 $footer_class_with_bar = "";
1623 + $footer_class_with_terms = "";
1624 + $enable_terms_and_conditions = $this->options[ $this->name_prefix . 'enable_terms_and_conditions' ];
1625 + $terms_and_conditions_data = $this->options[ $this->name_prefix . 'terms_and_conditions_data' ];
1516 1626 if($this->options[ $this->name_prefix . 'enable_progress_bar' ] == "on"){
1517 1627 $footer_class_with_bar = "ays-survey-footer-with-live-bar";
1518 1628 }
1519 - $content[] = '<div class="' . $this->html_class_prefix . 'section-footer '.$footer_class_with_bar.'">';
1520 1629
1630 + $enable_terms_and_conditions_required_message = $this->options['enable_terms_and_conditions_required_message'];
1631 + if($enable_terms_and_conditions){
1632 +
1633 + $footer_class_with_terms = "ays-survey-footer-with-terms-and-conds";
1634 + }
1635 +
1636 + $content[] = '<div class="' . $this->html_class_prefix . 'section-footer '.$footer_class_with_bar.' '.$footer_class_with_terms.'">';
1637 +
1638 + if( $last ){
1639 + if( $enable_terms_and_conditions ) {
1640 + $content[] = '<div data-required="true" data-all-terms-check="true" data-type="checkbox" class="' . $this->html_class_prefix . 'section-terms-and-conditions-container">';
1641 + $content[] = '<div class="' . $this->html_class_prefix . 'section-terms-and-conditions-content">';
1642 + $padding_for_bussines = $this->options[ $this->name_prefix . 'is_business' ] ? 'style="padding:0 10px 3px;"' : '';
1643 + foreach ($terms_and_conditions_data as $tc_text => $tc_text_value) {
1644 + if( $tc_text_value['messages'] != '' ){
1645 + $content[] = '<div class="' . $this->html_class_prefix . 'terms-and-conditions-content-box" '.$padding_for_bussines.'>';
1646 + $content[] = '<label class="' . $this->html_class_prefix . 'answer-label ' . $this->html_class_prefix . 'answer-label-terms-conditions">';
1647 + if($this->options[ $this->name_prefix . 'is_business' ]){
1648 + $content[] = '<input type="checkbox" class="' . $this->html_class_prefix . 'is-checked-terms-and-conditions ' . $this->html_class_prefix . 'business-theme-answers">';
1649 + $content[] = '<span class="' . $this->html_name_prefix . 'maker-checkmark ' . $this->html_name_prefix . 'maker-checkmark-checkbox" style="top:18px"></span>';
1650 + }else{
1651 + $content[] = '<input type="checkbox" class="' . $this->html_class_prefix . 'is-checked-terms-and-conditions">';
1652 + }
1653 + $content[] = '<div class="' . $this->html_class_prefix . 'answer-label-content">';
1654 + $content[] = '<div class="' . $this->html_class_prefix . 'answer-icon-content">';
1655 + $content[] = '<div class="' . $this->html_class_prefix . 'answer-icon-ink"></div>';
1656 + $content[] = '<div class="' . $this->html_class_prefix . 'answer-icon-content-1">';
1657 + $content[] = '<div class="' . $this->html_class_prefix . 'answer-icon-content-2">';
1658 + $content[] = '<div class="' . $this->html_class_prefix . 'answer-icon-content-3"></div>';
1659 + $content[] = '</div>';
1660 + $content[] = '</div>';
1661 + $content[] = '</div>';
1662 + $content[] = '<div class="' . $this->html_class_prefix . 'section-terms-and-conditions">';
1663 + $content[] = '<span class="">' . stripslashes(($tc_text_value['messages'])) . '</span>';
1664 + $content[] = '</div>';
1665 + $content[] = '</div>';
1666 + $content[] = '</label>';
1667 +
1668 + $content[] = '</div>';
1669 + }
1670 + }
1671 + $content[] = '</div>';
1672 + if($enable_terms_and_conditions_required_message){
1673 + $content[] = '<div class="' . $this->html_class_prefix . 'section-terms-and-conditions-required-message-content" style="display:none;">';
1674 + $content[] = '<p class="' . $this->html_class_prefix . 'section-terms-and-conditions-required-message">';
1675 + $content[] = '<span class="">' . __('By clicking on the checkbox, you agree to our Terms and Conditions', "survey-maker") . '</span>';
1676 + $content[] = '</p>';
1677 + $content[] = '</div>';
1678 + }
1679 + $content[] = '</div>';
1680 + }
1681 + }
1521 1682 $content[] = '<div class="' . $this->html_class_prefix . 'section-buttons">';
1522 1683
1523 1684 if( ! $first ){
1524 1685 if( $this->options[ $this->name_prefix . 'enable_previous_button' ] ){
@@ -2201,8 +2362,21 @@
2201 2362 $content = array();
2202 2363 // Input types placeholders
2203 2364 $survey_input_type_placeholder = isset($question['options']['placeholder']) && $question['options']['placeholder'] != "" ? $question['options']['placeholder'] : '';
2204 2365
2366 + $enable_value_prefix = $question['options']['enable_value_prefix'];
2367 + $value_prefix = $enable_value_prefix ? stripslashes(sanitize_text_field($question['options']['value_prefix'])) : '';
2368 +
2369 + $enable_value_suffix = $question['options']['enable_value_suffix'];
2370 + $value_suffix = $enable_value_suffix ? stripslashes(sanitize_text_field($question['options']['value_suffix'])) : '';
2371 +
2372 + $answer_box_prefix_suffix_css_class = "";
2373 + $answer_container_prefix_suffix_css_class = "";
2374 + if( $value_prefix != "" || $value_suffix != "" ){
2375 + $answer_box_prefix_suffix_css_class = $this->html_class_prefix . 'question-box-text-types-prefix-suffix';
2376 + }
2377 + $answer_container_prefix_suffix_css_class = $this->html_class_prefix . 'answer-box-text-types-prefix-suffix';
2378 +
2205 2379 $enable_word_limit = isset($question['options']['enable_word_limitation']) && $question['options']['enable_word_limitation'] ? true : false;
2206 2380 $show_limit = isset($question['options']['limit_counter']) && $question['options']['limit_counter'] == "on" ? true : false;
2207 2381 $limit_length = isset($question['options']['limit_length']) && $question['options']['limit_length'] != "" ? $question['options']['limit_length'] : "";
2208 2382 $limit_by = "Character";
@@ -2230,11 +2404,15 @@
2230 2404 if( $minimal_theme ){
2231 2405 $minimal_class = $this->html_class_prefix . "minimal-theme-textarea-input";
2232 2406 }
2233 2407
2234 - $content[] = '<div class="' . $this->html_class_prefix . 'answer">';
2408 + $content[] = '<div class="' . $this->html_class_prefix . 'answer '. $answer_container_prefix_suffix_css_class .'">';
2235 2409
2236 - $content[] = '<div class="' . $this->html_class_prefix . 'question-box">';
2410 + $content[] = '<div class="' . $this->html_class_prefix . 'question-box '. $answer_box_prefix_suffix_css_class .'">';
2411 + if( $value_prefix != "" ){
2412 + $content[] = '<div class="' . $this->html_class_prefix . 'question-answer-prefix">' . $value_prefix . '</div>';
2413 + }
2414 +
2237 2415 $content[] = '<div class="' . $this->html_class_prefix . 'question-input-box">';
2238 2416
2239 2417 $content[] = '<input class="
2240 2418 ' . $minimal_class . '
@@ -2252,16 +2430,21 @@
2252 2430 $content[] = '<div class="' . $this->html_class_prefix . 'input-underline-animation"></div>';
2253 2431 }
2254 2432
2255 2433 $content[] = '</div>';
2256 - if($limit_checker){
2257 - $content[] .= '<div class="'.$this->html_class_prefix.'question-text-conteiner">';
2258 - $content[] .= '<div class="'.$this->html_class_prefix.'question-text-message">';
2259 - $content[] .= '<span class="'.$this->html_class_prefix.'question-text-message-span">'. $limit_length . '</span> ' . $limit_by;
2260 - $content[] .= '</div>';
2261 - $content[] .= '</div>';
2434 + if( $value_suffix != "" ){
2435 + $content[] = '<div class="' . $this->html_class_prefix . 'question-answer-suffix">' . $value_suffix . '</div>';
2262 2436 }
2437 +
2263 2438 $content[] = '</div>';
2439 +
2440 + if($limit_checker){
2441 + $content[] .= '<div class="'.$this->html_class_prefix.'question-text-conteiner">';
2442 + $content[] .= '<div class="'.$this->html_class_prefix.'question-text-message">';
2443 + $content[] .= '<span class="'.$this->html_class_prefix.'question-text-message-span">'. $limit_length . '</span> ' . $limit_by;
2444 + $content[] .= '</div>';
2445 + $content[] .= '</div>';
2446 + }
2264 2447
2265 2448 $content[] = '</div>';
2266 2449
2267 2450 $content = implode( '', $content );
@@ -2273,8 +2456,21 @@
2273 2456 $content = array();
2274 2457 // Input types placeholders
2275 2458 $survey_input_type_placeholder = isset($question['options']['placeholder']) && $question['options']['placeholder'] != "" ? $question['options']['placeholder'] : '';
2276 2459
2460 + $enable_value_prefix = $question['options']['enable_value_prefix'];
2461 + $value_prefix = $enable_value_prefix ? stripslashes(sanitize_text_field($question['options']['value_prefix'])) : '';
2462 +
2463 + $enable_value_suffix = $question['options']['enable_value_suffix'];
2464 + $value_suffix = $enable_value_suffix ? stripslashes(sanitize_text_field($question['options']['value_suffix'])) : '';
2465 +
2466 + $answer_box_prefix_suffix_css_class = "";
2467 + $answer_container_prefix_suffix_css_class = "";
2468 + if( $value_prefix != "" || $value_suffix != "" ){
2469 + $answer_box_prefix_suffix_css_class = $this->html_class_prefix . 'question-box-text-types-prefix-suffix';
2470 + }
2471 + $answer_container_prefix_suffix_css_class = $this->html_class_prefix . 'answer-box-text-types-prefix-suffix';
2472 +
2277 2473 $enable_number_limit = isset($question['options']['enable_number_limitation']) && $question['options']['enable_number_limitation'] == "on" ? true : false;
2278 2474 $enable_number_limit_message = isset($question['options']['enable_number_error_message']) && $question['options']['enable_number_error_message'] == "on" ? true : false;
2279 2475 $number_limit_message = isset($question['options']['number_error_message']) && $question['options']['number_error_message'] != "" ? stripslashes(esc_attr($question['options']['number_error_message'])) : "";
2280 2476
@@ -2306,11 +2502,15 @@
2306 2502 if( $minimal_theme ){
2307 2503 $minimal_class = $this->html_class_prefix . "minimal-theme-textarea-input";
2308 2504 }
2309 2505
2310 - $content[] = '<div class="' . $this->html_class_prefix . 'answer">';
2506 + $content[] = '<div class="' . $this->html_class_prefix . 'answer '. $answer_container_prefix_suffix_css_class .'">';
2311 2507
2312 - $content[] = '<div class="' . $this->html_class_prefix . 'question-box">';
2508 + $content[] = '<div class="' . $this->html_class_prefix . 'question-box '. $answer_box_prefix_suffix_css_class .'">';
2509 + if( $value_prefix != "" ){
2510 + $content[] = '<div class="' . $this->html_class_prefix . 'question-answer-prefix">' . $value_prefix . '</div>';
2511 + }
2512 +
2313 2513 $content[] = '<div class="' . $this->html_class_prefix . 'question-input-box">';
2314 2514
2315 2515 $content[] = '<input class="
2316 2516 ' . $minimal_class . '
@@ -2326,23 +2526,30 @@
2326 2526 $content[] = '<div class="' . $this->html_class_prefix . 'input-underline-animation"></div>';
2327 2527 }
2328 2528
2329 2529 $content[] = '</div>';
2330 - if($enable_number_limit_message){
2331 - $content[] = '<div class="' . $this->html_class_prefix . 'number-limit-message-box ' . $this->html_class_prefix . 'question-text-error-message" style="display: none;">';
2332 - $content[] = '<span class="' . $this->html_class_prefix . 'number-limit-message-text">';
2333 - $content[] = $number_limit_message;
2334 - $content[] = '</span>';
2335 - $content[] = '</div>';
2530 +
2531 + if( $value_suffix != "" ){
2532 + $content[] = '<div class="' . $this->html_class_prefix . 'question-answer-suffix">' . $value_suffix . '</div>';
2336 2533 }
2337 - if($limit_checker){
2338 - $content[] .= '<div class="'.$this->html_class_prefix.'question-text-conteiner">';
2339 - $content[] .= '<div class="'.$this->html_class_prefix.'question-text-message">';
2340 - $content[] .= '<span class="'.$this->html_class_prefix.'question-text-message-span">'. $limit_length . '</span> ' . $limit_by;
2341 - $content[] .= '</div>';
2534 +
2535 + $content[] = '</div>';
2536 +
2537 + if($enable_number_limit_message){
2538 + $content[] = '<div class="' . $this->html_class_prefix . 'number-limit-message-box ' . $this->html_class_prefix . 'question-text-error-message" style="display: none;">';
2539 + $content[] = '<span class="' . $this->html_class_prefix . 'number-limit-message-text">';
2540 + $content[] = $number_limit_message;
2541 + $content[] = '</span>';
2542 + $content[] = '</div>';
2543 + }
2544 + if($limit_checker){
2545 + $content[] .= '<div class="'.$this->html_class_prefix.'question-text-conteiner">';
2546 + $content[] .= '<div class="'.$this->html_class_prefix.'question-text-message">';
2547 + $content[] .= '<span class="'.$this->html_class_prefix.'question-text-message-span">'. $limit_length . '</span> ' . $limit_by;
2342 2548 $content[] .= '</div>';
2343 - }
2344 - $content[] = '</div>';
2549 + $content[] .= '</div>';
2550 + }
2551 +
2345 2552 $content[] = '</div>';
2346 2553
2347 2554 $content = implode( '', $content );
2348 2555
@@ -2354,8 +2561,21 @@
2354 2561 $content = array();
2355 2562 // Input types placeholders
2356 2563 $survey_input_type_placeholder = isset($question['options']['placeholder']) && $question['options']['placeholder'] != "" ? $question['options']['placeholder'] : '';
2357 2564
2565 + $enable_value_prefix = $question['options']['enable_value_prefix'];
2566 + $value_prefix = $enable_value_prefix ? stripslashes(sanitize_text_field($question['options']['value_prefix'])) : '';
2567 +
2568 + $enable_value_suffix = $question['options']['enable_value_suffix'];
2569 + $value_suffix = $enable_value_suffix ? stripslashes(sanitize_text_field($question['options']['value_suffix'])) : '';
2570 +
2571 + $answer_box_prefix_suffix_css_class = "";
2572 + $answer_container_prefix_suffix_css_class = "";
2573 + if( $value_prefix != "" || $value_suffix != "" ){
2574 + $answer_box_prefix_suffix_css_class = $this->html_class_prefix . 'question-box-text-types-prefix-suffix';
2575 + }
2576 + $answer_container_prefix_suffix_css_class = $this->html_class_prefix . 'answer-box-text-types-prefix-suffix';
2577 +
2358 2578 //Input types value
2359 2579 $enable_url_parameter = isset($question['options']['enable_url_parameter']) && $question['options']['enable_url_parameter'] == true ? true : false;
2360 2580 $url_parameter = $enable_url_parameter && isset($question['options']['url_parameter']) && $question['options']['url_parameter'] != "" ? $question['options']['url_parameter'] : '';
2361 2581 $survey_input_type_value = isset($_GET[$url_parameter]) && $_GET[$url_parameter] ? $_GET[$url_parameter] : '';
@@ -2391,11 +2611,15 @@
2391 2611 if( $minimal_theme ){
2392 2612 $minimal_class = $this->html_class_prefix . "minimal-theme-textarea-input";
2393 2613 }
2394 2614
2395 - $content[] = '<div class="' . $this->html_class_prefix . 'answer">';
2615 + $content[] = '<div class="' . $this->html_class_prefix . 'answer '. $answer_container_prefix_suffix_css_class .'">';
2396 2616
2397 - $content[] = '<div class="' . $this->html_class_prefix . 'question-box ' . $this->html_class_prefix . 'question-box-text-types-short">';
2617 + $content[] = '<div class="' . $this->html_class_prefix . 'question-box ' . $this->html_class_prefix . 'question-box-text-types-short '. $answer_box_prefix_suffix_css_class .'">';
2618 + if( $value_prefix != "" ){
2619 + $content[] = '<div class="' . $this->html_class_prefix . 'question-answer-prefix">' . $value_prefix . '</div>';
2620 + }
2621 +
2398 2622 $content[] = '<div class="' . $this->html_class_prefix . 'question-input-box">';
2399 2623
2400 2624 $content[] = '<input class="' . $minimal_class . ' '.$number_limit_class.' ' . $this->html_class_prefix . 'answer-text-inputs ' . $this->html_class_prefix . 'answer-text-inputs-default" type="text" tabindex="0" step="any" style="min-height: 24px;"
2401 2625 placeholder="'. __( $survey_input_type_placeholder, "survey-maker" ) .'"
@@ -2406,27 +2630,32 @@
2406 2630 $content[] = '<div class="' . $this->html_class_prefix . 'input-underline"></div>';
2407 2631 $content[] = '<div class="' . $this->html_class_prefix . 'input-underline-animation"></div>';
2408 2632 }
2409 2633
2410 - if($enable_number_limit_message){
2411 - $content[] = '<div class="' . $this->html_class_prefix . 'number-limit-message-box ' . $this->html_class_prefix . 'question-text-error-message" style="display: none;">';
2412 - $content[] = '<span class="' . $this->html_class_prefix . 'number-limit-message-text">';
2413 - $content[] = $number_limit_message;
2414 - $content[] = '</span>';
2415 - $content[] = '</div>';
2416 - }
2634 + $content[] = '</div>';
2417 2635
2418 - if($limit_checker){
2419 - $content[] .= '<div class="'.$this->html_class_prefix.'question-text-conteiner">';
2420 - $content[] .= '<div class="'.$this->html_class_prefix.'question-text-message">';
2421 - $content[] .= '<span class="'.$this->html_class_prefix.'question-text-message-span">'. $limit_length . '</span> ' . $limit_by;
2422 - $content[] .= '</div>';
2423 - $content[] .= '</div>';
2424 - }
2636 + if( $value_suffix != "" ){
2637 + $content[] = '<div class="' . $this->html_class_prefix . 'question-answer-suffix">' . $value_suffix . '</div>';
2638 + }
2425 2639
2640 + $content[] = '</div>';
2641 +
2642 + if($enable_number_limit_message){
2643 + $content[] = '<div class="' . $this->html_class_prefix . 'number-limit-message-box ' . $this->html_class_prefix . 'question-text-error-message" style="display: none;">';
2644 + $content[] = '<span class="' . $this->html_class_prefix . 'number-limit-message-text">';
2645 + $content[] = $number_limit_message;
2646 + $content[] = '</span>';
2426 2647 $content[] = '</div>';
2427 - $content[] = '</div>';
2648 + }
2428 2649
2650 + if($limit_checker){
2651 + $content[] .= '<div class="'.$this->html_class_prefix.'question-text-conteiner">';
2652 + $content[] .= '<div class="'.$this->html_class_prefix.'question-text-message">';
2653 + $content[] .= '<span class="'.$this->html_class_prefix.'question-text-message-span">'. $limit_length . '</span> ' . $limit_by;
2654 + $content[] .= '</div>';
2655 + $content[] .= '</div>';
2656 + }
2657 +
2429 2658 $content[] = '</div>';
2430 2659
2431 2660 $content = implode( '', $content );
2432 2661
@@ -2789,8 +3018,9 @@
2789 3018
2790 3019 $content[] = '
2791 3020 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' {
2792 3021 width: ' . $width . ';
3022 + box-sizing: border-box;
2793 3023 }
2794 3024
2795 3025 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'section-header {
2796 3026 border-top-color: ' . $this->options[ $this->name_prefix . 'color' ] . ' !important;
@@ -2800,8 +3030,9 @@
2800 3030 border-left-color: ' . $this->options[ $this->name_prefix . 'color' ] . ' !important;
2801 3031 }
2802 3032
2803 3033 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'section-header,
3034 + #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'section-terms-and-conditions-container,
2804 3035 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'question {
2805 3036 background-color: ' . $this->options[ $this->name_prefix . 'background_color' ] . ';
2806 3037 }
2807 3038
@@ -2850,8 +3081,9 @@
2850 3081 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'loader-with-text,
2851 3082 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'restricted-message,
2852 3083 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'section-desc,
2853 3084 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'section-questions-count,
3085 + #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'section-terms-and-conditions-container,
2854 3086 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'question-title,
2855 3087 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'section-title-row,
2856 3088 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' .' . $this->html_class_prefix . 'thank-you-page > div p {
2857 3089 color: ' . $this->options[ $this->name_prefix . 'text_color' ] . ';
@@ -3518,8 +3750,28 @@
3518 3750 }
3519 3751 return $output;
3520 3752 }
3521 3753
3754 + public static function get_survey_category_by_ids($ids){
3755 + global $wpdb;
3756 +
3757 + $ids = array_map('intval', explode(',', $ids));
3758 + $ids = array_filter($ids);
3759 +
3760 + if (empty($ids)) {
3761 + return [];
3762 + }
3763 +
3764 + $ids_sql = implode(',', $ids);
3765 +
3766 + $sql = "SELECT *
3767 + FROM {$wpdb->prefix}ayssurvey_survey_categories
3768 + WHERE id IN ($ids_sql)
3769 + ORDER BY FIELD(id, $ids_sql)";
3770 +
3771 + return $wpdb->get_results($sql, ARRAY_A);
3772 + }
3773 +
3522 3774 public function ays_survey_popup_set_cookie(){
3523 3775 if( isset( $_REQUEST['id'] ) && $_REQUEST['id'] != '' ){
3524 3776 $id = sanitize_text_field( $_REQUEST['id'] );
3525 3777 }else{
@@ -3616,9 +3868,9 @@
3616 3868 $question_border_radius = $this->options[ $this->name_prefix . 'question_border_radius_mobile' ];
3617 3869 $content .= '
3618 3870 @media screen and (max-width: 640px){
3619 3871 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' {
3620 - max-width: '. $mobile_max_width .';
3872 + max-width: min('. $mobile_max_width .', calc(100vw - 20px));
3621 3873 }
3622 3874
3623 3875 #' . $this->html_class_prefix . 'container-' . $this->unique_id_in_class . ' {
3624 3876 width: ' . $mobile_width . ';
@@ -3903,18 +4155,28 @@
3903 4155 // Title border radius mobile
3904 4156 $survey_popup_title_border_radius_mobile = (isset($options["popup_title_border_radius_mobile"]) && $options["popup_title_border_radius_mobile"] != "") ? absint ( intval( $options["popup_title_border_radius_mobile"] ) ) : 0;
3905 4157
3906 4158 // Width
3907 - $popup_survey_width = (isset($options['width']) && $options['width'] != '') ? absint ( intval( $options['width'] ) ) : 800;
4159 + $popup_survey_width = (isset($options['width']) && $options['width'] != '') ? absint ( intval( $options['width'] ) ) : '';
4160 + // Width by percentage or pixels
4161 + $popup_survey_width_by = (isset($options['width_by_percentage_px']) && $options['width_by_percentage_px'] != '' && $popup_survey_width != '') ? stripslashes ( esc_attr( $options['width_by_percentage_px'] ) ) : 'pixels';
4162 +
3908 4163 // Mobile width
3909 4164 $options['width_mobile'] = isset($options['width_mobile']) ? $options['width_mobile'] : $popup_survey_width;
3910 - $popup_survey_width_mobile = (isset($options['width_mobile']) && $options['width_mobile'] != '') ? absint ( intval( $options['width_mobile'] ) ) : 800;
4165 + $popup_survey_width_mobile = (isset($options['width_mobile']) && $options['width_mobile'] != '') ? absint ( intval( $options['width_mobile'] ) ) : '';
4166 + // Mobile width by percentage or pixels
4167 + $popup_survey_width_mobile_by = (isset($options['width_mobile_by_percentage_px']) && $options['width_mobile_by_percentage_px'] != '' && $popup_survey_width_mobile != '') ? stripslashes ( esc_attr( $options['width_mobile_by_percentage_px'] ) ) : 'pixels';
3911 4168
3912 4169 // Height
3913 - $popup_survey_height = (isset($options['height']) && $options['height'] != '') ? absint ( intval( $options['height'] ) ) : 450;
4170 + $popup_survey_height = (isset($options['height']) && $options['height'] != '') ? absint ( intval( $options['height'] ) ) : '';
4171 + // Height by percentage or pixels
4172 + $popup_survey_height_by = (isset($options['height_by_percentage_px']) && $options['height_by_percentage_px'] != '' && $popup_survey_height != '') ? stripslashes ( esc_attr( $options['height_by_percentage_px'] ) ) : 'pixels';
4173 +
3914 4174 // Height mobile
3915 4175 $options['height_mobile'] = isset($options['height_mobile']) ? $options['height_mobile'] : $popup_survey_height;
3916 - $popup_survey_height_mobile = (isset($options['height_mobile']) && $options['height_mobile'] != '') ? absint ( intval( $options['height_mobile'] ) ) : 450;
4176 + $popup_survey_height_mobile = (isset($options['height_mobile']) && $options['height_mobile'] != '') ? absint ( intval( $options['height_mobile'] ) ) : '';
4177 + // Mobile height by percentage or pixels
4178 + $popup_survey_height_mobile_by = (isset($options['height_mobile_by_percentage_px']) && $options['height_mobile_by_percentage_px'] != '' && $popup_survey_height_mobile != '') ? stripslashes ( esc_attr( $options['height_mobile_by_percentage_px'] ) ) : 'pixels';
3917 4179
3918 4180 // Popup Position
3919 4181 $popup_position = (isset($options['popup_position']) && $options['popup_position'] != 'center-center') ? $options['popup_position'] : 'center-center';
3920 4182
@@ -3969,8 +4231,11 @@
3969 4231
3970 4232 // Popup selector
3971 4233 $popup_selector = (isset($options["popup_selector"]) && $options["popup_selector"] != "") ? stripslashes( esc_attr($options["popup_selector"])) : "";
3972 4234
4235 + // Popup animation
4236 + $popup_animation = (isset($options["popup_animation"]) && $options["popup_animation"] != "") ? esc_attr($options["popup_animation"]) : "none";
4237 +
3973 4238 // Close by pressing the ESC
3974 4239 $survey_popup_enable_close_by_esc = (isset($options["popup_enable_close_by_esc"]) && $options["popup_enable_close_by_esc"] != '') ? $options["popup_enable_close_by_esc"] : 'off';
3975 4240
3976 4241
@@ -4042,13 +4307,15 @@
4042 4307 $display_popup_on_load = '';
4043 4308 break;
4044 4309 }
4045 4310
4311 + $popup_animation_class = in_array($popup_animation, array('fade', 'slide-down', 'slide-up', 'zoom-in', 'bounce'), true) && $popup_trigger_type != 'on_click' ? 'ays-popup-animation-' . $popup_animation : '';
4312 +
4046 4313 if( ! isset( $_COOKIE[ 'ays_survey_popup_cookie_name_' . $popup['id'] ] ) && ! isset( $_COOKIE[ 'ays_survey_popup_hide_after_click_close_' . $popup['id'] ] ) ){
4047 4314 if ($show_popup) {
4048 4315 $shortcode2 = '[ays_survey id="'. $popup['survey_id'] .'"]';
4049 4316 // $popup_survey_view = "<div class='ays-survey-popup-survey-window ays-survey-popup-modal-".$popup['id']."' data-id='".$popup['id']."'>
4050 - $popup_survey_view = "<div class='ays-survey-popup-survey-window ays-survey-popup-modal-".$popup['id']." ".$display_popup_on_load."' data-id='".$popup['id']."' data-close-popup='".$survey_enable_popup_close_after_finish."'>
4317 + $popup_survey_view = "<div class='ays-survey-popup-survey-window ays-survey-popup-modal-".$popup['id']." ".$display_popup_on_load." ".$popup_animation_class."' data-id='".$popup['id']."' data-close-popup='".$survey_enable_popup_close_after_finish."'>
4051 4318 <div class='ays-survey-popup-btn-close'>
4052 4319 <img class='ays-survey-popup-btn-close-icon' src='". SURVEY_MAKER_PUBLIC_URL ."/images/cross.svg'>
4053 4320 </div>";
4054 4321 $popup_survey_view .= "<div class='ays-survey-popup-content'>";
@@ -4176,13 +4443,17 @@
4176 4443 }
4177 4444
4178 4445 $hide_popup_on_mobile_class = $survey_popup_hide_title_on_mobile ? 'display: none;' : '';
4179 4446
4447 + $popup_width_css = ($popup_survey_width > 0 ? $popup_survey_width . ($popup_survey_width_by == 'percentage' ? '%' : 'px') : '100%');
4448 + $popup_height_css = ($popup_survey_height > 0 ? $popup_survey_height . ($popup_survey_height_by == 'percentage' ? '%' : 'px') : '100%');
4449 +
4180 4450 $popup_survey_view .= '
4181 4451 <style>
4182 4452 .ays-survey-popup-modal-' . $popup['id'] . ' {
4183 - width: ' . $popup_survey_width . 'px;
4184 - height: ' . $popup_survey_height . 'px;
4453 + width: ' . $popup_width_css . ';
4454 + box-sizing: border-box;
4455 + height: ' . $popup_height_css . ';
4185 4456 background-color: ' . $popup_bg_color . ';
4186 4457 top: ' . $ays_survey_popup_conteiner_pos_top . ';
4187 4458 left: ' . $ays_survey_popup_conteiner_pos_left . ';
4188 4459 right: ' . $ays_survey_popup_conteiner_pos_right . ';
@@ -4205,10 +4476,11 @@
4205 4476 }
4206 4477
4207 4478 @media screen and (max-width: 640px){
4208 4479 div.ays-survey-popup-modal-' . $popup['id'] . ' {
4209 - width: ' . $popup_survey_width_mobile . 'px;
4210 - height: ' . $popup_survey_height_mobile . 'px;
4480 + width: ' . ($popup_survey_width_mobile > 0 ? $popup_survey_width_mobile . ($popup_survey_width_mobile_by == 'percentage' ? '%' : 'px') : '100%') . ';
4481 + max-width: calc(100vw - 20px);
4482 + height: ' . ($popup_survey_height_mobile > 0 ? $popup_survey_height_mobile . ($popup_survey_height_mobile_by == 'percentage' ? '%' : 'px') : '100%') . ';
4211 4483 background-color: ' . $popup_bg_color_mobile . ';
4212 4484 }
4213 4485 .ays-survey-popup-modal-' . $popup['id'] . ' .ays-survey-popup-title-content{
4214 4486 font-size: '.$survey_popup_title_mobile_font_size.'px;
@@ -4224,8 +4496,50 @@
4224 4496
4225 4497 </style>
4226 4498 ';
4227 4499
4500 + $popup_survey_view .= '<style type="text/css">';
4501 + $popup_survey_view .= "
4502 + @keyframes ays-popup-fade-in {
4503 + from { opacity: 0; }
4504 + to { opacity: 1; }
4505 + }
4506 + @keyframes ays-popup-slide-down {
4507 + from { opacity: 0; transform: translateY(-50px); }
4508 + to { opacity: 1; transform: translateY(0); }
4509 + }
4510 + @keyframes ays-popup-slide-up {
4511 + from { opacity: 0; transform: translateY(50px); }
4512 + to { opacity: 1; transform: translateY(0); }
4513 + }
4514 + @keyframes ays-popup-zoom-in {
4515 + from { opacity: 0; transform: scale(0.8); }
4516 + to { opacity: 1; transform: scale(1); }
4517 + }
4518 + @keyframes ays-popup-bounce {
4519 + 0% { opacity: 0; transform: scale(0.3); }
4520 + 50% { opacity: 1; transform: scale(1.05); }
4521 + 70% { transform: scale(0.9); }
4522 + 100% { transform: scale(1); }
4523 + }
4524 + .ays-survey-popup-survey-window.ays-popup-animation-fade {
4525 + animation: ays-popup-fade-in 0.3s ease-in-out;
4526 + }
4527 + .ays-survey-popup-survey-window.ays-popup-animation-slide-down {
4528 + animation: ays-popup-slide-down 0.4s ease-out;
4529 + }
4530 + .ays-survey-popup-survey-window.ays-popup-animation-slide-up {
4531 + animation: ays-popup-slide-up 0.4s ease-out;
4532 + }
4533 + .ays-survey-popup-survey-window.ays-popup-animation-zoom-in {
4534 + animation: ays-popup-zoom-in 0.3s ease-out;
4535 + }
4536 + .ays-survey-popup-survey-window.ays-popup-animation-bounce {
4537 + animation: ays-popup-bounce 0.5s ease-out;
4538 + }
4539 + ";
4540 + $popup_survey_view .= '</style>';
4541 +
4228 4542 $popup_survey_view .= '<script type="text/javascript">';
4229 4543
4230 4544 $popup_survey_view .= "
4231 4545 if(typeof aysSurveyPopupsOptions === 'undefined'){
@@ -4239,8 +4553,9 @@
4239 4553 'popup_close_after_finish_delay' => $survey_popup_close_after_finish_delay,
4240 4554 'popup_selector' => $popup_selector,
4241 4555 'popupEnableCloseByEsc' => $survey_popup_enable_close_by_esc,
4242 4556 'closePopupOverlayOutsideClick' => $close_popup_overlay_outside_click,
4557 + 'popup_animation' => $popup_animation,
4243 4558
4244 4559 ) ) ) . "';";
4245 4560 $popup_survey_view .= '</script>';
4246 4561 $popup_survey_view .= '</div>';