YOP Poll - Version 4.9.2

Version Description

  • Fixed security issue
Download this release

Release Info

Developer yourownprogrammer
Plugin Icon 128x128 YOP Poll
Version 4.9.2
Comparing to
See all releases

Code changes from version 4.9.1 to 4.9.2

Files changed (5) hide show
  1. inc/admin.php +14 -0
  2. inc/yop_poll_model.php +138 -2
  3. js/yop-poll-public.js +6 -2
  4. readme.txt +81 -78
  5. yop_poll.php +2 -2
inc/admin.php CHANGED
@@ -471,6 +471,11 @@
471
  $this->update_to_4_9_1();
472
  update_option( "yop_poll_version", $wpdb->yop_poll_version );
473
  }
 
 
 
 
 
474
  }
475
 
476
  public function update_to_4_2() {
@@ -7835,11 +7840,13 @@ EOT;
7835
  $error = '';
7836
  $success = '';
7837
  $message = '';
 
7838
  if ( is_admin() ){
7839
  $poll_id = isset ( $_REQUEST ['poll_id'] ) ? $_REQUEST ['poll_id'] : 0;
7840
  $unique_id = isset ( $_REQUEST ['unique_id'] ) ? $_REQUEST ['unique_id'] : '';
7841
  $location = isset ( $_REQUEST ['location'] ) ? $_REQUEST ['location'] : 'page';
7842
  $tr_id = isset ( $_REQUEST ['tr_id'] ) ? $_REQUEST ['tr_id'] : '';
 
7843
  if ( $poll_id ){
7844
  require_once( $this->_config->plugin_inc_dir . '/yop_poll_model.php' );
7845
  $yop_poll_model = new YOP_POLL_MODEL ( $poll_id );
@@ -7859,6 +7866,13 @@ EOT;
7859
  $error = __( 'Invalid Request! Try later!', 'yop_poll' );
7860
  }
7861
  }
 
 
 
 
 
 
 
7862
  print '[ajax-response]' . json_encode( array( 'error' => $error, 'success' => $success, 'message' => $message ) ) . '[/ajax-response]';
7863
  die ();
7864
  }
471
  $this->update_to_4_9_1();
472
  update_option( "yop_poll_version", $wpdb->yop_poll_version );
473
  }
474
+
475
+ if ( version_compare( $installed_version, '4.9.1', '<=' ) ){
476
+
477
+ update_option( "yop_poll_version", $wpdb->yop_poll_version );
478
+ }
479
  }
480
 
481
  public function update_to_4_2() {
7840
  $error = '';
7841
  $success = '';
7842
  $message = '';
7843
+
7844
  if ( is_admin() ){
7845
  $poll_id = isset ( $_REQUEST ['poll_id'] ) ? $_REQUEST ['poll_id'] : 0;
7846
  $unique_id = isset ( $_REQUEST ['unique_id'] ) ? $_REQUEST ['unique_id'] : '';
7847
  $location = isset ( $_REQUEST ['location'] ) ? $_REQUEST ['location'] : 'page';
7848
  $tr_id = isset ( $_REQUEST ['tr_id'] ) ? $_REQUEST ['tr_id'] : '';
7849
+ if ( wp_verify_nonce( $_REQUEST['yop-poll-nonce-' . $poll_id . $unique_id], 'yop_poll-' . $poll_id . $unique_id . '-user-actions' ) ){
7850
  if ( $poll_id ){
7851
  require_once( $this->_config->plugin_inc_dir . '/yop_poll_model.php' );
7852
  $yop_poll_model = new YOP_POLL_MODEL ( $poll_id );
7866
  $error = __( 'Invalid Request! Try later!', 'yop_poll' );
7867
  }
7868
  }
7869
+
7870
+ else {
7871
+ $error = __( 'Bad Request! Try later!', 'yop_poll' );
7872
+ }
7873
+
7874
+ }
7875
+
7876
  print '[ajax-response]' . json_encode( array( 'error' => $error, 'success' => $success, 'message' => $message ) ) . '[/ajax-response]';
7877
  die ();
7878
  }
inc/yop_poll_model.php CHANGED
@@ -2412,7 +2412,8 @@
2412
  $poll_id = $this->poll['id'];
2413
  $unique_id = $this->unique_id;
2414
  $location = $request['location'];
2415
- if ( wp_verify_nonce( $request['yop-poll-nonce-' . $poll_id . $unique_id], 'yop_poll-' . $poll_id . $unique_id . '-user-actions' ) ){
 
2416
  $poll_details = $this->poll;
2417
  $poll_options = $this->poll_options;
2418
  $vote_id = uniqid( 'vote_id_' );
@@ -2446,6 +2447,7 @@
2446
  }
2447
 
2448
  $current_date = YOP_POLL_MODEL::get_mysql_curent_date();
 
2449
  if ( $this->is_allowed_to_vote( $vote_type, $facebook_user_details ) ){
2450
  if ( $current_date >= $poll_details['start_date'] ){
2451
  if ( $current_date <= $poll_details['end_date'] ){
@@ -2464,6 +2466,8 @@
2464
  $voter['user_id'] = $facebook_user_id;
2465
  $voter['user_type'] = $vote_type;
2466
  }
 
 
2467
  if ( $this->user_have_votes_to_vote( $voter ) ){
2468
  if ( isset ( $request['yop_poll_answer'] ) ){
2469
  if ( 'yes' == $poll_options['allow_multiple_answers'] ){
@@ -2492,6 +2496,7 @@
2492
  if ( isset( $request['yop_poll_other_answer'] ) ){
2493
  if ( '' != strip_tags( trim( $request['yop_poll_other_answer'] ) ) ){
2494
  $answer['other_answer_value'] = strip_tags( $request['yop_poll_other_answer'] );
 
2495
  $answer['type'] = 'other';
2496
  }
2497
  else {
@@ -2539,6 +2544,14 @@
2539
  if ( 'other' == $answer_details['type'] ){
2540
  if ( isset( $request['yop_poll_other_answer'] ) ){
2541
  if ( '' != strip_tags( trim( $request['yop_poll_other_answer'] ) ) ){
 
 
 
 
 
 
 
 
2542
  $answer['other_answer_value'] = strip_tags( $request['yop_poll_other_answer'] );
2543
  $answer['type'] = 'other';
2544
  }
@@ -2604,7 +2617,7 @@
2604
  $votes = 0;
2605
  $mail_notifications_answers = '';
2606
  foreach ( $answers as &$answer ) {
2607
- if ( 'facebook' == $vote_type ){
2608
  $answer['user_id'] = $facebook_user_id;
2609
  }
2610
  if ( 'anonymous' == $vote_type ){
@@ -2800,6 +2813,11 @@
2800
  $this->error = __( 'Bad Request!', 'yop_poll' );
2801
  return false;
2802
  }
 
 
 
 
 
2803
  }
2804
 
2805
  public function return_poll_css( $attr = array( 'location' => 'page', 'preview' => false, 'template_id' => '', 'loc' => 1 ) ) {
@@ -2947,7 +2965,125 @@
2947
  return $t;
2948
  }
2949
  }
 
 
2950
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2951
  public function return_poll_html( $attr = array( 'tr_id' => '', 'location' => 'page', 'load_css' => false, 'load_js' => false ) ) {
2952
  $tr_id = isset( $attr['tr_id'] ) ? $attr['tr_id'] : '';
2953
  $location = isset( $attr['location'] ) ? $attr['location'] : 'page';
2412
  $poll_id = $this->poll['id'];
2413
  $unique_id = $this->unique_id;
2414
  $location = $request['location'];
2415
+ yop_poll_dump($request['yop-poll-nonce-' . $poll_id . $unique_id]);
2416
+ if( wp_verify_nonce( $request['yop-poll-nonce-' . $poll_id . $unique_id], 'yop_poll-' . $poll_id . $unique_id . '-user-actions' ) ) {
2417
  $poll_details = $this->poll;
2418
  $poll_options = $this->poll_options;
2419
  $vote_id = uniqid( 'vote_id_' );
2447
  }
2448
 
2449
  $current_date = YOP_POLL_MODEL::get_mysql_curent_date();
2450
+ if( wp_verify_nonce( $request['yop-poll-nonce-' . $poll_id . $unique_id], 'yop_poll-' . $poll_id . $unique_id . '-user-actions' ) ) {
2451
  if ( $this->is_allowed_to_vote( $vote_type, $facebook_user_details ) ){
2452
  if ( $current_date >= $poll_details['start_date'] ){
2453
  if ( $current_date <= $poll_details['end_date'] ){
2466
  $voter['user_id'] = $facebook_user_id;
2467
  $voter['user_type'] = $vote_type;
2468
  }
2469
+
2470
+
2471
  if ( $this->user_have_votes_to_vote( $voter ) ){
2472
  if ( isset ( $request['yop_poll_answer'] ) ){
2473
  if ( 'yes' == $poll_options['allow_multiple_answers'] ){
2496
  if ( isset( $request['yop_poll_other_answer'] ) ){
2497
  if ( '' != strip_tags( trim( $request['yop_poll_other_answer'] ) ) ){
2498
  $answer['other_answer_value'] = strip_tags( $request['yop_poll_other_answer'] );
2499
+
2500
  $answer['type'] = 'other';
2501
  }
2502
  else {
2544
  if ( 'other' == $answer_details['type'] ){
2545
  if ( isset( $request['yop_poll_other_answer'] ) ){
2546
  if ( '' != strip_tags( trim( $request['yop_poll_other_answer'] ) ) ){
2547
+ $ans = self::yop_poll_get_answer_from_db($poll_id);
2548
+ foreach($ans as $a){
2549
+
2550
+ if(strtoupper (strip_tags( $request['yop_poll_other_answer'] ))==strtoupper( $a['answer'])) {
2551
+ $this->error = __( 'mesaj de eroare!', 'yop_poll' );
2552
+ return false;
2553
+ }
2554
+ }
2555
  $answer['other_answer_value'] = strip_tags( $request['yop_poll_other_answer'] );
2556
  $answer['type'] = 'other';
2557
  }
2617
  $votes = 0;
2618
  $mail_notifications_answers = '';
2619
  foreach ( $answers as &$answer ) {
2620
+ if ( 'facebook' == $vote_type ){
2621
  $answer['user_id'] = $facebook_user_id;
2622
  }
2623
  if ( 'anonymous' == $vote_type ){
2813
  $this->error = __( 'Bad Request!', 'yop_poll' );
2814
  return false;
2815
  }
2816
+ }
2817
+ else {
2818
+ $this->error = __( 'Bad Request!', 'yop_poll' );
2819
+ return false;
2820
+ }
2821
  }
2822
 
2823
  public function return_poll_css( $attr = array( 'location' => 'page', 'preview' => false, 'template_id' => '', 'loc' => 1 ) ) {
2965
  return $t;
2966
  }
2967
  }
2968
+ public function back_4_9_1(){}
2969
+
2970
 
2971
+
2972
+
2973
+ public function yop_poll_get_answer_from_db($id) {
2974
+ global $wpdb;
2975
+ $answer = $wpdb->get_results( $wpdb->prepare( "
2976
+ SELECT *
2977
+ FROM " . $wpdb->yop_poll_answers . "
2978
+ WHERE poll_id = %d
2979
+ ",$id ), ARRAY_A );
2980
+ return $answer;
2981
+
2982
+ }
2983
+
2984
+ public function yop_poll_get_polls_meta_from_db() {
2985
+ global $wpdb;
2986
+ $result = $wpdb->get_results( $GLOBALS['wpdb']->prepare( "
2987
+ SELECT *
2988
+ FROM " . $wpdb->prefix . "yop2_pollmeta ORDER BY yop_poll_id ASC
2989
+ " ), ARRAY_A );
2990
+ return $result;
2991
+
2992
+ }
2993
+
2994
+ public function yop_poll_get_answers_meta_from_db() {
2995
+ global $wpdb;
2996
+
2997
+ $result = $wpdb->get_results( $GLOBALS['wpdb']->prepare( "
2998
+ SELECT *
2999
+ FROM " . $wpdb->prefix . "yop2_poll_answermeta
3000
+ " ), ARRAY_A );
3001
+ return $result;
3002
+
3003
+ }
3004
+
3005
+ public function yop_poll_get_questions_from_db() {
3006
+ global $wpdb;
3007
+ $result = $wpdb->get_results( $wpdb->prepare( "
3008
+ SELECT *
3009
+ FROM " . $wpdb->prefix . "yop2_poll_questions ORDER BY poll_id ASC
3010
+ " ), ARRAY_A );
3011
+ return $result;
3012
+ }
3013
+
3014
+ public function yop_poll_get_custom_fields_from_db() {
3015
+ global $wpdb;
3016
+ $result = $wpdb->get_results( $GLOBALS['wpdb']->prepare( "
3017
+ SELECT *
3018
+ FROM " . $wpdb->prefix . "yop2_poll_custom_fields ORDER BY poll_id ASC
3019
+ " ), ARRAY_A );
3020
+ return $result;
3021
+ }
3022
+
3023
+ public function yop_poll_get_custom_fields_votes_from_db() {
3024
+ global $wpdb;
3025
+ $result = $wpdb->get_results( $GLOBALS['wpdb']->prepare( "
3026
+ SELECT *
3027
+ FROM " . $wpdb->prefix . "yop2_poll_votes_custom_fields
3028
+ " ), ARRAY_A );
3029
+ return $result;
3030
+ }
3031
+
3032
+ public function yop_poll_get_bans_from_db() {
3033
+ global $wpdb;
3034
+ $result = $wpdb->get_results( $wpdb->prepare( "
3035
+ SELECT *
3036
+ FROM " . $wpdb->prefix . "yop2_poll_bans ORDER BY poll_id ASC
3037
+ " ), ARRAY_A );
3038
+ return $result;
3039
+ }
3040
+
3041
+ public function yop_poll_get_answers_from_db() {
3042
+ global $wpdb;
3043
+ $result = $wpdb->get_results( $wpdb->prepare( "
3044
+ SELECT *
3045
+ FROM " . $wpdb->prefix . "yop2_poll_answers ORDER BY poll_id ASC
3046
+ " ), ARRAY_A );
3047
+ return $result;
3048
+ }
3049
+
3050
+ public function yop_poll_get_logs_from_db() {
3051
+ global $wpdb;
3052
+ $result = $wpdb->get_results( $wpdb->prepare( "
3053
+ SELECT *
3054
+ FROM " . $wpdb->prefix . "yop2_poll_logs
3055
+ " ), ARRAY_A );
3056
+ return $result;
3057
+ }
3058
+
3059
+ private static function insert_ban_in_db( $ban ) {
3060
+ global $wpdb;
3061
+ $sql = $wpdb->query( $wpdb->prepare( "
3062
+ INSERT INTO $wpdb->yop_poll_bans
3063
+ ( poll_id,type,value,period ,unit)
3064
+ VALUES(%d,%s,%s,%d,%s)
3065
+ ", $ban['poll_id'], $ban['type'], $ban['value'], intval( $ban['period'] ), $ban['unit'] ) );
3066
+ return $wpdb->get_results( $sql );
3067
+ }
3068
+ private function save_poll_order( $poll, $poll_order ) {
3069
+ $poll_archive_order = get_option( 'yop_poll_archive_order', array() );
3070
+ if( $poll_archive_order == "" ) {
3071
+ $poll_archive_order = array();
3072
+ }if( trim( $poll_order ) <= 0 ) {
3073
+ $poll_order = 1;
3074
+ }
3075
+ $key = array_search( $poll, $poll_archive_order );
3076
+ if( $key !== false ) {
3077
+ unset( $poll_archive_order[$key] );
3078
+ }
3079
+ if( $poll_order > count( $poll_archive_order ) ) {
3080
+ array_push( $poll_archive_order, $poll );
3081
+ }
3082
+ else {
3083
+ array_splice( $poll_archive_order, trim( $poll_order ) - 1, 0, array( $poll ) );
3084
+ }
3085
+ update_option( 'yop_poll_archive_order', $poll_archive_order );
3086
+ }
3087
  public function return_poll_html( $attr = array( 'tr_id' => '', 'location' => 'page', 'load_css' => false, 'load_js' => false ) ) {
3088
  $tr_id = isset( $attr['tr_id'] ) ? $attr['tr_id'] : '';
3089
  $location = isset( $attr['location'] ) ? $attr['location'] : 'page';
js/yop-poll-public.js CHANGED
@@ -327,10 +327,14 @@ function yop_poll_view_results( poll_id, poll_location, unique_id ) {
327
  result_link_loading_image.id = 'yop_poll_result_link_loading_img-'+ poll_id + unique_id;
328
  jQuery('#yop_poll_result_link'+ poll_id + unique_id).after( result_link_loading_image );
329
  jQuery('#yop_poll_result_link_loading_img-'+ poll_id + unique_id ).css( 'border', 'none' );
 
 
 
 
330
  jQuery.ajax({
331
  type: 'POST',
332
  url: yop_poll_public_config_general.ajax.url,
333
- data: 'action='+yop_poll_public_config_general.ajax.view_results_action+'&poll_id=' + poll_id + '&unique_id=' + unique_id + '&location=' + poll_location + '&tr_id=' + jQuery('#yop-poll-tr-id-' + poll_id + unique_id ).val(),
334
  cache: false,
335
  error: function() {
336
  alert('An error has occured!');
@@ -357,7 +361,7 @@ function yop_poll_view_results( poll_id, poll_location, unique_id ) {
357
  jQuery( '#yop-poll-container-success-'+ poll_id + unique_id ).html('');
358
  }
359
  }
360
- jQuery('#yop_poll_result_link_loading_img-'+ poll_id + unique_id ).remove();
361
  jQuery('#yop_poll_result_link'+ poll_id + unique_id ).show();
362
  }
363
  });
327
  result_link_loading_image.id = 'yop_poll_result_link_loading_img-'+ poll_id + unique_id;
328
  jQuery('#yop_poll_result_link'+ poll_id + unique_id).after( result_link_loading_image );
329
  jQuery('#yop_poll_result_link_loading_img-'+ poll_id + unique_id ).css( 'border', 'none' );
330
+ var pollData = {
331
+
332
+ };
333
+ pollData = jQuery.param(pollData) + "&" + jQuery('#yop-poll-form-'+ poll_id + unique_id ).serialize();
334
  jQuery.ajax({
335
  type: 'POST',
336
  url: yop_poll_public_config_general.ajax.url,
337
+ data: 'action='+yop_poll_public_config_general.ajax.view_results_action+'&poll_id=' + poll_id + '&unique_id=' + unique_id + '&location=' + poll_location + '&tr_id=' + jQuery('#yop-poll-tr-id-' + poll_id + unique_id ).val()+pollData,
338
  cache: false,
339
  error: function() {
340
  alert('An error has occured!');
361
  jQuery( '#yop-poll-container-success-'+ poll_id + unique_id ).html('');
362
  }
363
  }
364
+ jQuery('#yop_poll_result_link_loading_img-'+ poll_id + unique_id ).remove(); licence
365
  jQuery('#yop_poll_result_link'+ poll_id + unique_id ).show();
366
  }
367
  });
readme.txt CHANGED
@@ -3,57 +3,57 @@ Contributors: yourownprogrammer
3
  Donate Link: http://www.yop-poll.com/thankyou/don.php
4
  Tags: poll, polls, vote, voting, survey, polling, yop poll, yop
5
  Requires at least: 3.3
6
- Tested up to: 3.9.1
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.htm
10
 
11
- Use a full option polling functionality to get the answers you need.
12
 
13
  YOP Poll is the perfect, easy to use poll plugin for your WP site.
14
 
15
  == Description ==
16
 
17
- YOP Poll plugin allows you to easily integrate a survey in your blog post/page and to manage the polls from within your WordPress dashboard but if offers so much more than other similar products. Simply put, it doesn't lose sight of your needs and ensures that no detail is left unaccounted for.
18
 
19
- To name just a few improvements, you can create polls to include both single or multiple answers, work with a wide variety of options and settings to decide how you wish to sort your poll information, how to manage the results, what details to display and what to keep private, whether you want to view the total votes or the total voters, to set vote permissions or block voters etc.
20
 
21
  Scheduling your polls is no longer a problem. YOP Poll can simultaneously run multiple surveys (no limit included) or you can schedule your polls to start one after another. Also, keeping track of your polls is easy, you have various sorting functions and you can access older versions at any time.
22
 
23
  Designed to intuitive and easy to use, this plugin allows shortcodes and includes a widget functionality that fits perfectly with your WordPress website. For more details on the included features, please refer to the description below.
24
 
25
- Current poll features:
26
 
27
- * Create/ Edit / Clone/Delete poll - allows you to create or intervene in your poll at any time, if you consider it necessary.
28
 
29
- * Poll scheduling: programs each poll to start/end on a certain date. You can simultaneously run multiple polls. This option can be used to schedule your po;;s one after another.
30
 
31
- * Display polls: you can choose to display one or more polls on your website by simply adding the corresponding poll ID. You can also decide for a random display of your active polls.
32
 
33
- * View all polls: lists all your polls that you can sort by number of votes or voters, by question or by date. It also includes a search option.
34
 
35
- * Poll answers - allows other answers, multiple answers and includes a sorting module by various criteria: in exact order, in alphabetical order, by number of votes, ascending, descending etc.
36
 
37
- * Poll results - offers a great flexibility when displaying the results: before/after vote, after poll's end date, on a custom date or never. The results can also be displayed by vote numbers, percentages or both. You can choose to include a view results link, view number of votes or number of voters.
38
 
39
- * Add new custom fields - is a complex option that you can use to ask for additional information from your voters, information that you can then download and use for.
40
 
41
- * Reset stats - proves useful when you wish to restart a poll.
42
 
43
- * Vote permissions: - limits the voting accessibility to guests, registered users or both, or blocks user access by cookie, IP and username.
44
 
45
- * Archive options - allows the users of the website to access former polls statistics. You can choose which polls to display according to their start/end date.
46
 
47
- * Edit/delete/clone templates - allows you to customize the poll using either the html or the visual modes. You can also customize the result bar.
48
 
49
- * Display Options - displays answers and results tabulated, vertically or horizontally.
50
 
51
- * Logs and bans - user logs and bans can be seen in the admin section. You can ban users by email, username and IP and you can set the limitation preferences for all your polls or for just one of them.
52
 
53
  == Installation ==
54
 
55
- 1. Upload 'plugin-name.php' to the '/wp-content/plugins/' directory,
56
- 2. Activate the plugin through the 'Plugins' menu in WordPress.
57
 
58
  == Frequently Asked Questions ==
59
 
@@ -61,77 +61,77 @@ This plugin was especially designed for flexibility and it is very easy to use.
61
 
62
  = How can I create a poll? =
63
 
64
- Go to your YOP Poll menu and select the "Add New" option.
65
- Fill the required information according to the examples we included: name, question, answers (add additional ones if you need), select the start/end date for your poll, and decide on the advanced settings for results, votes, voters, accessibility etc.
66
- Once you decided on all your poll details, click on "Save".
67
- To view your new poll access "All Polls" from your main menu and choose the corresponding entry from the list.
68
 
69
  = How can I link a poll to my webpage? =
70
 
71
- Find out the ID assigned to poll by accessing "All Polls".
72
- Locate your poll and notice the ID on the left, before the name section.
73
- Copy the following shortcode and paste it in your page: [yop_poll id="ID"]
74
- For instance, if the poll you want to display has the ID=15 the code will be: [yop_poll id="15"].
75
- This is it. Check your page or post now.
76
 
77
  = Do you have some predefined shortcodes that I can use? =
78
 
79
- Yes.
80
- Current Active Poll ID = -1: [yop_poll id="-1"]
81
- Latest Poll id = -2: [yop_poll id="-2"]
82
- Random Poll id = -3: [yop_poll id="-3"]
83
 
84
  = Can I have more than one poll active? =
85
 
86
- Yes, you can run multiple polls at the same time or you can schedule them to begin one after another using the "Select start/end date" option.
87
 
88
  = Can I ask for additional information from my voters? =
89
 
90
- Yes, you can customize your poll to request additional information. Eg. name, email, age, profession. To include this, when you create your poll using the "Add New" form, go to "Custom Text Fields" -> "Add new custom field" and include as many requests as you need.
91
 
92
  = How can I create/modify a template? =
93
 
94
- Access the "Templates" menu.
95
- If you want to create a new template use the "Add new" option and include the corresponding HTML/visual code.
96
- If you want to modify an existing template, select it from the Templates list and choose "Edit". You will access the HTML/visual code you want to edit.
97
 
98
  = How do I check the results? =
99
 
100
- Locate the poll you want to evaluate by accessing "All Polls".
101
- Below the name of the poll you have several options.
102
- Use the "Results" link to track the results of the poll,
103
- or access the "Logs" for a more detailed evaluation.
104
 
105
  = What is the difference between Options and Poll Options for each poll? =
106
 
107
- Options (located under plugin menu) is the way to specifify general settings for all your polls.
108
- If you want to go further and customize each poll, these settings will take precedence over Options settings.
109
 
110
  = How can I edit access to YOP Poll for administrators, editors, authors? =
111
 
112
- To do this, in your wordpress go to Plugins->Editor.
113
  On the right choose Yop Poll as the plugin to be edited.
114
  The file you need to edit is yop-poll/inc/admin.php.
115
  The file you need to edit is yop-poll/inc/admin.php.
116
  Once you open the file, do a search for function current_user_can.
117
- In that function you can find the options you need to edit.
118
 
119
  = How can I see the results after the poll ends? =
120
 
121
- Edit your poll and in "View Results:" choose "After Poll End Date" and save.
122
 
123
  = How can I add a Poll Archive page on my website? =
124
 
125
- From your WordPress menu create a new page that contains [yop_poll_archive] and has the permalink http://www.yourwebsite.com/polls/
126
 
127
  = How can I add a hyperlink in the poll question or add a photo as an answer? =
128
 
129
- To add a link to your question you can use <a href="[your link]" target="_blank">[link text]</a>
130
- To add a photo as an answer you can use <img src=[photo_url] title="[photo_title]" alt="[photo_description]"/>
131
 
132
  = Can I add more than one question to a poll? =
133
 
134
- You can have only one question per poll. If you want to ask more than one question, you have to create a poll for each one.
135
 
136
  == Screenshots ==
137
 
@@ -143,6 +143,9 @@ You can have only one question per poll. If you want to ask more than one questi
143
 
144
  == Changelog ==
145
 
 
 
 
146
  = 4.9.1 =
147
  * Fixed issue with Template preview not working in IE8
148
  * Fixed issue with wpautop filter
@@ -157,12 +160,12 @@ You can have only one question per poll. If you want to ask more than one questi
157
  * Various bugs fixes
158
 
159
  = 4.8 =
160
- * Re-added ability to use html tags.
161
  * Added new tags: %POLL-SUCCESS-MSG% and %POLL-ERROR-MSG%
162
  * Various bug fixes
163
 
164
  = 4.7 =
165
- * Fixed bug with Other answers. Html code is no longer allowed.
166
 
167
  = 4.6 =
168
  * Added ability to send email notifications when a vote is recorded
@@ -173,7 +176,7 @@ You can have only one question per poll. If you want to ask more than one questi
173
  * Added ability to limit viewing results only for logged in users
174
  * Added ability to add custom answers to poll answers
175
  * Added new shortcode [yop_poll id="-4"] that displays latest closed poll
176
- * Added an offset for shortcodes. [yop_poll id="-1" offset="0"] displays the first active poll found, [yop_poll id="-1" offset="1"] displays the second one.
177
  * Added WPML compatibility
178
  * Various bugs fixes
179
 
@@ -202,81 +205,81 @@ You can have only one question per poll. If you want to ask more than one questi
202
  * Fixed js issue causing the widget poll not to work
203
 
204
  = 4.0 =
205
- * Added ability to use custom loading animation.
206
  * Added capabilities and roles
207
  * Fixed issue with update overwritting settings
208
 
209
- = 3.9 =
210
  * Fixed display issue with IE7 and IE8
211
 
212
- = 3.8 =
213
  * Fixed compatibility issue with Restore jQuery plugin
214
  * Added ability to link poll answers
215
 
216
- = 3.7 =
217
  * Fixed issue with Loading text displayed above the polls
218
  * Fixed issue with deleting answers from polls
219
 
220
- = 3.6 =
221
  * Fixed issue with missing files
222
 
223
- = 3.5 =
224
  * Added french language pack
225
  * Added loading animation when vote button is clicked
226
  * Fixed issue with characters encoding
227
 
228
- = 3.4 =
229
  * Fixed issue with menu items in admin area
230
  * Fixed issue with language packs
231
 
232
- = 3.3 =
233
  * Added option to auto generate a page when a poll is created
234
  * Fixed compatibility issues with IE
235
  * Fixed issues with custom fields
236
 
237
- = 3.2 =
238
  * Fixed bug that was causing issues with TinyMCE Editor
239
 
240
- = 3.1 =
241
  * Various bugs fixed
242
 
243
- = 3.0 =
244
  * Added export ability for logs
245
  * Added date filter option for logs
246
  * Added option to view logs grouped by vote or by answer
247
  * Various bugs fixed
248
 
249
- = 2.0 =
250
  * Fixed various bugs with templates
251
 
252
- = 1.9 =
253
  * Fixed various bugs with templates
254
 
255
- = 1.8 =
256
  * Fixed bug with wordpress editor
257
 
258
- = 1.7 =
259
  * Fixed bug that was causing poll not to update it's settings
260
 
261
- = 1.6 =
262
- * Added ability to change the text for Vote button
263
  * Added ability to display the answers for Others field
264
 
265
- = 1.5 =
266
  * Fixed sort_answers_by_votes_asc_callback() bug
267
 
268
- = 1.4 =
269
  * Fixed compatibility issues with other plugins
270
 
271
- = 1.3 =
272
  * Fixed bug that was causing widgets text not to display
273
 
274
- = 1.2 =
275
  * Fixed do_shortcode() with missing argument bug
276
 
277
- = 1.1 =
278
- * Fixed call_user_func_array() bug
279
 
280
- == Donations ==
281
 
282
  We've given a lot of thought to make this application one of the best ones available and we continue to invest our time and effort perfecting it. If you want to support our work, please consider making a donation.
3
  Donate Link: http://www.yop-poll.com/thankyou/don.php
4
  Tags: poll, polls, vote, voting, survey, polling, yop poll, yop
5
  Requires at least: 3.3
6
+ Tested up to: 4.0
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.htm
10
 
11
+ Use a full option polling functionality to get the answers you need.
12
 
13
  YOP Poll is the perfect, easy to use poll plugin for your WP site.
14
 
15
  == Description ==
16
 
17
+ YOP Poll plugin allows you to easily integrate a survey in your blog post/page and to manage the polls from within your WordPress dashboard but if offers so much more than other similar products. Simply put, it doesn't lose sight of your needs and ensures that no detail is left unaccounted for.
18
 
19
+ To name just a few improvements, you can create polls to include both single or multiple answers, work with a wide variety of options and settings to decide how you wish to sort your poll information, how to manage the results, what details to display and what to keep private, whether you want to view the total votes or the total voters, to set vote permissions or block voters etc.
20
 
21
  Scheduling your polls is no longer a problem. YOP Poll can simultaneously run multiple surveys (no limit included) or you can schedule your polls to start one after another. Also, keeping track of your polls is easy, you have various sorting functions and you can access older versions at any time.
22
 
23
  Designed to intuitive and easy to use, this plugin allows shortcodes and includes a widget functionality that fits perfectly with your WordPress website. For more details on the included features, please refer to the description below.
24
 
25
+ Current poll features:
26
 
27
+ * Create/ Edit / Clone/Delete poll - allows you to create or intervene in your poll at any time, if you consider it necessary.
28
 
29
+ * Poll scheduling: programs each poll to start/end on a certain date. You can simultaneously run multiple polls. This option can be used to schedule your po;;s one after another.
30
 
31
+ * Display polls: you can choose to display one or more polls on your website by simply adding the corresponding poll ID. You can also decide for a random display of your active polls.
32
 
33
+ * View all polls: lists all your polls that you can sort by number of votes or voters, by question or by date. It also includes a search option.
34
 
35
+ * Poll answers - allows other answers, multiple answers and includes a sorting module by various criteria: in exact order, in alphabetical order, by number of votes, ascending, descending etc.
36
 
37
+ * Poll results - offers a great flexibility when displaying the results: before/after vote, after poll's end date, on a custom date or never. The results can also be displayed by vote numbers, percentages or both. You can choose to include a view results link, view number of votes or number of voters.
38
 
39
+ * Add new custom fields - is a complex option that you can use to ask for additional information from your voters, information that you can then download and use for.
40
 
41
+ * Reset stats - proves useful when you wish to restart a poll.
42
 
43
+ * Vote permissions: - limits the voting accessibility to guests, registered users or both, or blocks user access by cookie, IP and username.
44
 
45
+ * Archive options - allows the users of the website to access former polls statistics. You can choose which polls to display according to their start/end date.
46
 
47
+ * Edit/delete/clone templates - allows you to customize the poll using either the html or the visual modes. You can also customize the result bar.
48
 
49
+ * Display Options - displays answers and results tabulated, vertically or horizontally.
50
 
51
+ * Logs and bans - user logs and bans can be seen in the admin section. You can ban users by email, username and IP and you can set the limitation preferences for all your polls or for just one of them.
52
 
53
  == Installation ==
54
 
55
+ 1. Upload 'plugin-name.php' to the '/wp-content/plugins/' directory
56
+ 2. Activate the plugin through the 'Plugins' menu in WordPress
57
 
58
  == Frequently Asked Questions ==
59
 
61
 
62
  = How can I create a poll? =
63
 
64
+ Go to your YOP Poll menu and select the "Add New" option.
65
+ Fill the required information according to the examples we included: name, question, answers (add additional ones if you need), select the start/end date for your poll, and decide on the advanced settings for results, votes, voters, accessibility etc.
66
+ Once you decided on all your poll details, click on "Save".
67
+ To view your new poll access "All Polls" from your main menu and choose the corresponding entry from the list.
68
 
69
  = How can I link a poll to my webpage? =
70
 
71
+ Find out the ID assigned to poll by accessing "All Polls".
72
+ Locate your poll and notice the ID on the left, before the name section.
73
+ Copy the following shortcode and paste it in your page: [yop_poll id="ID"]
74
+ For instance, if the poll you want to display has the ID=15 the code will be: [yop_poll id="15"].
75
+ This is it. Check your page or post now.
76
 
77
  = Do you have some predefined shortcodes that I can use? =
78
 
79
+ Yes
80
+ Current Active Poll ID = -1: [yop_poll id="-1"]
81
+ Latest Poll id = -2: [yop_poll id="-2"]
82
+ Random Poll id = -3: [yop_poll id="-3"]
83
 
84
  = Can I have more than one poll active? =
85
 
86
+ Yes, you can run multiple polls at the same time or you can schedule them to begin one after another using the "Select start/end date" option.
87
 
88
  = Can I ask for additional information from my voters? =
89
 
90
+ Yes, you can customize your poll to request additional information. Eg. name, email, age, profession. To include this, when you create your poll using the "Add New" form, go to "Custom Text Fields" -> "Add new custom field" and include as many requests as you need.
91
 
92
  = How can I create/modify a template? =
93
 
94
+ Access the "Templates" menu.
95
+ If you want to create a new template use the "Add new" option and include the corresponding HTML/visual code.
96
+ If you want to modify an existing template, select it from the Templates list and choose "Edit". You will access the HTML/visual code you want to edit.
97
 
98
  = How do I check the results? =
99
 
100
+ Locate the poll you want to evaluate by accessing "All Polls".
101
+ Below the name of the poll you have several options.
102
+ Use the "Results" link to track the results of the poll,
103
+ or access the "Logs" for a more detailed evaluation.
104
 
105
  = What is the difference between Options and Poll Options for each poll? =
106
 
107
+ Options (located under plugin menu) is the way to specifify general settings for all your polls.
108
+ If you want to go further and customize each poll, these settings will take precedence over Options settings.
109
 
110
  = How can I edit access to YOP Poll for administrators, editors, authors? =
111
 
112
+ To do this, in your wordpress go to Plugins->Editor.
113
  On the right choose Yop Poll as the plugin to be edited.
114
  The file you need to edit is yop-poll/inc/admin.php.
115
  The file you need to edit is yop-poll/inc/admin.php.
116
  Once you open the file, do a search for function current_user_can.
117
+ In that function you can find the options you need to edit.
118
 
119
  = How can I see the results after the poll ends? =
120
 
121
+ Edit your poll and in "View Results:" choose "After Poll End Date" and save.
122
 
123
  = How can I add a Poll Archive page on my website? =
124
 
125
+ From your WordPress menu create a new page that contains [yop_poll_archive] and has the permalink http://www.yourwebsite.com/polls/
126
 
127
  = How can I add a hyperlink in the poll question or add a photo as an answer? =
128
 
129
+ To add a link to your question you can use <a href="[your link]" target="_blank">[link text]</a>
130
+ To add a photo as an answer you can use <img src=[photo_url] title="[photo_title]" alt="[photo_description]"/>
131
 
132
  = Can I add more than one question to a poll? =
133
 
134
+ You can have only one question per poll. If you want to ask more than one question, you have to create a poll for each one.
135
 
136
  == Screenshots ==
137
 
143
 
144
  == Changelog ==
145
 
146
+ = 4.9.2 =
147
+ * Fixed security issue
148
+
149
  = 4.9.1 =
150
  * Fixed issue with Template preview not working in IE8
151
  * Fixed issue with wpautop filter
160
  * Various bugs fixes
161
 
162
  = 4.8 =
163
+ * Re-added ability to use html tags
164
  * Added new tags: %POLL-SUCCESS-MSG% and %POLL-ERROR-MSG%
165
  * Various bug fixes
166
 
167
  = 4.7 =
168
+ * Fixed bug with Other answers. Html code is no longer allowed
169
 
170
  = 4.6 =
171
  * Added ability to send email notifications when a vote is recorded
176
  * Added ability to limit viewing results only for logged in users
177
  * Added ability to add custom answers to poll answers
178
  * Added new shortcode [yop_poll id="-4"] that displays latest closed poll
179
+ * Added an offset for shortcodes. [yop_poll id="-1" offset="0"] displays the first active poll found, [yop_poll id="-1" offset="1"] displays the second one
180
  * Added WPML compatibility
181
  * Various bugs fixes
182
 
205
  * Fixed js issue causing the widget poll not to work
206
 
207
  = 4.0 =
208
+ * Added ability to use custom loading animation
209
  * Added capabilities and roles
210
  * Fixed issue with update overwritting settings
211
 
212
+ = 3.9 =
213
  * Fixed display issue with IE7 and IE8
214
 
215
+ = 3.8 =
216
  * Fixed compatibility issue with Restore jQuery plugin
217
  * Added ability to link poll answers
218
 
219
+ = 3.7 =
220
  * Fixed issue with Loading text displayed above the polls
221
  * Fixed issue with deleting answers from polls
222
 
223
+ = 3.6 =
224
  * Fixed issue with missing files
225
 
226
+ = 3.5 =
227
  * Added french language pack
228
  * Added loading animation when vote button is clicked
229
  * Fixed issue with characters encoding
230
 
231
+ = 3.4 =
232
  * Fixed issue with menu items in admin area
233
  * Fixed issue with language packs
234
 
235
+ = 3.3 =
236
  * Added option to auto generate a page when a poll is created
237
  * Fixed compatibility issues with IE
238
  * Fixed issues with custom fields
239
 
240
+ = 3.2 =
241
  * Fixed bug that was causing issues with TinyMCE Editor
242
 
243
+ = 3.1 =
244
  * Various bugs fixed
245
 
246
+ = 3.0 =
247
  * Added export ability for logs
248
  * Added date filter option for logs
249
  * Added option to view logs grouped by vote or by answer
250
  * Various bugs fixed
251
 
252
+ = 2.0 =
253
  * Fixed various bugs with templates
254
 
255
+ = 1.9 =
256
  * Fixed various bugs with templates
257
 
258
+ = 1.8 =
259
  * Fixed bug with wordpress editor
260
 
261
+ = 1.7 =
262
  * Fixed bug that was causing poll not to update it's settings
263
 
264
+ = 1.6 =
265
+ * Added ability to change the text for Vote button
266
  * Added ability to display the answers for Others field
267
 
268
+ = 1.5 =
269
  * Fixed sort_answers_by_votes_asc_callback() bug
270
 
271
+ = 1.4 =
272
  * Fixed compatibility issues with other plugins
273
 
274
+ = 1.3 =
275
  * Fixed bug that was causing widgets text not to display
276
 
277
+ = 1.2 =
278
  * Fixed do_shortcode() with missing argument bug
279
 
280
+ = 1.1 =
281
+ * Fixed call_user_func_array() bug
282
 
283
+ == Donations ==
284
 
285
  We've given a lot of thought to make this application one of the best ones available and we continue to invest our time and effort perfecting it. If you want to support our work, please consider making a donation.
yop_poll.php CHANGED
@@ -5,11 +5,11 @@
5
  * Description: Use a full option polling functionality to get the answers you need. YOP Poll is the perfect, easy to use plugin for your WordPress website.
6
  * Author: yourownprogrammer
7
  * Author URL: http://www.yop-poll.com/thankyou/
8
- * Version: 4.9.1
9
  * Network: false
10
  */
11
  define ( 'YOP_POLL_WP_VERSION', '3.3' );
12
- define ( 'YOP_POLL_VERSION', '4.9.1' );
13
  define ( 'YOP_POLL_PATH', plugin_dir_path( __FILE__ ) );
14
  define ( 'YOP_POLL_URL', plugins_url( '', __FILE__ ) );
15
  define ( 'YOP_POLL_PLUGIN_FILE', plugin_basename( __FILE__ ) );
5
  * Description: Use a full option polling functionality to get the answers you need. YOP Poll is the perfect, easy to use plugin for your WordPress website.
6
  * Author: yourownprogrammer
7
  * Author URL: http://www.yop-poll.com/thankyou/
8
+ * Version: 4.9.2
9
  * Network: false
10
  */
11
  define ( 'YOP_POLL_WP_VERSION', '3.3' );
12
+ define ( 'YOP_POLL_VERSION', '4.9.2' );
13
  define ( 'YOP_POLL_PATH', plugin_dir_path( __FILE__ ) );
14
  define ( 'YOP_POLL_URL', plugins_url( '', __FILE__ ) );
15
  define ( 'YOP_POLL_PLUGIN_FILE', plugin_basename( __FILE__ ) );