Quiz And Survey Master (Formerly Quiz Master Next) - Version 4.7.6

Version Description

(July 11, 2016) = * Closed: Add language and error logs to usage tracking - Issue #457

Download this release

Release Info

Developer fpcorso
Plugin Icon 128x128 Quiz And Survey Master (Formerly Quiz Master Next)
Version 4.7.6
Comparing to
See all releases

Code changes from version 4.7.5 to 4.7.6

CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  = 4.6.7 (January 22, 2016) =
2
  * Fixes bug causing multiple response to be on a single line for some users
3
  * Fixes bug causing the incorrect/correct CSS class from being not added on results page correctly
@@ -5,7 +41,7 @@
5
  * Changes comment section to default to off in newer quizzes
6
  * Adds link to online academy to help page
7
  * Cleans up installation function code
8
-
9
  = 4.6.6 (January 11, 2016) =
10
  * Fixes bug preventing some users to not be able to submit quiz
11
  * Fixes bug causing undefined titles for some users
1
+ = 4.7.4 (June 3, 2016) =
2
+ * Closed Bug: Results page will not load on some sites - Issue #445
3
+
4
+ = 4.7.3 (May 31, 2016) =
5
+ * Closed Enhancement: Create new question section id CSS class for each question - Issue #440
6
+ * Closed Bug: Creating/Editing questions throw PHP notice of undefined index - Issue #436
7
+
8
+ = 4.7.2 (May 23, 2016) =
9
+ * Closed Bug: Multiple quizzes on page causes plugin to scroll to top quiz when submitting - Issue #428
10
+
11
+ = 4.7.1 (May 10, 2016) =
12
+ * Closed Enhancement: Create new audit trail class - Issue #425
13
+ * Closed Enhancement: Raise minimum WordPress version to 4.1 - Issue #423
14
+ * Closed Enhancement: WordPress Compatibility with 4.5.2 - Issue #422
15
+ * Closed Enhancement: Move installation process into new QSM_Install class - Issue #416
16
+ * Closed Enhancement: Update links for plugin on Plugins page - Issue #415
17
+ * Closed Bug: Activating plugin on fresh install causes unexpected output warning - Issue #414
18
+ * Closed User Request: Shortcode parameter to override amount of questions - Issue #345
19
+ * Closed Enhancement: Limit per user - upgrade to include non-logged in users - Issue #301
20
+
21
+ = 4.7.0 (April 4, 2016) =
22
+ * Closed Bug: Slash Added Before Quotation Mark When Editing Quiz/Survey Name - Issue #401
23
+ * Closed User Request: Add CSS Class To Container When Timer Runs Out - Issue #400
24
+ * Closed Bug: Validation breaks on second time through quiz - Issue #398
25
+ * Closed Bug: Validation not working when more than one question per page - Issue #395
26
+ * Closed Enhancement: Add Spinner/De-activate Submit Button Once Submitted - Issue #387
27
+ * Closed Enhancement: Pull changelog from GitHub API - Issue #377
28
+ * Closed Bug: Theme Conflict With Button Class (btn) - Issue #370
29
+ * Closed User Request: Add Average Points Per Category Variable - Issue #369
30
+ * Closed Bug: Mixed content SSL error - Issue #367
31
+ * Closed Enhancement: Default Option For Drop Down - Issue #334
32
+ * Closed Bug: Disable Answer On Change Not Working - Issue #331
33
+ * Closed User Request: Randomize Answers But Not Questions - Issue #330
34
+ * Closed User Request: Add Date Taken Variable - Issue #310
35
+ * Closed User Request: Copy Questions Between Quizzes - Issue #166
36
+
37
  = 4.6.7 (January 22, 2016) =
38
  * Fixes bug causing multiple response to be on a single line for some users
39
  * Fixes bug causing the incorrect/correct CSS class from being not added on results page correctly
41
  * Changes comment section to default to off in newer quizzes
42
  * Adds link to online academy to help page
43
  * Cleans up installation function code
44
+
45
  = 4.6.6 (January 11, 2016) =
46
  * Fixes bug preventing some users to not be able to submit quiz
47
  * Fixes bug causing undefined titles for some users
mlw_quizmaster2.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Quiz And Survey Master
4
  * Description: Easily and quickly add quizzes and surveys to your website.
5
- * Version: 4.7.5
6
  * Author: Frank Corso
7
  * Author URI: http://www.quizandsurveymaster.com/
8
  * Plugin URI: http://www.quizandsurveymaster.com/
@@ -10,7 +10,7 @@
10
  * Domain Path: /languages
11
  *
12
  * @author Frank Corso
13
- * @version 4.7.5
14
  */
15
  if ( ! defined( 'ABSPATH' ) ) exit;
16
 
@@ -30,7 +30,7 @@ class MLWQuizMasterNext
30
  * @var string
31
  * @since 4.0.0
32
  */
33
- public $version = '4.7.5';
34
 
35
  /**
36
  * QMN Alert Manager Object
2
  /**
3
  * Plugin Name: Quiz And Survey Master
4
  * Description: Easily and quickly add quizzes and surveys to your website.
5
+ * Version: 4.7.6
6
  * Author: Frank Corso
7
  * Author URI: http://www.quizandsurveymaster.com/
8
  * Plugin URI: http://www.quizandsurveymaster.com/
10
  * Domain Path: /languages
11
  *
12
  * @author Frank Corso
13
+ * @version 4.7.6
14
  */
15
  if ( ! defined( 'ABSPATH' ) ) exit;
16
 
30
  * @var string
31
  * @since 4.0.0
32
  */
33
+ public $version = '4.7.6';
34
 
35
  /**
36
  * QMN Alert Manager Object
php/about-page.php CHANGED
@@ -48,7 +48,7 @@ function mlw_generate_about_page()
48
  </div>
49
  <div id="mlw_quiz_changelog" class="qmn_tab" style="display: none;">
50
  <h2>Changelog</h2>
51
- <?php QSM_Changelog_Generator::get_changelog_list( 'fpcorso/quiz_master_next', 18 ); ?>
52
  </div>
53
  <div id="qmn_contributors" class="qmn_tab" style="display:none;">
54
  <h2>GitHub Contributors</h2>
48
  </div>
49
  <div id="mlw_quiz_changelog" class="qmn_tab" style="display: none;">
50
  <h2>Changelog</h2>
51
+ <?php QSM_Changelog_Generator::get_changelog_list( 'fpcorso/quiz_master_next', 27 ); ?>
52
  </div>
53
  <div id="qmn_contributors" class="qmn_tab" style="display:none;">
54
  <h2>GitHub Contributors</h2>
php/class-qmn-tracking.php CHANGED
@@ -1,14 +1,14 @@
1
  <?php
2
  // Exit if accessed directly
3
- if ( !defined( 'ABSPATH' ) ) exit;
4
 
5
  /**
6
  * Class To Send Tracking Information Back To My Website
7
  *
8
  * @since 4.1.0
9
  */
10
- class QMNTracking
11
- {
12
  /**
13
  * Date To Send Home
14
  *
@@ -27,11 +27,9 @@ class QMNTracking
27
  * @uses QMNTracking::add_hooks() Adds actions to hooks and filters
28
  * @return void
29
  */
30
- function __construct()
31
- {
32
  $this->load_dependencies();
33
  $this->add_hooks();
34
- $this->track_check();
35
  }
36
 
37
  /**
@@ -40,8 +38,7 @@ class QMNTracking
40
  * @since 4.1.0
41
  * @return void
42
  */
43
- private function load_dependencies()
44
- {
45
 
46
  }
47
 
@@ -53,10 +50,10 @@ class QMNTracking
53
  * @since 4.1.0
54
  * @return void
55
  */
56
- private function add_hooks()
57
- {
58
  add_action( 'admin_notices', array( $this, 'admin_notice' ) );
59
- add_action( 'admin_init', array($this, 'admin_notice_check'));
 
60
  }
61
 
62
  /**
@@ -69,18 +66,15 @@ class QMNTracking
69
  * @uses QMNTracking::send_data()
70
  * @return void
71
  */
72
- private function track_check()
73
- {
74
  $settings = (array) get_option( 'qmn-settings' );
75
  $tracking_allowed = '0';
76
- if (isset($settings['tracking_allowed']))
77
- {
78
  $tracking_allowed = $settings['tracking_allowed'];
79
  }
80
  $last_time = get_option( 'qmn_tracker_last_time' );
81
- if ($tracking_allowed == '1' && (($last_time && $last_time < strtotime( '-1 week' )) || !$last_time))
82
- {
83
- $this->load_data();
84
  $this->send_data();
85
  update_option( 'qmn_tracker_last_time', time() );
86
  }
@@ -92,20 +86,19 @@ class QMNTracking
92
  * @since 4.1.0
93
  * @return void
94
  */
95
- private function send_data()
96
- {
97
- $response = wp_remote_post( 'http://mylocalwebstop.com/?usage_track=confirmation', array(
98
  'method' => 'POST',
99
  'timeout' => 45,
100
  'redirection' => 5,
101
  'httpversion' => '1.0',
102
  'blocking' => true,
103
  'body' => $this->data,
104
- 'user-agent' => 'QMN Usage Tracker'
105
  ) );
106
  if ( is_wp_error( $response ) ) {
107
  $error_message = $response->get_error_message();
108
- echo "Something went wrong with QMN Usage Tracker: $error_message";
109
  }
110
  }
111
 
@@ -115,11 +108,11 @@ class QMNTracking
115
  * @since 4.1.0
116
  * @return void
117
  */
118
- private function load_data()
119
- {
120
  global $wpdb;
 
121
  $data = array();
122
- $data["plugin"] = "QMN";
123
 
124
  $data['url'] = home_url();
125
  $data["wp_version"] = get_bloginfo( 'version' );
@@ -166,6 +159,17 @@ class QMNTracking
166
  $data['quiz_options'] = $wpdb->get_results( "SELECT quiz_name, system, randomness_order, loggedin_user_contact, show_score, send_user_email, send_admin_email, contact_info_location, user_name, user_comp,
167
  user_email, user_phone, comment_section, question_from_total, total_user_tries, certificate_template, pagination, timer_limit, question_numbering, theme_selected, last_activity, require_log_in, limit_total_entries, disable_answer_onselect, ajax_show_correct, quiz_views, quiz_taken FROM ".$wpdb->prefix."mlw_quizzes WHERE deleted=0" );
168
 
 
 
 
 
 
 
 
 
 
 
 
169
 
170
  $this->data = $data;
171
  }
@@ -178,30 +182,26 @@ class QMNTracking
178
  * @since 4.1.0
179
  * @return void
180
  */
181
- public function admin_notice()
182
- {
183
  $show_notice = get_option( 'qmn-tracking-notice' );
184
  $settings = (array) get_option( 'qmn-settings' );
185
 
186
  if ($show_notice)
187
  return;
188
 
189
- if (isset($settings['tracking_allowed']) && $settings['tracking_allowed'] == '1')
190
  return;
191
 
192
- if(!current_user_can('manage_options'))
193
  return;
194
 
195
- if(stristr(network_site_url('/'), 'dev') !== false || stristr(network_site_url('/'), 'localhost') !== false || stristr(network_site_url('/'), ':8888') !== false)
196
- {
197
  update_option( 'qmn-tracking-notice', '1' );
198
- }
199
- else
200
- {
201
  $optin_url = esc_url( add_query_arg( 'qmn_track_check', 'opt_into_tracking' ) );
202
  $optout_url = esc_url( add_query_arg( 'qmn_track_check', 'opt_out_of_tracking' ) );
203
  echo '<div class="updated"><p>';
204
- echo __( "Allow Quiz And Survey Master to anonymously track this plugin's usage and help us make this plugin better? No sensitive data is tracked.", 'quiz-master-next' );
205
  echo '&nbsp;<a href="' . esc_url( $optin_url ) . '" class="button-secondary">' . __( 'Allow', 'quiz-master-next' ) . '</a>';
206
  echo '&nbsp;<a href="' . esc_url( $optout_url ) . '" class="button-secondary">' . __( 'Do not allow', 'quiz-master-next' ) . '</a>';
207
  echo '</p></div>';
@@ -214,18 +214,13 @@ class QMNTracking
214
  * @since 4.1.0
215
  * @return void
216
  */
217
- public function admin_notice_check()
218
- {
219
- if (isset($_GET["qmn_track_check"]))
220
- {
221
- if ($_GET["qmn_track_check"] == 'opt_into_tracking')
222
- {
223
  $settings = (array) get_option( 'qmn-settings' );
224
- $settings['tracking_allowed'] = '1';
225
  update_option( 'qmn-settings', $settings );
226
- }
227
- else
228
- {
229
  $settings = (array) get_option( 'qmn-settings' );
230
  $settings['tracking_allowed'] = '0';
231
  update_option( 'qmn-settings', $settings );
1
  <?php
2
  // Exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
 
5
  /**
6
  * Class To Send Tracking Information Back To My Website
7
  *
8
  * @since 4.1.0
9
  */
10
+ class QMNTracking {
11
+
12
  /**
13
  * Date To Send Home
14
  *
27
  * @uses QMNTracking::add_hooks() Adds actions to hooks and filters
28
  * @return void
29
  */
30
+ function __construct() {
 
31
  $this->load_dependencies();
32
  $this->add_hooks();
 
33
  }
34
 
35
  /**
38
  * @since 4.1.0
39
  * @return void
40
  */
41
+ private function load_dependencies() {
 
42
 
43
  }
44
 
50
  * @since 4.1.0
51
  * @return void
52
  */
53
+ private function add_hooks() {
 
54
  add_action( 'admin_notices', array( $this, 'admin_notice' ) );
55
+ add_action( 'admin_init', array( $this, 'admin_notice_check' ) );
56
+ add_action( 'plugins_loaded', array( $this, 'track_check' ) );
57
  }
58
 
59
  /**
66
  * @uses QMNTracking::send_data()
67
  * @return void
68
  */
69
+ public function track_check() {
 
70
  $settings = (array) get_option( 'qmn-settings' );
71
  $tracking_allowed = '0';
72
+ if ( isset( $settings['tracking_allowed'] ) ) {
 
73
  $tracking_allowed = $settings['tracking_allowed'];
74
  }
75
  $last_time = get_option( 'qmn_tracker_last_time' );
76
+ if ( ( $tracking_allowed == '1' || $tracking_allowed == '2' ) && ( ( $last_time && $last_time < strtotime( '-1 week' ) ) || !$last_time ) ) {
77
+ $this->load_data( $tracking_allowed );
 
78
  $this->send_data();
79
  update_option( 'qmn_tracker_last_time', time() );
80
  }
86
  * @since 4.1.0
87
  * @return void
88
  */
89
+ private function send_data() {
90
+ $response = wp_remote_post( 'http://quizandsurveymaster.com/?usage_track=confirmation', array(
 
91
  'method' => 'POST',
92
  'timeout' => 45,
93
  'redirection' => 5,
94
  'httpversion' => '1.0',
95
  'blocking' => true,
96
  'body' => $this->data,
97
+ 'user-agent' => 'QSM Usage Tracker'
98
  ) );
99
  if ( is_wp_error( $response ) ) {
100
  $error_message = $response->get_error_message();
101
+ $mlwQuizMasterNext->log_manager->add( "Error 0024", "Usage tracker failed due to following reason: $error_message", 0, 'error' );
102
  }
103
  }
104
 
108
  * @since 4.1.0
109
  * @return void
110
  */
111
+ private function load_data( $tracking ) {
 
112
  global $wpdb;
113
+ global $mlwQuizMasterNext;
114
  $data = array();
115
+ $data["plugin"] = "QSM";
116
 
117
  $data['url'] = home_url();
118
  $data["wp_version"] = get_bloginfo( 'version' );
159
  $data['quiz_options'] = $wpdb->get_results( "SELECT quiz_name, system, randomness_order, loggedin_user_contact, show_score, send_user_email, send_admin_email, contact_info_location, user_name, user_comp,
160
  user_email, user_phone, comment_section, question_from_total, total_user_tries, certificate_template, pagination, timer_limit, question_numbering, theme_selected, last_activity, require_log_in, limit_total_entries, disable_answer_onselect, ajax_show_correct, quiz_views, quiz_taken FROM ".$wpdb->prefix."mlw_quizzes WHERE deleted=0" );
161
 
162
+ $data['error_logs'] = $mlwQuizMasterNext->log_manager->get_logs();
163
+
164
+ $data['site_title'] = get_bloginfo( 'name' );
165
+ $data['site_desc'] = get_bloginfo( 'description' );
166
+ $data['site_charset'] = get_bloginfo( 'charset' );
167
+ $data['lang'] = get_bloginfo( 'language' );
168
+
169
+ // Only add email if they opted into the newer optin message that includes joining the mailing list
170
+ if ( $tracking == "2" ) {
171
+ $data['email'] = get_bloginfo( 'admin_email' );
172
+ }
173
 
174
  $this->data = $data;
175
  }
182
  * @since 4.1.0
183
  * @return void
184
  */
185
+ public function admin_notice() {
 
186
  $show_notice = get_option( 'qmn-tracking-notice' );
187
  $settings = (array) get_option( 'qmn-settings' );
188
 
189
  if ($show_notice)
190
  return;
191
 
192
+ if ( isset( $settings['tracking_allowed'] ) && $settings['tracking_allowed'] == '1' )
193
  return;
194
 
195
+ if( ! current_user_can( 'manage_options' ) )
196
  return;
197
 
198
+ if( stristr( network_site_url( '/' ), 'dev' ) !== false || stristr( network_site_url( '/' ), 'localhost' ) !== false || stristr( network_site_url( '/' ), ':8888' ) !== false ) {
 
199
  update_option( 'qmn-tracking-notice', '1' );
200
+ } else {
 
 
201
  $optin_url = esc_url( add_query_arg( 'qmn_track_check', 'opt_into_tracking' ) );
202
  $optout_url = esc_url( add_query_arg( 'qmn_track_check', 'opt_out_of_tracking' ) );
203
  echo '<div class="updated"><p>';
204
+ echo __( "Allow Quiz And Survey Master to track this plugin's usage and help us make this plugin better? Opt-in to tracking and our newsletter and immediately be emailed a 20%% discount to the QSM store, valid towards the purchase of addons. No sensitive data is tracked.", 'quiz-master-next' );
205
  echo '&nbsp;<a href="' . esc_url( $optin_url ) . '" class="button-secondary">' . __( 'Allow', 'quiz-master-next' ) . '</a>';
206
  echo '&nbsp;<a href="' . esc_url( $optout_url ) . '" class="button-secondary">' . __( 'Do not allow', 'quiz-master-next' ) . '</a>';
207
  echo '</p></div>';
214
  * @since 4.1.0
215
  * @return void
216
  */
217
+ public function admin_notice_check() {
218
+ if ( isset( $_GET["qmn_track_check"] ) ) {
219
+ if ( $_GET["qmn_track_check"] == 'opt_into_tracking' ) {
 
 
 
220
  $settings = (array) get_option( 'qmn-settings' );
221
+ $settings['tracking_allowed'] = '2';
222
  update_option( 'qmn-settings', $settings );
223
+ } else {
 
 
224
  $settings = (array) get_option( 'qmn-settings' );
225
  $settings['tracking_allowed'] = '0';
226
  update_option( 'qmn-settings', $settings );
php/class-qsm-install.php CHANGED
@@ -193,16 +193,10 @@ class QSM_Install {
193
  public function update() {
194
  global $mlwQuizMasterNext;
195
  $data = $mlwQuizMasterNext->version;
196
- if ( ! get_option('qmn_original_version'))
197
- {
198
- add_option('qmn_original_version' , $data);
199
- }
200
- if ( ! get_option('mlw_quiz_master_version'))
201
- {
202
- add_option('mlw_quiz_master_version' , $data);
203
- }
204
- elseif (get_option('mlw_quiz_master_version') != $data)
205
- {
206
  global $wpdb;
207
  $table_name = $wpdb->prefix . "mlw_quizzes";
208
  //Update 0.5
@@ -608,15 +602,13 @@ class QSM_Install {
608
 
609
 
610
  update_option('mlw_quiz_master_version' , $data);
611
- if(!isset($_GET['activate-multi']))
612
- {
613
- wp_safe_redirect( admin_url( 'index.php?page=mlw_qmn_about' ) );
614
- exit;
615
- }
616
  }
617
- if ( ! get_option('mlw_advert_shows'))
618
- {
619
- add_option('mlw_advert_shows' , 'true');
620
  }
621
  }
622
 
193
  public function update() {
194
  global $mlwQuizMasterNext;
195
  $data = $mlwQuizMasterNext->version;
196
+ if ( ! get_option( 'qmn_original_version' ) ) {
197
+ add_option( 'qmn_original_version', $data );
198
+ }
199
+ if ( get_option( 'mlw_quiz_master_version' ) != $data ) {
 
 
 
 
 
 
200
  global $wpdb;
201
  $table_name = $wpdb->prefix . "mlw_quizzes";
202
  //Update 0.5
602
 
603
 
604
  update_option('mlw_quiz_master_version' , $data);
605
+ if( ! isset( $_GET['activate-multi'] ) ) {
606
+ wp_safe_redirect( admin_url( 'index.php?page=mlw_qmn_about' ) );
607
+ exit;
608
+ }
 
609
  }
610
+ if ( ! get_option('mlw_advert_shows') ) {
611
+ add_option( 'mlw_advert_shows' , 'true' );
 
612
  }
613
  }
614
 
php/settings-page.php CHANGED
@@ -207,11 +207,11 @@ class QMNGlobalSettingsPage
207
  $tracking_allowed = esc_attr( $settings['tracking_allowed'] );
208
  }
209
  $checked = '';
210
- if ($tracking_allowed == '1')
211
  {
212
  $checked = " checked='checked'";
213
  }
214
- echo "<input type='checkbox' name='qmn-settings[tracking_allowed]' id='qmn-settings[tracking_allowed]' value='1'$checked />";
215
  echo "<label for='qmn-settings[tracking_allowed]'>Allow Quiz And Survey Master to anonymously track this plugin's usage and help us make this plugin better.</label>";
216
  }
217
 
207
  $tracking_allowed = esc_attr( $settings['tracking_allowed'] );
208
  }
209
  $checked = '';
210
+ if ($tracking_allowed == '2')
211
  {
212
  $checked = " checked='checked'";
213
  }
214
+ echo "<input type='checkbox' name='qmn-settings[tracking_allowed]' id='qmn-settings[tracking_allowed]' value='2'$checked />";
215
  echo "<label for='qmn-settings[tracking_allowed]'>Allow Quiz And Survey Master to anonymously track this plugin's usage and help us make this plugin better.</label>";
216
  }
217
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Quiz And Survey Master (Formerly Quiz Master Next) ===
2
- Contributors: mylocalwebstop, fpcorso, elrath
3
  Donate link: http://mylocalwebstop.com/downloads/donation-service-payment/
4
  Tags: quiz, survey, test, score, exam, questionnaire, email, answer, question, certificate, points, results
5
  Requires at least: 4.1
6
- Tested up to: 4.5.2
7
- Stable tag: 4.7.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -45,7 +45,6 @@ You can assign categories to your questions. You can then show the user their sc
45
  * Schedule when the quiz or survey should be active
46
  * **Require** certain or all questions to be answered
47
  * Limit amount of total entries to quiz or survey
48
- * Allows for you to create **certificates** for the user
49
  * Can set amount of tries a user has to take the quiz or survey
50
  * Can enable **comment boxes** for each question and/or comment section at the end of the quiz or survey
51
  * Can enable **hints** for questions
@@ -59,9 +58,15 @@ You can assign categories to your questions. You can then show the user their sc
59
  = Make Suggestions Or Contribute =
60
  Quiz And Survey Master is now on [GitHub](https://github.com/fpcorso/quiz_master_next/)!
61
 
62
- = Premium Quiz And Survey Master Add-ons =
63
  While Quiz And Survey Master is fully functional and is packed full of features that will meet the needs of most, we do offer various extra features including:
64
 
 
 
 
 
 
 
65
  * [Landing Page](http://quizandsurveymaster.com/downloads/landing-page/?utm_source=readme&utm_medium=plugin&utm_content=landing-page&utm_campaign=qsm_plugin)
66
  * [Export Results](http://quizandsurveymaster.com/downloads/export-results/?utm_source=readme&utm_medium=plugin&utm_content=export-results&utm_campaign=qsm_plugin)
67
  * [Reporting & Analysis](http://quizandsurveymaster.com/downloads/results-analysis/?utm_source=readme&utm_medium=plugin&utm_content=reporting-analysis&utm_campaign=qsm_plugin)
@@ -104,49 +109,16 @@ This is usually a theme conflict. You can [checkout out our common conflict solu
104
 
105
  == Changelog ==
106
 
 
 
 
107
  = 4.7.5 (June 15, 2016) =
108
  * Closed Enhancement: Change Text Block To Text/HTML - Issue #451
109
  * Closed Enhancement: Create alert warning about removal of certificate - Issue #382
110
 
111
- = 4.7.4 (June 3, 2016) =
112
- * Closed Bug: Results page will not load on some sites - Issue #445
113
-
114
- = 4.7.3 (May 31, 2016) =
115
- * Closed Enhancement: Create new question section id CSS class for each question - Issue #440
116
- * Closed Bug: Creating/Editing questions throw PHP notice of undefined index - Issue #436
117
-
118
- = 4.7.2 (May 23, 2016) =
119
- * Closed Bug: Multiple quizzes on page causes plugin to scroll to top quiz when submitting - Issue #428
120
-
121
- = 4.7.1 (May 10, 2016) =
122
- * Closed Enhancement: Create new audit trail class - Issue #425
123
- * Closed Enhancement: Raise minimum WordPress version to 4.1 - Issue #423
124
- * Closed Enhancement: WordPress Compatibility with 4.5.2 - Issue #422
125
- * Closed Enhancement: Move installation process into new QSM_Install class - Issue #416
126
- * Closed Enhancement: Update links for plugin on Plugins page - Issue #415
127
- * Closed Bug: Activating plugin on fresh install causes unexpected output warning - Issue #414
128
- * Closed User Request: Shortcode parameter to override amount of questions - Issue #345
129
- * Closed Enhancement: Limit per user - upgrade to include non-logged in users - Issue #301
130
-
131
- = 4.7.0 (April 4, 2016) =
132
- * Closed Bug: Slash Added Before Quotation Mark When Editing Quiz/Survey Name - Issue #401
133
- * Closed User Request: Add CSS Class To Container When Timer Runs Out - Issue #400
134
- * Closed Bug: Validation breaks on second time through quiz - Issue #398
135
- * Closed Bug: Validation not working when more than one question per page - Issue #395
136
- * Closed Enhancement: Add Spinner/De-activate Submit Button Once Submitted - Issue #387
137
- * Closed Enhancement: Pull changelog from GitHub API - Issue #377
138
- * Closed Bug: Theme Conflict With Button Class (btn) - Issue #370
139
- * Closed User Request: Add Average Points Per Category Variable - Issue #369
140
- * Closed Bug: Mixed content SSL error - Issue #367
141
- * Closed Enhancement: Default Option For Drop Down - Issue #334
142
- * Closed Bug: Disable Answer On Change Not Working - Issue #331
143
- * Closed User Request: Randomize Answers But Not Questions - Issue #330
144
- * Closed User Request: Add Date Taken Variable - Issue #310
145
- * Closed User Request: Copy Questions Between Quizzes - Issue #166
146
-
147
  ([Read Full Changelog](https://github.com/fpcorso/quiz_master_next/blob/master/CHANGELOG.md))
148
 
149
  == Upgrade Notice ==
150
 
151
- = 4.7.5 =
152
  Upgrade for minor design changes
1
  === Quiz And Survey Master (Formerly Quiz Master Next) ===
2
+ Contributors: mylocalwebstop, fpcorso, elrath, dukeran
3
  Donate link: http://mylocalwebstop.com/downloads/donation-service-payment/
4
  Tags: quiz, survey, test, score, exam, questionnaire, email, answer, question, certificate, points, results
5
  Requires at least: 4.1
6
+ Tested up to: 4.5.3
7
+ Stable tag: 4.7.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
45
  * Schedule when the quiz or survey should be active
46
  * **Require** certain or all questions to be answered
47
  * Limit amount of total entries to quiz or survey
 
48
  * Can set amount of tries a user has to take the quiz or survey
49
  * Can enable **comment boxes** for each question and/or comment section at the end of the quiz or survey
50
  * Can enable **hints** for questions
58
  = Make Suggestions Or Contribute =
59
  Quiz And Survey Master is now on [GitHub](https://github.com/fpcorso/quiz_master_next/)!
60
 
61
+ = Quiz And Survey Master Add-ons =
62
  While Quiz And Survey Master is fully functional and is packed full of features that will meet the needs of most, we do offer various extra features including:
63
 
64
+ **Free Add-ons**
65
+
66
+ * [Certificates](http://quizandsurveymaster.com/downloads/certificate/?utm_source=readme&utm_medium=plugin&utm_campaign=qsm_plugin&utm_content=certificate)
67
+
68
+ **Premium Add-ons**
69
+
70
  * [Landing Page](http://quizandsurveymaster.com/downloads/landing-page/?utm_source=readme&utm_medium=plugin&utm_content=landing-page&utm_campaign=qsm_plugin)
71
  * [Export Results](http://quizandsurveymaster.com/downloads/export-results/?utm_source=readme&utm_medium=plugin&utm_content=export-results&utm_campaign=qsm_plugin)
72
  * [Reporting & Analysis](http://quizandsurveymaster.com/downloads/results-analysis/?utm_source=readme&utm_medium=plugin&utm_content=reporting-analysis&utm_campaign=qsm_plugin)
109
 
110
  == Changelog ==
111
 
112
+ = 4.7.6 (July 11, 2016) =
113
+ * Closed: Add language and error logs to usage tracking - Issue #457
114
+
115
  = 4.7.5 (June 15, 2016) =
116
  * Closed Enhancement: Change Text Block To Text/HTML - Issue #451
117
  * Closed Enhancement: Create alert warning about removal of certificate - Issue #382
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  ([Read Full Changelog](https://github.com/fpcorso/quiz_master_next/blob/master/CHANGELOG.md))
120
 
121
  == Upgrade Notice ==
122
 
123
+ = 4.7.6 =
124
  Upgrade for minor design changes
uninstall.php CHANGED
@@ -1,7 +1,6 @@
1
  <?php
2
  //if uninstall not called from WordPress, then exit
3
- if ( !defined( 'WP_UNINSTALL_PLUGIN' ) )
4
- {
5
  exit();
6
  }
7
 
@@ -18,7 +17,9 @@ $results = $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
18
  $table_name = $wpdb->prefix . "mlw_qm_audit_trail";
19
  $results = $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
20
 
21
- delete_option('mlw_quiz_master_version');
22
- delete_option('mlw_qmn_review_notice');
23
- delete_option('mlw_advert_shows');
 
 
24
  ?>
1
  <?php
2
  //if uninstall not called from WordPress, then exit
3
+ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
 
4
  exit();
5
  }
6
 
17
  $table_name = $wpdb->prefix . "mlw_qm_audit_trail";
18
  $results = $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
19
 
20
+ delete_option( 'mlw_quiz_master_version' );
21
+ delete_option( 'mlw_qmn_review_notice' );
22
+ delete_option( 'mlw_advert_shows' );
23
+ delete_option( 'qmn-settings' );
24
+ delete_option( 'qmn-tracking-notice' );
25
  ?>