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

Version Description

Upgrade to require users to be logged in, limit amount of total entries, and show mathematic formulas!

Download this release

Release Info

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

Code changes from version 3.4.1 to 3.5.1

assets/screenshot-1.png CHANGED
Binary file
assets/screenshot-2.png CHANGED
Binary file
assets/screenshot-6.png CHANGED
Binary file
includes/mlw_qmn_credits.php CHANGED
@@ -89,18 +89,21 @@ function mlw_generate_about_page()
89
  <div class="mlw_qmn_icon_wrap">Version <?php echo $mlw_quiz_version; ?></div>
90
  <h2 class="nav-tab-wrapper">
91
  <a href="javascript:mlw_qmn_setTab(1);" id="mlw_qmn_tab_1" class="nav-tab nav-tab-active">
92
- What&#8217;s New In 3.4</a>
93
  <a href="javascript:mlw_qmn_setTab(2);" id="mlw_qmn_tab_2" class="nav-tab">
94
  Changelog For <?php echo $mlw_quiz_version; ?> </a>
95
  <a href="javascript:mlw_qmn_setTab(3);" id="mlw_qmn_tab_3" class="nav-tab">
96
  Requested Features</a>
97
  </h2>
98
  <div id="mlw_quiz_what_new">
99
- <h2 style="margin: 1.1em 0 .2em;font-size: 2.4em;font-weight: 300;line-height: 1.3;text-align: center;">Preview Mode</h2>
100
- <p style="text-align: center;">You can now preview your quiz while in the admin side by going to the new Preview tab on the Quiz Settings page!</p>
101
  <br />
102
- <h2 style="margin: 1.1em 0 .2em;font-size: 2.4em;font-weight: 300;line-height: 1.3;text-align: center;">Design Changes</h2>
103
- <p style="text-align: center;">This version made several design changes to various pages as we continue to redesign our plugin. We also made many design changes in our code!</p>
 
 
 
104
  <br />
105
  <h2 style="margin: 1.1em 0 .2em;font-size: 2.4em;font-weight: 300;line-height: 1.3;text-align: center;">We Are On GitHub Now</h2>
106
  <p style="text-align: center;">We have had several users ask for this so we thought we would try it out. We now love github! Be sure to <a href="https://github.com/fpcorso/quiz_master_next/">make suggestions or contribute</a>.</p>
@@ -109,16 +112,13 @@ function mlw_generate_about_page()
109
  <p style="text-align: center;">We have several new premium add-ons in our WordPress Store: MailPoet Integration (subscribes users to your MailPoet list), MailChimp Integration (subscribes users to your Mailchimp list), Export Results (exports your quiz results), Extra Shortcodes (gives you extra shortcodes to use), User Dashboard (allow users to see the results from all the quizzes they have taken), and Advertisement Be Gone (gets rid of blue-border ads). Visit our <a href="http://mylocalwebstop.com/shop/">WordPress Store</a> for details! </p>
110
  </div>
111
  <div id="mlw_quiz_changelog" style="display: none;">
112
- <h3><?php echo $mlw_quiz_version; ?> (November 20, 2014)</h3>
113
  <ul>
114
- <li>* Added Preview Mode (Beta)</li>
115
- <li>* Several Design Changes To Quizzes Page</li>
116
- <li>* Minor Design Changes To Quiz Settings Page</li>
117
- <li>* Added Completion Time To Quiz Results Page</li>
118
- <li>* Added Time Taken To Quiz Result Details Page</li>
119
- <li>* Created New Hook On Quiz Settings Page</li>
120
- <li>* Broke Apart Quiz Settings Backend Into Smaller Functions That Hook Into New Hook</li>
121
- <li>* Created New Backend Alert Manager Class To Replace Archaic Old Error System</li>
122
  </ul>
123
  </div>
124
  <div id="mlw_quiz_requested" style="display: none;">
@@ -130,7 +130,6 @@ function mlw_generate_about_page()
130
  <ul>
131
  <li>Importing Questions</li>
132
  <li>Stats For Each Quiz</li>
133
- <li>Force Login/Register Option</li>
134
  <li>Categories</li>
135
  <li>More Social Media Integration</li>
136
  <li>Show Question Amount On Pagination</li>
@@ -139,11 +138,9 @@ function mlw_generate_about_page()
139
  <li>Progress Bar For Timer</li>
140
  <li>Ability To Redirect User Instead Of Showing Results Page</li>
141
  <li>Multi-Delete Option For Quiz Results</li>
142
- <li>Spam Prevention</li>
143
  <li>Graphical Click Aware Questions</li>
144
  <li>Results Bar Graph For Users Taking Polls</li>
145
  <li>Head To Head Comparison Questions</li>
146
- <li>Enhanced Leaderboard</li>
147
  <li>Different Social Media Sharing Text For Different Social Media</li>
148
  <li>Ability To Highlight Incorrect Answers</li>
149
  <li>Set Default Question Type</li>
89
  <div class="mlw_qmn_icon_wrap">Version <?php echo $mlw_quiz_version; ?></div>
90
  <h2 class="nav-tab-wrapper">
91
  <a href="javascript:mlw_qmn_setTab(1);" id="mlw_qmn_tab_1" class="nav-tab nav-tab-active">
92
+ What&#8217;s New In 3.5</a>
93
  <a href="javascript:mlw_qmn_setTab(2);" id="mlw_qmn_tab_2" class="nav-tab">
94
  Changelog For <?php echo $mlw_quiz_version; ?> </a>
95
  <a href="javascript:mlw_qmn_setTab(3);" id="mlw_qmn_tab_3" class="nav-tab">
96
  Requested Features</a>
97
  </h2>
98
  <div id="mlw_quiz_what_new">
99
+ <h2 style="margin: 1.1em 0 .2em;font-size: 2.4em;font-weight: 300;line-height: 1.3;text-align: center;">Require Users To Be Logged In</h2>
100
+ <p style="text-align: center;">You can now require users to be logged in to access your quiz. Set this up from the options tab. You can customize the text it shows to non-logged in users on the Text tab.</p>
101
  <br />
102
+ <h2 style="margin: 1.1em 0 .2em;font-size: 2.4em;font-weight: 300;line-height: 1.3;text-align: center;">Limit Total Entries</h2>
103
+ <p style="text-align: center;">You can now limit the amount of total entries to your quiz. For example, you could say only 10 people can complete the survey. Edit this setting from the options tab. You can customize the text it shows once it reaches the limit on the text tab.</p>
104
+ <br />
105
+ <h2 style="margin: 1.1em 0 .2em;font-size: 2.4em;font-weight: 300;line-height: 1.3;text-align: center;">LaTeX/Tex Support For Mathematics</h2>
106
+ <p style="text-align: center;">You can now use LaTex/Tex to show mathematic symbols and formulas such as square root, fractions, exponents, and more. You can place your math in any question, answer, or text on the quiz! For help with LaTeX, <a href="http://www.andy-roberts.net/writing/latex/mathematics_1">check out this tutorial</a>.</p>
107
  <br />
108
  <h2 style="margin: 1.1em 0 .2em;font-size: 2.4em;font-weight: 300;line-height: 1.3;text-align: center;">We Are On GitHub Now</h2>
109
  <p style="text-align: center;">We have had several users ask for this so we thought we would try it out. We now love github! Be sure to <a href="https://github.com/fpcorso/quiz_master_next/">make suggestions or contribute</a>.</p>
112
  <p style="text-align: center;">We have several new premium add-ons in our WordPress Store: MailPoet Integration (subscribes users to your MailPoet list), MailChimp Integration (subscribes users to your Mailchimp list), Export Results (exports your quiz results), Extra Shortcodes (gives you extra shortcodes to use), User Dashboard (allow users to see the results from all the quizzes they have taken), and Advertisement Be Gone (gets rid of blue-border ads). Visit our <a href="http://mylocalwebstop.com/shop/">WordPress Store</a> for details! </p>
113
  </div>
114
  <div id="mlw_quiz_changelog" style="display: none;">
115
+ <h3><?php echo $mlw_quiz_version; ?> (November 22, 2014)</h3>
116
  <ul>
117
+ <li>* Added The Ability To Require Users To Be Logged In To Access Quiz</li>
118
+ <li>* Added Ability To Limit Total Amount Of Entries</li>
119
+ <li>* Added Ability To Show Mathematic Formulas Using Tex Or LaTex</li>
120
+ <li>* Set Up Parameters For Action 'mlw_qmn_load_results_page' To Pass Results Id And Quiz Settings</li>
121
+ <li>* Minor Design Change To Quizzes Page</li>
 
 
 
122
  </ul>
123
  </div>
124
  <div id="mlw_quiz_requested" style="display: none;">
130
  <ul>
131
  <li>Importing Questions</li>
132
  <li>Stats For Each Quiz</li>
 
133
  <li>Categories</li>
134
  <li>More Social Media Integration</li>
135
  <li>Show Question Amount On Pagination</li>
138
  <li>Progress Bar For Timer</li>
139
  <li>Ability To Redirect User Instead Of Showing Results Page</li>
140
  <li>Multi-Delete Option For Quiz Results</li>
 
141
  <li>Graphical Click Aware Questions</li>
142
  <li>Results Bar Graph For Users Taking Polls</li>
143
  <li>Head To Head Comparison Questions</li>
 
144
  <li>Different Social Media Sharing Text For Different Social Media</li>
145
  <li>Ability To Highlight Incorrect Answers</li>
146
  <li>Set Default Question Type</li>
includes/mlw_quiz.php CHANGED
@@ -33,6 +33,18 @@ function mlw_quiz_shortcode($atts)
33
  break;
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  //Check to see if there is limit on the amount of tries
37
  if ( $mlw_quiz_options->total_user_tries != 0 && is_user_logged_in() )
38
  {
@@ -105,6 +117,9 @@ function mlw_quiz_shortcode($atts)
105
  wp_enqueue_script( 'jquery-ui-tooltip' );
106
  wp_enqueue_script( 'jquery-ui-tabs' );
107
  ?>
 
 
 
108
  <!-- css -->
109
  <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css" rel="stylesheet" />
110
  <script type="text/javascript">
@@ -165,6 +180,20 @@ function mlw_quiz_shortcode($atts)
165
  //Display Quiz
166
  if (!isset($_POST["complete_quiz"]) && $mlw_quiz_options->quiz_name != "" && $mlw_qmn_isAllowed)
167
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  $mlw_qmn_total_questions = 0;
169
  //Calculate number of pages if pagination is turned on
170
  if ($mlw_quiz_options->pagination != 0)
@@ -1415,7 +1444,7 @@ EOC;
1415
  $results = $wpdb->query( $wpdb->prepare( "INSERT INTO " . $table_name . " (result_id, quiz_id, quiz_name, quiz_system, point_score, correct_score, correct, total, name, business, email, phone, user, time_taken, time_taken_real, quiz_results, deleted) VALUES (NULL, %d, '%s', %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', 0)", $mlw_quiz_id, $mlw_quiz_options->quiz_name, $mlw_quiz_options->system, $mlw_points, $mlw_total_score, $mlw_correct, $mlw_total_questions, $mlw_user_name, $mlw_user_comp, $mlw_user_email, $mlw_user_phone, get_current_user_id(), date("h:i:s A m/d/Y"), date("Y-m-d H:i:s"), $mlw_quiz_results) );
1416
 
1417
  //Integration Action
1418
- do_action('mlw_qmn_load_results_page');
1419
  }
1420
  else
1421
  {
@@ -1566,4 +1595,4 @@ function mlw_qmn_set_html_content_type() {
1566
 
1567
  return 'text/html';
1568
  }
1569
- ?>
33
  break;
34
  }
35
 
36
+ //Check if user is required to be checked in
37
+ if ( $mlw_quiz_options->require_log_in == 1 && !is_user_logged_in() )
38
+ {
39
+ $mlw_message = htmlspecialchars_decode($mlw_quiz_options->require_log_in_text, ENT_QUOTES);
40
+ $mlw_message = str_replace( "%QUIZ_NAME%" , $mlw_quiz_options->quiz_name, $mlw_message);
41
+ $mlw_message = str_replace( "%CURRENT_DATE%" , date("F jS Y"), $mlw_message);
42
+ $mlw_display = $mlw_message;
43
+ $mlw_display .= wp_login_form( array('echo' => false) );
44
+ return $mlw_display;
45
+ $mlw_qmn_isAllowed = false;
46
+ }
47
+
48
  //Check to see if there is limit on the amount of tries
49
  if ( $mlw_quiz_options->total_user_tries != 0 && is_user_logged_in() )
50
  {
117
  wp_enqueue_script( 'jquery-ui-tooltip' );
118
  wp_enqueue_script( 'jquery-ui-tabs' );
119
  ?>
120
+ <script type="text/javascript"
121
+ src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
122
+ </script>
123
  <!-- css -->
124
  <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css" rel="stylesheet" />
125
  <script type="text/javascript">
180
  //Display Quiz
181
  if (!isset($_POST["complete_quiz"]) && $mlw_quiz_options->quiz_name != "" && $mlw_qmn_isAllowed)
182
  {
183
+ //Check if total entries are limited
184
+ if ( $mlw_quiz_options->limit_total_entries != 0 )
185
+ {
186
+ $mlw_qmn_entries_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(quiz_id) FROM ".$wpdb->prefix."mlw_results WHERE deleted='0' AND quiz_id=%d", $mlw_quiz_id ) );
187
+ if ($mlw_qmn_entries_count >= $mlw_quiz_options->limit_total_entries)
188
+ {
189
+ $mlw_message = htmlspecialchars_decode($mlw_quiz_options->limit_total_entries_text, ENT_QUOTES);
190
+ $mlw_message = str_replace( "%QUIZ_NAME%" , $mlw_quiz_options->quiz_name, $mlw_message);
191
+ $mlw_message = str_replace( "%CURRENT_DATE%" , date("F jS Y"), $mlw_message);
192
+ $mlw_display = $mlw_message;
193
+ return $mlw_display;
194
+ $mlw_qmn_isAllowed = false;
195
+ }
196
+ }
197
  $mlw_qmn_total_questions = 0;
198
  //Calculate number of pages if pagination is turned on
199
  if ($mlw_quiz_options->pagination != 0)
1444
  $results = $wpdb->query( $wpdb->prepare( "INSERT INTO " . $table_name . " (result_id, quiz_id, quiz_name, quiz_system, point_score, correct_score, correct, total, name, business, email, phone, user, time_taken, time_taken_real, quiz_results, deleted) VALUES (NULL, %d, '%s', %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', 0)", $mlw_quiz_id, $mlw_quiz_options->quiz_name, $mlw_quiz_options->system, $mlw_points, $mlw_total_score, $mlw_correct, $mlw_total_questions, $mlw_user_name, $mlw_user_comp, $mlw_user_email, $mlw_user_phone, get_current_user_id(), date("h:i:s A m/d/Y"), date("Y-m-d H:i:s"), $mlw_quiz_results) );
1445
 
1446
  //Integration Action
1447
+ do_action('mlw_qmn_load_results_page', $wpdb->insert_id, $mlw_quiz_options->quiz_settings);
1448
  }
1449
  else
1450
  {
1595
 
1596
  return 'text/html';
1597
  }
1598
+ ?>
includes/mlw_quiz_admin.php CHANGED
@@ -362,6 +362,9 @@ function mlw_generate_quiz_admin()
362
  ?>
363
  <!-- css -->
364
  <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css" rel="stylesheet" />
 
 
 
365
  <!-- jquery scripts -->
366
  <?php
367
  wp_enqueue_script( 'jquery' );
@@ -377,9 +380,6 @@ function mlw_generate_quiz_admin()
377
  var $j = jQuery.noConflict();
378
  // increase the default animation speed to exaggerate the effect
379
  $j.fx.speeds._default = 1000;
380
- $j(function() {
381
- $j("#prev_page, #next_page").button();
382
- });
383
  $j(function() {
384
  $j('#new_quiz_dialog').dialog({
385
  autoOpen: false,
@@ -476,9 +476,51 @@ function mlw_generate_quiz_admin()
476
  <div class="wrap">
477
  <div class='mlw_quiz_options'>
478
  <h2>Quizzes<a id="new_quiz_button" href="javascript:();" class="add-new-h2">Add New</a></h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
479
  <?php
480
- $mlwQmnAlertManager->showAlerts();
481
-
482
  $quotes_list = "";
483
  $display = "";
484
  $alternate = "";
@@ -497,27 +539,7 @@ function mlw_generate_quiz_admin()
497
  $quotes_list .= "</tr>";
498
  }
499
 
500
- if( $mlw_qmn_quiz_page > 0 )
501
- {
502
- $mlw_qmn_previous_page = $mlw_qmn_quiz_page - 2;
503
- $display .= "<a id=\"prev_page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_previous_page\">Previous 10 Quizzes</a>";
504
- if( $mlw_qmn_quiz_left > $mlw_qmn_table_limit )
505
- {
506
- $display .= "<a id=\"next_page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_quiz_page\">Next 10 Quizzes</a>";
507
- }
508
- }
509
- else if( $mlw_qmn_quiz_page == 0 )
510
- {
511
- if( $mlw_qmn_quiz_left > $mlw_qmn_table_limit )
512
- {
513
- $display .= "<a id=\"next_page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_quiz_page\">Next 10 Quizzes</a>";
514
- }
515
- }
516
- else if( $mlw_qmn_quiz_left < $mlw_qmn_table_limit )
517
- {
518
- $mlw_qmn_previous_page = $mlw_qmn_quiz_page - 2;
519
- $display .= "<a id=\"prev_page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_previous_page\">Previous 10 Quizzes</a>";
520
- }
521
 
522
  $display .= "<br />";
523
 
@@ -623,4 +645,4 @@ function mlw_generate_quiz_admin()
623
  </div>
624
  <?php
625
  }
626
- ?>
362
  ?>
363
  <!-- css -->
364
  <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css" rel="stylesheet" />
365
+ <script type="text/javascript"
366
+ src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
367
+ </script>
368
  <!-- jquery scripts -->
369
  <?php
370
  wp_enqueue_script( 'jquery' );
380
  var $j = jQuery.noConflict();
381
  // increase the default animation speed to exaggerate the effect
382
  $j.fx.speeds._default = 1000;
 
 
 
383
  $j(function() {
384
  $j('#new_quiz_dialog').dialog({
385
  autoOpen: false,
476
  <div class="wrap">
477
  <div class='mlw_quiz_options'>
478
  <h2>Quizzes<a id="new_quiz_button" href="javascript:();" class="add-new-h2">Add New</a></h2>
479
+ <?php $mlwQmnAlertManager->showAlerts(); ?>
480
+ <div class="tablenav top">
481
+ <div class="tablenav-pages">
482
+ <span class="displaying-num"><?php echo $mlw_qmn_quiz_count; ?> quizzes</span>
483
+ <span class="pagination-links">
484
+ <?php
485
+ $mlw_qmn_previous_page = 0;
486
+ $mlw_current_page = $mlw_qmn_quiz_page+1;
487
+ $mlw_total_pages = ceil($mlw_qmn_quiz_count/$mlw_qmn_table_limit);
488
+ if( $mlw_qmn_quiz_page > 0 )
489
+ {
490
+ $mlw_qmn_previous_page = $mlw_qmn_quiz_page - 2;
491
+ echo "<a class=\"prev-page\" title=\"Go to the previous page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_previous_page\"><</a>";
492
+ echo "<span class=\"paging-input\">$mlw_current_page of $mlw_total_pages</span>";
493
+ if( $mlw_qmn_quiz_left > $mlw_qmn_table_limit )
494
+ {
495
+ echo "<a class=\"next-page\" title=\"Go to the next page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_quiz_page\">></a>";
496
+ }
497
+ else
498
+ {
499
+ echo "<a class=\"next-page disabled\" title=\"Go to the next page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_quiz_page\">></a>";
500
+ }
501
+ }
502
+ else if( $mlw_qmn_quiz_page == 0 )
503
+ {
504
+ if( $mlw_qmn_quiz_left > $mlw_qmn_table_limit )
505
+ {
506
+ echo "<a class=\"prev-page disabled\" title=\"Go to the previous page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_previous_page\"><</a>";
507
+ echo "<span class=\"paging-input\">$mlw_current_page of $mlw_total_pages</span>";
508
+ echo "<a class=\"next-page\" title=\"Go to the next page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_quiz_page\">></a>";
509
+ }
510
+ }
511
+ else if( $mlw_qmn_quiz_left < $mlw_qmn_table_limit )
512
+ {
513
+ $mlw_qmn_previous_page = $mlw_qmn_quiz_page - 2;
514
+ echo "<a class=\"prev-page\" title=\"Go to the previous page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_previous_page\"><</a>";
515
+ echo "<span class=\"paging-input\">$mlw_current_page of $mlw_total_pages</span>";
516
+ echo "<a class=\"next-page disabled\" title=\"Go to the next page\" href=\"?page=mlw_quiz_admin&&mlw_quiz_page=$mlw_qmn_quiz_page\">></a>";
517
+ }
518
+ ?>
519
+ </span>
520
+ <br class="clear">
521
+ </div>
522
+ </div>
523
  <?php
 
 
524
  $quotes_list = "";
525
  $display = "";
526
  $alternate = "";
539
  $quotes_list .= "</tr>";
540
  }
541
 
542
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
543
 
544
  $display .= "<br />";
545
 
645
  </div>
646
  <?php
647
  }
648
+ ?>
includes/mlw_quiz_options.php CHANGED
@@ -17,6 +17,10 @@ function mlw_generate_quiz_options()
17
  $mlw_quiz_options = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE quiz_id=%d LIMIT 1", $_GET["quiz_id"]));
18
  }
19
  ?>
 
 
 
 
20
  <!-- css -->
21
  <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css" rel="stylesheet" />
22
  <!-- jquery scripts -->
@@ -928,12 +932,14 @@ function mlw_options_text_tab_content()
928
  $mlw_phone_field_text = htmlspecialchars($_POST["mlw_phoneText"], ENT_QUOTES);
929
  $mlw_before_comments = htmlspecialchars($_POST["mlw_quiz_before_comments"], ENT_QUOTES);
930
  $mlw_comment_field_text = htmlspecialchars($_POST["mlw_commentText"], ENT_QUOTES);
 
 
931
  $mlw_qmn_pagination_field = serialize(array( $_POST["pagination_prev_text"], $_POST["pagination_next_text"] ));
932
  $mlw_email_from_text = $_POST["emailFromText"];
933
  $mlw_question_answer_template = htmlspecialchars($_POST["mlw_quiz_question_answer_template"], ENT_QUOTES);
934
  $quiz_id = $_POST["quiz_id"];
935
 
936
- $update = "UPDATE " . $wpdb->prefix . "mlw_quizzes" . " SET message_before='".$mlw_before_message."', message_comment='".$mlw_before_comments."', message_end_template='".$mlw_qmn_message_end."', comment_field_text='".$mlw_comment_field_text."', email_from_text='".$mlw_email_from_text."', question_answer_template='".$mlw_question_answer_template."', submit_button_text='".$mlw_submit_button_text."', name_field_text='".$mlw_name_field_text."', business_field_text='".$mlw_business_field_text."', email_field_text='".$mlw_email_field_text."', phone_field_text='".$mlw_phone_field_text."', total_user_tries_text='".$mlw_user_tries_text."', social_media_text='".$mlw_qmn_social_medi_text."', pagination_text='".$mlw_qmn_pagination_field."', last_activity='".date("Y-m-d H:i:s")."' WHERE quiz_id=".$quiz_id;
937
  $results = $wpdb->query( $update );
938
  if ($results != false)
939
  {
@@ -1073,6 +1079,28 @@ function mlw_options_text_tab_content()
1073
  <td><textarea cols="80" rows="15" id="mlw_quiz_total_user_tries_text" name="mlw_quiz_total_user_tries_text"><?php echo $mlw_quiz_options->total_user_tries_text; ?></textarea>
1074
  </td>
1075
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1076
  <tr>
1077
  <td width="30%">
1078
  <strong>%QUESTIONS_ANSWERS% Text</strong>
@@ -1167,6 +1195,8 @@ function mlw_options_option_tab_content()
1167
  $mlw_qmn_questions_from_total = $_POST["question_from_total"];
1168
  $mlw_randomness_order = $_POST["randomness_order"];
1169
  $mlw_total_user_tries = intval($_POST["total_user_tries"]);
 
 
1170
  $mlw_send_user_email = $_POST["sendUserEmail"];
1171
  $mlw_send_admin_email = $_POST["sendAdminEmail"];
1172
  $mlw_contact_location = $_POST["contact_info_location"];
@@ -1179,7 +1209,7 @@ function mlw_options_option_tab_content()
1179
  $mlw_qmn_loggedin_contact = $_POST["loggedin_user_contact"];
1180
  $quiz_id = $_POST["quiz_id"];
1181
 
1182
- $update = "UPDATE " . $wpdb->prefix . "mlw_quizzes" . " SET system='".$mlw_system."', send_user_email='".$mlw_send_user_email."', send_admin_email='".$mlw_send_admin_email."', loggedin_user_contact='".$mlw_qmn_loggedin_contact."', contact_info_location=".$mlw_contact_location.", user_name='".$mlw_user_name."', user_comp='".$mlw_user_comp."', user_email='".$mlw_user_email."', user_phone='".$mlw_user_phone."', admin_email='".$mlw_admin_email."', comment_section='".$mlw_comment_section."', randomness_order='".$mlw_randomness_order."', question_from_total=".$mlw_qmn_questions_from_total.", total_user_tries=".$mlw_total_user_tries.", social_media=".$mlw_qmn_social_media.", pagination=".$mlw_qmn_pagination.", timer_limit=".$mlw_qmn_timer.", question_numbering=".$mlw_qmn_question_numbering.", last_activity='".date("Y-m-d H:i:s")."' WHERE quiz_id=".$quiz_id;
1183
  $results = $wpdb->query( $update );
1184
  if ($results != false)
1185
  {
@@ -1209,7 +1239,7 @@ function mlw_options_option_tab_content()
1209
  <div id="tabs-3" class="mlw_tab_content">
1210
  <script>
1211
  jQuery(function() {
1212
- jQuery( "#system, #randomness_order, #loggedin_user_contact, #sendUserEmail, #sendAdminEmail, #contact_info_location, #userName, #userComp, #userEmail, #userPhone, #pagination, #commentSection, #social_media, #question_numbering, #comments" ).buttonset();
1213
  });
1214
  </script>
1215
  <button id="save_options_button" onclick="javascript: document.quiz_options_form.submit();">Save Options</button>
@@ -1227,6 +1257,13 @@ function mlw_options_option_tab_content()
1227
  <input type="radio" id="radio3" name="system" <?php if ($mlw_quiz_options->system == 2) {echo 'checked="checked"';} ?> value='2' /><label for="radio3">Not Graded</label>
1228
  </div></td>
1229
  </tr>
 
 
 
 
 
 
 
1230
  <tr valign="top">
1231
  <th scope="row"><label for="pagination">How many questions per page would you like? (Leave 0 for all questions on one page)</label></th>
1232
  <td>
@@ -1245,6 +1282,12 @@ function mlw_options_option_tab_content()
1245
  <input name="total_user_tries" type="number" step="1" min="0" id="total_user_tries" value="<?php echo $mlw_quiz_options->total_user_tries; ?>" class="regular-text" />
1246
  </td>
1247
  </tr>
 
 
 
 
 
 
1248
  <tr valign="top">
1249
  <th scope="row"><label for="question_from_total">How many questions should be loaded for quiz? (Leave 0 to load all questions)</label></th>
1250
  <td>
@@ -2332,4 +2375,4 @@ function mlw_options_preview_tab_content()
2332
  </div>
2333
  <?php
2334
  }
2335
- ?>
17
  $mlw_quiz_options = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE quiz_id=%d LIMIT 1", $_GET["quiz_id"]));
18
  }
19
  ?>
20
+
21
+ <script type="text/javascript"
22
+ src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
23
+ </script>
24
  <!-- css -->
25
  <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css" rel="stylesheet" />
26
  <!-- jquery scripts -->
932
  $mlw_phone_field_text = htmlspecialchars($_POST["mlw_phoneText"], ENT_QUOTES);
933
  $mlw_before_comments = htmlspecialchars($_POST["mlw_quiz_before_comments"], ENT_QUOTES);
934
  $mlw_comment_field_text = htmlspecialchars($_POST["mlw_commentText"], ENT_QUOTES);
935
+ $mlw_require_log_in_text = htmlspecialchars($_POST["mlw_require_log_in_text"], ENT_QUOTES);
936
+ $mlw_limit_total_entries_text = htmlspecialchars($_POST["mlw_limit_total_entries_text"], ENT_QUOTES);
937
  $mlw_qmn_pagination_field = serialize(array( $_POST["pagination_prev_text"], $_POST["pagination_next_text"] ));
938
  $mlw_email_from_text = $_POST["emailFromText"];
939
  $mlw_question_answer_template = htmlspecialchars($_POST["mlw_quiz_question_answer_template"], ENT_QUOTES);
940
  $quiz_id = $_POST["quiz_id"];
941
 
942
+ $update = "UPDATE " . $wpdb->prefix . "mlw_quizzes" . " SET message_before='".$mlw_before_message."', message_comment='".$mlw_before_comments."', message_end_template='".$mlw_qmn_message_end."', comment_field_text='".$mlw_comment_field_text."', email_from_text='".$mlw_email_from_text."', question_answer_template='".$mlw_question_answer_template."', submit_button_text='".$mlw_submit_button_text."', name_field_text='".$mlw_name_field_text."', business_field_text='".$mlw_business_field_text."', email_field_text='".$mlw_email_field_text."', phone_field_text='".$mlw_phone_field_text."', total_user_tries_text='".$mlw_user_tries_text."', social_media_text='".$mlw_qmn_social_medi_text."', pagination_text='".$mlw_qmn_pagination_field."', require_log_in_text='".$mlw_require_log_in_text."', limit_total_entries_text='".$mlw_limit_total_entries_text."', last_activity='".date("Y-m-d H:i:s")."' WHERE quiz_id=".$quiz_id;
943
  $results = $wpdb->query( $update );
944
  if ($results != false)
945
  {
1079
  <td><textarea cols="80" rows="15" id="mlw_quiz_total_user_tries_text" name="mlw_quiz_total_user_tries_text"><?php echo $mlw_quiz_options->total_user_tries_text; ?></textarea>
1080
  </td>
1081
  </tr>
1082
+ <tr>
1083
+ <td width="30%">
1084
+ <strong>Message Displayed If User Is Not Logged In And Quiz Requires Users To Be Logged In</strong>
1085
+ <br />
1086
+ <p>Allowed Variables: </p>
1087
+ <p style="margin: 2px 0">- %QUIZ_NAME%</p>
1088
+ <p style="margin: 2px 0">- %CURRENT_DATE%</p>
1089
+ </td>
1090
+ <td><textarea cols="80" rows="15" id="mlw_require_log_in_text" name="mlw_require_log_in_text"><?php echo $mlw_quiz_options->require_log_in_text; ?></textarea>
1091
+ </td>
1092
+ </tr>
1093
+ <tr>
1094
+ <td width="30%">
1095
+ <strong>Message Displayed If The Limit Of Total Entries Has Been Reached</strong>
1096
+ <br />
1097
+ <p>Allowed Variables: </p>
1098
+ <p style="margin: 2px 0">- %QUIZ_NAME%</p>
1099
+ <p style="margin: 2px 0">- %CURRENT_DATE%</p>
1100
+ </td>
1101
+ <td><textarea cols="80" rows="15" id="mlw_limit_total_entries_text" name="mlw_limit_total_entries_text"><?php echo $mlw_quiz_options->limit_total_entries_text; ?></textarea>
1102
+ </td>
1103
+ </tr>
1104
  <tr>
1105
  <td width="30%">
1106
  <strong>%QUESTIONS_ANSWERS% Text</strong>
1195
  $mlw_qmn_questions_from_total = $_POST["question_from_total"];
1196
  $mlw_randomness_order = $_POST["randomness_order"];
1197
  $mlw_total_user_tries = intval($_POST["total_user_tries"]);
1198
+ $mlw_require_log_in = $_POST["require_log_in"];
1199
+ $mlw_limit_total_entries = $_POST["limit_total_entries"];
1200
  $mlw_send_user_email = $_POST["sendUserEmail"];
1201
  $mlw_send_admin_email = $_POST["sendAdminEmail"];
1202
  $mlw_contact_location = $_POST["contact_info_location"];
1209
  $mlw_qmn_loggedin_contact = $_POST["loggedin_user_contact"];
1210
  $quiz_id = $_POST["quiz_id"];
1211
 
1212
+ $update = "UPDATE " . $wpdb->prefix . "mlw_quizzes" . " SET system='".$mlw_system."', send_user_email='".$mlw_send_user_email."', send_admin_email='".$mlw_send_admin_email."', loggedin_user_contact='".$mlw_qmn_loggedin_contact."', contact_info_location=".$mlw_contact_location.", user_name='".$mlw_user_name."', user_comp='".$mlw_user_comp."', user_email='".$mlw_user_email."', user_phone='".$mlw_user_phone."', admin_email='".$mlw_admin_email."', comment_section='".$mlw_comment_section."', randomness_order='".$mlw_randomness_order."', question_from_total=".$mlw_qmn_questions_from_total.", total_user_tries=".$mlw_total_user_tries.", social_media=".$mlw_qmn_social_media.", pagination=".$mlw_qmn_pagination.", timer_limit=".$mlw_qmn_timer.", question_numbering=".$mlw_qmn_question_numbering.", require_log_in=".$mlw_require_log_in.", limit_total_entries=".$mlw_limit_total_entries.", last_activity='".date("Y-m-d H:i:s")."' WHERE quiz_id=".$quiz_id;
1213
  $results = $wpdb->query( $update );
1214
  if ($results != false)
1215
  {
1239
  <div id="tabs-3" class="mlw_tab_content">
1240
  <script>
1241
  jQuery(function() {
1242
+ jQuery( "#system, #require_log_in, #randomness_order, #loggedin_user_contact, #sendUserEmail, #sendAdminEmail, #contact_info_location, #userName, #userComp, #userEmail, #userPhone, #pagination, #commentSection, #social_media, #question_numbering, #comments" ).buttonset();
1243
  });
1244
  </script>
1245
  <button id="save_options_button" onclick="javascript: document.quiz_options_form.submit();">Save Options</button>
1257
  <input type="radio" id="radio3" name="system" <?php if ($mlw_quiz_options->system == 2) {echo 'checked="checked"';} ?> value='2' /><label for="radio3">Not Graded</label>
1258
  </div></td>
1259
  </tr>
1260
+ <tr valign="top">
1261
+ <th scope="row"><label for="require_log_in">Should the user be required to be logged in to take this quiz?</label></th>
1262
+ <td><div id="require_log_in">
1263
+ <input type="radio" id="radio_login_1" name="require_log_in" <?php if ($mlw_quiz_options->require_log_in == 1) {echo 'checked="checked"';} ?> value='1' /><label for="radio_login_1">Yes</label>
1264
+ <input type="radio" id="radio_login_2" name="require_log_in" <?php if ($mlw_quiz_options->require_log_in == 0) {echo 'checked="checked"';} ?> value='0' /><label for="radio_login_2">No</label>
1265
+ </div></td>
1266
+ </tr>
1267
  <tr valign="top">
1268
  <th scope="row"><label for="pagination">How many questions per page would you like? (Leave 0 for all questions on one page)</label></th>
1269
  <td>
1282
  <input name="total_user_tries" type="number" step="1" min="0" id="total_user_tries" value="<?php echo $mlw_quiz_options->total_user_tries; ?>" class="regular-text" />
1283
  </td>
1284
  </tr>
1285
+ <tr valign="top">
1286
+ <th scope="row"><label for="limit_total_entries">How many total entries can this quiz have? (Leave 0 for unlimited entries)</label></th>
1287
+ <td>
1288
+ <input name="limit_total_entries" type="number" step="1" min="0" id="limit_total_entries" value="<?php echo $mlw_quiz_options->limit_total_entries; ?>" class="regular-text" />
1289
+ </td>
1290
+ </tr>
1291
  <tr valign="top">
1292
  <th scope="row"><label for="question_from_total">How many questions should be loaded for quiz? (Leave 0 to load all questions)</label></th>
1293
  <td>
2375
  </div>
2376
  <?php
2377
  }
2378
+ ?>
includes/mlw_update.php CHANGED
@@ -6,7 +6,7 @@ function mlw_quiz_update()
6
  {
7
 
8
  //Update this variable each update. This is what is checked when the plugin is deciding to run the upgrade script or not.
9
- $data = "3.4.1";
10
  if ( ! get_option('mlw_quiz_master_version'))
11
  {
12
  add_option('mlw_quiz_master_version' , $data);
@@ -254,6 +254,36 @@ function mlw_quiz_update()
254
  $results = $wpdb->query( $update_sql );
255
  }
256
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
 
258
  global $wpdb;
259
  $table_name = $wpdb->prefix . "mlw_questions";
6
  {
7
 
8
  //Update this variable each update. This is what is checked when the plugin is deciding to run the upgrade script or not.
9
+ $data = "3.5.1";
10
  if ( ! get_option('mlw_quiz_master_version'))
11
  {
12
  add_option('mlw_quiz_master_version' , $data);
254
  $results = $wpdb->query( $update_sql );
255
  }
256
 
257
+ //Update 3.5.1
258
+ if($wpdb->get_var("SHOW COLUMNS FROM ".$table_name." LIKE 'require_log_in'") != "require_log_in")
259
+ {
260
+ $sql = "ALTER TABLE ".$table_name." ADD require_log_in INT NOT NULL AFTER last_activity";
261
+ $results = $wpdb->query( $sql );
262
+ $update_sql = "UPDATE ".$table_name." SET require_log_in='0'";
263
+ $results = $wpdb->query( $update_sql );
264
+ }
265
+ if($wpdb->get_var("SHOW COLUMNS FROM ".$table_name." LIKE 'require_log_in_text'") != "require_log_in_text")
266
+ {
267
+ $sql = "ALTER TABLE ".$table_name." ADD require_log_in_text TEXT NOT NULL AFTER require_log_in";
268
+ $results = $wpdb->query( $sql );
269
+ $update_sql = "UPDATE ".$table_name." SET require_log_in_text='Enter Text Here'";
270
+ $results = $wpdb->query( $update_sql );
271
+ }
272
+ if($wpdb->get_var("SHOW COLUMNS FROM ".$table_name." LIKE 'limit_total_entries'") != "limit_total_entries")
273
+ {
274
+ $sql = "ALTER TABLE ".$table_name." ADD limit_total_entries INT NOT NULL AFTER require_log_in";
275
+ $results = $wpdb->query( $sql );
276
+ $update_sql = "UPDATE ".$table_name." SET limit_total_entries='0'";
277
+ $results = $wpdb->query( $update_sql );
278
+ }
279
+ if($wpdb->get_var("SHOW COLUMNS FROM ".$table_name." LIKE 'limit_total_entries_text'") != "limit_total_entries_text")
280
+ {
281
+ $sql = "ALTER TABLE ".$table_name." ADD limit_total_entries_text TEXT NOT NULL AFTER limit_total_entries";
282
+ $results = $wpdb->query( $sql );
283
+ $update_sql = "UPDATE ".$table_name." SET limit_total_entries_text='Enter Text Here'";
284
+ $results = $wpdb->query( $update_sql );
285
+ }
286
+
287
 
288
  global $wpdb;
289
  $table_name = $wpdb->prefix . "mlw_questions";
mlw_quizmaster2.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  Plugin Name: Quiz Master Next
5
  Description: Use this plugin to add multiple quizzes, tests, or surveys to your website.
6
- Version: 3.4.1
7
  Author: Frank Corso
8
  Author URI: http://www.mylocalwebstop.com/
9
  Plugin URI: http://www.mylocalwebstop.com/
3
  /*
4
  Plugin Name: Quiz Master Next
5
  Description: Use this plugin to add multiple quizzes, tests, or surveys to your website.
6
+ Version: 3.5.1
7
  Author: Frank Corso
8
  Author URI: http://www.mylocalwebstop.com/
9
  Plugin URI: http://www.mylocalwebstop.com/
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: quiz, test, score, exam, survey, contact, form, email, answer, question
5
  Requires at least: 3.8.1
6
  Tested up to: 4.0
7
- Stable tag: 3.4.1
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
  The easiest and most flexible way to add multiple quizzes, tests, and surveys to your website.
@@ -37,10 +37,15 @@ The plugin features useful **statistics** that show how many times each quiz has
37
  = Saves The Results For Later Use =
38
  The plugin will **save** the results, the user's answers, the user's comments, and more!
39
 
 
 
 
40
  = Other Useful Features =
41
 
42
  * Allow the user to share the results on *social networks*
43
  * Show all questions on one page or have only one question per page
 
 
44
  * Allows for you to create **certificates** for the user
45
  * Can set amount of tries a user has to take the quiz
46
  * Can enable **comment boxes** for each question and/or comment section at the end of the quiz
@@ -104,6 +109,13 @@ Feel free to use the widget on the quiz dashboard within the plugin or from the
104
 
105
  == Changelog ==
106
 
 
 
 
 
 
 
 
107
  = 3.4.1 (November 20, 2014) =
108
  * Added Preview Mode (Beta)
109
  * Several Design Changes To Quizzes Page
@@ -534,6 +546,9 @@ Feel free to use the widget on the quiz dashboard within the plugin or from the
534
 
535
  == Upgrade Notice ==
536
 
 
 
 
537
  = 3.4.1 =
538
  Upgrade for new preview mode, many design changes, and more!
539
 
4
  Tags: quiz, test, score, exam, survey, contact, form, email, answer, question
5
  Requires at least: 3.8.1
6
  Tested up to: 4.0
7
+ Stable tag: 3.5.1
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
  The easiest and most flexible way to add multiple quizzes, tests, and surveys to your website.
37
  = Saves The Results For Later Use =
38
  The plugin will **save** the results, the user's answers, the user's comments, and more!
39
 
40
+ = Math Formulas =
41
+ You can use Tex or LaTex in questions, answers, and text fields for your quiz. For assistance with LaTex, review this tutorial: [LaTeX](http://www.andy-roberts.net/writing/latex/mathematics_1)
42
+
43
  = Other Useful Features =
44
 
45
  * Allow the user to share the results on *social networks*
46
  * Show all questions on one page or have only one question per page
47
+ * Require user to be logged in
48
+ * Limit amount of total entries to quiz or survey
49
  * Allows for you to create **certificates** for the user
50
  * Can set amount of tries a user has to take the quiz
51
  * Can enable **comment boxes** for each question and/or comment section at the end of the quiz
109
 
110
  == Changelog ==
111
 
112
+ = 3.5.1 (November 25, 2014) =
113
+ * Added The Ability To Require Users To Be Logged In To Access Quiz
114
+ * Added Ability To Limit Total Amount Of Entries
115
+ * Added Ability To Show Mathematic Formulas Using Tex Or LaTex
116
+ * Set Up Parameters For Action 'mlw_qmn_load_results_page' To Pass Results Id And Quiz Settings
117
+ * Minor Design Change To Quizzes Page
118
+
119
  = 3.4.1 (November 20, 2014) =
120
  * Added Preview Mode (Beta)
121
  * Several Design Changes To Quizzes Page
546
 
547
  == Upgrade Notice ==
548
 
549
+ = 3.5.1 =
550
+ Upgrade to require users to be logged in, limit amount of total entries, and show mathematic formulas!
551
+
552
  = 3.4.1 =
553
  Upgrade for new preview mode, many design changes, and more!
554