Completed
Push — master ( 80c0ca...82d23b )
by Dwain
04:32
created
apigen/hook-docs.php 4 patches
Doc Comments   +3 added lines patch added patch discarded remove patch
@@ -10,6 +10,9 @@
 block discarded – undo
10 10
 	private static $found_files            = array();
11 11
 	private static $custom_hooks_found     = '';
12 12
 
13
+	/**
14
+	 * @param string $pattern
15
+	 */
13 16
 	private static function get_files( $pattern, $flags = 0, $path = '' ) {
14 17
 
15 18
 	    if ( ! $path && ( $dir = dirname( $pattern ) ) != '.' ) {
Please login to merge, or discard this patch.
Spacing   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -10,32 +10,32 @@  discard block
 block discarded – undo
10 10
 	private static $found_files            = array();
11 11
 	private static $custom_hooks_found     = '';
12 12
 
13
-	private static function get_files( $pattern, $flags = 0, $path = '' ) {
13
+	private static function get_files($pattern, $flags = 0, $path = '') {
14 14
 
15
-	    if ( ! $path && ( $dir = dirname( $pattern ) ) != '.' ) {
15
+	    if ( ! $path && ($dir = dirname($pattern)) != '.') {
16 16
 
17 17
 	        if ($dir == '\\' || $dir == '/') { $dir = ''; } // End IF Statement
18 18
 
19
-	        return self::get_files(basename( $pattern ), $flags, $dir . '/' );
19
+	        return self::get_files(basename($pattern), $flags, $dir.'/');
20 20
 
21 21
 	    } // End IF Statement
22 22
 
23
-	    $paths = glob( $path . '*', GLOB_ONLYDIR | GLOB_NOSORT );
24
-	    $files = glob( $path . $pattern, $flags );
23
+	    $paths = glob($path.'*', GLOB_ONLYDIR | GLOB_NOSORT);
24
+	    $files = glob($path.$pattern, $flags);
25 25
 
26
-	    if ( is_array( $paths ) ) {
27
-		    foreach ( $paths as $p ) {
26
+	    if (is_array($paths)) {
27
+		    foreach ($paths as $p) {
28 28
 			    $found_files = array();
29
-		   		$retrieved_files = (array) self::get_files( $pattern, $flags, $p . '/' );
30
-		   		foreach ( $retrieved_files as $file ) {
31
-			   		if ( ! in_array( $file, self::$found_files ) )
29
+		   		$retrieved_files = (array) self::get_files($pattern, $flags, $p.'/');
30
+		   		foreach ($retrieved_files as $file) {
31
+			   		if ( ! in_array($file, self::$found_files))
32 32
 			   			$found_files[] = $file;
33 33
 		   		}
34 34
 
35
-		   		self::$found_files = array_merge( self::$found_files, $found_files );
35
+		   		self::$found_files = array_merge(self::$found_files, $found_files);
36 36
 
37
-		   		if ( is_array( $files ) && is_array( $found_files ) ) {
38
-		   			$files = array_merge( $files, $found_files );
37
+		   		if (is_array($files) && is_array($found_files)) {
38
+		   			$files = array_merge($files, $found_files);
39 39
 		   		}
40 40
 
41 41
 		    } // End FOREACH Loop
@@ -43,29 +43,29 @@  discard block
 block discarded – undo
43 43
 	    return $files;
44 44
     }
45 45
 
46
-	private static function get_hook_link( $hook, $details = array() ) {
47
-		if ( ! empty( $details['class'] ) ) {
48
-			$link = 'http://docs.woothemes.com/wc-apidocs/source-class-' . $details['class'] . '.html#' . $details['line'];
49
-		} elseif ( ! empty( $details['function'] ) ) {
50
-			$link = 'http://docs.woothemes.com/wc-apidocs/source-function-' . $details['function'] . '.html#' . $details['line'];
46
+	private static function get_hook_link($hook, $details = array()) {
47
+		if ( ! empty($details['class'])) {
48
+			$link = 'http://docs.woothemes.com/wc-apidocs/source-class-'.$details['class'].'.html#'.$details['line'];
49
+		} elseif ( ! empty($details['function'])) {
50
+			$link = 'http://docs.woothemes.com/wc-apidocs/source-function-'.$details['function'].'.html#'.$details['line'];
51 51
 		} else {
52
-			$link = 'https://github.com/woothemes/woocommerce/search?utf8=%E2%9C%93&q=' . $hook;
52
+			$link = 'https://github.com/woothemes/woocommerce/search?utf8=%E2%9C%93&q='.$hook;
53 53
 		}
54 54
 
55
-		return '<a href="' . $link . '">' . $hook . '</a>';
55
+		return '<a href="'.$link.'">'.$hook.'</a>';
56 56
 	}
57 57
 
58 58
 	public static function process_hooks() {
59 59
 		// If we have one, get the PHP files from it.
60
-		$template_files 	= self::get_files( '*.php', GLOB_MARK, '../templates/' );
60
+		$template_files = self::get_files('*.php', GLOB_MARK, '../templates/');
61 61
 		$template_files[]	= '../includes/wc-template-functions.php';
62 62
 		$template_files[]	= '../includes/wc-template-hooks.php';
63 63
 
64
-		$shortcode_files 	= self::get_files( '*.php', GLOB_MARK, '../includes/shortcodes/' );
65
-		$widget_files	 	= self::get_files( '*.php', GLOB_MARK, '../includes/widgets/' );
66
-		$admin_files 		= self::get_files( '*.php', GLOB_MARK, '../includes/admin/' );
67
-		$class_files 		= self::get_files( '*.php', GLOB_MARK, '../includes/' );
68
-		$other_files		= array(
64
+		$shortcode_files 	= self::get_files('*.php', GLOB_MARK, '../includes/shortcodes/');
65
+		$widget_files = self::get_files('*.php', GLOB_MARK, '../includes/widgets/');
66
+		$admin_files 		= self::get_files('*.php', GLOB_MARK, '../includes/admin/');
67
+		$class_files 		= self::get_files('*.php', GLOB_MARK, '../includes/');
68
+		$other_files = array(
69 69
 			'../woocommerce.php'
70 70
 		);
71 71
 
@@ -86,34 +86,34 @@  discard block
 block discarded – undo
86 86
 		echo '<h1>Action and Filter Hook Reference</h1>';
87 87
 		echo '<div class="description"><p>The following is a full list of actions and filters found in WooCommerce core.</p></div>';
88 88
 
89
-		foreach ( self::$files_to_scan as $heading => $files ) {
89
+		foreach (self::$files_to_scan as $heading => $files) {
90 90
 			self::$custom_hooks_found = array();
91 91
 
92
-			foreach ( $files as $f ) {
93
-				self::$current_file = basename( $f );
94
-				$tokens             = token_get_all( file_get_contents( $f ) );
92
+			foreach ($files as $f) {
93
+				self::$current_file = basename($f);
94
+				$tokens             = token_get_all(file_get_contents($f));
95 95
 				$token_type         = false;
96 96
 				$current_class      = '';
97 97
 				$current_function   = '';
98 98
 
99
-				if ( in_array( self::$current_file, $scanned ) ) {
99
+				if (in_array(self::$current_file, $scanned)) {
100 100
 					continue;
101 101
 				}
102 102
 
103 103
 				$scanned[] = self::$current_file;
104 104
 
105
-				foreach ( $tokens as $index => $token ) {
106
-					if ( is_array( $token ) ) {
107
-						if ( $token[0] == T_CLASS ) {
105
+				foreach ($tokens as $index => $token) {
106
+					if (is_array($token)) {
107
+						if ($token[0] == T_CLASS) {
108 108
 							$token_type = 'class';
109
-						} elseif ( $token[0] == T_FUNCTION ) {
109
+						} elseif ($token[0] == T_FUNCTION) {
110 110
 							$token_type = 'function';
111
-						} elseif ( $token[1] === 'do_action' ) {
111
+						} elseif ($token[1] === 'do_action') {
112 112
 							$token_type = 'action';
113
-						} elseif ( $token[1] === 'apply_filters' ) {
113
+						} elseif ($token[1] === 'apply_filters') {
114 114
 							$token_type = 'filter';
115
-						} elseif ( $token_type && ! empty( trim( $token[1] ) ) ) {
116
-							switch ( $token_type ) {
115
+						} elseif ($token_type && ! empty(trim($token[1]))) {
116
+							switch ($token_type) {
117 117
 								case 'class' :
118 118
 									$current_class = $token[1];
119 119
 								break;
@@ -122,15 +122,15 @@  discard block
 block discarded – undo
122 122
 								break;
123 123
 								case 'filter' :
124 124
 								case 'action' :
125
-									$hook = trim( $token[1], "'" );
126
-									if ( isset( self::$custom_hooks_found[ $hook ] ) ) {
127
-										self::$custom_hooks_found[ $hook ]['file'][] = self::$current_file;
125
+									$hook = trim($token[1], "'");
126
+									if (isset(self::$custom_hooks_found[$hook])) {
127
+										self::$custom_hooks_found[$hook]['file'][] = self::$current_file;
128 128
 									} else {
129
-    									self::$custom_hooks_found[ $hook ] = array(
129
+    									self::$custom_hooks_found[$hook] = array(
130 130
 											'line'     => $token[2],
131 131
 											'class'    => $current_class,
132 132
 											'function' => $current_function,
133
-											'file'     => array( self::$current_file ),
133
+											'file'     => array(self::$current_file),
134 134
 											'type'     => $token_type
135 135
 										);
136 136
 									}
@@ -142,24 +142,24 @@  discard block
 block discarded – undo
142 142
 				}
143 143
 			}
144 144
 
145
-			foreach ( self::$custom_hooks_found as $hook => $details ) {
146
-				if ( ! strstr( $hook, 'woocommerce' ) && ! strstr( $hook, 'product' ) && ! strstr( $hook, 'wc_' ) ) {
147
-					unset( self::$custom_hooks_found[ $hook ] );
145
+			foreach (self::$custom_hooks_found as $hook => $details) {
146
+				if ( ! strstr($hook, 'woocommerce') && ! strstr($hook, 'product') && ! strstr($hook, 'wc_')) {
147
+					unset(self::$custom_hooks_found[$hook]);
148 148
 				}
149 149
 			}
150 150
 
151
-			ksort( self::$custom_hooks_found );
151
+			ksort(self::$custom_hooks_found);
152 152
 
153
-			if ( ! empty( self::$custom_hooks_found ) ) {
154
-				echo '<h2>' . $heading . '</h2>';
153
+			if ( ! empty(self::$custom_hooks_found)) {
154
+				echo '<h2>'.$heading.'</h2>';
155 155
 
156 156
 				echo '<table class="summary"><thead><tr><th>Hook</th><th>Type</th><th>File(s)</th></tr></thead><tbody>';
157 157
 
158
-				foreach ( self::$custom_hooks_found as $hook => $details ) {
158
+				foreach (self::$custom_hooks_found as $hook => $details) {
159 159
 					echo '<tr>
160
-						<td>' . self::get_hook_link( $hook, $details ) . '</td>
161
-						<td>' . $details['type'] . '</td>
162
-						<td>' . implode( ', ', array_unique( $details['file'] ) ) . '</td>
160
+						<td>' . self::get_hook_link($hook, $details).'</td>
161
+						<td>' . $details['type'].'</td>
162
+						<td>' . implode(', ', array_unique($details['file'])).'</td>
163 163
 					</tr>' . "\n";
164 164
 				}
165 165
 
@@ -169,13 +169,13 @@  discard block
 block discarded – undo
169 169
 
170 170
 		echo '</div><div id="footer">';
171 171
 
172
-		$html   = file_get_contents( '../wc-apidocs/todo.html' );
173
-		$header = current( explode( '<div id="content">', $html ) );
174
-		$header = str_replace( '<li class="active">', '<li>', $header );
175
-		$header = str_replace( '<li class="hooks">', '<li class="active">', $header );
176
-		$footer = end( explode( '<div id="footer">', $html ) );
172
+		$html   = file_get_contents('../wc-apidocs/todo.html');
173
+		$header = current(explode('<div id="content">', $html));
174
+		$header = str_replace('<li class="active">', '<li>', $header);
175
+		$header = str_replace('<li class="hooks">', '<li class="active">', $header);
176
+		$footer = end(explode('<div id="footer">', $html));
177 177
 
178
-		file_put_contents( '../wc-apidocs/hook-docs.html', $header . ob_get_clean() . $footer );
178
+		file_put_contents('../wc-apidocs/hook-docs.html', $header.ob_get_clean().$footer);
179 179
 		echo "Hook docs generated :)\n";
180 180
 	}
181 181
 }
Please login to merge, or discard this patch.
Braces   +3 added lines, -2 removed lines patch added patch discarded remove patch
@@ -28,8 +28,9 @@
 block discarded – undo
28 28
 			    $found_files = array();
29 29
 		   		$retrieved_files = (array) self::get_files( $pattern, $flags, $p . '/' );
30 30
 		   		foreach ( $retrieved_files as $file ) {
31
-			   		if ( ! in_array( $file, self::$found_files ) )
32
-			   			$found_files[] = $file;
31
+			   		if ( ! in_array( $file, self::$found_files ) ) {
32
+			   					   			$found_files[] = $file;
33
+			   		}
33 34
 		   		}
34 35
 
35 36
 		   		self::$found_files = array_merge( self::$found_files, $found_files );
Please login to merge, or discard this patch.
Indentation   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 /**
3
- * Generate documentation for hooks in WC
4
- */
3
+	 * Generate documentation for hooks in WC
4
+	 */
5 5
 class WC_HookFinder {
6 6
 	private static $current_file           = '';
7 7
 	private static $files_to_scan          = array();
@@ -12,20 +12,20 @@  discard block
 block discarded – undo
12 12
 
13 13
 	private static function get_files( $pattern, $flags = 0, $path = '' ) {
14 14
 
15
-	    if ( ! $path && ( $dir = dirname( $pattern ) ) != '.' ) {
15
+		if ( ! $path && ( $dir = dirname( $pattern ) ) != '.' ) {
16 16
 
17
-	        if ($dir == '\\' || $dir == '/') { $dir = ''; } // End IF Statement
17
+			if ($dir == '\\' || $dir == '/') { $dir = ''; } // End IF Statement
18 18
 
19
-	        return self::get_files(basename( $pattern ), $flags, $dir . '/' );
19
+			return self::get_files(basename( $pattern ), $flags, $dir . '/' );
20 20
 
21
-	    } // End IF Statement
21
+		} // End IF Statement
22 22
 
23
-	    $paths = glob( $path . '*', GLOB_ONLYDIR | GLOB_NOSORT );
24
-	    $files = glob( $path . $pattern, $flags );
23
+		$paths = glob( $path . '*', GLOB_ONLYDIR | GLOB_NOSORT );
24
+		$files = glob( $path . $pattern, $flags );
25 25
 
26
-	    if ( is_array( $paths ) ) {
27
-		    foreach ( $paths as $p ) {
28
-			    $found_files = array();
26
+		if ( is_array( $paths ) ) {
27
+			foreach ( $paths as $p ) {
28
+				$found_files = array();
29 29
 		   		$retrieved_files = (array) self::get_files( $pattern, $flags, $p . '/' );
30 30
 		   		foreach ( $retrieved_files as $file ) {
31 31
 			   		if ( ! in_array( $file, self::$found_files ) )
@@ -38,10 +38,10 @@  discard block
 block discarded – undo
38 38
 		   			$files = array_merge( $files, $found_files );
39 39
 		   		}
40 40
 
41
-		    } // End FOREACH Loop
42
-	    }
43
-	    return $files;
44
-    }
41
+			} // End FOREACH Loop
42
+		}
43
+		return $files;
44
+	}
45 45
 
46 46
 	private static function get_hook_link( $hook, $details = array() ) {
47 47
 		if ( ! empty( $details['class'] ) ) {
@@ -126,7 +126,7 @@  discard block
 block discarded – undo
126 126
 									if ( isset( self::$custom_hooks_found[ $hook ] ) ) {
127 127
 										self::$custom_hooks_found[ $hook ]['file'][] = self::$current_file;
128 128
 									} else {
129
-    									self::$custom_hooks_found[ $hook ] = array(
129
+										self::$custom_hooks_found[ $hook ] = array(
130 130
 											'line'     => $token[2],
131 131
 											'class'    => $current_class,
132 132
 											'function' => $current_function,
Please login to merge, or discard this patch.
includes/class-sensei-analysis.php 4 patches
Doc Comments   +8 added lines, -1 removed lines patch added patch discarded remove patch
@@ -21,6 +21,7 @@  discard block
 block discarded – undo
21 21
 	/**
22 22
 	 * Constructor
23 23
 	 * @since  1.0.0
24
+	 * @param string $file
24 25
 	 * @return  void
25 26
 	 */
26 27
 	public function __construct ( $file ) {
@@ -215,6 +216,7 @@  discard block
 block discarded – undo
215 216
 	/**
216 217
 	 * An individual users' profile view for analysis, showing their Courses
217 218
 	 * @since  1.2.0
219
+	 * @param integer $user_id
218 220
 	 * @return void
219 221
 	 */
220 222
 	public function analysis_user_profile_view( $user_id ) {
@@ -242,6 +244,7 @@  discard block
 block discarded – undo
242 244
 	/**
243 245
 	 * An individual Course view for analysis, showing the Courses Lessons
244 246
 	 * @since  1.2.0
247
+	 * @param integer $course_id
245 248
 	 * @return void
246 249
 	 */
247 250
 	public function analysis_course_view( $course_id ) {
@@ -269,6 +272,8 @@  discard block
 block discarded – undo
269 272
 	/**
270 273
 	 * An individual Course view for analysis, showing a specific Learners Lessons
271 274
 	 * @since  1.2.0
275
+	 * @param integer $course_id
276
+	 * @param integer $user_id
272 277
 	 * @return void
273 278
 	 */
274 279
 	public function analysis_user_course_view( $course_id, $user_id ) {
@@ -296,6 +301,7 @@  discard block
 block discarded – undo
296 301
 	/**
297 302
 	 * An individual Course view for analysis, showing all the Learners
298 303
 	 * @since  1.2.0
304
+	 * @param integer $course_id
299 305
 	 * @return void
300 306
 	 */
301 307
 	public function analysis_course_users_view( $course_id ) {
@@ -323,6 +329,7 @@  discard block
 block discarded – undo
323 329
 	/**
324 330
 	 * An individual Lesson view for analysis, showing all the Learners
325 331
 	 * @since  1.2.0
332
+	 * @param integer $lesson_id
326 333
 	 * @return void
327 334
 	 */
328 335
 	public function analysis_lesson_users_view( $lesson_id ) {
@@ -633,7 +640,7 @@  discard block
 block discarded – undo
633 640
 	/**
634 641
 	 * Write array data to CSV
635 642
 	 * @since  1.2.0
636
-	 * @param  array  $report_array data array
643
+	 * @param  array  $report_data data array
637 644
 	 * @return void
638 645
 	 */
639 646
 	public function report_write_download( $report_data = array() ) {
Please login to merge, or discard this patch.
Braces   +13 added lines, -19 removed lines patch added patch discarded remove patch
@@ -1,5 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined( 'ABSPATH' ) ) {
3
+	exit;
4
+}
5
+// Exit if accessed directly
3 6
 
4 7
 /**
5 8
  * Sensei Analysis Class
@@ -153,24 +156,19 @@  discard block
 block discarded – undo
153 156
 		if ( 0 < $lesson_id ) {
154 157
 			// Viewing a specific Lesson and all its Learners
155 158
 			$this->analysis_lesson_users_view( $lesson_id );
156
-		}
157
-		elseif ( 0 < $course_id && !$user_id && 'user' == $type ) {
159
+		} elseif ( 0 < $course_id && !$user_id && 'user' == $type ) {
158 160
 			// Viewing a specific Course and all its Learners
159 161
 			$this->analysis_course_users_view( $course_id );
160
-		}
161
-		elseif ( 0 < $course_id && 0 < $user_id ) {
162
+		} elseif ( 0 < $course_id && 0 < $user_id ) {
162 163
 			// Viewing a specific Learner on a specific Course, showing their Lessons
163 164
 			$this->analysis_user_course_view( $course_id, $user_id );
164
-		}
165
-		elseif( 0 < $course_id ) {
165
+		} elseif( 0 < $course_id ) {
166 166
 			// Viewing a specific Course and all it's Lessons
167 167
 			$this->analysis_course_view( $course_id );
168
-		}
169
-		elseif ( 0 < $user_id ) {
168
+		} elseif ( 0 < $user_id ) {
170 169
 			// Viewing a specific Learner, and their Courses
171 170
 			$this->analysis_user_profile_view( $user_id );
172
-		}
173
-		else {
171
+		} else {
174 172
 			// Overview of all Learners, all Courses, or all Lessons
175 173
 			$this->analysis_default_view( $type );
176 174
 		} // End If Statement
@@ -569,20 +567,16 @@  discard block
 block discarded – undo
569 567
 			if ( 0 < $lesson_id ) {
570 568
 				// Viewing a specific Lesson and all its Learners
571 569
 				$sensei_analysis_report_object = $this->load_report_object( 'Lesson', $lesson_id );
572
-			}
573
-			elseif ( 0 < $course_id && 0 < $user_id ) {
570
+			} elseif ( 0 < $course_id && 0 < $user_id ) {
574 571
 				// Viewing a specific User on a specific Course
575 572
 				$sensei_analysis_report_object = $this->load_report_object( 'Course', $course_id, $user_id );
576
-			}
577
-			elseif( 0 < $course_id ) {
573
+			} elseif( 0 < $course_id ) {
578 574
 				// Viewing a specific Course and all it's Lessons, or it's Learners
579 575
 				$sensei_analysis_report_object = $this->load_report_object( 'Course', $course_id );
580
-			}
581
-			elseif ( 0 < $user_id ) {
576
+			} elseif ( 0 < $user_id ) {
582 577
 				// Viewing a specific Learner, and their Courses
583 578
 				$sensei_analysis_report_object = $this->load_report_object( 'User_Profile', $user_id );
584
-			}
585
-			else {
579
+			} else {
586 580
 				// Overview of all Learners, all Courses, or all Lessons
587 581
 				$sensei_analysis_report_object = $this->load_report_object( 'Overview', $type );
588 582
 			} // End If Statement
Please login to merge, or discard this patch.
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
 
56 56
 		if ( current_user_can( 'manage_sensei_grades' ) ) {
57 57
 
58
-            add_submenu_page( 'sensei', __('Analysis', 'woothemes-sensei'),  __('Analysis', 'woothemes-sensei') , 'manage_sensei_grades', 'sensei_analysis', array( $this, 'analysis_page' ) );
58
+			add_submenu_page( 'sensei', __('Analysis', 'woothemes-sensei'),  __('Analysis', 'woothemes-sensei') , 'manage_sensei_grades', 'sensei_analysis', array( $this, 'analysis_page' ) );
59 59
 
60 60
 		}
61 61
 
@@ -105,7 +105,7 @@  discard block
 block discarded – undo
105 105
 									'analysis-lesson'
106 106
 									);
107 107
 		foreach ( $classes_to_load as $class_file ) {
108
-            Sensei()->load_class( $class_file );
108
+			Sensei()->load_class( $class_file );
109 109
 		} // End For Loop
110 110
 	} // End load_data_table_files()
111 111
 
@@ -443,7 +443,7 @@  discard block
 block discarded – undo
443 443
 
444 444
 			$user_id = intval( $_GET['user_id'] );
445 445
 			$url = esc_url( add_query_arg( array( 'page' => $this->page_slug, 'user' => $user_id ), admin_url( 'admin.php' ) ) );
446
-            $user_name = Sensei_Student::get_full_name( $user_id );
446
+			$user_name = Sensei_Student::get_full_name( $user_id );
447 447
 			$title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', $url, $user_name );
448 448
 
449 449
 		} // End If Statement
@@ -464,8 +464,8 @@  discard block
 block discarded – undo
464 464
 			$user_id = intval( $_GET['user_id'] );
465 465
 			$user_data = get_userdata( $user_id );
466 466
 			$url = add_query_arg( array( 'page' => $this->page_slug, 'user_id' => $user_id ), admin_url( 'admin.php' ) );
467
-            $user_name = Sensei_Student::get_full_name( $user_id );
468
-            $title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', $url, $user_name );
467
+			$user_name = Sensei_Student::get_full_name( $user_id );
468
+			$title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', $url, $user_name );
469 469
 			$title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), $user_data->display_name );
470 470
 		} // End If Statement
471 471
 		if ( isset( $_GET['course_id'] ) ) { 
Please login to merge, or discard this patch.
Spacing   +184 added lines, -184 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
3 3
 
4 4
 /**
5 5
  * Sensei Analysis Class
@@ -23,23 +23,23 @@  discard block
 block discarded – undo
23 23
 	 * @since  1.0.0
24 24
 	 * @return  void
25 25
 	 */
26
-	public function __construct ( $file ) {
26
+	public function __construct($file) {
27 27
 		$this->name = __('Analysis', 'woothemes-sensei');
28 28
 		$this->file = $file;
29 29
 		$this->page_slug = 'sensei_analysis';
30 30
 
31 31
 		// Admin functions
32
-		if ( is_admin() ) {
33
-			add_action( 'admin_menu', array( $this, 'analysis_admin_menu' ), 10);
34
-			add_action( 'analysis_wrapper_container', array( $this, 'wrapper_container'  ) );
35
-			if ( isset( $_GET['page'] ) && ( $_GET['page'] == $this->page_slug ) ) {
36
-				add_action( 'admin_print_scripts', array( $this, 'enqueue_scripts' ) );
37
-				add_action( 'admin_print_styles', array( $this, 'enqueue_styles' ) );
32
+		if (is_admin()) {
33
+			add_action('admin_menu', array($this, 'analysis_admin_menu'), 10);
34
+			add_action('analysis_wrapper_container', array($this, 'wrapper_container'));
35
+			if (isset($_GET['page']) && ($_GET['page'] == $this->page_slug)) {
36
+				add_action('admin_print_scripts', array($this, 'enqueue_scripts'));
37
+				add_action('admin_print_styles', array($this, 'enqueue_styles'));
38 38
 			}
39 39
 
40
-			add_action( 'admin_init', array( $this, 'report_download_page' ) );
40
+			add_action('admin_init', array($this, 'report_download_page'));
41 41
 
42
-			add_filter( 'user_search_columns', array( $this, 'user_search_columns_filter' ), 10, 3 );
42
+			add_filter('user_search_columns', array($this, 'user_search_columns_filter'), 10, 3);
43 43
 		} // End If Statement
44 44
 	} // End __construct()
45 45
 
@@ -53,9 +53,9 @@  discard block
 block discarded – undo
53 53
 	public function analysis_admin_menu() {
54 54
 		global $menu, $woocommerce;
55 55
 
56
-		if ( current_user_can( 'manage_sensei_grades' ) ) {
56
+		if (current_user_can('manage_sensei_grades')) {
57 57
 
58
-            add_submenu_page( 'sensei', __('Analysis', 'woothemes-sensei'),  __('Analysis', 'woothemes-sensei') , 'manage_sensei_grades', 'sensei_analysis', array( $this, 'analysis_page' ) );
58
+            add_submenu_page('sensei', __('Analysis', 'woothemes-sensei'), __('Analysis', 'woothemes-sensei'), 'manage_sensei_grades', 'sensei_analysis', array($this, 'analysis_page'));
59 59
 
60 60
 		}
61 61
 
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 	 * @since 1.0.0
70 70
 	 * @return void
71 71
 	 */
72
-	public function enqueue_scripts () {
72
+	public function enqueue_scripts() {
73 73
 		// None for now
74 74
 
75 75
 	} // End enqueue_scripts()
@@ -82,11 +82,11 @@  discard block
 block discarded – undo
82 82
 	 * @since 1.0.0
83 83
 	 * @return void
84 84
 	 */
85
-	public function enqueue_styles () {
85
+	public function enqueue_styles() {
86 86
 
87
-		wp_enqueue_style( 'woothemes-sensei-admin' );
87
+		wp_enqueue_style('woothemes-sensei-admin');
88 88
 
89
-		wp_enqueue_style( 'woothemes-sensei-settings-api', Sensei()->plugin_url . 'assets/css/settings.css', '', Sensei()->version );
89
+		wp_enqueue_style('woothemes-sensei-settings-api', Sensei()->plugin_url.'assets/css/settings.css', '', Sensei()->version);
90 90
 
91 91
 	} // End enqueue_styles()
92 92
 
@@ -98,14 +98,14 @@  discard block
 block discarded – undo
98 98
 	public function load_data_table_files() {
99 99
 
100 100
 		// Load Analysis Classes
101
-		$classes_to_load = array(	'list-table',
101
+		$classes_to_load = array('list-table',
102 102
 									'analysis-overview',
103 103
 									'analysis-user-profile',
104 104
 									'analysis-course',
105 105
 									'analysis-lesson'
106 106
 									);
107
-		foreach ( $classes_to_load as $class_file ) {
108
-            Sensei()->load_class( $class_file );
107
+		foreach ($classes_to_load as $class_file) {
108
+            Sensei()->load_class($class_file);
109 109
 		} // End For Loop
110 110
 	} // End load_data_table_files()
111 111
 
@@ -116,13 +116,13 @@  discard block
 block discarded – undo
116 116
 	 * @param  undefined  $optional_data optional constructor arguments
117 117
 	 * @return object                 class instance object
118 118
 	 */
119
-	public function load_data_object( $name = '', $data = 0, $optional_data = null ) {
119
+	public function load_data_object($name = '', $data = 0, $optional_data = null) {
120 120
 		// Load Analysis data
121
-		$object_name = 'WooThemes_Sensei_Analysis_' . $name . '_List_Table';
122
-		if ( is_null($optional_data) ) {
123
-			$sensei_analysis_object = new $object_name( $data );
121
+		$object_name = 'WooThemes_Sensei_Analysis_'.$name.'_List_Table';
122
+		if (is_null($optional_data)) {
123
+			$sensei_analysis_object = new $object_name($data);
124 124
 		} else {
125
-			$sensei_analysis_object = new $object_name( $data, $optional_data );
125
+			$sensei_analysis_object = new $object_name($data, $optional_data);
126 126
 		}
127 127
 		$sensei_analysis_object->prepare_items();
128 128
 		return $sensei_analysis_object;
@@ -139,40 +139,40 @@  discard block
 block discarded – undo
139 139
 		$course_id = 0;
140 140
 		$lesson_id = 0;
141 141
 		$user_id = 0;
142
-		if( isset( $_GET['course_id'] ) ) {
143
-			$course_id = intval( $_GET['course_id'] );
142
+		if (isset($_GET['course_id'])) {
143
+			$course_id = intval($_GET['course_id']);
144 144
 		}
145
-		if( isset( $_GET['lesson_id'] ) ) {
146
-			$lesson_id = intval( $_GET['lesson_id'] );
145
+		if (isset($_GET['lesson_id'])) {
146
+			$lesson_id = intval($_GET['lesson_id']);
147 147
 		}
148
-		if( isset( $_GET['user_id'] ) ) {
149
-			$user_id = intval( $_GET['user_id'] );
148
+		if (isset($_GET['user_id'])) {
149
+			$user_id = intval($_GET['user_id']);
150 150
 		}
151
-		$type = isset( $_GET['view'] ) ? esc_html( $_GET['view'] ) : false;
151
+		$type = isset($_GET['view']) ? esc_html($_GET['view']) : false;
152 152
 
153
-		if ( 0 < $lesson_id ) {
153
+		if (0 < $lesson_id) {
154 154
 			// Viewing a specific Lesson and all its Learners
155
-			$this->analysis_lesson_users_view( $lesson_id );
155
+			$this->analysis_lesson_users_view($lesson_id);
156 156
 		}
157
-		elseif ( 0 < $course_id && !$user_id && 'user' == $type ) {
157
+		elseif (0 < $course_id && ! $user_id && 'user' == $type) {
158 158
 			// Viewing a specific Course and all its Learners
159
-			$this->analysis_course_users_view( $course_id );
159
+			$this->analysis_course_users_view($course_id);
160 160
 		}
161
-		elseif ( 0 < $course_id && 0 < $user_id ) {
161
+		elseif (0 < $course_id && 0 < $user_id) {
162 162
 			// Viewing a specific Learner on a specific Course, showing their Lessons
163
-			$this->analysis_user_course_view( $course_id, $user_id );
163
+			$this->analysis_user_course_view($course_id, $user_id);
164 164
 		}
165
-		elseif( 0 < $course_id ) {
165
+		elseif (0 < $course_id) {
166 166
 			// Viewing a specific Course and all it's Lessons
167
-			$this->analysis_course_view( $course_id );
167
+			$this->analysis_course_view($course_id);
168 168
 		}
169
-		elseif ( 0 < $user_id ) {
169
+		elseif (0 < $user_id) {
170 170
 			// Viewing a specific Learner, and their Courses
171
-			$this->analysis_user_profile_view( $user_id );
171
+			$this->analysis_user_profile_view($user_id);
172 172
 		}
173 173
 		else {
174 174
 			// Overview of all Learners, all Courses, or all Lessons
175
-			$this->analysis_default_view( $type );
175
+			$this->analysis_default_view($type);
176 176
 		} // End If Statement
177 177
 	} // End analysis_page()
178 178
 
@@ -181,35 +181,35 @@  discard block
 block discarded – undo
181 181
 	 * @since  1.2.0
182 182
 	 * @return void
183 183
 	 */
184
-	public function analysis_default_view( $type ) {
184
+	public function analysis_default_view($type) {
185 185
 
186 186
 		// Load Analysis data
187
-		$sensei_analysis_overview = $this->load_data_object( 'Overview', $type );
187
+		$sensei_analysis_overview = $this->load_data_object('Overview', $type);
188 188
 		// Wrappers
189
-		do_action( 'analysis_before_container' );
190
-		do_action( 'analysis_wrapper_container', 'top' );
189
+		do_action('analysis_before_container');
190
+		do_action('analysis_wrapper_container', 'top');
191 191
 		$this->analysis_headers();
192 192
 		?>
193 193
 		<div id="poststuff" class="sensei-analysis-wrap">
194 194
 			<div class="sensei-analysis-sidebar">
195 195
 				<?php
196
-				do_action( 'sensei_analysis_before_stats_boxes' );
197
-				foreach ( $sensei_analysis_overview->stats_boxes() as $key => $value ) {
198
-					$this->render_stats_box( esc_html( $key ), esc_html( $value ) );
196
+				do_action('sensei_analysis_before_stats_boxes');
197
+				foreach ($sensei_analysis_overview->stats_boxes() as $key => $value) {
198
+					$this->render_stats_box(esc_html($key), esc_html($value));
199 199
 				} // End For Loop
200
-				do_action( 'sensei_analysis_after_stats_boxes' );
200
+				do_action('sensei_analysis_after_stats_boxes');
201 201
 				?>
202 202
 			</div>
203 203
 			<div class="sensei-analysis-main">
204 204
 				<?php $sensei_analysis_overview->display(); ?>
205 205
 			</div>
206 206
 			<div class="sensei-analysis-extra">
207
-				<?php do_action( 'sensei_analysis_extra' ); ?>
207
+				<?php do_action('sensei_analysis_extra'); ?>
208 208
 			</div>
209 209
 		</div>
210 210
 		<?php
211
-		do_action( 'analysis_wrapper_container', 'bottom' );
212
-		do_action( 'analysis_after_container' );
211
+		do_action('analysis_wrapper_container', 'bottom');
212
+		do_action('analysis_after_container');
213 213
 	} // End analysis_default_view()
214 214
 
215 215
 	/**
@@ -217,26 +217,26 @@  discard block
 block discarded – undo
217 217
 	 * @since  1.2.0
218 218
 	 * @return void
219 219
 	 */
220
-	public function analysis_user_profile_view( $user_id ) {
220
+	public function analysis_user_profile_view($user_id) {
221 221
 
222 222
 		// Load Analysis data
223
-		$sensei_analysis_user_profile = $this->load_data_object( 'User_Profile', $user_id );
223
+		$sensei_analysis_user_profile = $this->load_data_object('User_Profile', $user_id);
224 224
 		// Wrappers
225
-		do_action( 'analysis_before_container' );
226
-		do_action( 'analysis_wrapper_container', 'top' );
227
-		$this->analysis_headers( array( 'nav' => 'user_profile' ) );
225
+		do_action('analysis_before_container');
226
+		do_action('analysis_wrapper_container', 'top');
227
+		$this->analysis_headers(array('nav' => 'user_profile'));
228 228
 		?>
229 229
 		<div id="poststuff" class="sensei-analysis-wrap user-profile">
230 230
 			<div class="sensei-analysis-main">
231 231
 				<?php $sensei_analysis_user_profile->display(); ?>
232 232
 			</div>
233 233
 			<div class="sensei-analysis-extra">
234
-				<?php do_action( 'sensei_analysis_extra' ); ?>
234
+				<?php do_action('sensei_analysis_extra'); ?>
235 235
 			</div>
236 236
 		</div>
237 237
 		<?php
238
-		do_action( 'analysis_wrapper_container', 'bottom' );
239
-		do_action( 'analysis_after_container' );
238
+		do_action('analysis_wrapper_container', 'bottom');
239
+		do_action('analysis_after_container');
240 240
 	} // End analysis_user_profile_view()
241 241
 
242 242
 	/**
@@ -244,26 +244,26 @@  discard block
 block discarded – undo
244 244
 	 * @since  1.2.0
245 245
 	 * @return void
246 246
 	 */
247
-	public function analysis_course_view( $course_id ) {
247
+	public function analysis_course_view($course_id) {
248 248
 
249 249
 		// Load Analysis data
250
-		$sensei_analysis_course = $this->load_data_object( 'Course', $course_id );
250
+		$sensei_analysis_course = $this->load_data_object('Course', $course_id);
251 251
 		// Wrappers
252
-		do_action( 'analysis_before_container' );
253
-		do_action( 'analysis_wrapper_container', 'top' );
254
-		$this->analysis_headers( array( 'nav' => 'course' ) );
252
+		do_action('analysis_before_container');
253
+		do_action('analysis_wrapper_container', 'top');
254
+		$this->analysis_headers(array('nav' => 'course'));
255 255
 		?>
256 256
 		<div id="poststuff" class="sensei-analysis-wrap course-profile">
257 257
 			<div class="sensei-analysis-main">
258 258
 				<?php $sensei_analysis_course->display(); ?>
259 259
 			</div>
260 260
 			<div class="sensei-analysis-extra">
261
-				<?php do_action( 'sensei_analysis_extra' ); ?>
261
+				<?php do_action('sensei_analysis_extra'); ?>
262 262
 			</div>
263 263
 		</div>
264 264
 		<?php
265
-		do_action( 'analysis_wrapper_container', 'bottom' );
266
-		do_action( 'analysis_after_container' );
265
+		do_action('analysis_wrapper_container', 'bottom');
266
+		do_action('analysis_after_container');
267 267
 	} // End analysis_course_view()
268 268
 
269 269
 	/**
@@ -271,26 +271,26 @@  discard block
 block discarded – undo
271 271
 	 * @since  1.2.0
272 272
 	 * @return void
273 273
 	 */
274
-	public function analysis_user_course_view( $course_id, $user_id ) {
274
+	public function analysis_user_course_view($course_id, $user_id) {
275 275
 
276 276
 		// Load Analysis data
277
-		$sensei_analysis_user_course = $this->load_data_object( 'Course', $course_id, $user_id );
277
+		$sensei_analysis_user_course = $this->load_data_object('Course', $course_id, $user_id);
278 278
 		// Wrappers
279
-		do_action( 'analysis_before_container' );
280
-		do_action( 'analysis_wrapper_container', 'top' );
281
-		$this->analysis_headers( array( 'nav' => 'user_course' ) );
279
+		do_action('analysis_before_container');
280
+		do_action('analysis_wrapper_container', 'top');
281
+		$this->analysis_headers(array('nav' => 'user_course'));
282 282
 		?>
283 283
 		<div id="poststuff" class="sensei-analysis-wrap course-profile">
284 284
 			<div class="sensei-analysis-main">
285 285
 				<?php $sensei_analysis_user_course->display(); ?>
286 286
 			</div>
287 287
 			<div class="sensei-analysis-extra">
288
-				<?php do_action( 'sensei_analysis_extra' ); ?>
288
+				<?php do_action('sensei_analysis_extra'); ?>
289 289
 			</div>
290 290
 		</div>
291 291
 		<?php
292
-		do_action( 'analysis_wrapper_container', 'bottom' );
293
-		do_action( 'analysis_after_container' );
292
+		do_action('analysis_wrapper_container', 'bottom');
293
+		do_action('analysis_after_container');
294 294
 	} // End analysis_user_course_view()
295 295
 
296 296
 	/**
@@ -298,26 +298,26 @@  discard block
 block discarded – undo
298 298
 	 * @since  1.2.0
299 299
 	 * @return void
300 300
 	 */
301
-	public function analysis_course_users_view( $course_id ) {
301
+	public function analysis_course_users_view($course_id) {
302 302
 
303 303
 		// Load Analysis data
304
-		$sensei_analysis_course_users = $this->load_data_object( 'Course', $course_id );
304
+		$sensei_analysis_course_users = $this->load_data_object('Course', $course_id);
305 305
 		// Wrappers
306
-		do_action( 'analysis_before_container' );
307
-		do_action( 'analysis_wrapper_container', 'top' );
308
-		$this->analysis_headers( array( 'nav' => 'course_users' ) );
306
+		do_action('analysis_before_container');
307
+		do_action('analysis_wrapper_container', 'top');
308
+		$this->analysis_headers(array('nav' => 'course_users'));
309 309
 		?>
310 310
 		<div id="poststuff" class="sensei-analysis-wrap course-profile">
311 311
 			<div class="sensei-analysis-main">
312 312
 				<?php $sensei_analysis_course_users->display(); ?>
313 313
 			</div>
314 314
 			<div class="sensei-analysis-extra">
315
-				<?php do_action( 'sensei_analysis_extra' ); ?>
315
+				<?php do_action('sensei_analysis_extra'); ?>
316 316
 			</div>
317 317
 		</div>
318 318
 		<?php
319
-		do_action( 'analysis_wrapper_container', 'bottom' );
320
-		do_action( 'analysis_after_container' );
319
+		do_action('analysis_wrapper_container', 'bottom');
320
+		do_action('analysis_after_container');
321 321
 	} // End analysis_course_users_view()
322 322
 
323 323
 	/**
@@ -325,26 +325,26 @@  discard block
 block discarded – undo
325 325
 	 * @since  1.2.0
326 326
 	 * @return void
327 327
 	 */
328
-	public function analysis_lesson_users_view( $lesson_id ) {
328
+	public function analysis_lesson_users_view($lesson_id) {
329 329
 
330 330
 		// Load Analysis data
331
-		$sensei_analysis_lesson_users = $this->load_data_object( 'Lesson', $lesson_id );
331
+		$sensei_analysis_lesson_users = $this->load_data_object('Lesson', $lesson_id);
332 332
 		// Wrappers
333
-		do_action( 'analysis_before_container' );
334
-		do_action( 'analysis_wrapper_container', 'top' );
335
-		$this->analysis_headers( array( 'nav' => 'lesson_users' ) );
333
+		do_action('analysis_before_container');
334
+		do_action('analysis_wrapper_container', 'top');
335
+		$this->analysis_headers(array('nav' => 'lesson_users'));
336 336
 		?>
337 337
 		<div id="poststuff" class="sensei-analysis-wrap course-profile">
338 338
 			<div class="sensei-analysis-main">
339 339
 				<?php $sensei_analysis_lesson_users->display(); ?>
340 340
 			</div>
341 341
 			<div class="sensei-analysis-extra">
342
-				<?php do_action( 'sensei_analysis_extra' ); ?>
342
+				<?php do_action('sensei_analysis_extra'); ?>
343 343
 			</div>
344 344
 		</div>
345 345
 		<?php
346
-		do_action( 'analysis_wrapper_container', 'bottom' );
347
-		do_action( 'analysis_after_container' );
346
+		do_action('analysis_wrapper_container', 'bottom');
347
+		do_action('analysis_after_container');
348 348
 	} // End analysis_lesson_users_view()
349 349
 
350 350
 	/**
@@ -354,7 +354,7 @@  discard block
 block discarded – undo
354 354
 	 * @param  $data string stats data
355 355
 	 * @return void
356 356
 	 */
357
-	public function render_stats_box( $title, $data ) {
357
+	public function render_stats_box($title, $data) {
358 358
 		?><div class="postbox">
359 359
 			<h3><span><?php echo $title; ?></span></h3>
360 360
 			<div class="inside">
@@ -368,14 +368,14 @@  discard block
 block discarded – undo
368 368
 	 * @since  1.2.0
369 369
 	 * @return void
370 370
 	 */
371
-	public function analysis_headers( $args = array( 'nav' => 'default' ) ) {
371
+	public function analysis_headers($args = array('nav' => 'default')) {
372 372
 
373
-		$function = 'analysis_' . $args['nav'] . '_nav';
373
+		$function = 'analysis_'.$args['nav'].'_nav';
374 374
 		$this->$function();
375 375
 		?>
376 376
 			<p class="powered-by-woo">
377 377
 
378
-                <?php _e( 'Powered by', 'woothemes-sensei' ); ?>
378
+                <?php _e('Powered by', 'woothemes-sensei'); ?>
379 379
 
380 380
                 <a href="http://www.woothemes.com/" title="WooThemes">
381 381
 
@@ -386,7 +386,7 @@  discard block
 block discarded – undo
386 386
             </p>
387 387
 
388 388
 		<?php
389
-		do_action( 'sensei_analysis_after_headers' );
389
+		do_action('sensei_analysis_after_headers');
390 390
 	} // End analysis_headers()
391 391
 
392 392
 	/**
@@ -395,10 +395,10 @@  discard block
 block discarded – undo
395 395
 	 * @param $which string
396 396
 	 * @return void
397 397
 	 */
398
-	public function wrapper_container( $which ) {
399
-		if ( 'top' == $which ) {
398
+	public function wrapper_container($which) {
399
+		if ('top' == $which) {
400 400
 			?><div id="woothemes-sensei" class="wrap woothemes-sensei"><?php
401
-		} elseif ( 'bottom' == $which ) {
401
+		} elseif ('bottom' == $which) {
402 402
 			?></div><!--/#woothemes-sensei--><?php
403 403
 		} // End If Statement
404 404
 	} // End wrapper_container()
@@ -410,24 +410,24 @@  discard block
 block discarded – undo
410 410
 	 */
411 411
 	public function analysis_default_nav() {
412 412
 
413
-		$title = sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ) ), esc_html( $this->name ) );
414
-		$view = isset($_GET['view']) ? esc_html( $_GET['view'] ) : '';
415
-		switch ( $view ) { 
413
+		$title = sprintf('<a href="%s">%s</a>', esc_url(add_query_arg(array('page' => $this->page_slug), admin_url('admin.php'))), esc_html($this->name));
414
+		$view = isset($_GET['view']) ? esc_html($_GET['view']) : '';
415
+		switch ($view) { 
416 416
 			case 'courses' :
417
-				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', __( 'Courses', 'woothemes-sensei' ) );
417
+				$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', __('Courses', 'woothemes-sensei'));
418 418
 				break;
419 419
 
420 420
 			case 'lessons' :
421
-				$title .= sprintf( '&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;%s</span>', __( 'Lessons', 'woothemes-sensei' ) );
421
+				$title .= sprintf('&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;%s</span>', __('Lessons', 'woothemes-sensei'));
422 422
 				break;
423 423
 
424 424
 			case 'users' :
425 425
 			default :
426
-				$title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;%s</span>', __( 'Learners', 'woothemes-sensei' ) );
426
+				$title .= sprintf('&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;%s</span>', __('Learners', 'woothemes-sensei'));
427 427
 				break;
428 428
 		}
429 429
 		?>
430
-			<h2><?php echo apply_filters( 'sensei_analysis_nav_title', $title ); ?></h2>
430
+			<h2><?php echo apply_filters('sensei_analysis_nav_title', $title); ?></h2>
431 431
 		<?php
432 432
 	} // End analysis_default_nav()
433 433
 
@@ -438,17 +438,17 @@  discard block
 block discarded – undo
438 438
 	 */
439 439
 	public function analysis_user_profile_nav() {
440 440
 
441
-		$title = sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ) ), esc_html( $this->name ) );
442
-		if ( isset( $_GET['user_id'] ) && 0 < intval( $_GET['user_id'] ) ) {
441
+		$title = sprintf('<a href="%s">%s</a>', esc_url(add_query_arg(array('page' => $this->page_slug), admin_url('admin.php'))), esc_html($this->name));
442
+		if (isset($_GET['user_id']) && 0 < intval($_GET['user_id'])) {
443 443
 
444
-			$user_id = intval( $_GET['user_id'] );
445
-			$url = esc_url( add_query_arg( array( 'page' => $this->page_slug, 'user' => $user_id ), admin_url( 'admin.php' ) ) );
446
-            $user_name = Sensei_Student::get_full_name( $user_id );
447
-			$title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', $url, $user_name );
444
+			$user_id = intval($_GET['user_id']);
445
+			$url = esc_url(add_query_arg(array('page' => $this->page_slug, 'user' => $user_id), admin_url('admin.php')));
446
+            $user_name = Sensei_Student::get_full_name($user_id);
447
+			$title .= sprintf('&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', $url, $user_name);
448 448
 
449 449
 		} // End If Statement
450 450
 		?>
451
-			<h2><?php echo apply_filters( 'sensei_analysis_nav_title', $title ); ?></h2>
451
+			<h2><?php echo apply_filters('sensei_analysis_nav_title', $title); ?></h2>
452 452
 		<?php
453 453
 	} // End analysis_user_profile_nav()
454 454
 
@@ -459,22 +459,22 @@  discard block
 block discarded – undo
459 459
 	 */
460 460
 	public function analysis_user_course_nav() {
461 461
 
462
-		$title = sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ) ), esc_html( $this->name ) );
463
-		if ( isset( $_GET['user_id'] ) && 0 < intval( $_GET['user_id'] ) ) {
464
-			$user_id = intval( $_GET['user_id'] );
465
-			$user_data = get_userdata( $user_id );
466
-			$url = add_query_arg( array( 'page' => $this->page_slug, 'user_id' => $user_id ), admin_url( 'admin.php' ) );
467
-            $user_name = Sensei_Student::get_full_name( $user_id );
468
-            $title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', $url, $user_name );
469
-			$title .= sprintf( '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), $user_data->display_name );
462
+		$title = sprintf('<a href="%s">%s</a>', esc_url(add_query_arg(array('page' => $this->page_slug), admin_url('admin.php'))), esc_html($this->name));
463
+		if (isset($_GET['user_id']) && 0 < intval($_GET['user_id'])) {
464
+			$user_id = intval($_GET['user_id']);
465
+			$user_data = get_userdata($user_id);
466
+			$url = add_query_arg(array('page' => $this->page_slug, 'user_id' => $user_id), admin_url('admin.php'));
467
+            $user_name = Sensei_Student::get_full_name($user_id);
468
+            $title .= sprintf('&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', $url, $user_name);
469
+			$title .= sprintf('&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), $user_data->display_name);
470 470
 		} // End If Statement
471
-		if ( isset( $_GET['course_id'] ) ) { 
472
-			$course_id = intval( $_GET['course_id'] );
473
-			$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
474
-			$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $course_id ) );
471
+		if (isset($_GET['course_id'])) { 
472
+			$course_id = intval($_GET['course_id']);
473
+			$url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $course_id), admin_url('admin.php'));
474
+			$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($course_id));
475 475
 		}
476 476
 		?>
477
-			<h2><?php echo apply_filters( 'sensei_analysis_nav_title', $title ); ?></h2>
477
+			<h2><?php echo apply_filters('sensei_analysis_nav_title', $title); ?></h2>
478 478
 		<?php
479 479
 	} // End analysis_user_course_nav()
480 480
 
@@ -485,14 +485,14 @@  discard block
 block discarded – undo
485 485
 	 */
486 486
 	public function analysis_course_nav() {
487 487
 
488
-		$title = sprintf( '<a href="%s">%s</a>', add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ), esc_html( $this->name ) );
489
-		if ( isset( $_GET['course_id'] ) ) { 
490
-			$course_id = intval( $_GET['course_id'] );
491
-			$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
492
-			$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>',esc_url( $url ), get_the_title( $course_id ) );
488
+		$title = sprintf('<a href="%s">%s</a>', add_query_arg(array('page' => $this->page_slug), admin_url('admin.php')), esc_html($this->name));
489
+		if (isset($_GET['course_id'])) { 
490
+			$course_id = intval($_GET['course_id']);
491
+			$url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $course_id), admin_url('admin.php'));
492
+			$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($course_id));
493 493
 		}
494 494
 		?>
495
-			<h2><?php echo apply_filters( 'sensei_analysis_nav_title', $title ); ?></h2>
495
+			<h2><?php echo apply_filters('sensei_analysis_nav_title', $title); ?></h2>
496 496
 		<?php
497 497
 	} // End analysis_course_nav()
498 498
 
@@ -503,14 +503,14 @@  discard block
 block discarded – undo
503 503
 	 */
504 504
 	public function analysis_course_users_nav() {
505 505
 
506
-		$title = sprintf( '<a href="%s">%s</a>', add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ), esc_html( $this->name ) );
507
-		if ( isset( $_GET['course_id'] ) ) { 
508
-			$course_id = intval( $_GET['course_id'] );
509
-			$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
510
-			$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $course_id ) );
506
+		$title = sprintf('<a href="%s">%s</a>', add_query_arg(array('page' => $this->page_slug), admin_url('admin.php')), esc_html($this->name));
507
+		if (isset($_GET['course_id'])) { 
508
+			$course_id = intval($_GET['course_id']);
509
+			$url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $course_id), admin_url('admin.php'));
510
+			$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($course_id));
511 511
 		}
512 512
 		?>
513
-			<h2><?php echo apply_filters( 'sensei_analysis_nav_title', $title ); ?></h2>
513
+			<h2><?php echo apply_filters('sensei_analysis_nav_title', $title); ?></h2>
514 514
 		<?php
515 515
 	} // End analysis_course_users_nav()
516 516
 
@@ -521,17 +521,17 @@  discard block
 block discarded – undo
521 521
 	 */
522 522
 	public function analysis_lesson_users_nav() {
523 523
 
524
-		$title = sprintf( '<a href="%s">%s</a>', add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ), esc_html( $this->name ) );
525
-		if ( isset( $_GET['lesson_id'] ) ) { 
526
-			$lesson_id = intval( $_GET['lesson_id'] );
527
-			$course_id = intval( get_post_meta( $lesson_id, '_lesson_course', true ) );
528
-			$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
529
-			$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $course_id ) );
530
-			$url = add_query_arg( array( 'page' => $this->page_slug, 'lesson_id' => $lesson_id ), admin_url( 'admin.php' ) );
531
-			$title .= sprintf( '&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $lesson_id ) );
524
+		$title = sprintf('<a href="%s">%s</a>', add_query_arg(array('page' => $this->page_slug), admin_url('admin.php')), esc_html($this->name));
525
+		if (isset($_GET['lesson_id'])) { 
526
+			$lesson_id = intval($_GET['lesson_id']);
527
+			$course_id = intval(get_post_meta($lesson_id, '_lesson_course', true));
528
+			$url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $course_id), admin_url('admin.php'));
529
+			$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($course_id));
530
+			$url = add_query_arg(array('page' => $this->page_slug, 'lesson_id' => $lesson_id), admin_url('admin.php'));
531
+			$title .= sprintf('&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($lesson_id));
532 532
 		}
533 533
 		?>
534
-			<h2><?php echo apply_filters( 'sensei_analysis_nav_title', $title ); ?></h2>
534
+			<h2><?php echo apply_filters('sensei_analysis_nav_title', $title); ?></h2>
535 535
 		<?php
536 536
 	} // End analysis_lesson_users_nav()
537 537
 
@@ -542,59 +542,59 @@  discard block
 block discarded – undo
542 542
 	 */
543 543
 	public function report_download_page() {
544 544
 		// Check if is a report
545
-		if ( !empty( $_GET['sensei_report_download'] ) ) {
546
-			$report = sanitize_text_field( $_GET['sensei_report_download'] );
545
+		if ( ! empty($_GET['sensei_report_download'])) {
546
+			$report = sanitize_text_field($_GET['sensei_report_download']);
547 547
 
548 548
 			// Simple verification to ensure intent, Note that a Nonce is per user, so the URL can't be shared
549
-			if ( !wp_verify_nonce( $_REQUEST['_sdl_nonce'], 'sensei_csv_download-' . $report ) ) {
550
-				wp_die( __('Invalid request', 'woothemes-sensei') );
549
+			if ( ! wp_verify_nonce($_REQUEST['_sdl_nonce'], 'sensei_csv_download-'.$report)) {
550
+				wp_die(__('Invalid request', 'woothemes-sensei'));
551 551
 			}
552 552
 
553 553
 			// Setup the variables we might need
554
-			$filename = apply_filters( 'sensei_csv_export_filename', $report );
554
+			$filename = apply_filters('sensei_csv_export_filename', $report);
555 555
 			$course_id = 0;
556 556
 			$lesson_id = 0;
557 557
 			$user_id = 0;
558
-			if( isset( $_GET['course_id'] ) ) {
559
-				$course_id = intval( $_GET['course_id'] );
558
+			if (isset($_GET['course_id'])) {
559
+				$course_id = intval($_GET['course_id']);
560 560
 			}
561
-			if( isset( $_GET['lesson_id'] ) ) {
562
-				$lesson_id = intval( $_GET['lesson_id'] );
561
+			if (isset($_GET['lesson_id'])) {
562
+				$lesson_id = intval($_GET['lesson_id']);
563 563
 			}
564
-			if( isset( $_GET['user_id'] ) ) {
565
-				$user_id = intval( $_GET['user_id'] );
564
+			if (isset($_GET['user_id'])) {
565
+				$user_id = intval($_GET['user_id']);
566 566
 			}
567
-			$type = isset( $_GET['view'] ) ? esc_html( $_GET['view'] ) : false;
567
+			$type = isset($_GET['view']) ? esc_html($_GET['view']) : false;
568 568
 
569
-			if ( 0 < $lesson_id ) {
569
+			if (0 < $lesson_id) {
570 570
 				// Viewing a specific Lesson and all its Learners
571
-				$sensei_analysis_report_object = $this->load_report_object( 'Lesson', $lesson_id );
571
+				$sensei_analysis_report_object = $this->load_report_object('Lesson', $lesson_id);
572 572
 			}
573
-			elseif ( 0 < $course_id && 0 < $user_id ) {
573
+			elseif (0 < $course_id && 0 < $user_id) {
574 574
 				// Viewing a specific User on a specific Course
575
-				$sensei_analysis_report_object = $this->load_report_object( 'Course', $course_id, $user_id );
575
+				$sensei_analysis_report_object = $this->load_report_object('Course', $course_id, $user_id);
576 576
 			}
577
-			elseif( 0 < $course_id ) {
577
+			elseif (0 < $course_id) {
578 578
 				// Viewing a specific Course and all it's Lessons, or it's Learners
579
-				$sensei_analysis_report_object = $this->load_report_object( 'Course', $course_id );
579
+				$sensei_analysis_report_object = $this->load_report_object('Course', $course_id);
580 580
 			}
581
-			elseif ( 0 < $user_id ) {
581
+			elseif (0 < $user_id) {
582 582
 				// Viewing a specific Learner, and their Courses
583
-				$sensei_analysis_report_object = $this->load_report_object( 'User_Profile', $user_id );
583
+				$sensei_analysis_report_object = $this->load_report_object('User_Profile', $user_id);
584 584
 			}
585 585
 			else {
586 586
 				// Overview of all Learners, all Courses, or all Lessons
587
-				$sensei_analysis_report_object = $this->load_report_object( 'Overview', $type );
587
+				$sensei_analysis_report_object = $this->load_report_object('Overview', $type);
588 588
 			} // End If Statement
589 589
 
590 590
 			// Handle the headers
591
-			$this->report_set_headers( $filename );
591
+			$this->report_set_headers($filename);
592 592
 
593 593
 			// Collate the data, there could be many different reports for a single object
594
-			$report_data_array = $sensei_analysis_report_object->generate_report( $report );
594
+			$report_data_array = $sensei_analysis_report_object->generate_report($report);
595 595
 
596 596
 			// Output the data
597
-			$this->report_write_download( $report_data_array );
597
+			$this->report_write_download($report_data_array);
598 598
 
599 599
 			// Cleanly exit
600 600
 			exit;
@@ -607,9 +607,9 @@  discard block
 block discarded – undo
607 607
 	 * @param  string $filename name of report file
608 608
 	 * @return void
609 609
 	 */
610
-	public function report_set_headers( $filename = '' ) {
611
-		header( 'Content-Type: text/csv' );
612
-		header( 'Content-Disposition: attachment;filename=' . $filename . '.csv');
610
+	public function report_set_headers($filename = '') {
611
+		header('Content-Type: text/csv');
612
+		header('Content-Disposition: attachment;filename='.$filename.'.csv');
613 613
 	} // End report_set_headers()
614 614
 
615 615
 	/**
@@ -620,12 +620,12 @@  discard block
 block discarded – undo
620 620
 	 * @param  undefined  $optional_data optional constructor arguments
621 621
 	 * @return object                 class instance object
622 622
 	 */
623
-	public function load_report_object( $name = '', $data = 0, $optional_data = null ) {
624
-		$object_name = 'WooThemes_Sensei_Analysis_' . $name . '_List_Table';
625
-		if ( is_null($optional_data) ) {
626
-			$sensei_analysis_report_object = new $object_name( $data );
623
+	public function load_report_object($name = '', $data = 0, $optional_data = null) {
624
+		$object_name = 'WooThemes_Sensei_Analysis_'.$name.'_List_Table';
625
+		if (is_null($optional_data)) {
626
+			$sensei_analysis_report_object = new $object_name($data);
627 627
 		} else {
628
-			$sensei_analysis_report_object = new $object_name( $data, $optional_data );
628
+			$sensei_analysis_report_object = new $object_name($data, $optional_data);
629 629
 		}
630 630
 		return $sensei_analysis_report_object;
631 631
 	} // End load_report_object()
@@ -636,7 +636,7 @@  discard block
 block discarded – undo
636 636
 	 * @param  array  $report_array data array
637 637
 	 * @return void
638 638
 	 */
639
-	public function report_write_download( $report_data = array() ) {
639
+	public function report_write_download($report_data = array()) {
640 640
 		$fp = fopen('php://output', 'w');
641 641
 		foreach ($report_data as $row) {
642 642
 			fputcsv($fp, $row);
@@ -652,9 +652,9 @@  discard block
 block discarded – undo
652 652
 	 * @param  object $user_query_object     WP_User_Query Object
653 653
 	 * @return array $search_columns         array of user columns to search
654 654
 	 */
655
-	public function user_search_columns_filter( $search_columns, $search, $user_query_object ) {
655
+	public function user_search_columns_filter($search_columns, $search, $user_query_object) {
656 656
 		// Alter $search_columns to include the fields you want to search on
657
-		array_push( $search_columns, 'display_name' );
657
+		array_push($search_columns, 'display_name');
658 658
 		return $search_columns;
659 659
 	}
660 660
 
Please login to merge, or discard this patch.
includes/class-sensei-emails.php 4 patches
Doc Comments   +5 added lines, -1 removed lines patch added patch discarded remove patch
@@ -40,6 +40,7 @@  discard block
 block discarded – undo
40 40
 	 * Constructor for the email class hooks in all emails that can be sent.
41 41
 	 *
42 42
 	 * @access public
43
+	 * @param string $file
43 44
 	 * @return void
44 45
 	 */
45 46
 	function __construct( $file ) {
@@ -140,7 +141,7 @@  discard block
 block discarded – undo
140 141
 	 * Wraps a message in the sensei mail template.
141 142
 	 *
142 143
 	 * @access public
143
-	 * @param mixed $content
144
+	 * @param null|string $content
144 145
 	 * @return string
145 146
 	 */
146 147
 	function wrap_message( $content ) {
@@ -198,6 +199,9 @@  discard block
 block discarded – undo
198 199
 		remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
199 200
 	}
200 201
 
202
+	/**
203
+	 * @param string $email_template
204
+	 */
201 205
 	function get_content( $email_template ) {
202 206
 
203 207
 		$message = $this->load_template( $email_template );
Please login to merge, or discard this patch.
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
 		add_action( 'sensei_course_status_updated', array( $this, 'learner_completed_course' ), 10, 4 );
52 52
 		add_action( 'sensei_course_status_updated', array( $this, 'teacher_completed_course' ), 10, 4 );
53 53
 		add_action( 'sensei_user_course_start', array( $this, 'teacher_started_course' ), 10, 2 );
54
-        add_action( 'sensei_user_lesson_end', array( $this, 'teacher_completed_lesson' ), 10, 2 );
54
+		add_action( 'sensei_user_lesson_end', array( $this, 'teacher_completed_lesson' ), 10, 2 );
55 55
 		add_action( 'sensei_user_quiz_submitted', array( $this, 'teacher_quiz_submitted' ), 10, 5 );
56 56
 		add_action( 'sensei_new_private_message', array( $this, 'teacher_new_message' ), 10, 1 );
57 57
 		add_action( 'sensei_private_message_reply', array( $this, 'new_message_reply' ), 10, 2 );
@@ -68,9 +68,9 @@  discard block
 block discarded – undo
68 68
 		$this->emails['learner-graded-quiz'] = include( 'emails/class-woothemes-sensei-email-learner-graded-quiz.php' );
69 69
 		$this->emails['learner-completed-course'] = include( 'emails/class-woothemes-sensei-email-learner-completed-course.php' );
70 70
 		$this->emails['teacher-completed-course'] = include( 'emails/class-woothemes-sensei-email-teacher-completed-course.php' );
71
-        $this->emails['teacher-started-course'] = include( 'emails/class-woothemes-sensei-email-teacher-started-course.php' );
72
-        $this->emails['teacher-completed-lesson'] = include( 'emails/class-woothemes-sensei-email-teacher-completed-lesson.php' );
73
-        $this->emails['teacher-quiz-submitted'] = include( 'emails/class-woothemes-sensei-email-teacher-quiz-submitted.php' );
71
+		$this->emails['teacher-started-course'] = include( 'emails/class-woothemes-sensei-email-teacher-started-course.php' );
72
+		$this->emails['teacher-completed-lesson'] = include( 'emails/class-woothemes-sensei-email-teacher-completed-lesson.php' );
73
+		$this->emails['teacher-quiz-submitted'] = include( 'emails/class-woothemes-sensei-email-teacher-quiz-submitted.php' );
74 74
 		$this->emails['teacher-new-message'] = include( 'emails/class-woothemes-sensei-email-teacher-new-message.php' );
75 75
 		$this->emails['new-message-reply'] = include( 'emails/class-woothemes-sensei-email-new-message-reply.php' );
76 76
 		$this->emails = apply_filters( 'sensei_email_classes', $this->emails );
@@ -177,20 +177,20 @@  discard block
 block discarded – undo
177 177
 		add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ) );
178 178
 		add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
179 179
 
180
-        // Send
181
-        $send_email = true;
180
+		// Send
181
+		$send_email = true;
182 182
 
183
-        /**
184
-         * Filter Sensei's ability to send out emails.
185
-         *
186
-         * @since 1.8.0
187
-         * @param bool $send_email default true
188
-         */
189
-        if( apply_filters('sensei_send_emails', $send_email,$to, $subject, $message )  ){
183
+		/**
184
+		 * Filter Sensei's ability to send out emails.
185
+		 *
186
+		 * @since 1.8.0
187
+		 * @param bool $send_email default true
188
+		 */
189
+		if( apply_filters('sensei_send_emails', $send_email,$to, $subject, $message )  ){
190 190
 
191
-            wp_mail( $to, $subject, $message, $headers, $attachments );
191
+			wp_mail( $to, $subject, $message, $headers, $attachments );
192 192
 
193
-        }
193
+		}
194 194
 
195 195
 		// Unhook filters
196 196
 		remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ) );
@@ -332,33 +332,33 @@  discard block
 block discarded – undo
332 332
 		}
333 333
 	}
334 334
 
335
-    /**
336
-     * teacher_completed_lesson()
337
-     *
338
-     * Send email to teacher on student completing lesson
339
-     *
340
-     * @access public
341
-     * @return void
342
-     * @since 1.9.0
343
-     */
344
-    function teacher_completed_lesson( $learner_id = 0, $lesson_id = 0 ) {
345
-
346
-
347
-        $send = false;
348
-
349
-        if( isset( Sensei()->settings->settings[ 'email_teachers' ] ) ) {
350
-            if( in_array( 'teacher-completed-lesson', (array) Sensei()->settings->settings[ 'email_teachers' ]) ) {
351
-                $send = true;
352
-            }
353
-        } else {
354
-            $send = true;
355
-        }
356
-
357
-        if( $send ) {
358
-            $email = $this->emails['teacher-completed-lesson'];
359
-            $email->trigger( $learner_id, $lesson_id );
360
-        }
361
-    }
335
+	/**
336
+	 * teacher_completed_lesson()
337
+	 *
338
+	 * Send email to teacher on student completing lesson
339
+	 *
340
+	 * @access public
341
+	 * @return void
342
+	 * @since 1.9.0
343
+	 */
344
+	function teacher_completed_lesson( $learner_id = 0, $lesson_id = 0 ) {
345
+
346
+
347
+		$send = false;
348
+
349
+		if( isset( Sensei()->settings->settings[ 'email_teachers' ] ) ) {
350
+			if( in_array( 'teacher-completed-lesson', (array) Sensei()->settings->settings[ 'email_teachers' ]) ) {
351
+				$send = true;
352
+			}
353
+		} else {
354
+			$send = true;
355
+		}
356
+
357
+		if( $send ) {
358
+			$email = $this->emails['teacher-completed-lesson'];
359
+			$email->trigger( $learner_id, $lesson_id );
360
+		}
361
+	}
362 362
 
363 363
 	/**
364 364
 	 * Send email to teacher on quiz submission
Please login to merge, or discard this patch.
Spacing   +94 added lines, -94 removed lines patch added patch discarded remove patch
@@ -42,22 +42,22 @@  discard block
 block discarded – undo
42 42
 	 * @access public
43 43
 	 * @return void
44 44
 	 */
45
-	function __construct( $file ) {
45
+	function __construct($file) {
46 46
 
47 47
 		$this->init();
48 48
 
49 49
 		// Hooks for sending emails during Sensei events
50
-		add_action( 'sensei_user_quiz_grade', array( $this, 'learner_graded_quiz' ), 10, 4 );
51
-		add_action( 'sensei_course_status_updated', array( $this, 'learner_completed_course' ), 10, 4 );
52
-		add_action( 'sensei_course_status_updated', array( $this, 'teacher_completed_course' ), 10, 4 );
53
-		add_action( 'sensei_user_course_start', array( $this, 'teacher_started_course' ), 10, 2 );
54
-        add_action( 'sensei_user_lesson_end', array( $this, 'teacher_completed_lesson' ), 10, 2 );
55
-		add_action( 'sensei_user_quiz_submitted', array( $this, 'teacher_quiz_submitted' ), 10, 5 );
56
-		add_action( 'sensei_new_private_message', array( $this, 'teacher_new_message' ), 10, 1 );
57
-		add_action( 'sensei_private_message_reply', array( $this, 'new_message_reply' ), 10, 2 );
50
+		add_action('sensei_user_quiz_grade', array($this, 'learner_graded_quiz'), 10, 4);
51
+		add_action('sensei_course_status_updated', array($this, 'learner_completed_course'), 10, 4);
52
+		add_action('sensei_course_status_updated', array($this, 'teacher_completed_course'), 10, 4);
53
+		add_action('sensei_user_course_start', array($this, 'teacher_started_course'), 10, 2);
54
+        add_action('sensei_user_lesson_end', array($this, 'teacher_completed_lesson'), 10, 2);
55
+		add_action('sensei_user_quiz_submitted', array($this, 'teacher_quiz_submitted'), 10, 5);
56
+		add_action('sensei_new_private_message', array($this, 'teacher_new_message'), 10, 1);
57
+		add_action('sensei_private_message_reply', array($this, 'new_message_reply'), 10, 2);
58 58
 
59 59
 		// Let 3rd parties unhook the above via this hook
60
-		do_action( 'sensei_emails', $this );
60
+		do_action('sensei_emails', $this);
61 61
 	}
62 62
 
63 63
 	/**
@@ -65,15 +65,15 @@  discard block
 block discarded – undo
65 65
 	 */
66 66
 	function init() {
67 67
 
68
-		$this->emails['learner-graded-quiz'] = include( 'emails/class-woothemes-sensei-email-learner-graded-quiz.php' );
69
-		$this->emails['learner-completed-course'] = include( 'emails/class-woothemes-sensei-email-learner-completed-course.php' );
70
-		$this->emails['teacher-completed-course'] = include( 'emails/class-woothemes-sensei-email-teacher-completed-course.php' );
71
-        $this->emails['teacher-started-course'] = include( 'emails/class-woothemes-sensei-email-teacher-started-course.php' );
72
-        $this->emails['teacher-completed-lesson'] = include( 'emails/class-woothemes-sensei-email-teacher-completed-lesson.php' );
73
-        $this->emails['teacher-quiz-submitted'] = include( 'emails/class-woothemes-sensei-email-teacher-quiz-submitted.php' );
74
-		$this->emails['teacher-new-message'] = include( 'emails/class-woothemes-sensei-email-teacher-new-message.php' );
75
-		$this->emails['new-message-reply'] = include( 'emails/class-woothemes-sensei-email-new-message-reply.php' );
76
-		$this->emails = apply_filters( 'sensei_email_classes', $this->emails );
68
+		$this->emails['learner-graded-quiz'] = include('emails/class-woothemes-sensei-email-learner-graded-quiz.php');
69
+		$this->emails['learner-completed-course'] = include('emails/class-woothemes-sensei-email-learner-completed-course.php');
70
+		$this->emails['teacher-completed-course'] = include('emails/class-woothemes-sensei-email-teacher-completed-course.php');
71
+        $this->emails['teacher-started-course'] = include('emails/class-woothemes-sensei-email-teacher-started-course.php');
72
+        $this->emails['teacher-completed-lesson'] = include('emails/class-woothemes-sensei-email-teacher-completed-lesson.php');
73
+        $this->emails['teacher-quiz-submitted'] = include('emails/class-woothemes-sensei-email-teacher-quiz-submitted.php');
74
+		$this->emails['teacher-new-message'] = include('emails/class-woothemes-sensei-email-teacher-new-message.php');
75
+		$this->emails['new-message-reply'] = include('emails/class-woothemes-sensei-email-new-message-reply.php');
76
+		$this->emails = apply_filters('sensei_email_classes', $this->emails);
77 77
 	}
78 78
 
79 79
 	/**
@@ -95,15 +95,15 @@  discard block
 block discarded – undo
95 95
 	function get_from_name() {
96 96
 
97 97
 
98
-		if ( ! $this->_from_name ) {
99
-			if( isset( Sensei()->settings->settings['email_from_name'] ) && '' != Sensei()->settings->settings['email_from_name'] ) {
98
+		if ( ! $this->_from_name) {
99
+			if (isset(Sensei()->settings->settings['email_from_name']) && '' != Sensei()->settings->settings['email_from_name']) {
100 100
 				$this->_from_name = Sensei()->settings->settings['email_from_name'];
101 101
 			} else {
102
-				$this->_from_name = get_bloginfo( 'name' );
102
+				$this->_from_name = get_bloginfo('name');
103 103
 			}
104 104
 		}
105 105
 
106
-		return wp_specialchars_decode( $this->_from_name );
106
+		return wp_specialchars_decode($this->_from_name);
107 107
 	}
108 108
 
109 109
 	/**
@@ -115,11 +115,11 @@  discard block
 block discarded – undo
115 115
 	function get_from_address() {
116 116
 
117 117
 
118
-		if ( ! $this->_from_address ) {
119
-			if( isset( Sensei()->settings->settings['email_from_address'] ) && '' != Sensei()->settings->settings['email_from_address'] ) {
118
+		if ( ! $this->_from_address) {
119
+			if (isset(Sensei()->settings->settings['email_from_address']) && '' != Sensei()->settings->settings['email_from_address']) {
120 120
 				$this->_from_address = Sensei()->settings->settings['email_from_address'];
121 121
 			} else {
122
-				$this->_from_address = get_bloginfo( 'admin_email' );
122
+				$this->_from_address = get_bloginfo('admin_email');
123 123
 			}
124 124
 		}
125 125
 
@@ -143,13 +143,13 @@  discard block
 block discarded – undo
143 143
 	 * @param mixed $content
144 144
 	 * @return string
145 145
 	 */
146
-	function wrap_message( $content ) {
146
+	function wrap_message($content) {
147 147
 
148 148
 		$html = '';
149 149
 
150
-		$html .= $this->load_template( 'header' );
151
-		$html .= wpautop( wptexturize( $content ) );
152
-		$html .= $this->load_template( 'footer' );
150
+		$html .= $this->load_template('header');
151
+		$html .= wpautop(wptexturize($content));
152
+		$html .= $this->load_template('footer');
153 153
 
154 154
 		return $html;
155 155
 	}
@@ -166,16 +166,16 @@  discard block
 block discarded – undo
166 166
 	 * @param string $content_type (default: "text/html")
167 167
 	 * @return void
168 168
 	 */
169
-	function send( $to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = "", $content_type = 'text/html' ) {
169
+	function send($to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = "", $content_type = 'text/html') {
170 170
 		global $email_template;
171 171
 
172 172
 		// Set content type
173 173
 		$this->_content_type = $content_type;
174 174
 
175 175
 		// Filters for the email
176
-		add_filter( 'wp_mail_from', array( $this, 'get_from_address' ) );
177
-		add_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ) );
178
-		add_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
176
+		add_filter('wp_mail_from', array($this, 'get_from_address'));
177
+		add_filter('wp_mail_from_name', array($this, 'get_from_name'));
178
+		add_filter('wp_mail_content_type', array($this, 'get_content_type'));
179 179
 
180 180
         // Send
181 181
         $send_email = true;
@@ -186,40 +186,40 @@  discard block
 block discarded – undo
186 186
          * @since 1.8.0
187 187
          * @param bool $send_email default true
188 188
          */
189
-        if( apply_filters('sensei_send_emails', $send_email,$to, $subject, $message )  ){
189
+        if (apply_filters('sensei_send_emails', $send_email, $to, $subject, $message)) {
190 190
 
191
-            wp_mail( $to, $subject, $message, $headers, $attachments );
191
+            wp_mail($to, $subject, $message, $headers, $attachments);
192 192
 
193 193
         }
194 194
 
195 195
 		// Unhook filters
196
-		remove_filter( 'wp_mail_from', array( $this, 'get_from_address' ) );
197
-		remove_filter( 'wp_mail_from_name', array( $this, 'get_from_name' ) );
198
-		remove_filter( 'wp_mail_content_type', array( $this, 'get_content_type' ) );
196
+		remove_filter('wp_mail_from', array($this, 'get_from_address'));
197
+		remove_filter('wp_mail_from_name', array($this, 'get_from_name'));
198
+		remove_filter('wp_mail_content_type', array($this, 'get_content_type'));
199 199
 	}
200 200
 
201
-	function get_content( $email_template ) {
201
+	function get_content($email_template) {
202 202
 
203
-		$message = $this->load_template( $email_template );
203
+		$message = $this->load_template($email_template);
204 204
 
205
-		$html = $this->wrap_message( $message );
205
+		$html = $this->wrap_message($message);
206 206
 
207
-		return apply_filters( 'sensei_email', $html, $email_template );
207
+		return apply_filters('sensei_email', $html, $email_template);
208 208
 	}
209 209
 
210
-	function load_template( $template = '' ) {
210
+	function load_template($template = '') {
211 211
 		global  $email_template;
212 212
 
213
-		if( ! $template ) return;
213
+		if ( ! $template) return;
214 214
 
215
-		$email_template = $template . '.php';
216
-		$template = Sensei_Templates::template_loader( '' );
215
+		$email_template = $template.'.php';
216
+		$template = Sensei_Templates::template_loader('');
217 217
 
218 218
 		ob_start();
219 219
 
220
-		do_action( 'sensei_before_email_template', $email_template );
221
-		include( $template );
222
-		do_action( 'sensei_after_email_template', $email_template );
220
+		do_action('sensei_before_email_template', $email_template);
221
+		include($template);
222
+		do_action('sensei_after_email_template', $email_template);
223 223
 
224 224
 		return ob_get_clean();
225 225
 	}
@@ -230,22 +230,22 @@  discard block
 block discarded – undo
230 230
 	 * @access public
231 231
 	 * @return void
232 232
 	 */
233
-	function learner_graded_quiz( $user_id, $quiz_id, $grade, $passmark ) {
233
+	function learner_graded_quiz($user_id, $quiz_id, $grade, $passmark) {
234 234
 
235 235
 
236 236
 		$send = false;
237 237
 
238
-		if( isset( Sensei()->settings->settings['email_learners'] ) ) {
239
-			if( in_array( 'learner-graded-quiz', (array) Sensei()->settings->settings['email_learners'] ) ) {
238
+		if (isset(Sensei()->settings->settings['email_learners'])) {
239
+			if (in_array('learner-graded-quiz', (array) Sensei()->settings->settings['email_learners'])) {
240 240
 				$send = true;
241 241
 			}
242 242
 		} else {
243 243
 			$send = true;
244 244
 		}
245 245
 
246
-		if( $send ) {
246
+		if ($send) {
247 247
 			$email = $this->emails['learner-graded-quiz'];
248
-			$email->trigger( $user_id, $quiz_id, $grade, $passmark );
248
+			$email->trigger($user_id, $quiz_id, $grade, $passmark);
249 249
 		}
250 250
 	}
251 251
 
@@ -255,26 +255,26 @@  discard block
 block discarded – undo
255 255
 	 * @access public
256 256
 	 * @return void
257 257
 	 */
258
-	function learner_completed_course( $status = 'in-progress', $user_id = 0, $course_id = 0, $comment_id = 0 ) {
258
+	function learner_completed_course($status = 'in-progress', $user_id = 0, $course_id = 0, $comment_id = 0) {
259 259
 
260 260
 
261
-		if( 'complete' != $status ) {
261
+		if ('complete' != $status) {
262 262
 			return;
263 263
 		}
264 264
 
265 265
 		$send = false;
266 266
 
267
-		if( isset( Sensei()->settings->settings['email_learners'] ) ) {
268
-			if( in_array( 'learner-completed-course', (array) Sensei()->settings->settings['email_learners'] ) ) {
267
+		if (isset(Sensei()->settings->settings['email_learners'])) {
268
+			if (in_array('learner-completed-course', (array) Sensei()->settings->settings['email_learners'])) {
269 269
 				$send = true;
270 270
 			}
271 271
 		} else {
272 272
 			$send = true;
273 273
 		}
274 274
 
275
-		if( $send ) {
275
+		if ($send) {
276 276
 			$email = $this->emails['learner-completed-course'];
277
-			$email->trigger( $user_id, $course_id );
277
+			$email->trigger($user_id, $course_id);
278 278
 		}
279 279
 	}
280 280
 
@@ -284,26 +284,26 @@  discard block
 block discarded – undo
284 284
 	 * @access public
285 285
 	 * @return void
286 286
 	 */
287
-	function teacher_completed_course( $status = 'in-progress', $learner_id = 0, $course_id = 0, $comment_id = 0 ) {
287
+	function teacher_completed_course($status = 'in-progress', $learner_id = 0, $course_id = 0, $comment_id = 0) {
288 288
 
289 289
 
290
-		if( 'complete' != $status ) {
290
+		if ('complete' != $status) {
291 291
 			return;
292 292
 		}
293 293
 
294 294
 		$send = false;
295 295
 
296
-		if( isset( Sensei()->settings->settings['email_teachers'] ) ) {
297
-			if( in_array( 'teacher-completed-course', (array) Sensei()->settings->settings['email_teachers'] ) ) {
296
+		if (isset(Sensei()->settings->settings['email_teachers'])) {
297
+			if (in_array('teacher-completed-course', (array) Sensei()->settings->settings['email_teachers'])) {
298 298
 				$send = true;
299 299
 			}
300 300
 		} else {
301 301
 			$send = true;
302 302
 		}
303 303
 
304
-		if( $send ) {
304
+		if ($send) {
305 305
 			$email = $this->emails['teacher-completed-course'];
306
-			$email->trigger( $learner_id, $course_id );
306
+			$email->trigger($learner_id, $course_id);
307 307
 		}
308 308
 	}
309 309
 
@@ -313,22 +313,22 @@  discard block
 block discarded – undo
313 313
 	 * @access public
314 314
 	 * @return void
315 315
 	 */
316
-	function teacher_started_course( $learner_id = 0, $course_id = 0 ) {
316
+	function teacher_started_course($learner_id = 0, $course_id = 0) {
317 317
 
318 318
 
319 319
 		$send = false;
320 320
 
321
-		if( isset( Sensei()->settings->settings['email_teachers'] ) ) {
322
-			if( in_array( 'teacher-started-course', (array) Sensei()->settings->settings['email_teachers'] ) ) {
321
+		if (isset(Sensei()->settings->settings['email_teachers'])) {
322
+			if (in_array('teacher-started-course', (array) Sensei()->settings->settings['email_teachers'])) {
323 323
 				$send = true;
324 324
 			}
325 325
 		} else {
326 326
 			$send = true;
327 327
 		}
328 328
 
329
-		if( $send ) {
329
+		if ($send) {
330 330
 			$email = $this->emails['teacher-started-course'];
331
-			$email->trigger( $learner_id, $course_id );
331
+			$email->trigger($learner_id, $course_id);
332 332
 		}
333 333
 	}
334 334
 
@@ -341,22 +341,22 @@  discard block
 block discarded – undo
341 341
      * @return void
342 342
      * @since 1.9.0
343 343
      */
344
-    function teacher_completed_lesson( $learner_id = 0, $lesson_id = 0 ) {
344
+    function teacher_completed_lesson($learner_id = 0, $lesson_id = 0) {
345 345
 
346 346
 
347 347
         $send = false;
348 348
 
349
-        if( isset( Sensei()->settings->settings[ 'email_teachers' ] ) ) {
350
-            if( in_array( 'teacher-completed-lesson', (array) Sensei()->settings->settings[ 'email_teachers' ]) ) {
349
+        if (isset(Sensei()->settings->settings['email_teachers'])) {
350
+            if (in_array('teacher-completed-lesson', (array) Sensei()->settings->settings['email_teachers'])) {
351 351
                 $send = true;
352 352
             }
353 353
         } else {
354 354
             $send = true;
355 355
         }
356 356
 
357
-        if( $send ) {
357
+        if ($send) {
358 358
             $email = $this->emails['teacher-completed-lesson'];
359
-            $email->trigger( $learner_id, $lesson_id );
359
+            $email->trigger($learner_id, $lesson_id);
360 360
         }
361 361
     }
362 362
 
@@ -366,25 +366,25 @@  discard block
 block discarded – undo
366 366
 	 * @access public
367 367
 	 * @return void
368 368
 	 */
369
-	function teacher_quiz_submitted( $learner_id = 0, $quiz_id = 0, $grade = 0, $passmark = 0, $quiz_grade_type = 'manual' ) {
369
+	function teacher_quiz_submitted($learner_id = 0, $quiz_id = 0, $grade = 0, $passmark = 0, $quiz_grade_type = 'manual') {
370 370
 
371 371
 
372 372
 
373 373
 		$send = false;
374 374
 
375 375
 		// Only trigger if the quiz was marked as manual grading, or auto grading didn't complete
376
-		if( 'manual' == $quiz_grade_type || is_wp_error( $grade ) ) {
377
-			if( isset( Sensei()->settings->settings['email_teachers'] ) ) {
378
-				if( in_array( 'teacher-quiz-submitted', (array) Sensei()->settings->settings['email_teachers'] ) ) {
376
+		if ('manual' == $quiz_grade_type || is_wp_error($grade)) {
377
+			if (isset(Sensei()->settings->settings['email_teachers'])) {
378
+				if (in_array('teacher-quiz-submitted', (array) Sensei()->settings->settings['email_teachers'])) {
379 379
 					$send = true;
380 380
 				}
381 381
 			} else {
382 382
 				$send = true;
383 383
 			}
384 384
 
385
-			if( $send ) {
385
+			if ($send) {
386 386
 				$email = $this->emails['teacher-quiz-submitted'];
387
-				$email->trigger( $learner_id, $quiz_id );
387
+				$email->trigger($learner_id, $quiz_id);
388 388
 			}
389 389
 
390 390
 		}
@@ -396,22 +396,22 @@  discard block
 block discarded – undo
396 396
 	 * @access public
397 397
 	 * @return void
398 398
 	 */
399
-	function teacher_new_message( $message_id = 0 ) {
399
+	function teacher_new_message($message_id = 0) {
400 400
 
401 401
 
402 402
 		$send = false;
403 403
 
404
-		if( isset( Sensei()->settings->settings['email_teachers'] ) ) {
405
-			if( in_array( 'teacher-new-message', (array) Sensei()->settings->settings['email_teachers'] ) ) {
404
+		if (isset(Sensei()->settings->settings['email_teachers'])) {
405
+			if (in_array('teacher-new-message', (array) Sensei()->settings->settings['email_teachers'])) {
406 406
 				$send = true;
407 407
 			}
408 408
 		} else {
409 409
 			$send = true;
410 410
 		}
411 411
 
412
-		if( $send ) {
412
+		if ($send) {
413 413
 			$email = $this->emails['teacher-new-message'];
414
-			$email->trigger( $message_id );
414
+			$email->trigger($message_id);
415 415
 		}
416 416
 	}
417 417
 
@@ -421,22 +421,22 @@  discard block
 block discarded – undo
421 421
 	 * @access public
422 422
 	 * @return void
423 423
 	 */
424
-	function new_message_reply( $comment, $message ) {
424
+	function new_message_reply($comment, $message) {
425 425
 
426 426
 
427 427
 		$send = false;
428 428
 
429
-		if( isset( Sensei()->settings->settings['email_global'] ) ) {
430
-			if( in_array( 'new-message-reply', (array) Sensei()->settings->settings['email_global'] ) ) {
429
+		if (isset(Sensei()->settings->settings['email_global'])) {
430
+			if (in_array('new-message-reply', (array) Sensei()->settings->settings['email_global'])) {
431 431
 				$send = true;
432 432
 			}
433 433
 		} else {
434 434
 			$send = true;
435 435
 		}
436 436
 
437
-		if( $send ) {
437
+		if ($send) {
438 438
 			$email = $this->emails['new-message-reply'];
439
-			$email->trigger( $comment, $message );
439
+			$email->trigger($comment, $message);
440 440
 		}
441 441
 	}
442 442
 
@@ -447,4 +447,4 @@  discard block
 block discarded – undo
447 447
  * for backward compatibility
448 448
  * @since 1.9.0
449 449
  */
450
-class WooThemes_Sensei_Emails extends Sensei_Emails{}
450
+class WooThemes_Sensei_Emails extends Sensei_Emails {}
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -210,7 +210,9 @@
 block discarded – undo
210 210
 	function load_template( $template = '' ) {
211 211
 		global  $email_template;
212 212
 
213
-		if( ! $template ) return;
213
+		if( ! $template ) {
214
+			return;
215
+		}
214 216
 
215 217
 		$email_template = $template . '.php';
216 218
 		$template = Sensei_Templates::template_loader( '' );
Please login to merge, or discard this patch.
includes/class-sensei-grading.php 4 patches
Doc Comments   +5 added lines, -4 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@  discard block
 block discarded – undo
22 22
 	 * Constructor
23 23
 	 * @since  1.3.0
24 24
      *
25
-     * @param $file
25
+     * @param string $file
26 26
 	 */
27 27
 	public function __construct ( $file ) {
28 28
 		$this->name = __( 'Grading', 'woothemes-sensei' );
@@ -330,6 +330,7 @@  discard block
 block discarded – undo
330 330
 	/**
331 331
 	 * Return array of valid statuses for either Course or Lesson
332 332
 	 * @since  1.7.0
333
+	 * @param string $type
333 334
 	 * @return array
334 335
 	 */
335 336
 	public function get_stati( $type ) {
@@ -529,7 +530,7 @@  discard block
 block discarded – undo
529 530
      * the grades as the Grader selected theme and saves the total grade and
530 531
      * individual question grades.
531 532
      *
532
-     * @return bool
533
+     * @return false|null
533 534
      */
534 535
     public function admin_process_grading_submission() {
535 536
 
@@ -906,8 +907,8 @@  discard block
 block discarded – undo
906 907
      * Grading logic specifically for the gap fill questions
907 908
      *
908 909
      * @since 1.9.0
909
-     * @param $question_id
910
-     * @param $user_answer
910
+     * @param integer $question_id
911
+     * @param string $user_answer
911 912
      *
912 913
      * @return bool | int false or the grade given to the user answer
913 914
      */
Please login to merge, or discard this patch.
Braces   +20 added lines, -28 removed lines patch added patch discarded remove patch
@@ -1,5 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined( 'ABSPATH' ) ) {
3
+	exit;
4
+}
5
+// Exit if accessed directly
3 6
 
4 7
 /**
5 8
  * Sensei Grading Class
@@ -130,8 +133,7 @@  discard block
 block discarded – undo
130 133
 		$object_name = 'WooThemes_Sensei_Grading_' . $name;
131 134
 		if ( is_null($optional_data) ) {
132 135
 			$sensei_grading_object = new $object_name( $data );
133
-		}
134
-		else {
136
+		} else {
135 137
 			$sensei_grading_object = new $object_name( $data, $optional_data );
136 138
 		} // End If Statement
137 139
 		if ( 'Main' == $name ) {
@@ -150,8 +152,7 @@  discard block
 block discarded – undo
150 152
 
151 153
 		if ( isset( $_GET['quiz_id'] ) && 0 < intval( $_GET['quiz_id'] ) && isset( $_GET['user'] ) && 0 < intval( $_GET['user'] ) ) {
152 154
 			$this->grading_user_quiz_view();
153
-		}
154
-		else {
155
+		} else {
155 156
 			$this->grading_default_view();
156 157
 		} // End If Statement
157 158
 	} // End grading_page()
@@ -273,8 +274,7 @@  discard block
 block discarded – undo
273 274
 			if ( version_compare($wp_version, '4.1', '>=') ) {
274 275
 				$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
275 276
 				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $course_id ) );
276
-			}
277
-			else {
277
+			} else {
278 278
 				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', get_the_title( $course_id ) ); 
279 279
 			}
280 280
 		}
@@ -309,8 +309,7 @@  discard block
 block discarded – undo
309 309
 			if ( version_compare($wp_version, '4.1', '>=') ) {
310 310
 				$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
311 311
 				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $course_id ) );
312
-			}
313
-			else {
312
+			} else {
314 313
 				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', get_the_title( $course_id ) ); 
315 314
 			}
316 315
 			$url = add_query_arg( array( 'page' => $this->page_slug, 'lesson_id' => $lesson_id ), admin_url( 'admin.php' ) );
@@ -379,8 +378,7 @@  discard block
 block discarded – undo
379 378
 
380 379
 		if ( 'course' == $args['type'] ) {
381 380
 			$type = 'sensei_course_status';
382
-		}
383
-		else {
381
+		} else {
384 382
 			$type = 'sensei_lesson_status';
385 383
 		}
386 384
 		$cache_key = 'sensei-' . $args['type'] . '-statuses';
@@ -390,15 +388,13 @@  discard block
 block discarded – undo
390 388
         // Restrict to specific posts
391 389
 		if ( isset( $args['post__in'] ) && !empty( $args['post__in'] ) && is_array( $args['post__in'] ) ) {
392 390
 			$query .= ' AND comment_post_ID IN (' . implode( ',', array_map( 'absint', $args['post__in'] ) ) . ')';
393
-		}
394
-		elseif ( !empty( $args['post_id'] ) ) {
391
+		} elseif ( !empty( $args['post_id'] ) ) {
395 392
 			$query .= $wpdb->prepare( ' AND comment_post_ID = %d', $args['post_id'] );
396 393
 		}
397 394
 		// Restrict to specific users
398 395
 		if ( isset( $args['user_id'] ) && is_array( $args['user_id'] ) ) {
399 396
 			$query .= ' AND user_id IN (' . implode( ',', array_map( 'absint', $args['user_id'] ) ) . ')';
400
-		}
401
-		elseif ( !empty( $args['user_id'] ) ) {
397
+		} elseif ( !empty( $args['user_id'] ) ) {
402 398
 			$query .= $wpdb->prepare( ' AND user_id = %d', $args['user_id'] );
403 399
 		}
404 400
 		$query .= ' GROUP BY comment_approved';
@@ -601,8 +597,7 @@  discard block
 block discarded – undo
601 597
             // set the users total quiz grade
602 598
 			if ( 0 < intval( $quiz_grade_total ) ) {
603 599
             $grade = abs( round( ( doubleval( $quiz_grade ) * 100 ) / ( $quiz_grade_total ), 2 ) );
604
-			}
605
-			else {
600
+			} else {
606 601
 				$grade = 0;
607 602
 			}
608 603
             WooThemes_Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id );
@@ -615,8 +610,7 @@  discard block
 block discarded – undo
615 610
                 // Student has reached the pass mark and lesson is complete
616 611
                 if ( $quiz_passmark <= $grade ) {
617 612
                     $lesson_status = 'passed';
618
-                }
619
-                else {
613
+                } else {
620 614
                     $lesson_status = 'failed';
621 615
                 } // End If Statement
622 616
             }
@@ -761,8 +755,7 @@  discard block
 block discarded – undo
761 755
 			// Question has a zero grade, so skip grading
762 756
 			if ( 0 == $achievable_grade ) {
763 757
 				$all_question_grades[ $question_id ] = $achievable_grade;
764
-			}
765
-            elseif ( in_array( $question_type, $autogradable_question_types ) ) {
758
+			} elseif ( in_array( $question_type, $autogradable_question_types ) ) {
766 759
                 // Get user question grade
767 760
                 $question_grade = WooThemes_Sensei_Utils::sensei_grade_question_auto( $question_id, $question_type, $answer, $user_id );
768 761
                 $all_question_grades[ $question_id ] = $question_grade;
@@ -784,8 +777,7 @@  discard block
 block discarded – undo
784 777
 			// Check for zero total from grades
785 778
 			if ( 0 < $quiz_total ) {
786 779
             $grade = abs( round( ( doubleval( $grade_total ) * 100 ) / ( $quiz_total ), 2 ) );
787
-			}
788
-			else {
780
+			} else {
789 781
 				$grade = 0;
790 782
 			}
791 783
             WooThemes_Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id, $quiz_grade_type );
@@ -945,19 +937,19 @@  discard block
 block discarded – undo
945 937
 
946 938
                     return Sensei()->question->get_question_grade($question_id);
947 939
 
948
-                }else{
940
+                } else{
949 941
 
950 942
                     return false;
951 943
 
952 944
                 }
953 945
 
954
-            }else{
946
+            } else{
955 947
 
956 948
                 return false;
957 949
 
958 950
             }
959 951
 
960
-        }else{
952
+        } else{
961 953
 
962 954
             // Case Sensitive Check that the 'gap' is "exactly" equal to the given answer
963 955
             if ( trim(strtolower($gapfill_array[1])) == trim(strtolower( $user_answer )) ) {
@@ -970,13 +962,13 @@  discard block
 block discarded – undo
970 962
 
971 963
                     return  Sensei()->question->get_question_grade( $question_id );
972 964
 
973
-                }else{
965
+                } else{
974 966
 
975 967
                     return false;
976 968
 
977 969
                 }
978 970
 
979
-            }else{
971
+            } else{
980 972
 
981 973
                 return false;
982 974
 
Please login to merge, or discard this patch.
Indentation   +326 added lines, -326 removed lines patch added patch discarded remove patch
@@ -21,8 +21,8 @@  discard block
 block discarded – undo
21 21
 	/**
22 22
 	 * Constructor
23 23
 	 * @since  1.3.0
24
-     *
25
-     * @param $file
24
+	 *
25
+	 * @param $file
26 26
 	 */
27 27
 	public function __construct ( $file ) {
28 28
 		$this->name = __( 'Grading', 'woothemes-sensei' );
@@ -284,7 +284,7 @@  discard block
 block discarded – undo
284 284
 		}
285 285
 		if ( isset( $_GET['user_id'] ) && 0 < intval( $_GET['user_id'] ) ) {
286 286
 
287
-            $user_name = Sensei_Student::get_full_name( $_GET['user_id'] );
287
+			$user_name = Sensei_Student::get_full_name( $_GET['user_id'] );
288 288
 			$title .= '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;' . $user_name . '</span>';
289 289
 
290 290
 		} // End If Statement
@@ -318,7 +318,7 @@  discard block
 block discarded – undo
318 318
 		}
319 319
 		if ( isset( $_GET['user'] ) && 0 < intval( $_GET['user'] ) ) {
320 320
 
321
-            $user_name = Sensei_Student::get_full_name( $_GET['user'] );
321
+			$user_name = Sensei_Student::get_full_name( $_GET['user'] );
322 322
 			$title .= '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;' . $user_name . '</span>';
323 323
 
324 324
 		} // End If Statement
@@ -367,15 +367,15 @@  discard block
 block discarded – undo
367 367
 	public function count_statuses( $args = array() ) {
368 368
 		global  $wpdb;
369 369
 
370
-        /**
371
-         * Filter fires inside Sensei_Grading::count_statuses
372
-         *
373
-         * Alter the the post_in array to determine which posts the
374
-         * comment query should be limited to.
375
-         * @since 1.8.0
376
-         * @param array $args
377
-         */
378
-        $args = apply_filters( 'sensei_count_statuses_args', $args );
370
+		/**
371
+		 * Filter fires inside Sensei_Grading::count_statuses
372
+		 *
373
+		 * Alter the the post_in array to determine which posts the
374
+		 * comment query should be limited to.
375
+		 * @since 1.8.0
376
+		 * @param array $args
377
+		 */
378
+		$args = apply_filters( 'sensei_count_statuses_args', $args );
379 379
 
380 380
 		if ( 'course' == $args['type'] ) {
381 381
 			$type = 'sensei_course_status';
@@ -387,7 +387,7 @@  discard block
 block discarded – undo
387 387
 
388 388
 		$query = "SELECT comment_approved, COUNT( * ) AS total FROM {$wpdb->comments} WHERE comment_type = %s ";
389 389
 
390
-        // Restrict to specific posts
390
+		// Restrict to specific posts
391 391
 		if ( isset( $args['post__in'] ) && !empty( $args['post__in'] ) && is_array( $args['post__in'] ) ) {
392 392
 			$query .= ' AND comment_post_ID IN (' . implode( ',', array_map( 'absint', $args['post__in'] ) ) . ')';
393 393
 		}
@@ -522,148 +522,148 @@  discard block
 block discarded – undo
522 522
 		return $html;
523 523
 	} // End lessons_drop_down_html()
524 524
 
525
-    /**
526
-     * The process grading function handles admin grading submissions.
527
-     *
528
-     * This function is hooked on to admin_init. It simply accepts
529
-     * the grades as the Grader selected theme and saves the total grade and
530
-     * individual question grades.
531
-     *
532
-     * @return bool
533
-     */
534
-    public function admin_process_grading_submission() {
525
+	/**
526
+	 * The process grading function handles admin grading submissions.
527
+	 *
528
+	 * This function is hooked on to admin_init. It simply accepts
529
+	 * the grades as the Grader selected theme and saves the total grade and
530
+	 * individual question grades.
531
+	 *
532
+	 * @return bool
533
+	 */
534
+	public function admin_process_grading_submission() {
535 535
 
536
-        // NEEDS REFACTOR/OPTIMISING, such as combining the various meta data stored against the sensei_user_answer entry
537
-        if( ! isset( $_POST['sensei_manual_grade'] )
538
-            || ! wp_verify_nonce( $_POST['_wp_sensei_manual_grading_nonce'], 'sensei_manual_grading' )
539
-            || ! isset( $_GET['quiz_id'] )
540
-            || $_GET['quiz_id'] != $_POST['sensei_manual_grade'] ) {
536
+		// NEEDS REFACTOR/OPTIMISING, such as combining the various meta data stored against the sensei_user_answer entry
537
+		if( ! isset( $_POST['sensei_manual_grade'] )
538
+			|| ! wp_verify_nonce( $_POST['_wp_sensei_manual_grading_nonce'], 'sensei_manual_grading' )
539
+			|| ! isset( $_GET['quiz_id'] )
540
+			|| $_GET['quiz_id'] != $_POST['sensei_manual_grade'] ) {
541 541
 
542
-            return false; //exit and do not grade
542
+			return false; //exit and do not grade
543 543
 
544
-        }
544
+		}
545 545
 
546
-        $quiz_id = $_GET['quiz_id'];
547
-        $user_id = $_GET['user'];
546
+		$quiz_id = $_GET['quiz_id'];
547
+		$user_id = $_GET['user'];
548 548
 
549 549
 
550
-        $questions = Sensei_Utils::sensei_get_quiz_questions( $quiz_id );
551
-        $quiz_lesson_id =  Sensei()->quiz->get_lesson_id( $quiz_id );
552
-        $quiz_grade = 0;
553
-        $count = 0;
554
-        $quiz_grade_total = $_POST['quiz_grade_total'];
555
-        $all_question_grades = array();
556
-        $all_answers_feedback = array();
550
+		$questions = Sensei_Utils::sensei_get_quiz_questions( $quiz_id );
551
+		$quiz_lesson_id =  Sensei()->quiz->get_lesson_id( $quiz_id );
552
+		$quiz_grade = 0;
553
+		$count = 0;
554
+		$quiz_grade_total = $_POST['quiz_grade_total'];
555
+		$all_question_grades = array();
556
+		$all_answers_feedback = array();
557 557
 
558
-        foreach( $questions as $question ) {
558
+		foreach( $questions as $question ) {
559 559
 
560
-            ++$count;
561
-            $question_id = $question->ID;
560
+			++$count;
561
+			$question_id = $question->ID;
562 562
 
563
-            if( isset( $_POST[ 'question_' . $question_id ] ) ) {
563
+			if( isset( $_POST[ 'question_' . $question_id ] ) ) {
564 564
 
565
-                $question_grade = 0;
566
-                if( $_POST[ 'question_' . $question_id ] == 'right' ) {
565
+				$question_grade = 0;
566
+				if( $_POST[ 'question_' . $question_id ] == 'right' ) {
567 567
 
568
-                    $question_grade = $_POST[ 'question_' . $question_id . '_grade' ];
568
+					$question_grade = $_POST[ 'question_' . $question_id . '_grade' ];
569 569
 
570
-                }
570
+				}
571 571
 
572
-                // add data to the array that will, after the loop, be stored on the lesson status
573
-                $all_question_grades[ $question_id ] = $question_grade;
572
+				// add data to the array that will, after the loop, be stored on the lesson status
573
+				$all_question_grades[ $question_id ] = $question_grade;
574 574
 
575
-                // tally up the total quiz grade
576
-                $quiz_grade += $question_grade;
575
+				// tally up the total quiz grade
576
+				$quiz_grade += $question_grade;
577 577
 
578
-            } // endif
578
+			} // endif
579 579
 
580
-            // Question answer feedback / notes
581
-            $question_feedback = '';
582
-            if( isset( $_POST[ 'questions_feedback' ][ $question_id ] ) ){
580
+			// Question answer feedback / notes
581
+			$question_feedback = '';
582
+			if( isset( $_POST[ 'questions_feedback' ][ $question_id ] ) ){
583 583
 
584
-                $question_feedback = wp_unslash( $_POST[ 'questions_feedback' ][ $question_id ] );
584
+				$question_feedback = wp_unslash( $_POST[ 'questions_feedback' ][ $question_id ] );
585 585
 
586
-            }
587
-            $all_answers_feedback[ $question_id ] = $question_feedback;
586
+			}
587
+			$all_answers_feedback[ $question_id ] = $question_feedback;
588 588
 
589
-        } // end for each $questions
589
+		} // end for each $questions
590 590
 
591
-        //store all question grades on the lesson status
592
-        Sensei()->quiz->set_user_grades( $all_question_grades, $quiz_lesson_id , $user_id );
591
+		//store all question grades on the lesson status
592
+		Sensei()->quiz->set_user_grades( $all_question_grades, $quiz_lesson_id , $user_id );
593 593
 
594
-        //store the feedback from grading
595
-        Sensei()->quiz->save_user_answers_feedback( $all_answers_feedback, $quiz_lesson_id , $user_id );
594
+		//store the feedback from grading
595
+		Sensei()->quiz->save_user_answers_feedback( $all_answers_feedback, $quiz_lesson_id , $user_id );
596 596
 
597
-        // $_POST['all_questions_graded'] is set when all questions have been graded
598
-        // in the class sensei grading user quiz -> display()
599
-        if( $_POST['all_questions_graded'] == 'yes' ) {
597
+		// $_POST['all_questions_graded'] is set when all questions have been graded
598
+		// in the class sensei grading user quiz -> display()
599
+		if( $_POST['all_questions_graded'] == 'yes' ) {
600 600
 
601
-            // set the users total quiz grade
601
+			// set the users total quiz grade
602 602
 			if ( 0 < intval( $quiz_grade_total ) ) {
603
-            $grade = abs( round( ( doubleval( $quiz_grade ) * 100 ) / ( $quiz_grade_total ), 2 ) );
603
+			$grade = abs( round( ( doubleval( $quiz_grade ) * 100 ) / ( $quiz_grade_total ), 2 ) );
604 604
 			}
605 605
 			else {
606 606
 				$grade = 0;
607 607
 			}
608
-            Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id );
609
-
610
-            // Duplicating what Frontend->sensei_complete_quiz() does
611
-            $pass_required = get_post_meta( $quiz_id, '_pass_required', true );
612
-            $quiz_passmark = abs( round( doubleval( get_post_meta( $quiz_id, '_quiz_passmark', true ) ), 2 ) );
613
-            $lesson_metadata = array();
614
-            if ( $pass_required ) {
615
-                // Student has reached the pass mark and lesson is complete
616
-                if ( $quiz_passmark <= $grade ) {
617
-                    $lesson_status = 'passed';
618
-                }
619
-                else {
620
-                    $lesson_status = 'failed';
621
-                } // End If Statement
622
-            }
623
-            // Student only has to partake the quiz
624
-            else {
625
-                $lesson_status = 'graded';
626
-            }
627
-            $lesson_metadata['grade'] = $grade; // Technically already set as part of "WooThemes_Sensei_Utils::sensei_grade_quiz()" above
608
+			Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id );
609
+
610
+			// Duplicating what Frontend->sensei_complete_quiz() does
611
+			$pass_required = get_post_meta( $quiz_id, '_pass_required', true );
612
+			$quiz_passmark = abs( round( doubleval( get_post_meta( $quiz_id, '_quiz_passmark', true ) ), 2 ) );
613
+			$lesson_metadata = array();
614
+			if ( $pass_required ) {
615
+				// Student has reached the pass mark and lesson is complete
616
+				if ( $quiz_passmark <= $grade ) {
617
+					$lesson_status = 'passed';
618
+				}
619
+				else {
620
+					$lesson_status = 'failed';
621
+				} // End If Statement
622
+			}
623
+			// Student only has to partake the quiz
624
+			else {
625
+				$lesson_status = 'graded';
626
+			}
627
+			$lesson_metadata['grade'] = $grade; // Technically already set as part of "WooThemes_Sensei_Utils::sensei_grade_quiz()" above
628 628
 
629
-            Sensei_Utils::update_lesson_status( $user_id, $quiz_lesson_id, $lesson_status, $lesson_metadata );
629
+			Sensei_Utils::update_lesson_status( $user_id, $quiz_lesson_id, $lesson_status, $lesson_metadata );
630 630
 
631
-            if(  in_array( $lesson_status, array( 'passed', 'graded'  ) ) ) {
631
+			if(  in_array( $lesson_status, array( 'passed', 'graded'  ) ) ) {
632 632
 
633
-                /**
634
-                 * Summary.
635
-                 *
636
-                 * Description.
637
-                 *
638
-                 * @since 1.7.0
639
-                 *
640
-                 * @param int  $user_id
641
-                 * @param int $quiz_lesson_id
642
-                 */
643
-                do_action( 'sensei_user_lesson_end', $user_id, $quiz_lesson_id );
633
+				/**
634
+				 * Summary.
635
+				 *
636
+				 * Description.
637
+				 *
638
+				 * @since 1.7.0
639
+				 *
640
+				 * @param int  $user_id
641
+				 * @param int $quiz_lesson_id
642
+				 */
643
+				do_action( 'sensei_user_lesson_end', $user_id, $quiz_lesson_id );
644 644
 
645
-            } // end if in_array
645
+			} // end if in_array
646 646
 
647
-        }// end if $_POST['all_que...
647
+		}// end if $_POST['all_que...
648 648
 
649
-        if( isset( $_POST['sensei_grade_next_learner'] ) && strlen( $_POST['sensei_grade_next_learner'] ) > 0 ) {
649
+		if( isset( $_POST['sensei_grade_next_learner'] ) && strlen( $_POST['sensei_grade_next_learner'] ) > 0 ) {
650 650
 
651
-            $load_url = add_query_arg( array( 'message' => 'graded' ) );
651
+			$load_url = add_query_arg( array( 'message' => 'graded' ) );
652 652
 
653
-        } elseif ( isset( $_POST['_wp_http_referer'] ) ) {
653
+		} elseif ( isset( $_POST['_wp_http_referer'] ) ) {
654 654
 
655
-            $load_url = add_query_arg( array( 'message' => 'graded' ), $_POST['_wp_http_referer'] );
655
+			$load_url = add_query_arg( array( 'message' => 'graded' ), $_POST['_wp_http_referer'] );
656 656
 
657
-        } else {
657
+		} else {
658 658
 
659
-            $load_url = add_query_arg( array( 'message' => 'graded' ) );
659
+			$load_url = add_query_arg( array( 'message' => 'graded' ) );
660 660
 
661
-        }
661
+		}
662 662
 
663
-        wp_safe_redirect( esc_url_raw( $load_url ) );
664
-        exit;
663
+		wp_safe_redirect( esc_url_raw( $load_url ) );
664
+		exit;
665 665
 
666
-    } // end admin_process_grading_submission
666
+	} // end admin_process_grading_submission
667 667
 
668 668
 	public function get_redirect_url() {
669 669
 		// Parse POST data
@@ -708,283 +708,283 @@  discard block
 block discarded – undo
708 708
 		} // End If Statement
709 709
 	} // End sensei_grading_notices()
710 710
 
711
-    /**
712
-     * Grade quiz automatically
713
-     *
714
-     * This function grades each question automatically if there all questions are auto gradable. If not
715
-     * the quiz will not be auto gradable.
716
-     *
717
-     * @since 1.7.4
718
-     *
719
-     * @param  integer $quiz_id         ID of quiz
720
-     * @param  array $submitted questions id ans answers {
721
-     *          @type int $question_id
722
-     *          @type mixed $answer
723
-     * }
724
-     * @param  integer $total_questions Total questions in quiz (not used)
725
-     * @param string $quiz_grade_type Optional defaults to auto
726
-     *
727
-     * @return int $quiz_grade total sum of all question grades
728
-     */
729
-    public static function grade_quiz_auto( $quiz_id = 0, $submitted = array(), $total_questions = 0, $quiz_grade_type = 'auto' ) {
730
-
731
-        if( ! ( intval( $quiz_id ) > 0 )  || ! $submitted
732
-            || $quiz_grade_type != 'auto' ) {
733
-            return false; // exit early
734
-        }
735
-
736
-
737
-        $user_id = get_current_user_id();
738
-        $lesson_id =  Sensei()->quiz->get_lesson_id(  $quiz_id ) ;
739
-        $quiz_autogradable = true;
740
-
741
-        /**
742
-         * Filter the types of question types that can be automatically graded.
743
-         *
744
-         * This filter fires inside the auto grade quiz function and provides you with the default list.
745
-         *
746
-         * @param array {
747
-         *      'multiple-choice',
748
-         *      'boolean',
749
-         *      'gap-fill'.
750
-         * }
751
-         */
752
-        $autogradable_question_types = apply_filters( 'sensei_autogradable_question_types', array( 'multiple-choice', 'boolean', 'gap-fill' ) );
753
-
754
-        $grade_total = 0;
755
-        $all_question_grades = array();
756
-        foreach( $submitted as $question_id => $answer ) {
757
-
758
-            // check if the question is autogradable, either by type, or because the grade is 0
759
-            $question_type = Sensei()->question->get_question_type( $question_id );
711
+	/**
712
+	 * Grade quiz automatically
713
+	 *
714
+	 * This function grades each question automatically if there all questions are auto gradable. If not
715
+	 * the quiz will not be auto gradable.
716
+	 *
717
+	 * @since 1.7.4
718
+	 *
719
+	 * @param  integer $quiz_id         ID of quiz
720
+	 * @param  array $submitted questions id ans answers {
721
+	 *          @type int $question_id
722
+	 *          @type mixed $answer
723
+	 * }
724
+	 * @param  integer $total_questions Total questions in quiz (not used)
725
+	 * @param string $quiz_grade_type Optional defaults to auto
726
+	 *
727
+	 * @return int $quiz_grade total sum of all question grades
728
+	 */
729
+	public static function grade_quiz_auto( $quiz_id = 0, $submitted = array(), $total_questions = 0, $quiz_grade_type = 'auto' ) {
730
+
731
+		if( ! ( intval( $quiz_id ) > 0 )  || ! $submitted
732
+			|| $quiz_grade_type != 'auto' ) {
733
+			return false; // exit early
734
+		}
735
+
736
+
737
+		$user_id = get_current_user_id();
738
+		$lesson_id =  Sensei()->quiz->get_lesson_id(  $quiz_id ) ;
739
+		$quiz_autogradable = true;
740
+
741
+		/**
742
+		 * Filter the types of question types that can be automatically graded.
743
+		 *
744
+		 * This filter fires inside the auto grade quiz function and provides you with the default list.
745
+		 *
746
+		 * @param array {
747
+		 *      'multiple-choice',
748
+		 *      'boolean',
749
+		 *      'gap-fill'.
750
+		 * }
751
+		 */
752
+		$autogradable_question_types = apply_filters( 'sensei_autogradable_question_types', array( 'multiple-choice', 'boolean', 'gap-fill' ) );
753
+
754
+		$grade_total = 0;
755
+		$all_question_grades = array();
756
+		foreach( $submitted as $question_id => $answer ) {
757
+
758
+			// check if the question is autogradable, either by type, or because the grade is 0
759
+			$question_type = Sensei()->question->get_question_type( $question_id );
760 760
 			$achievable_grade = Sensei()->question->get_question_grade( $question_id );
761 761
 			// Question has a zero grade, so skip grading
762 762
 			if ( 0 == $achievable_grade ) {
763 763
 				$all_question_grades[ $question_id ] = $achievable_grade;
764 764
 			}
765
-            elseif ( in_array( $question_type, $autogradable_question_types ) ) {
766
-                // Get user question grade
767
-                $question_grade = Sensei_Utils::sensei_grade_question_auto( $question_id, $question_type, $answer, $user_id );
768
-                $all_question_grades[ $question_id ] = $question_grade;
769
-                $grade_total += $question_grade;
765
+			elseif ( in_array( $question_type, $autogradable_question_types ) ) {
766
+				// Get user question grade
767
+				$question_grade = Sensei_Utils::sensei_grade_question_auto( $question_id, $question_type, $answer, $user_id );
768
+				$all_question_grades[ $question_id ] = $question_grade;
769
+				$grade_total += $question_grade;
770 770
 
771
-            } else {
771
+			} else {
772 772
 
773
-                // There is a question that cannot be autograded
774
-                $quiz_autogradable = false;
773
+				// There is a question that cannot be autograded
774
+				$quiz_autogradable = false;
775 775
 
776
-            } // end if in_array( $question_type...
776
+			} // end if in_array( $question_type...
777 777
 
778
-        }// end for each question
778
+		}// end for each question
779 779
 
780
-        // Only if the whole quiz was autogradable do we set a grade
781
-        if ( $quiz_autogradable ) {
780
+		// Only if the whole quiz was autogradable do we set a grade
781
+		if ( $quiz_autogradable ) {
782 782
 
783
-            $quiz_total = Sensei_Utils::sensei_get_quiz_total( $quiz_id );
783
+			$quiz_total = Sensei_Utils::sensei_get_quiz_total( $quiz_id );
784 784
 			// Check for zero total from grades
785 785
 			if ( 0 < $quiz_total ) {
786
-            $grade = abs( round( ( doubleval( $grade_total ) * 100 ) / ( $quiz_total ), 2 ) );
786
+			$grade = abs( round( ( doubleval( $grade_total ) * 100 ) / ( $quiz_total ), 2 ) );
787 787
 			}
788 788
 			else {
789 789
 				$grade = 0;
790 790
 			}
791
-            Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id, $quiz_grade_type );
791
+			Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id, $quiz_grade_type );
792 792
 
793
-        } else {
793
+		} else {
794 794
 
795
-            $grade = new WP_Error( 'autograde', __( 'This quiz is not able to be automatically graded.', 'woothemes-sensei' ) );
795
+			$grade = new WP_Error( 'autograde', __( 'This quiz is not able to be automatically graded.', 'woothemes-sensei' ) );
796 796
 
797
-        }
798
-
799
-        // store the auto gradable grades. If the quiz is not auto gradable the grades can be use as the default
800
-        // when doing manual grading.
801
-        Sensei()->quiz-> set_user_grades( $all_question_grades, $lesson_id, $user_id );
797
+		}
802 798
 
803
-        return $grade;
799
+		// store the auto gradable grades. If the quiz is not auto gradable the grades can be use as the default
800
+		// when doing manual grading.
801
+		Sensei()->quiz-> set_user_grades( $all_question_grades, $lesson_id, $user_id );
804 802
 
805
-    } // End grade_quiz_auto()
803
+		return $grade;
806 804
 
807
-    /**
808
-     * Grade question automatically
809
-     *
810
-     * This function checks the question typ and then grades it accordingly.
811
-     *
812
-     * @since 1.7.4
813
-     *
814
-     * @param integer $question_id
815
-     * @param string $question_type of the standard Sensei question types
816
-     * @param string $answer
817
-     * @param int $user_id
818
-     *
819
-     * @return int $question_grade
820
-     */
821
-    public static function grade_question_auto( $question_id = 0, $question_type = '', $answer = '', $user_id = 0 ) {
822
-
823
-        if( intval( $user_id ) == 0 ) {
824
-
825
-            $user_id = get_current_user_id();
826
-
827
-        }
828
-
829
-        if( ! ( intval( $question_id ) > 0 ) ) {
830
-
831
-            return false;
832
-
833
-        }
834
-
835
-
836
-        Sensei()->question->get_question_type( $question_id );
837
-
838
-        /**
839
-         * Applying a grade before the auto grading takes place.
840
-         *
841
-         * This filter is applied just before the question is auto graded. It fires in the context of a single question
842
-         * in the sensei_grade_question_auto function. It fires irrespective of the question type. If you return a value
843
-         * other than false the auto grade functionality will be ignored and your supplied grade will be user for this question.
844
-         *
845
-         * @param int $question_grade default false
846
-         * @param int $question_id
847
-         * @param string $question_type one of the Sensei question type.
848
-         * @param string $answer user supplied question answer
849
-         */
850
-        $question_grade = apply_filters( 'sensei_pre_grade_question_auto', false, $question_id, $question_type, $answer );
805
+	} // End grade_quiz_auto()
851 806
 
852
-        if ( false !== $question_grade ) {
807
+	/**
808
+	 * Grade question automatically
809
+	 *
810
+	 * This function checks the question typ and then grades it accordingly.
811
+	 *
812
+	 * @since 1.7.4
813
+	 *
814
+	 * @param integer $question_id
815
+	 * @param string $question_type of the standard Sensei question types
816
+	 * @param string $answer
817
+	 * @param int $user_id
818
+	 *
819
+	 * @return int $question_grade
820
+	 */
821
+	public static function grade_question_auto( $question_id = 0, $question_type = '', $answer = '', $user_id = 0 ) {
822
+
823
+		if( intval( $user_id ) == 0 ) {
824
+
825
+			$user_id = get_current_user_id();
826
+
827
+		}
828
+
829
+		if( ! ( intval( $question_id ) > 0 ) ) {
830
+
831
+			return false;
832
+
833
+		}
834
+
835
+
836
+		Sensei()->question->get_question_type( $question_id );
837
+
838
+		/**
839
+		 * Applying a grade before the auto grading takes place.
840
+		 *
841
+		 * This filter is applied just before the question is auto graded. It fires in the context of a single question
842
+		 * in the sensei_grade_question_auto function. It fires irrespective of the question type. If you return a value
843
+		 * other than false the auto grade functionality will be ignored and your supplied grade will be user for this question.
844
+		 *
845
+		 * @param int $question_grade default false
846
+		 * @param int $question_id
847
+		 * @param string $question_type one of the Sensei question type.
848
+		 * @param string $answer user supplied question answer
849
+		 */
850
+		$question_grade = apply_filters( 'sensei_pre_grade_question_auto', false, $question_id, $question_type, $answer );
853 851
 
854
-            return $question_grade;
852
+		if ( false !== $question_grade ) {
855 853
 
856
-        }
854
+			return $question_grade;
857 855
 
858
-        // auto grading core
859
-        if( in_array( $question_type ,  array( 'multiple-choice'  , 'boolean'  ) )   ){
856
+		}
860 857
 
861
-            $right_answer = (array) get_post_meta( $question_id, '_question_right_answer', true );
858
+		// auto grading core
859
+		if( in_array( $question_type ,  array( 'multiple-choice'  , 'boolean'  ) )   ){
862 860
 
863
-            if( 0 == get_magic_quotes_gpc() ) {
864
-                $answer = wp_unslash( $answer );
865
-            }
866
-            $answer = (array) $answer;
867
-            if ( is_array( $right_answer ) && count( $right_answer ) == count( $answer ) ) {
868
-                // Loop through all answers ensure none are 'missing'
869
-                $all_correct = true;
870
-                foreach ( $answer as $check_answer ) {
871
-                    if ( !in_array( $check_answer, $right_answer ) ) {
872
-                        $all_correct = false;
873
-                    }
874
-                }
875
-                // If all correct then grade
876
-                if ( $all_correct ) {
877
-                    $question_grade = Sensei()->question->get_question_grade( $question_id );
878
-                }
879
-            }
861
+			$right_answer = (array) get_post_meta( $question_id, '_question_right_answer', true );
880 862
 
881
-        } elseif( 'gap-fill' == $question_type ){
863
+			if( 0 == get_magic_quotes_gpc() ) {
864
+				$answer = wp_unslash( $answer );
865
+			}
866
+			$answer = (array) $answer;
867
+			if ( is_array( $right_answer ) && count( $right_answer ) == count( $answer ) ) {
868
+				// Loop through all answers ensure none are 'missing'
869
+				$all_correct = true;
870
+				foreach ( $answer as $check_answer ) {
871
+					if ( !in_array( $check_answer, $right_answer ) ) {
872
+						$all_correct = false;
873
+					}
874
+				}
875
+				// If all correct then grade
876
+				if ( $all_correct ) {
877
+					$question_grade = Sensei()->question->get_question_grade( $question_id );
878
+				}
879
+			}
882 880
 
883
-            $question_grade = self::grade_gap_fill_question( $question_id ,$answer );
881
+		} elseif( 'gap-fill' == $question_type ){
884 882
 
885
-        } else{
883
+			$question_grade = self::grade_gap_fill_question( $question_id ,$answer );
886 884
 
887
-            /**
888
-             * Grading questions that are not auto gradable.
889
-             *
890
-             * This filter is applied the context of ta single question within the sensei_grade_question_auto function.
891
-             * It fires for all other questions types. It does not apply to 'multiple-choice'  , 'boolean' and gap-fill.
892
-             *
893
-             * @param int $question_grade default zero
894
-             * @param int $question_id
895
-             * @param string $question_type one of the Sensei question type.
896
-             * @param string $answer user supplied question answer
897
-             */
898
-            $question_grade = ( int ) apply_filters( 'sensei_grade_question_auto', $question_grade, $question_id, $question_type, $answer );
885
+		} else{
899 886
 
900
-        } // end if $question_type
887
+			/**
888
+			 * Grading questions that are not auto gradable.
889
+			 *
890
+			 * This filter is applied the context of ta single question within the sensei_grade_question_auto function.
891
+			 * It fires for all other questions types. It does not apply to 'multiple-choice'  , 'boolean' and gap-fill.
892
+			 *
893
+			 * @param int $question_grade default zero
894
+			 * @param int $question_id
895
+			 * @param string $question_type one of the Sensei question type.
896
+			 * @param string $answer user supplied question answer
897
+			 */
898
+			$question_grade = ( int ) apply_filters( 'sensei_grade_question_auto', $question_grade, $question_id, $question_type, $answer );
901 899
 
902
-        return $question_grade;
903
-    } // end grade_question_auto
900
+		} // end if $question_type
904 901
 
905
-    /**
906
-     * Grading logic specifically for the gap fill questions
907
-     *
908
-     * @since 1.9.0
909
-     * @param $question_id
910
-     * @param $user_answer
911
-     *
912
-     * @return bool | int false or the grade given to the user answer
913
-     */
914
-    public static function grade_gap_fill_question( $question_id, $user_answer ){
902
+		return $question_grade;
903
+	} // end grade_question_auto
915 904
 
916
-        $right_answer = get_post_meta( $question_id, '_question_right_answer', true );
917
-        $gapfill_array = explode( '||', $right_answer );
905
+	/**
906
+	 * Grading logic specifically for the gap fill questions
907
+	 *
908
+	 * @since 1.9.0
909
+	 * @param $question_id
910
+	 * @param $user_answer
911
+	 *
912
+	 * @return bool | int false or the grade given to the user answer
913
+	 */
914
+	public static function grade_gap_fill_question( $question_id, $user_answer ){
918 915
 
919
-        if( 0 == get_magic_quotes_gpc() ) { // deprecated from PHP 5.4 but we still support PHP 5.2
920
-            $user_answer = wp_unslash( $user_answer );
921
-        }
916
+		$right_answer = get_post_meta( $question_id, '_question_right_answer', true );
917
+		$gapfill_array = explode( '||', $right_answer );
922 918
 
923
-        /**
924
-         * case sensitive grading filter
925
-         *
926
-         * alter the value simply use this code in your plugin or the themes functions.php
927
-         * add_filter( 'sensei_gap_fill_case_sensitive_grading','__return_true' );
928
-         *
929
-         * @param bool $do_case_sensitive_comparison default false.
930
-         *
931
-         * @since 1.9.0
932
-         */
933
-        $do_case_sensitive_comparison = apply_filters('sensei_gap_fill_case_sensitive_grading', false );
919
+		if( 0 == get_magic_quotes_gpc() ) { // deprecated from PHP 5.4 but we still support PHP 5.2
920
+			$user_answer = wp_unslash( $user_answer );
921
+		}
922
+
923
+		/**
924
+		 * case sensitive grading filter
925
+		 *
926
+		 * alter the value simply use this code in your plugin or the themes functions.php
927
+		 * add_filter( 'sensei_gap_fill_case_sensitive_grading','__return_true' );
928
+		 *
929
+		 * @param bool $do_case_sensitive_comparison default false.
930
+		 *
931
+		 * @since 1.9.0
932
+		 */
933
+		$do_case_sensitive_comparison = apply_filters('sensei_gap_fill_case_sensitive_grading', false );
934 934
 
935
-        if( $do_case_sensitive_comparison ){
935
+		if( $do_case_sensitive_comparison ){
936 936
 
937
-            // Case Sensitive Check that the 'gap' is "exactly" equal to the given answer
938
-            if ( trim(($gapfill_array[1])) == trim( $user_answer ) ) {
937
+			// Case Sensitive Check that the 'gap' is "exactly" equal to the given answer
938
+			if ( trim(($gapfill_array[1])) == trim( $user_answer ) ) {
939 939
 
940
-                return Sensei()->question->get_question_grade( $question_id );
940
+				return Sensei()->question->get_question_grade( $question_id );
941 941
 
942
-            } else if (@preg_match('/' . $gapfill_array[1] . '/i', null) !== FALSE) {
942
+			} else if (@preg_match('/' . $gapfill_array[1] . '/i', null) !== FALSE) {
943 943
 
944
-                if (preg_match('/' . $gapfill_array[1] . '/i', $user_answer)) {
944
+				if (preg_match('/' . $gapfill_array[1] . '/i', $user_answer)) {
945 945
 
946
-                    return Sensei()->question->get_question_grade($question_id);
946
+					return Sensei()->question->get_question_grade($question_id);
947 947
 
948
-                }else{
948
+				}else{
949 949
 
950
-                    return false;
950
+					return false;
951 951
 
952
-                }
952
+				}
953 953
 
954
-            }else{
954
+			}else{
955 955
 
956
-                return false;
956
+				return false;
957 957
 
958
-            }
958
+			}
959 959
 
960
-        }else{
960
+		}else{
961 961
 
962
-            // Case Sensitive Check that the 'gap' is "exactly" equal to the given answer
963
-            if ( trim(strtolower($gapfill_array[1])) == trim(strtolower( $user_answer )) ) {
962
+			// Case Sensitive Check that the 'gap' is "exactly" equal to the given answer
963
+			if ( trim(strtolower($gapfill_array[1])) == trim(strtolower( $user_answer )) ) {
964 964
 
965
-               return Sensei()->question->get_question_grade( $question_id );
965
+			   return Sensei()->question->get_question_grade( $question_id );
966 966
 
967
-            } else if (@preg_match('/' . $gapfill_array[1] . '/i', null) !== FALSE) {
967
+			} else if (@preg_match('/' . $gapfill_array[1] . '/i', null) !== FALSE) {
968 968
 
969
-                if (preg_match('/' . $gapfill_array[1] . '/i', $user_answer)) {
969
+				if (preg_match('/' . $gapfill_array[1] . '/i', $user_answer)) {
970 970
 
971
-                    return  Sensei()->question->get_question_grade( $question_id );
971
+					return  Sensei()->question->get_question_grade( $question_id );
972 972
 
973
-                }else{
973
+				}else{
974 974
 
975
-                    return false;
975
+					return false;
976 976
 
977
-                }
977
+				}
978 978
 
979
-            }else{
979
+			}else{
980 980
 
981
-                return false;
981
+				return false;
982 982
 
983
-            }
983
+			}
984 984
 
985
-        }
985
+		}
986 986
 
987
-    }
987
+	}
988 988
 
989 989
 } // End Class
990 990
 
Please login to merge, or discard this patch.
Spacing   +242 added lines, -242 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
3 3
 
4 4
 /**
5 5
  * Sensei Grading Class
@@ -24,30 +24,30 @@  discard block
 block discarded – undo
24 24
      *
25 25
      * @param $file
26 26
 	 */
27
-	public function __construct ( $file ) {
28
-		$this->name = __( 'Grading', 'woothemes-sensei' );
27
+	public function __construct($file) {
28
+		$this->name = __('Grading', 'woothemes-sensei');
29 29
 		$this->file = $file;
30 30
 		$this->page_slug = 'sensei_grading';
31 31
 
32 32
 		// Admin functions
33
-		if ( is_admin() ) {
34
-			add_action( 'admin_menu', array( $this, 'grading_admin_menu' ), 20);
35
-			add_action( 'grading_wrapper_container', array( $this, 'wrapper_container'  ) );
36
-			if ( isset( $_GET['page'] ) && ( $_GET['page'] == $this->page_slug ) ) {
37
-				add_action( 'admin_print_scripts', array( $this, 'enqueue_scripts' ) );
38
-				add_action( 'admin_print_styles', array( $this, 'enqueue_styles' ) );
33
+		if (is_admin()) {
34
+			add_action('admin_menu', array($this, 'grading_admin_menu'), 20);
35
+			add_action('grading_wrapper_container', array($this, 'wrapper_container'));
36
+			if (isset($_GET['page']) && ($_GET['page'] == $this->page_slug)) {
37
+				add_action('admin_print_scripts', array($this, 'enqueue_scripts'));
38
+				add_action('admin_print_styles', array($this, 'enqueue_styles'));
39 39
 			}
40 40
 
41
-			add_action( 'admin_init', array( $this, 'admin_process_grading_submission' ) );
41
+			add_action('admin_init', array($this, 'admin_process_grading_submission'));
42 42
 
43
-			add_action( 'admin_notices', array( $this, 'add_grading_notices' ) );
43
+			add_action('admin_notices', array($this, 'add_grading_notices'));
44 44
 //			add_action( 'sensei_grading_notices', array( $this, 'sensei_grading_notices' ) );
45 45
 		} // End If Statement
46 46
 
47 47
 		// Ajax functions
48
-		if ( is_admin() ) {
49
-			add_action( 'wp_ajax_get_lessons_dropdown', array( $this, 'get_lessons_dropdown' ) );
50
-			add_action( 'wp_ajax_get_redirect_url', array( $this, 'get_redirect_url' ) );
48
+		if (is_admin()) {
49
+			add_action('wp_ajax_get_lessons_dropdown', array($this, 'get_lessons_dropdown'));
50
+			add_action('wp_ajax_get_redirect_url', array($this, 'get_redirect_url'));
51 51
 		} // End If Statement
52 52
 	} // End __construct()
53 53
 
@@ -60,8 +60,8 @@  discard block
 block discarded – undo
60 60
 	public function grading_admin_menu() {
61 61
 		global $menu;
62 62
 
63
-		if ( current_user_can( 'manage_sensei_grades' ) ) {
64
-			$grading_page = add_submenu_page('sensei', __('Grading', 'woothemes-sensei'),  __('Grading', 'woothemes-sensei') , 'manage_sensei_grades', $this->page_slug, array( $this, 'grading_page' ) );
63
+		if (current_user_can('manage_sensei_grades')) {
64
+			$grading_page = add_submenu_page('sensei', __('Grading', 'woothemes-sensei'), __('Grading', 'woothemes-sensei'), 'manage_sensei_grades', $this->page_slug, array($this, 'grading_page'));
65 65
 		}
66 66
 
67 67
 	} // End grading_admin_menu()
@@ -74,13 +74,13 @@  discard block
 block discarded – undo
74 74
 	 * @since 1.3.0
75 75
 	 * @return void
76 76
 	 */
77
-	public function enqueue_scripts () {
77
+	public function enqueue_scripts() {
78 78
 
79 79
 
80
-		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
80
+		$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
81 81
 
82 82
 		// Load Grading JS
83
-		wp_enqueue_script( 'sensei-grading-general', Sensei()->plugin_url . 'assets/js/grading-general' . $suffix . '.js', array( 'jquery' ), Sensei()->version );
83
+		wp_enqueue_script('sensei-grading-general', Sensei()->plugin_url.'assets/js/grading-general'.$suffix.'.js', array('jquery'), Sensei()->version);
84 84
 
85 85
 	} // End enqueue_scripts()
86 86
 
@@ -92,11 +92,11 @@  discard block
 block discarded – undo
92 92
 	 * @since 1.0.0
93 93
 	 * @return void
94 94
 	 */
95
-	public function enqueue_styles () {
95
+	public function enqueue_styles() {
96 96
 
97
-		wp_enqueue_style( Sensei()->token . '-admin' );
97
+		wp_enqueue_style(Sensei()->token.'-admin');
98 98
 
99
-		wp_enqueue_style( 'woothemes-sensei-settings-api', Sensei()->plugin_url . 'assets/css/settings.css', '', Sensei()->version );
99
+		wp_enqueue_style('woothemes-sensei-settings-api', Sensei()->plugin_url.'assets/css/settings.css', '', Sensei()->version);
100 100
 
101 101
 	} // End enqueue_styles()
102 102
 
@@ -108,12 +108,12 @@  discard block
 block discarded – undo
108 108
 	public function load_data_table_files() {
109 109
 
110 110
 		// Load Grading Classes
111
-		$classes_to_load = array(	'list-table',
111
+		$classes_to_load = array('list-table',
112 112
 									'grading-main',
113 113
 									'grading-user-quiz'
114 114
 									);
115
-		foreach ( $classes_to_load as $class_file ) {
116
-			Sensei()->load_class( $class_file );
115
+		foreach ($classes_to_load as $class_file) {
116
+			Sensei()->load_class($class_file);
117 117
 		} // End For Loop
118 118
 	} // End load_data_table_files()
119 119
 
@@ -125,16 +125,16 @@  discard block
 block discarded – undo
125 125
 	 * @param  undefined  $optional_data optional constructor arguments
126 126
 	 * @return object                 class instance object
127 127
 	 */
128
-	public function load_data_object( $name = '', $data = 0, $optional_data = null ) {
128
+	public function load_data_object($name = '', $data = 0, $optional_data = null) {
129 129
 		// Load Analysis data
130
-		$object_name = 'WooThemes_Sensei_Grading_' . $name;
131
-		if ( is_null($optional_data) ) {
132
-			$sensei_grading_object = new $object_name( $data );
130
+		$object_name = 'WooThemes_Sensei_Grading_'.$name;
131
+		if (is_null($optional_data)) {
132
+			$sensei_grading_object = new $object_name($data);
133 133
 		}
134 134
 		else {
135
-			$sensei_grading_object = new $object_name( $data, $optional_data );
135
+			$sensei_grading_object = new $object_name($data, $optional_data);
136 136
 		} // End If Statement
137
-		if ( 'Main' == $name ) {
137
+		if ('Main' == $name) {
138 138
 			$sensei_grading_object->prepare_items();
139 139
 		} // End If Statement
140 140
 		return $sensei_grading_object;
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
 	 */
149 149
 	public function grading_page() {
150 150
 
151
-		if ( isset( $_GET['quiz_id'] ) && 0 < intval( $_GET['quiz_id'] ) && isset( $_GET['user'] ) && 0 < intval( $_GET['user'] ) ) {
151
+		if (isset($_GET['quiz_id']) && 0 < intval($_GET['quiz_id']) && isset($_GET['user']) && 0 < intval($_GET['user'])) {
152 152
 			$this->grading_user_quiz_view();
153 153
 		}
154 154
 		else {
@@ -164,23 +164,23 @@  discard block
 block discarded – undo
164 164
 	public function grading_default_view() {
165 165
 
166 166
 		// Load Grading data
167
-		if( !empty( $_GET['course_id'] ) ) {
168
-			$course_id = intval( $_GET['course_id'] );
167
+		if ( ! empty($_GET['course_id'])) {
168
+			$course_id = intval($_GET['course_id']);
169 169
 		}
170
-		if( !empty( $_GET['lesson_id'] ) ) {
171
-			$lesson_id = intval( $_GET['lesson_id'] );
170
+		if ( ! empty($_GET['lesson_id'])) {
171
+			$lesson_id = intval($_GET['lesson_id']);
172 172
 		}
173
-		if( !empty( $_GET['user_id'] ) ) {
174
-			$user_id = intval( $_GET['user_id'] );
173
+		if ( ! empty($_GET['user_id'])) {
174
+			$user_id = intval($_GET['user_id']);
175 175
 		}
176
-		if( !empty( $_GET['view'] ) ) {
177
-			$view = esc_html( $_GET['view'] );
176
+		if ( ! empty($_GET['view'])) {
177
+			$view = esc_html($_GET['view']);
178 178
 		}
179
-		$sensei_grading_overview = $this->load_data_object( 'Main', compact( 'course_id', 'lesson_id', 'user_id', 'view' ) );
179
+		$sensei_grading_overview = $this->load_data_object('Main', compact('course_id', 'lesson_id', 'user_id', 'view'));
180 180
 
181 181
 		// Wrappers
182
-		do_action( 'grading_before_container' );
183
-		do_action( 'grading_wrapper_container', 'top' );
182
+		do_action('grading_before_container');
183
+		do_action('grading_wrapper_container', 'top');
184 184
 		$this->grading_headers();
185 185
 		?>
186 186
 		<div id="poststuff" class="sensei-grading-wrap">
@@ -188,12 +188,12 @@  discard block
 block discarded – undo
188 188
 				<?php $sensei_grading_overview->display(); ?>
189 189
 			</div>
190 190
 			<div class="sensei-grading-extra">
191
-				<?php do_action( 'sensei_grading_extra' ); ?>
191
+				<?php do_action('sensei_grading_extra'); ?>
192 192
 			</div>
193 193
 		</div>
194 194
 		<?php
195
-		do_action( 'grading_wrapper_container', 'bottom' );
196
-		do_action( 'grading_after_container' );
195
+		do_action('grading_wrapper_container', 'bottom');
196
+		do_action('grading_after_container');
197 197
 	} // End grading_default_view()
198 198
 
199 199
 	/**
@@ -206,17 +206,17 @@  discard block
 block discarded – undo
206 206
 		// Load Grading data
207 207
 		$user_id = 0;
208 208
 		$quiz_id = 0;
209
-		if( isset( $_GET['user'] ) ) {
210
-			$user_id = intval( $_GET['user'] );
209
+		if (isset($_GET['user'])) {
210
+			$user_id = intval($_GET['user']);
211 211
 		}
212
-		if( isset( $_GET['quiz_id'] ) ) {
213
-			$quiz_id = intval( $_GET['quiz_id'] );
212
+		if (isset($_GET['quiz_id'])) {
213
+			$quiz_id = intval($_GET['quiz_id']);
214 214
 		}
215
-		$sensei_grading_user_profile = $this->load_data_object( 'User_Quiz', $user_id, $quiz_id );
215
+		$sensei_grading_user_profile = $this->load_data_object('User_Quiz', $user_id, $quiz_id);
216 216
 		// Wrappers
217
-		do_action( 'grading_before_container' );
218
-		do_action( 'grading_wrapper_container', 'top' );
219
-		$this->grading_headers( array( 'nav' => 'user_quiz' ) );
217
+		do_action('grading_before_container');
218
+		do_action('grading_wrapper_container', 'top');
219
+		$this->grading_headers(array('nav' => 'user_quiz'));
220 220
 		?>
221 221
 		<div id="poststuff" class="sensei-grading-wrap user-profile">
222 222
 			<div class="sensei-grading-main">
@@ -225,8 +225,8 @@  discard block
 block discarded – undo
225 225
 			</div>
226 226
 		</div>
227 227
 		<?php
228
-		do_action( 'grading_wrapper_container', 'bottom' );
229
-		do_action( 'grading_after_container' );
228
+		do_action('grading_wrapper_container', 'bottom');
229
+		do_action('grading_after_container');
230 230
 	} // End grading_user_quiz_view()
231 231
 
232 232
 	/**
@@ -234,15 +234,15 @@  discard block
 block discarded – undo
234 234
 	 * @since  1.3.0
235 235
 	 * @return void
236 236
 	 */
237
-	public function grading_headers( $args = array( 'nav' => 'default' ) ) {
237
+	public function grading_headers($args = array('nav' => 'default')) {
238 238
 
239 239
 
240
-		$function = 'grading_' . $args['nav'] . '_nav';
240
+		$function = 'grading_'.$args['nav'].'_nav';
241 241
 		$this->$function();
242 242
 		?>
243
-			<p class="powered-by-woo"><?php _e( 'Powered by', 'woothemes-sensei' ); ?><a href="http://www.woothemes.com/" title="WooThemes"><img src="<?php echo Sensei()->plugin_url; ?>assets/images/woothemes.png" alt="WooThemes" /></a></p>
243
+			<p class="powered-by-woo"><?php _e('Powered by', 'woothemes-sensei'); ?><a href="http://www.woothemes.com/" title="WooThemes"><img src="<?php echo Sensei()->plugin_url; ?>assets/images/woothemes.png" alt="WooThemes" /></a></p>
244 244
 		<?php
245
-		do_action( 'sensei_grading_after_headers' );
245
+		do_action('sensei_grading_after_headers');
246 246
 	} // End grading_headers()
247 247
 
248 248
 	/**
@@ -251,10 +251,10 @@  discard block
 block discarded – undo
251 251
 	 * @param $which string
252 252
 	 * @return void
253 253
 	 */
254
-	public function wrapper_container( $which ) {
255
-		if ( 'top' == $which ) {
254
+	public function wrapper_container($which) {
255
+		if ('top' == $which) {
256 256
 			?><div id="woothemes-sensei" class="wrap woothemes-sensei"><?php
257
-		} elseif ( 'bottom' == $which ) {
257
+		} elseif ('bottom' == $which) {
258 258
 			?></div><!--/#woothemes-sensei--><?php
259 259
 		} // End If Statement
260 260
 	} // End wrapper_container()
@@ -267,29 +267,29 @@  discard block
 block discarded – undo
267 267
 	public function grading_default_nav() {
268 268
 		global  $wp_version;
269 269
 
270
-		$title = sprintf( '<a href="%s">%s</a>', esc_url(add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ) ), esc_html( $this->name ) );
271
-		if ( isset( $_GET['course_id'] ) ) { 
272
-			$course_id = intval( $_GET['course_id'] );
273
-			if ( version_compare($wp_version, '4.1', '>=') ) {
274
-				$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
275
-				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $course_id ) );
270
+		$title = sprintf('<a href="%s">%s</a>', esc_url(add_query_arg(array('page' => $this->page_slug), admin_url('admin.php'))), esc_html($this->name));
271
+		if (isset($_GET['course_id'])) { 
272
+			$course_id = intval($_GET['course_id']);
273
+			if (version_compare($wp_version, '4.1', '>=')) {
274
+				$url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $course_id), admin_url('admin.php'));
275
+				$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($course_id));
276 276
 			}
277 277
 			else {
278
-				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', get_the_title( $course_id ) ); 
278
+				$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', get_the_title($course_id)); 
279 279
 			}
280 280
 		}
281
-		if ( isset( $_GET['lesson_id'] ) ) { 
282
-			$lesson_id = intval( $_GET['lesson_id'] );
283
-			$title .= '&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;' . get_the_title( intval( $lesson_id ) ) . '</span>'; 
281
+		if (isset($_GET['lesson_id'])) { 
282
+			$lesson_id = intval($_GET['lesson_id']);
283
+			$title .= '&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;'.get_the_title(intval($lesson_id)).'</span>'; 
284 284
 		}
285
-		if ( isset( $_GET['user_id'] ) && 0 < intval( $_GET['user_id'] ) ) {
285
+		if (isset($_GET['user_id']) && 0 < intval($_GET['user_id'])) {
286 286
 
287
-            $user_name = Sensei_Student::get_full_name( $_GET['user_id'] );
288
-			$title .= '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;' . $user_name . '</span>';
287
+            $user_name = Sensei_Student::get_full_name($_GET['user_id']);
288
+			$title .= '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;'.$user_name.'</span>';
289 289
 
290 290
 		} // End If Statement
291 291
 		?>
292
-			<h2><?php echo apply_filters( 'sensei_grading_nav_title', $title ); ?></h2>
292
+			<h2><?php echo apply_filters('sensei_grading_nav_title', $title); ?></h2>
293 293
 		<?php
294 294
 	} // End grading_default_nav()
295 295
 
@@ -301,29 +301,29 @@  discard block
 block discarded – undo
301 301
 	public function grading_user_quiz_nav() {
302 302
 		global  $wp_version;
303 303
 
304
-		$title = sprintf( '<a href="%s">%s</a>', add_query_arg( array( 'page' => $this->page_slug ), admin_url( 'admin.php' ) ), esc_html( $this->name ) );
305
-		if ( isset( $_GET['quiz_id'] ) ) { 
306
-			$quiz_id = intval( $_GET['quiz_id'] );
307
-			$lesson_id = get_post_meta( $quiz_id, '_quiz_lesson', true );
308
-			$course_id = get_post_meta( $lesson_id, '_lesson_course', true );
309
-			if ( version_compare($wp_version, '4.1', '>=') ) {
310
-				$url = add_query_arg( array( 'page' => $this->page_slug, 'course_id' => $course_id ), admin_url( 'admin.php' ) );
311
-				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $course_id ) );
304
+		$title = sprintf('<a href="%s">%s</a>', add_query_arg(array('page' => $this->page_slug), admin_url('admin.php')), esc_html($this->name));
305
+		if (isset($_GET['quiz_id'])) { 
306
+			$quiz_id = intval($_GET['quiz_id']);
307
+			$lesson_id = get_post_meta($quiz_id, '_quiz_lesson', true);
308
+			$course_id = get_post_meta($lesson_id, '_lesson_course', true);
309
+			if (version_compare($wp_version, '4.1', '>=')) {
310
+				$url = add_query_arg(array('page' => $this->page_slug, 'course_id' => $course_id), admin_url('admin.php'));
311
+				$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($course_id));
312 312
 			}
313 313
 			else {
314
-				$title .= sprintf( '&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', get_the_title( $course_id ) ); 
314
+				$title .= sprintf('&nbsp;&nbsp;<span class="course-title">&gt;&nbsp;&nbsp;%s</span>', get_the_title($course_id)); 
315 315
 			}
316
-			$url = add_query_arg( array( 'page' => $this->page_slug, 'lesson_id' => $lesson_id ), admin_url( 'admin.php' ) );
317
-			$title .= sprintf( '&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url( $url ), get_the_title( $lesson_id ) );
316
+			$url = add_query_arg(array('page' => $this->page_slug, 'lesson_id' => $lesson_id), admin_url('admin.php'));
317
+			$title .= sprintf('&nbsp;&nbsp;<span class="lesson-title">&gt;&nbsp;&nbsp;<a href="%s">%s</a></span>', esc_url($url), get_the_title($lesson_id));
318 318
 		}
319
-		if ( isset( $_GET['user'] ) && 0 < intval( $_GET['user'] ) ) {
319
+		if (isset($_GET['user']) && 0 < intval($_GET['user'])) {
320 320
 
321
-            $user_name = Sensei_Student::get_full_name( $_GET['user'] );
322
-			$title .= '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;' . $user_name . '</span>';
321
+            $user_name = Sensei_Student::get_full_name($_GET['user']);
322
+			$title .= '&nbsp;&nbsp;<span class="user-title">&gt;&nbsp;&nbsp;'.$user_name.'</span>';
323 323
 
324 324
 		} // End If Statement
325 325
 		?>
326
-			<h2><?php echo apply_filters( 'sensei_grading_nav_title', $title ); ?></h2>
326
+			<h2><?php echo apply_filters('sensei_grading_nav_title', $title); ?></h2>
327 327
 		<?php
328 328
 	} // End grading_user_quiz_nav()
329 329
 
@@ -332,9 +332,9 @@  discard block
 block discarded – undo
332 332
 	 * @since  1.7.0
333 333
 	 * @return array
334 334
 	 */
335
-	public function get_stati( $type ) {
335
+	public function get_stati($type) {
336 336
 		$statuses = array();
337
-		switch( $type ) {
337
+		switch ($type) {
338 338
 			case 'course' :
339 339
 				$statuses = array(
340 340
 					'in-progress',
@@ -364,7 +364,7 @@  discard block
 block discarded – undo
364 364
 	 * @param  array $args (default: array())
365 365
 	 * @return object
366 366
 	 */
367
-	public function count_statuses( $args = array() ) {
367
+	public function count_statuses($args = array()) {
368 368
 		global  $wpdb;
369 369
 
370 370
         /**
@@ -375,71 +375,71 @@  discard block
 block discarded – undo
375 375
          * @since 1.8.0
376 376
          * @param array $args
377 377
          */
378
-        $args = apply_filters( 'sensei_count_statuses_args', $args );
378
+        $args = apply_filters('sensei_count_statuses_args', $args);
379 379
 
380
-		if ( 'course' == $args['type'] ) {
380
+		if ('course' == $args['type']) {
381 381
 			$type = 'sensei_course_status';
382 382
 		}
383 383
 		else {
384 384
 			$type = 'sensei_lesson_status';
385 385
 		}
386
-		$cache_key = 'sensei-' . $args['type'] . '-statuses';
386
+		$cache_key = 'sensei-'.$args['type'].'-statuses';
387 387
 
388 388
 		$query = "SELECT comment_approved, COUNT( * ) AS total FROM {$wpdb->comments} WHERE comment_type = %s ";
389 389
 
390 390
         // Restrict to specific posts
391
-		if ( isset( $args['post__in'] ) && !empty( $args['post__in'] ) && is_array( $args['post__in'] ) ) {
392
-			$query .= ' AND comment_post_ID IN (' . implode( ',', array_map( 'absint', $args['post__in'] ) ) . ')';
391
+		if (isset($args['post__in']) && ! empty($args['post__in']) && is_array($args['post__in'])) {
392
+			$query .= ' AND comment_post_ID IN ('.implode(',', array_map('absint', $args['post__in'])).')';
393 393
 		}
394
-		elseif ( !empty( $args['post_id'] ) ) {
395
-			$query .= $wpdb->prepare( ' AND comment_post_ID = %d', $args['post_id'] );
394
+		elseif ( ! empty($args['post_id'])) {
395
+			$query .= $wpdb->prepare(' AND comment_post_ID = %d', $args['post_id']);
396 396
 		}
397 397
 		// Restrict to specific users
398
-		if ( isset( $args['user_id'] ) && is_array( $args['user_id'] ) ) {
399
-			$query .= ' AND user_id IN (' . implode( ',', array_map( 'absint', $args['user_id'] ) ) . ')';
398
+		if (isset($args['user_id']) && is_array($args['user_id'])) {
399
+			$query .= ' AND user_id IN ('.implode(',', array_map('absint', $args['user_id'])).')';
400 400
 		}
401
-		elseif ( !empty( $args['user_id'] ) ) {
402
-			$query .= $wpdb->prepare( ' AND user_id = %d', $args['user_id'] );
401
+		elseif ( ! empty($args['user_id'])) {
402
+			$query .= $wpdb->prepare(' AND user_id = %d', $args['user_id']);
403 403
 		}
404 404
 		$query .= ' GROUP BY comment_approved';
405 405
 
406
-		$counts = wp_cache_get( $cache_key, 'counts' );
407
-		if ( false === $counts ) {
408
-			$sql = $wpdb->prepare( $query, $type );
409
-			$results = (array) $wpdb->get_results( $sql, ARRAY_A );
410
-			$counts = array_fill_keys( $this->get_stati( $type ), 0 );
406
+		$counts = wp_cache_get($cache_key, 'counts');
407
+		if (false === $counts) {
408
+			$sql = $wpdb->prepare($query, $type);
409
+			$results = (array) $wpdb->get_results($sql, ARRAY_A);
410
+			$counts = array_fill_keys($this->get_stati($type), 0);
411 411
 
412
-			foreach ( $results as $row ) {
413
-				$counts[ $row['comment_approved'] ] = $row['total'];
412
+			foreach ($results as $row) {
413
+				$counts[$row['comment_approved']] = $row['total'];
414 414
 			}
415
-			wp_cache_set( $cache_key, $counts, 'counts' );
415
+			wp_cache_set($cache_key, $counts, 'counts');
416 416
 		}
417 417
 
418
-		if( ! isset( $counts['graded'] ) ) {
418
+		if ( ! isset($counts['graded'])) {
419 419
 			$counts['graded'] = 0;
420 420
 		}
421 421
 
422
-		if( ! isset( $counts['ungraded'] ) ) {
422
+		if ( ! isset($counts['ungraded'])) {
423 423
 			$counts['ungraded'] = 0;
424 424
 		}
425 425
 
426
-		if( ! isset( $counts['passed'] ) ) {
426
+		if ( ! isset($counts['passed'])) {
427 427
 			$counts['passed'] = 0;
428 428
 		}
429 429
 
430
-		if( ! isset( $counts['failed'] ) ) {
430
+		if ( ! isset($counts['failed'])) {
431 431
 			$counts['failed'] = 0;
432 432
 		}
433 433
 
434
-		if( ! isset( $counts['in-progress'] ) ) {
434
+		if ( ! isset($counts['in-progress'])) {
435 435
 			$counts['in-progress'] = 0;
436 436
 		}
437 437
 
438
-		if( ! isset( $counts['complete'] ) ) {
438
+		if ( ! isset($counts['complete'])) {
439 439
 			$counts['complete'] = 0;
440 440
 		}
441 441
 
442
-		return apply_filters( 'sensei_count_statuses', $counts, $type );
442
+		return apply_filters('sensei_count_statuses', $counts, $type);
443 443
 	} // End sensei_count_statuses()
444 444
 
445 445
 	/**
@@ -447,11 +447,11 @@  discard block
 block discarded – undo
447 447
 	 * @since  1.7.0
448 448
 	 * @return string
449 449
 	 */
450
-	public function courses_drop_down_html( $selected_course_id = 0 ) {
450
+	public function courses_drop_down_html($selected_course_id = 0) {
451 451
 
452 452
 		$html = '';
453 453
 
454
-		$course_args = array(   'post_type'         => 'course',
454
+		$course_args = array('post_type'         => 'course',
455 455
 								'posts_per_page'       => -1,
456 456
 								'orderby'           => 'title',
457 457
 								'order'             => 'ASC',
@@ -459,12 +459,12 @@  discard block
 block discarded – undo
459 459
 								'suppress_filters'  => 0,
460 460
 								'fields'            => 'ids',
461 461
 							);
462
-		$courses = get_posts( apply_filters( 'sensei_grading_filter_courses', $course_args ) );
462
+		$courses = get_posts(apply_filters('sensei_grading_filter_courses', $course_args));
463 463
 
464
-		$html .= '<option value="">' . __( 'Select a course', 'woothemes-sensei' ) . '</option>';
465
-		if ( count( $courses ) > 0 ) {
466
-			foreach ($courses as $course_id){
467
-				$html .= '<option value="' . esc_attr( absint( $course_id ) ) . '" ' . selected( $course_id, $selected_course_id, false ) . '>' . esc_html( get_the_title( $course_id ) ) . '</option>' . "\n";
464
+		$html .= '<option value="">'.__('Select a course', 'woothemes-sensei').'</option>';
465
+		if (count($courses) > 0) {
466
+			foreach ($courses as $course_id) {
467
+				$html .= '<option value="'.esc_attr(absint($course_id)).'" '.selected($course_id, $selected_course_id, false).'>'.esc_html(get_the_title($course_id)).'</option>'."\n";
468 468
 			} // End For Loop
469 469
 		} // End If Statement
470 470
 
@@ -485,20 +485,20 @@  discard block
 block discarded – undo
485 485
 		$course_data = array();
486 486
 		parse_str($data, $course_data);
487 487
 
488
-		$course_id = intval( $course_data['course_id'] );
488
+		$course_id = intval($course_data['course_id']);
489 489
 
490
-		$html = $this->lessons_drop_down_html( $course_id );
490
+		$html = $this->lessons_drop_down_html($course_id);
491 491
 
492 492
 		echo $html;
493 493
 		die(); // WordPress may print out a spurious zero without this can be particularly bad if using JSON
494 494
 	}
495 495
 
496
-	public function lessons_drop_down_html( $course_id = 0, $selected_lesson_id = 0 ) {
496
+	public function lessons_drop_down_html($course_id = 0, $selected_lesson_id = 0) {
497 497
 
498 498
 		$html = '';
499
-		if ( 0 < intval( $course_id ) ) {
499
+		if (0 < intval($course_id)) {
500 500
 
501
-			$lesson_args = array( 'post_type'       => 'lesson',
501
+			$lesson_args = array('post_type'       => 'lesson',
502 502
 								'posts_per_page'       => -1,
503 503
 								'orderby'           => 'title',
504 504
 								'order'             => 'ASC',
@@ -508,12 +508,12 @@  discard block
 block discarded – undo
508 508
 								'suppress_filters'  => 0,
509 509
 								'fields'            => 'ids',
510 510
 								);
511
-			$lessons = get_posts( apply_filters( 'sensei_grading_filter_lessons', $lesson_args ) );
511
+			$lessons = get_posts(apply_filters('sensei_grading_filter_lessons', $lesson_args));
512 512
 
513
-			$html .= '<option value="">' . __( 'Select a lesson', 'woothemes-sensei' ) . '</option>';
514
-			if ( count( $lessons ) > 0 ) {
515
-				foreach ( $lessons as $lesson_id ){
516
-					$html .= '<option value="' . esc_attr( absint( $lesson_id ) ) . '" ' . selected( $lesson_id, $selected_lesson_id, false ) . '>' . esc_html( get_the_title( $lesson_id ) ) . '</option>' . "\n";
513
+			$html .= '<option value="">'.__('Select a lesson', 'woothemes-sensei').'</option>';
514
+			if (count($lessons) > 0) {
515
+				foreach ($lessons as $lesson_id) {
516
+					$html .= '<option value="'.esc_attr(absint($lesson_id)).'" '.selected($lesson_id, $selected_lesson_id, false).'>'.esc_html(get_the_title($lesson_id)).'</option>'."\n";
517 517
 				} // End For Loop
518 518
 			} // End If Statement
519 519
 
@@ -534,10 +534,10 @@  discard block
 block discarded – undo
534 534
     public function admin_process_grading_submission() {
535 535
 
536 536
         // NEEDS REFACTOR/OPTIMISING, such as combining the various meta data stored against the sensei_user_answer entry
537
-        if( ! isset( $_POST['sensei_manual_grade'] )
538
-            || ! wp_verify_nonce( $_POST['_wp_sensei_manual_grading_nonce'], 'sensei_manual_grading' )
539
-            || ! isset( $_GET['quiz_id'] )
540
-            || $_GET['quiz_id'] != $_POST['sensei_manual_grade'] ) {
537
+        if ( ! isset($_POST['sensei_manual_grade'])
538
+            || ! wp_verify_nonce($_POST['_wp_sensei_manual_grading_nonce'], 'sensei_manual_grading')
539
+            || ! isset($_GET['quiz_id'])
540
+            || $_GET['quiz_id'] != $_POST['sensei_manual_grade']) {
541 541
 
542 542
             return false; //exit and do not grade
543 543
 
@@ -547,30 +547,30 @@  discard block
 block discarded – undo
547 547
         $user_id = $_GET['user'];
548 548
 
549 549
 
550
-        $questions = Sensei_Utils::sensei_get_quiz_questions( $quiz_id );
551
-        $quiz_lesson_id =  Sensei()->quiz->get_lesson_id( $quiz_id );
550
+        $questions = Sensei_Utils::sensei_get_quiz_questions($quiz_id);
551
+        $quiz_lesson_id = Sensei()->quiz->get_lesson_id($quiz_id);
552 552
         $quiz_grade = 0;
553 553
         $count = 0;
554 554
         $quiz_grade_total = $_POST['quiz_grade_total'];
555 555
         $all_question_grades = array();
556 556
         $all_answers_feedback = array();
557 557
 
558
-        foreach( $questions as $question ) {
558
+        foreach ($questions as $question) {
559 559
 
560 560
             ++$count;
561 561
             $question_id = $question->ID;
562 562
 
563
-            if( isset( $_POST[ 'question_' . $question_id ] ) ) {
563
+            if (isset($_POST['question_'.$question_id])) {
564 564
 
565 565
                 $question_grade = 0;
566
-                if( $_POST[ 'question_' . $question_id ] == 'right' ) {
566
+                if ($_POST['question_'.$question_id] == 'right') {
567 567
 
568
-                    $question_grade = $_POST[ 'question_' . $question_id . '_grade' ];
568
+                    $question_grade = $_POST['question_'.$question_id.'_grade'];
569 569
 
570 570
                 }
571 571
 
572 572
                 // add data to the array that will, after the loop, be stored on the lesson status
573
-                $all_question_grades[ $question_id ] = $question_grade;
573
+                $all_question_grades[$question_id] = $question_grade;
574 574
 
575 575
                 // tally up the total quiz grade
576 576
                 $quiz_grade += $question_grade;
@@ -579,41 +579,41 @@  discard block
 block discarded – undo
579 579
 
580 580
             // Question answer feedback / notes
581 581
             $question_feedback = '';
582
-            if( isset( $_POST[ 'questions_feedback' ][ $question_id ] ) ){
582
+            if (isset($_POST['questions_feedback'][$question_id])) {
583 583
 
584
-                $question_feedback = wp_unslash( $_POST[ 'questions_feedback' ][ $question_id ] );
584
+                $question_feedback = wp_unslash($_POST['questions_feedback'][$question_id]);
585 585
 
586 586
             }
587
-            $all_answers_feedback[ $question_id ] = $question_feedback;
587
+            $all_answers_feedback[$question_id] = $question_feedback;
588 588
 
589 589
         } // end for each $questions
590 590
 
591 591
         //store all question grades on the lesson status
592
-        Sensei()->quiz->set_user_grades( $all_question_grades, $quiz_lesson_id , $user_id );
592
+        Sensei()->quiz->set_user_grades($all_question_grades, $quiz_lesson_id, $user_id);
593 593
 
594 594
         //store the feedback from grading
595
-        Sensei()->quiz->save_user_answers_feedback( $all_answers_feedback, $quiz_lesson_id , $user_id );
595
+        Sensei()->quiz->save_user_answers_feedback($all_answers_feedback, $quiz_lesson_id, $user_id);
596 596
 
597 597
         // $_POST['all_questions_graded'] is set when all questions have been graded
598 598
         // in the class sensei grading user quiz -> display()
599
-        if( $_POST['all_questions_graded'] == 'yes' ) {
599
+        if ($_POST['all_questions_graded'] == 'yes') {
600 600
 
601 601
             // set the users total quiz grade
602
-			if ( 0 < intval( $quiz_grade_total ) ) {
603
-            $grade = abs( round( ( doubleval( $quiz_grade ) * 100 ) / ( $quiz_grade_total ), 2 ) );
602
+			if (0 < intval($quiz_grade_total)) {
603
+            $grade = abs(round((doubleval($quiz_grade) * 100) / ($quiz_grade_total), 2));
604 604
 			}
605 605
 			else {
606 606
 				$grade = 0;
607 607
 			}
608
-            Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id );
608
+            Sensei_Utils::sensei_grade_quiz($quiz_id, $grade, $user_id);
609 609
 
610 610
             // Duplicating what Frontend->sensei_complete_quiz() does
611
-            $pass_required = get_post_meta( $quiz_id, '_pass_required', true );
612
-            $quiz_passmark = abs( round( doubleval( get_post_meta( $quiz_id, '_quiz_passmark', true ) ), 2 ) );
611
+            $pass_required = get_post_meta($quiz_id, '_pass_required', true);
612
+            $quiz_passmark = abs(round(doubleval(get_post_meta($quiz_id, '_quiz_passmark', true)), 2));
613 613
             $lesson_metadata = array();
614
-            if ( $pass_required ) {
614
+            if ($pass_required) {
615 615
                 // Student has reached the pass mark and lesson is complete
616
-                if ( $quiz_passmark <= $grade ) {
616
+                if ($quiz_passmark <= $grade) {
617 617
                     $lesson_status = 'passed';
618 618
                 }
619 619
                 else {
@@ -626,9 +626,9 @@  discard block
 block discarded – undo
626 626
             }
627 627
             $lesson_metadata['grade'] = $grade; // Technically already set as part of "WooThemes_Sensei_Utils::sensei_grade_quiz()" above
628 628
 
629
-            Sensei_Utils::update_lesson_status( $user_id, $quiz_lesson_id, $lesson_status, $lesson_metadata );
629
+            Sensei_Utils::update_lesson_status($user_id, $quiz_lesson_id, $lesson_status, $lesson_metadata);
630 630
 
631
-            if(  in_array( $lesson_status, array( 'passed', 'graded'  ) ) ) {
631
+            if (in_array($lesson_status, array('passed', 'graded'))) {
632 632
 
633 633
                 /**
634 634
                  * Summary.
@@ -640,27 +640,27 @@  discard block
 block discarded – undo
640 640
                  * @param int  $user_id
641 641
                  * @param int $quiz_lesson_id
642 642
                  */
643
-                do_action( 'sensei_user_lesson_end', $user_id, $quiz_lesson_id );
643
+                do_action('sensei_user_lesson_end', $user_id, $quiz_lesson_id);
644 644
 
645 645
             } // end if in_array
646 646
 
647 647
         }// end if $_POST['all_que...
648 648
 
649
-        if( isset( $_POST['sensei_grade_next_learner'] ) && strlen( $_POST['sensei_grade_next_learner'] ) > 0 ) {
649
+        if (isset($_POST['sensei_grade_next_learner']) && strlen($_POST['sensei_grade_next_learner']) > 0) {
650 650
 
651
-            $load_url = add_query_arg( array( 'message' => 'graded' ) );
651
+            $load_url = add_query_arg(array('message' => 'graded'));
652 652
 
653
-        } elseif ( isset( $_POST['_wp_http_referer'] ) ) {
653
+        } elseif (isset($_POST['_wp_http_referer'])) {
654 654
 
655
-            $load_url = add_query_arg( array( 'message' => 'graded' ), $_POST['_wp_http_referer'] );
655
+            $load_url = add_query_arg(array('message' => 'graded'), $_POST['_wp_http_referer']);
656 656
 
657 657
         } else {
658 658
 
659
-            $load_url = add_query_arg( array( 'message' => 'graded' ) );
659
+            $load_url = add_query_arg(array('message' => 'graded'));
660 660
 
661 661
         }
662 662
 
663
-        wp_safe_redirect( esc_url_raw( $load_url ) );
663
+        wp_safe_redirect(esc_url_raw($load_url));
664 664
         exit;
665 665
 
666 666
     } // end admin_process_grading_submission
@@ -671,13 +671,13 @@  discard block
 block discarded – undo
671 671
 		$lesson_data = array();
672 672
 		parse_str($data, $lesson_data);
673 673
 
674
-		$lesson_id = intval( $lesson_data['lesson_id'] );
675
-		$course_id = intval( $lesson_data['course_id'] );
676
-		$grading_view = sanitize_text_field( $lesson_data['view'] );
674
+		$lesson_id = intval($lesson_data['lesson_id']);
675
+		$course_id = intval($lesson_data['course_id']);
676
+		$grading_view = sanitize_text_field($lesson_data['view']);
677 677
 
678 678
 		$redirect_url = '';
679
-		if ( 0 < $lesson_id && 0 < $course_id ) {
680
-			$redirect_url = esc_url_raw( apply_filters( 'sensei_ajax_redirect_url', add_query_arg( array( 'page' => $this->page_slug, 'lesson_id' => $lesson_id, 'course_id' => $course_id, 'view' => $grading_view ), admin_url( 'admin.php' ) ) ) );
679
+		if (0 < $lesson_id && 0 < $course_id) {
680
+			$redirect_url = esc_url_raw(apply_filters('sensei_ajax_redirect_url', add_query_arg(array('page' => $this->page_slug, 'lesson_id' => $lesson_id, 'course_id' => $course_id, 'view' => $grading_view), admin_url('admin.php'))));
681 681
 		} // End If Statement
682 682
 
683 683
 		echo $redirect_url;
@@ -685,11 +685,11 @@  discard block
 block discarded – undo
685 685
 	}
686 686
 
687 687
 	public function add_grading_notices() {
688
-		if( isset( $_GET['page'] ) && $this->page_slug == $_GET['page'] && isset( $_GET['message'] ) && $_GET['message'] ) {
689
-			if( 'graded' == $_GET['message'] ) {
688
+		if (isset($_GET['page']) && $this->page_slug == $_GET['page'] && isset($_GET['message']) && $_GET['message']) {
689
+			if ('graded' == $_GET['message']) {
690 690
 				$msg = array(
691 691
 					'updated',
692
-					__( 'Quiz Graded Successfully!', 'woothemes-sensei' ),
692
+					__('Quiz Graded Successfully!', 'woothemes-sensei'),
693 693
 				);
694 694
 			}
695 695
 			?>
@@ -701,9 +701,9 @@  discard block
 block discarded – undo
701 701
 	}
702 702
 
703 703
 	public function sensei_grading_notices() {
704
-		if ( isset( $_GET['action'] ) && 'graded' == $_GET['action'] ) {
704
+		if (isset($_GET['action']) && 'graded' == $_GET['action']) {
705 705
 			echo '<div class="grading-notice updated">';
706
-				echo '<p>' . __( 'Quiz Graded Successfully!', 'woothemes-sensei' ) . '</p>';
706
+				echo '<p>'.__('Quiz Graded Successfully!', 'woothemes-sensei').'</p>';
707 707
 			echo '</div>';
708 708
 		} // End If Statement
709 709
 	} // End sensei_grading_notices()
@@ -726,16 +726,16 @@  discard block
 block discarded – undo
726 726
      *
727 727
      * @return int $quiz_grade total sum of all question grades
728 728
      */
729
-    public static function grade_quiz_auto( $quiz_id = 0, $submitted = array(), $total_questions = 0, $quiz_grade_type = 'auto' ) {
729
+    public static function grade_quiz_auto($quiz_id = 0, $submitted = array(), $total_questions = 0, $quiz_grade_type = 'auto') {
730 730
 
731
-        if( ! ( intval( $quiz_id ) > 0 )  || ! $submitted
732
-            || $quiz_grade_type != 'auto' ) {
731
+        if ( ! (intval($quiz_id) > 0) || ! $submitted
732
+            || $quiz_grade_type != 'auto') {
733 733
             return false; // exit early
734 734
         }
735 735
 
736 736
 
737 737
         $user_id = get_current_user_id();
738
-        $lesson_id =  Sensei()->quiz->get_lesson_id(  $quiz_id ) ;
738
+        $lesson_id = Sensei()->quiz->get_lesson_id($quiz_id);
739 739
         $quiz_autogradable = true;
740 740
 
741 741
         /**
@@ -749,23 +749,23 @@  discard block
 block discarded – undo
749 749
          *      'gap-fill'.
750 750
          * }
751 751
          */
752
-        $autogradable_question_types = apply_filters( 'sensei_autogradable_question_types', array( 'multiple-choice', 'boolean', 'gap-fill' ) );
752
+        $autogradable_question_types = apply_filters('sensei_autogradable_question_types', array('multiple-choice', 'boolean', 'gap-fill'));
753 753
 
754 754
         $grade_total = 0;
755 755
         $all_question_grades = array();
756
-        foreach( $submitted as $question_id => $answer ) {
756
+        foreach ($submitted as $question_id => $answer) {
757 757
 
758 758
             // check if the question is autogradable, either by type, or because the grade is 0
759
-            $question_type = Sensei()->question->get_question_type( $question_id );
760
-			$achievable_grade = Sensei()->question->get_question_grade( $question_id );
759
+            $question_type = Sensei()->question->get_question_type($question_id);
760
+			$achievable_grade = Sensei()->question->get_question_grade($question_id);
761 761
 			// Question has a zero grade, so skip grading
762
-			if ( 0 == $achievable_grade ) {
763
-				$all_question_grades[ $question_id ] = $achievable_grade;
762
+			if (0 == $achievable_grade) {
763
+				$all_question_grades[$question_id] = $achievable_grade;
764 764
 			}
765
-            elseif ( in_array( $question_type, $autogradable_question_types ) ) {
765
+            elseif (in_array($question_type, $autogradable_question_types)) {
766 766
                 // Get user question grade
767
-                $question_grade = Sensei_Utils::sensei_grade_question_auto( $question_id, $question_type, $answer, $user_id );
768
-                $all_question_grades[ $question_id ] = $question_grade;
767
+                $question_grade = Sensei_Utils::sensei_grade_question_auto($question_id, $question_type, $answer, $user_id);
768
+                $all_question_grades[$question_id] = $question_grade;
769 769
                 $grade_total += $question_grade;
770 770
 
771 771
             } else {
@@ -778,27 +778,27 @@  discard block
 block discarded – undo
778 778
         }// end for each question
779 779
 
780 780
         // Only if the whole quiz was autogradable do we set a grade
781
-        if ( $quiz_autogradable ) {
781
+        if ($quiz_autogradable) {
782 782
 
783
-            $quiz_total = Sensei_Utils::sensei_get_quiz_total( $quiz_id );
783
+            $quiz_total = Sensei_Utils::sensei_get_quiz_total($quiz_id);
784 784
 			// Check for zero total from grades
785
-			if ( 0 < $quiz_total ) {
786
-            $grade = abs( round( ( doubleval( $grade_total ) * 100 ) / ( $quiz_total ), 2 ) );
785
+			if (0 < $quiz_total) {
786
+            $grade = abs(round((doubleval($grade_total) * 100) / ($quiz_total), 2));
787 787
 			}
788 788
 			else {
789 789
 				$grade = 0;
790 790
 			}
791
-            Sensei_Utils::sensei_grade_quiz( $quiz_id, $grade, $user_id, $quiz_grade_type );
791
+            Sensei_Utils::sensei_grade_quiz($quiz_id, $grade, $user_id, $quiz_grade_type);
792 792
 
793 793
         } else {
794 794
 
795
-            $grade = new WP_Error( 'autograde', __( 'This quiz is not able to be automatically graded.', 'woothemes-sensei' ) );
795
+            $grade = new WP_Error('autograde', __('This quiz is not able to be automatically graded.', 'woothemes-sensei'));
796 796
 
797 797
         }
798 798
 
799 799
         // store the auto gradable grades. If the quiz is not auto gradable the grades can be use as the default
800 800
         // when doing manual grading.
801
-        Sensei()->quiz-> set_user_grades( $all_question_grades, $lesson_id, $user_id );
801
+        Sensei()->quiz-> set_user_grades($all_question_grades, $lesson_id, $user_id);
802 802
 
803 803
         return $grade;
804 804
 
@@ -818,22 +818,22 @@  discard block
 block discarded – undo
818 818
      *
819 819
      * @return int $question_grade
820 820
      */
821
-    public static function grade_question_auto( $question_id = 0, $question_type = '', $answer = '', $user_id = 0 ) {
821
+    public static function grade_question_auto($question_id = 0, $question_type = '', $answer = '', $user_id = 0) {
822 822
 
823
-        if( intval( $user_id ) == 0 ) {
823
+        if (intval($user_id) == 0) {
824 824
 
825 825
             $user_id = get_current_user_id();
826 826
 
827 827
         }
828 828
 
829
-        if( ! ( intval( $question_id ) > 0 ) ) {
829
+        if ( ! (intval($question_id) > 0)) {
830 830
 
831 831
             return false;
832 832
 
833 833
         }
834 834
 
835 835
 
836
-        Sensei()->question->get_question_type( $question_id );
836
+        Sensei()->question->get_question_type($question_id);
837 837
 
838 838
         /**
839 839
          * Applying a grade before the auto grading takes place.
@@ -847,42 +847,42 @@  discard block
 block discarded – undo
847 847
          * @param string $question_type one of the Sensei question type.
848 848
          * @param string $answer user supplied question answer
849 849
          */
850
-        $question_grade = apply_filters( 'sensei_pre_grade_question_auto', false, $question_id, $question_type, $answer );
850
+        $question_grade = apply_filters('sensei_pre_grade_question_auto', false, $question_id, $question_type, $answer);
851 851
 
852
-        if ( false !== $question_grade ) {
852
+        if (false !== $question_grade) {
853 853
 
854 854
             return $question_grade;
855 855
 
856 856
         }
857 857
 
858 858
         // auto grading core
859
-        if( in_array( $question_type ,  array( 'multiple-choice'  , 'boolean'  ) )   ){
859
+        if (in_array($question_type, array('multiple-choice', 'boolean'))) {
860 860
 
861
-            $right_answer = (array) get_post_meta( $question_id, '_question_right_answer', true );
861
+            $right_answer = (array) get_post_meta($question_id, '_question_right_answer', true);
862 862
 
863
-            if( 0 == get_magic_quotes_gpc() ) {
864
-                $answer = wp_unslash( $answer );
863
+            if (0 == get_magic_quotes_gpc()) {
864
+                $answer = wp_unslash($answer);
865 865
             }
866 866
             $answer = (array) $answer;
867
-            if ( is_array( $right_answer ) && count( $right_answer ) == count( $answer ) ) {
867
+            if (is_array($right_answer) && count($right_answer) == count($answer)) {
868 868
                 // Loop through all answers ensure none are 'missing'
869 869
                 $all_correct = true;
870
-                foreach ( $answer as $check_answer ) {
871
-                    if ( !in_array( $check_answer, $right_answer ) ) {
870
+                foreach ($answer as $check_answer) {
871
+                    if ( ! in_array($check_answer, $right_answer)) {
872 872
                         $all_correct = false;
873 873
                     }
874 874
                 }
875 875
                 // If all correct then grade
876
-                if ( $all_correct ) {
877
-                    $question_grade = Sensei()->question->get_question_grade( $question_id );
876
+                if ($all_correct) {
877
+                    $question_grade = Sensei()->question->get_question_grade($question_id);
878 878
                 }
879 879
             }
880 880
 
881
-        } elseif( 'gap-fill' == $question_type ){
881
+        } elseif ('gap-fill' == $question_type) {
882 882
 
883
-            $question_grade = self::grade_gap_fill_question( $question_id ,$answer );
883
+            $question_grade = self::grade_gap_fill_question($question_id, $answer);
884 884
 
885
-        } else{
885
+        } else {
886 886
 
887 887
             /**
888 888
              * Grading questions that are not auto gradable.
@@ -895,7 +895,7 @@  discard block
 block discarded – undo
895 895
              * @param string $question_type one of the Sensei question type.
896 896
              * @param string $answer user supplied question answer
897 897
              */
898
-            $question_grade = ( int ) apply_filters( 'sensei_grade_question_auto', $question_grade, $question_id, $question_type, $answer );
898
+            $question_grade = (int) apply_filters('sensei_grade_question_auto', $question_grade, $question_id, $question_type, $answer);
899 899
 
900 900
         } // end if $question_type
901 901
 
@@ -911,13 +911,13 @@  discard block
 block discarded – undo
911 911
      *
912 912
      * @return bool | int false or the grade given to the user answer
913 913
      */
914
-    public static function grade_gap_fill_question( $question_id, $user_answer ){
914
+    public static function grade_gap_fill_question($question_id, $user_answer) {
915 915
 
916
-        $right_answer = get_post_meta( $question_id, '_question_right_answer', true );
917
-        $gapfill_array = explode( '||', $right_answer );
916
+        $right_answer = get_post_meta($question_id, '_question_right_answer', true);
917
+        $gapfill_array = explode('||', $right_answer);
918 918
 
919
-        if( 0 == get_magic_quotes_gpc() ) { // deprecated from PHP 5.4 but we still support PHP 5.2
920
-            $user_answer = wp_unslash( $user_answer );
919
+        if (0 == get_magic_quotes_gpc()) { // deprecated from PHP 5.4 but we still support PHP 5.2
920
+            $user_answer = wp_unslash($user_answer);
921 921
         }
922 922
 
923 923
         /**
@@ -930,53 +930,53 @@  discard block
 block discarded – undo
930 930
          *
931 931
          * @since 1.9.0
932 932
          */
933
-        $do_case_sensitive_comparison = apply_filters('sensei_gap_fill_case_sensitive_grading', false );
933
+        $do_case_sensitive_comparison = apply_filters('sensei_gap_fill_case_sensitive_grading', false);
934 934
 
935
-        if( $do_case_sensitive_comparison ){
935
+        if ($do_case_sensitive_comparison) {
936 936
 
937 937
             // Case Sensitive Check that the 'gap' is "exactly" equal to the given answer
938
-            if ( trim(($gapfill_array[1])) == trim( $user_answer ) ) {
938
+            if (trim(($gapfill_array[1])) == trim($user_answer)) {
939 939
 
940
-                return Sensei()->question->get_question_grade( $question_id );
940
+                return Sensei()->question->get_question_grade($question_id);
941 941
 
942
-            } else if (@preg_match('/' . $gapfill_array[1] . '/i', null) !== FALSE) {
942
+            } else if (@preg_match('/'.$gapfill_array[1].'/i', null) !== FALSE) {
943 943
 
944
-                if (preg_match('/' . $gapfill_array[1] . '/i', $user_answer)) {
944
+                if (preg_match('/'.$gapfill_array[1].'/i', $user_answer)) {
945 945
 
946 946
                     return Sensei()->question->get_question_grade($question_id);
947 947
 
948
-                }else{
948
+                } else {
949 949
 
950 950
                     return false;
951 951
 
952 952
                 }
953 953
 
954
-            }else{
954
+            } else {
955 955
 
956 956
                 return false;
957 957
 
958 958
             }
959 959
 
960
-        }else{
960
+        } else {
961 961
 
962 962
             // Case Sensitive Check that the 'gap' is "exactly" equal to the given answer
963
-            if ( trim(strtolower($gapfill_array[1])) == trim(strtolower( $user_answer )) ) {
963
+            if (trim(strtolower($gapfill_array[1])) == trim(strtolower($user_answer))) {
964 964
 
965
-               return Sensei()->question->get_question_grade( $question_id );
965
+               return Sensei()->question->get_question_grade($question_id);
966 966
 
967
-            } else if (@preg_match('/' . $gapfill_array[1] . '/i', null) !== FALSE) {
967
+            } else if (@preg_match('/'.$gapfill_array[1].'/i', null) !== FALSE) {
968 968
 
969
-                if (preg_match('/' . $gapfill_array[1] . '/i', $user_answer)) {
969
+                if (preg_match('/'.$gapfill_array[1].'/i', $user_answer)) {
970 970
 
971
-                    return  Sensei()->question->get_question_grade( $question_id );
971
+                    return  Sensei()->question->get_question_grade($question_id);
972 972
 
973
-                }else{
973
+                } else {
974 974
 
975 975
                     return false;
976 976
 
977 977
                 }
978 978
 
979
-            }else{
979
+            } else {
980 980
 
981 981
                 return false;
982 982
 
@@ -993,4 +993,4 @@  discard block
 block discarded – undo
993 993
  * for backward compatibility
994 994
  * @since 1.9.0
995 995
  */
996
-class WooThemes_Sensei_Grading extends Sensei_Grading{}
996
+class WooThemes_Sensei_Grading extends Sensei_Grading {}
Please login to merge, or discard this patch.
includes/class-sensei-list-table.php 4 patches
Doc Comments   +1 added lines patch added patch discarded remove patch
@@ -44,6 +44,7 @@
 block discarded – undo
44 44
 	/**
45 45
 	 * Constructor
46 46
 	 * @since  1.2.0
47
+	 * @param string $token
47 48
 	 * @return  void
48 49
 	 */
49 50
 	public function __construct ( $token ) {
Please login to merge, or discard this patch.
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -162,8 +162,8 @@
 block discarded – undo
162 162
 			$sortable[$id] = $data;
163 163
 		}
164 164
 
165
-        $primary = $this->get_primary_column_name();
166
-        $this->_column_headers = array( $columns, $hidden, $sortable, $primary );
165
+		$primary = $this->get_primary_column_name();
166
+		$this->_column_headers = array( $columns, $hidden, $sortable, $primary );
167 167
 
168 168
 		return $this->_column_headers;
169 169
 	}
Please login to merge, or discard this patch.
Spacing   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
3 3
 
4 4
 /**
5 5
  * Sensei Generic List Table Class
@@ -46,17 +46,17 @@  discard block
 block discarded – undo
46 46
 	 * @since  1.2.0
47 47
 	 * @return  void
48 48
 	 */
49
-	public function __construct ( $token ) {
49
+	public function __construct($token) {
50 50
 		// Class Variables
51 51
 		$this->token = $token;
52 52
 
53
-		parent::__construct( array(
54
-								'singular' => 'wp_list_table_' . $this->token, // Singular label
55
-								'plural'   => 'wp_list_table_' . $this->token . 's', // Plural label
53
+		parent::__construct(array(
54
+								'singular' => 'wp_list_table_'.$this->token, // Singular label
55
+								'plural'   => 'wp_list_table_'.$this->token.'s', // Plural label
56 56
 								'ajax'     => false // No Ajax for this table
57
-		) );
57
+		));
58 58
 		// Actions
59
-		add_action( 'sensei_before_list_table', array( $this, 'table_search_form' ), 5 );
59
+		add_action('sensei_before_list_table', array($this, 'table_search_form'), 5);
60 60
 	} // End __construct()
61 61
 
62 62
 	/**
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 	 * @param  array $columns Existing columns
65 65
 	 * @return array          Modified columns
66 66
 	 */
67
-	public function remove_sortable_columns( $columns ) {
67
+	public function remove_sortable_columns($columns) {
68 68
 		return array();
69 69
 	}
70 70
 
@@ -73,14 +73,14 @@  discard block
 block discarded – undo
73 73
 	 * @since  1.2.0
74 74
 	 * @param string $which, helps you decide if you add the markup after (bottom) or before (top) the list
75 75
 	 */
76
-	public function extra_tablenav( $which ) {
77
-		if ( $which == "top" ){
76
+	public function extra_tablenav($which) {
77
+		if ($which == "top") {
78 78
 			//The code that goes before the table is here
79
-			do_action( 'sensei_before_list_table' );
79
+			do_action('sensei_before_list_table');
80 80
 		} // End If Statement
81
-		if ( $which == "bottom" ){
81
+		if ($which == "bottom") {
82 82
 			//The code that goes after the table is there
83
-			do_action( 'sensei_after_list_table' );
83
+			do_action('sensei_after_list_table');
84 84
 		} // End If Statement
85 85
 	} // End extra_tablenav()
86 86
 
@@ -90,20 +90,20 @@  discard block
 block discarded – undo
90 90
 	 * @return void
91 91
 	 */
92 92
 	public function table_search_form() {
93
-		if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) {
93
+		if (empty($_REQUEST['s']) && ! $this->has_items()) {
94 94
 			return;
95 95
 		}
96 96
 		?><form method="get">
97 97
 			<?php
98
-			if( isset( $_GET ) && count( $_GET ) > 0 ) {
99
-				foreach( $_GET as $k => $v ) {
100
-					if( 's' != $k ) {
98
+			if (isset($_GET) && count($_GET) > 0) {
99
+				foreach ($_GET as $k => $v) {
100
+					if ('s' != $k) {
101 101
 						?><input type="hidden" name="<?php echo $k; ?>" value="<?php echo $v; ?>" /><?php
102 102
 					}
103 103
 				}
104 104
 			}
105 105
 			?>
106
-			<?php $this->search_box( __( 'Search Users' ,'woothemes-sensei' ), 'search_id'); ?>
106
+			<?php $this->search_box(__('Search Users', 'woothemes-sensei'), 'search_id'); ?>
107 107
 		</form><?php
108 108
 	} // End table_search_form()
109 109
 
@@ -131,11 +131,11 @@  discard block
 block discarded – undo
131 131
 	 * @return array
132 132
 	 */
133 133
 	function get_column_info() {
134
-		if ( isset( $this->_column_headers ) )
134
+		if (isset($this->_column_headers))
135 135
 			return $this->_column_headers;
136 136
 
137 137
 		$columns = $this->get_columns();
138
-		$hidden = get_hidden_columns( $this->screen );
138
+		$hidden = get_hidden_columns($this->screen);
139 139
 
140 140
 		$sortable_columns = $this->get_sortable_columns();
141 141
 		/**
@@ -148,22 +148,22 @@  discard block
 block discarded – undo
148 148
 		 *
149 149
 		 * @param array $sortable_columns An array of sortable columns.
150 150
 		 */
151
-		$_sortable = apply_filters( "manage_{$this->screen->id}_sortable_columns", $sortable_columns );
151
+		$_sortable = apply_filters("manage_{$this->screen->id}_sortable_columns", $sortable_columns);
152 152
 
153 153
 		$sortable = array();
154
-		foreach ( $_sortable as $id => $data ) {
155
-			if ( empty( $data ) )
154
+		foreach ($_sortable as $id => $data) {
155
+			if (empty($data))
156 156
 				continue;
157 157
 
158 158
 			$data = (array) $data;
159
-			if ( !isset( $data[1] ) )
159
+			if ( ! isset($data[1]))
160 160
 				$data[1] = false;
161 161
 
162 162
 			$sortable[$id] = $data;
163 163
 		}
164 164
 
165 165
         $primary = $this->get_primary_column_name();
166
-        $this->_column_headers = array( $columns, $hidden, $sortable, $primary );
166
+        $this->_column_headers = array($columns, $hidden, $sortable, $primary);
167 167
 
168 168
 		return $this->_column_headers;
169 169
 	}
@@ -174,27 +174,27 @@  discard block
 block discarded – undo
174 174
 	 * @since  1.7.0
175 175
 	 * @param object $item The current item
176 176
 	 */
177
-	function single_row( $item ) {
177
+	function single_row($item) {
178 178
 		static $row_class = '';
179
-		$row_class = ( $row_class == '' ? ' class="alternate"' : '' );
179
+		$row_class = ($row_class == '' ? ' class="alternate"' : '');
180 180
 
181
-		echo '<tr' . $row_class . '>';
181
+		echo '<tr'.$row_class.'>';
182 182
 
183
-		$column_data = $this->get_row_data( $item );
183
+		$column_data = $this->get_row_data($item);
184 184
 
185
-		list( $columns, $hidden ) = $this->get_column_info();
185
+		list($columns, $hidden) = $this->get_column_info();
186 186
 
187
-		foreach ( $columns as $column_name => $column_display_name ) {
187
+		foreach ($columns as $column_name => $column_display_name) {
188 188
 			$class = "class='$column_name column-$column_name'";
189 189
 
190 190
 			$style = '';
191
-			if ( in_array( $column_name, $hidden ) )
191
+			if (in_array($column_name, $hidden))
192 192
 				$style = ' style="display:none;"';
193 193
 
194 194
 			$attributes = "$class$style";
195 195
 
196 196
 			echo "<td $attributes>";
197
-			if ( isset($column_data[$column_name]) ) {
197
+			if (isset($column_data[$column_name])) {
198 198
 				echo $column_data[$column_name];
199 199
 			}
200 200
 			echo "</td>";
@@ -208,8 +208,8 @@  discard block
 block discarded – undo
208 208
 	 * @access public
209 209
 	 * @abstract
210 210
 	 */
211
-	protected function get_row_data( $item ) {
212
-		die( 'either function WooThemes_Sensei_List_Table::get_row_data() must be over-ridden in a sub-class or WooThemes_Sensei_List_Table::single_row() should be.' );
211
+	protected function get_row_data($item) {
212
+		die('either function WooThemes_Sensei_List_Table::get_row_data() must be over-ridden in a sub-class or WooThemes_Sensei_List_Table::single_row() should be.');
213 213
 	}
214 214
 
215 215
 	/**
@@ -220,7 +220,7 @@  discard block
 block discarded – undo
220 220
 	 */
221 221
 	function no_items() {
222 222
 
223
-		 _e( 'No items found.', 'woothemes-sensei' );
223
+		 _e('No items found.', 'woothemes-sensei');
224 224
 
225 225
 	} // End no_items()
226 226
 
@@ -238,9 +238,9 @@  discard block
 block discarded – undo
238 238
 	 * @since  1.2.0
239 239
 	 * @return void
240 240
 	 */
241
-	public function bulk_actions( $which = '' ) {
241
+	public function bulk_actions($which = '') {
242 242
 		// This will be output Above the table headers on the left
243
-		echo apply_filters( 'sensei_list_bulk_actions', '' );
243
+		echo apply_filters('sensei_list_bulk_actions', '');
244 244
 	} // End bulk_actions()
245 245
 
246 246
 } // End Class
Please login to merge, or discard this patch.
Braces   +16 added lines, -9 removed lines patch added patch discarded remove patch
@@ -1,5 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined( 'ABSPATH' ) ) {
3
+	exit;
4
+}
5
+// Exit if accessed directly
3 6
 
4 7
 /**
5 8
  * Sensei Generic List Table Class
@@ -131,8 +134,9 @@  discard block
 block discarded – undo
131 134
 	 * @return array
132 135
 	 */
133 136
 	function get_column_info() {
134
-		if ( isset( $this->_column_headers ) )
135
-			return $this->_column_headers;
137
+		if ( isset( $this->_column_headers ) ) {
138
+					return $this->_column_headers;
139
+		}
136 140
 
137 141
 		$columns = $this->get_columns();
138 142
 		$hidden = get_hidden_columns( $this->screen );
@@ -152,12 +156,14 @@  discard block
 block discarded – undo
152 156
 
153 157
 		$sortable = array();
154 158
 		foreach ( $_sortable as $id => $data ) {
155
-			if ( empty( $data ) )
156
-				continue;
159
+			if ( empty( $data ) ) {
160
+							continue;
161
+			}
157 162
 
158 163
 			$data = (array) $data;
159
-			if ( !isset( $data[1] ) )
160
-				$data[1] = false;
164
+			if ( !isset( $data[1] ) ) {
165
+							$data[1] = false;
166
+			}
161 167
 
162 168
 			$sortable[$id] = $data;
163 169
 		}
@@ -188,8 +194,9 @@  discard block
 block discarded – undo
188 194
 			$class = "class='$column_name column-$column_name'";
189 195
 
190 196
 			$style = '';
191
-			if ( in_array( $column_name, $hidden ) )
192
-				$style = ' style="display:none;"';
197
+			if ( in_array( $column_name, $hidden ) ) {
198
+							$style = ' style="display:none;"';
199
+			}
193 200
 
194 201
 			$attributes = "$class$style";
195 202
 
Please login to merge, or discard this patch.
includes/class-sensei-messages.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -299,7 +299,7 @@
 block discarded – undo
299 299
      * @param  integer $sender_id   ID of sender
300 300
      * @param  integer $receiver_id ID of receiver
301 301
      * @param  string  $message     Message content
302
-     * @param  string  $post_id     ID of post related to message
302
+     * @param  integer  $post_id     ID of post related to message
303 303
      * @return mixed                Message ID on success, boolean false on failure
304 304
      */
305 305
     private function save_new_message_post( $sender_id = 0, $receiver_id = 0, $message = '', $post_id = 0 ) {
Please login to merge, or discard this patch.
Spacing   +177 added lines, -177 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
3 3
 
4 4
 /**
5 5
  * Sensei Messages Class
@@ -21,61 +21,61 @@  discard block
 block discarded – undo
21 21
 	 * Constructor.
22 22
 	 * @since  1.6.0
23 23
 	 */
24
-	public function __construct () {
24
+	public function __construct() {
25 25
 		$this->post_type = 'sensei_message';
26
-		$this->meta_fields = array( 'sender', 'receiver' );
26
+		$this->meta_fields = array('sender', 'receiver');
27 27
 
28 28
 		// Add Messages page to admin menu
29
-		add_action( 'admin_menu', array( $this, 'add_menu_item' ), 40 );
30
-		add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ), 10, 2 );
31
-		add_action( 'admin_menu', array( $this, 'remove_meta_box' ) );
29
+		add_action('admin_menu', array($this, 'add_menu_item'), 40);
30
+		add_action('add_meta_boxes', array($this, 'add_meta_box'), 10, 2);
31
+		add_action('admin_menu', array($this, 'remove_meta_box'));
32 32
 
33 33
 		// Save new private message
34
-		add_action( 'init', array( $this, 'save_new_message' ), 1 );
34
+		add_action('init', array($this, 'save_new_message'), 1);
35 35
 
36 36
 		// Monitor when new reply is posted
37
-		add_action( 'comment_post', array( $this, 'message_reply_received' ), 10, 1 );
37
+		add_action('comment_post', array($this, 'message_reply_received'), 10, 1);
38 38
 
39 39
         // Block WordPress from sending comment update emails for the messages post type
40
-        add_filter('comment_notification_recipients', array( $this, 'stop_wp_comment_emails' ),  20, 2  );
40
+        add_filter('comment_notification_recipients', array($this, 'stop_wp_comment_emails'), 20, 2);
41 41
 
42 42
         // Block WordPress from sending comment moderator emails on the sensei messages post types
43
-        add_filter('comment_moderation_recipients', array( $this, 'stop_wp_comment_emails' ),  20, 2  );
43
+        add_filter('comment_moderation_recipients', array($this, 'stop_wp_comment_emails'), 20, 2);
44 44
 
45 45
 		// Process saving of message posts
46
-		add_action( 'save_post', array( $this, 'save_message' ) );
46
+		add_action('save_post', array($this, 'save_message'));
47 47
 
48 48
 		// Add message links to courses & lessons
49
-		add_action( 'sensei_single_course_content_inside_before', array( $this, 'send_message_link' ), 35 );
49
+		add_action('sensei_single_course_content_inside_before', array($this, 'send_message_link'), 35);
50 50
 
51 51
         // add message link to lesson
52
-        add_action( 'sensei_single_lesson_content_inside_before', array( $this, 'send_message_link' ), 30, 2 );
52
+        add_action('sensei_single_lesson_content_inside_before', array($this, 'send_message_link'), 30, 2);
53 53
 
54 54
         // add message link to lesson
55
-        add_action( 'sensei_single_quiz_questions_before', array( $this, 'send_message_link' ), 10, 2 );
55
+        add_action('sensei_single_quiz_questions_before', array($this, 'send_message_link'), 10, 2);
56 56
 
57 57
 		// Hide messages and replies from users who do not have access
58
-        add_action( 'template_redirect', array( $this, 'message_login' ), 10, 1 );
59
-        add_action( 'pre_get_posts', array( $this, 'message_list' ), 10, 1 );
60
-        add_filter( 'the_title', array( $this, 'message_title' ), 10, 2 );
61
-        add_filter( 'the_content', array( $this, 'message_content' ), 10, 1 );
62
-        add_filter( 'comments_array', array( $this, 'message_replies' ), 100, 1 );
63
-        add_filter( 'get_comments_number', array( $this, 'message_reply_count' ), 100, 2 );
64
-        add_filter( 'comments_open', array( $this, 'message_replies_open' ), 100, 2 );
58
+        add_action('template_redirect', array($this, 'message_login'), 10, 1);
59
+        add_action('pre_get_posts', array($this, 'message_list'), 10, 1);
60
+        add_filter('the_title', array($this, 'message_title'), 10, 2);
61
+        add_filter('the_content', array($this, 'message_content'), 10, 1);
62
+        add_filter('comments_array', array($this, 'message_replies'), 100, 1);
63
+        add_filter('get_comments_number', array($this, 'message_reply_count'), 100, 2);
64
+        add_filter('comments_open', array($this, 'message_replies_open'), 100, 2);
65 65
 	} // End __construct()
66 66
 
67 67
 	public function add_menu_item() {
68 68
 
69
-		if( ! isset( Sensei()->settings->settings['messages_disable'] ) || ! Sensei()->settings->settings['messages_disable'] ) {
70
-			add_submenu_page( 'sensei', __( 'Messages', 'woothemes-sensei'),  __( 'Messages', 'woothemes-sensei') , 'edit_courses', 'edit.php?post_type=sensei_message' );
69
+		if ( ! isset(Sensei()->settings->settings['messages_disable']) || ! Sensei()->settings->settings['messages_disable']) {
70
+			add_submenu_page('sensei', __('Messages', 'woothemes-sensei'), __('Messages', 'woothemes-sensei'), 'edit_courses', 'edit.php?post_type=sensei_message');
71 71
 		}
72 72
 	}
73 73
 
74
-	public function add_meta_box( $post_type, $post ) {
74
+	public function add_meta_box($post_type, $post) {
75 75
 
76
-		if( ! $post_type == $this->post_type ) return;
76
+		if ( ! $post_type == $this->post_type) return;
77 77
 
78
-		add_meta_box( $this->post_type . '-data', __( 'Message Information', 'woothemes-sensei' ), array( $this, 'meta_box_content' ), $this->post_type, 'normal', 'default' );
78
+		add_meta_box($this->post_type.'-data', __('Message Information', 'woothemes-sensei'), array($this, 'meta_box_content'), $this->post_type, 'normal', 'default');
79 79
 
80 80
 	}
81 81
 
@@ -85,25 +85,25 @@  discard block
 block discarded – undo
85 85
 		$settings = array(
86 86
 			array(
87 87
 				'id' 			=> 'sender',
88
-				'label'			=> __( 'Message sent by:', 'woothemes-sensei' ),
89
-				'description'	=> __( 'The username of the learner who sent this message.', 'woothemes-sensei' ),
88
+				'label'			=> __('Message sent by:', 'woothemes-sensei'),
89
+				'description'	=> __('The username of the learner who sent this message.', 'woothemes-sensei'),
90 90
 				'type'			=> 'text',
91 91
 				'default'		=> '',
92
-				'placeholder'	=> __( 'Learner username', 'woothemes-sensei' ),
92
+				'placeholder'	=> __('Learner username', 'woothemes-sensei'),
93 93
 			),
94 94
 			array(
95 95
 				'id' 			=> 'receiver',
96
-				'label'			=> __( 'Message received by:', 'woothemes-sensei' ),
97
-				'description'	=> __( 'The username of the teacher who received this message.', 'woothemes-sensei' ),
96
+				'label'			=> __('Message received by:', 'woothemes-sensei'),
97
+				'description'	=> __('The username of the teacher who received this message.', 'woothemes-sensei'),
98 98
 				'type'			=> 'text',
99 99
 				'default'		=> '',
100
-				'placeholder'	=> __( 'Teacher username', 'woothemes-sensei' ),
100
+				'placeholder'	=> __('Teacher username', 'woothemes-sensei'),
101 101
 			),
102 102
 		);
103 103
 
104
-		$message_posttype = get_post_meta( $post->ID, '_posttype', true );
104
+		$message_posttype = get_post_meta($post->ID, '_posttype', true);
105 105
 
106
-		if( isset( $message_posttype ) && $message_posttype ) {
106
+		if (isset($message_posttype) && $message_posttype) {
107 107
 
108 108
 			$args = array(
109 109
 				'post_type' => $message_posttype,
@@ -113,58 +113,58 @@  discard block
 block discarded – undo
113 113
 				'post_status' => 'publish',
114 114
 			);
115 115
 
116
-			$posts = get_posts( $args );
116
+			$posts = get_posts($args);
117 117
 
118
-			$post_options[0] = sprintf( __( 'Select %1$s', 'woothemes-sensei' ), $message_posttype );
119
-			foreach( $posts as $post_item ) {
120
-				$post_options[ $post_item->ID ] = $post_item->post_title;
118
+			$post_options[0] = sprintf(__('Select %1$s', 'woothemes-sensei'), $message_posttype);
119
+			foreach ($posts as $post_item) {
120
+				$post_options[$post_item->ID] = $post_item->post_title;
121 121
 			}
122 122
 
123 123
 			$settings[] = array(
124 124
 				'id' 			=> 'post',
125
-				'label'			=> sprintf( __( 'Message from %1$s:', 'woothemes-sensei' ), $message_posttype ),
126
-				'description'	=> sprintf( __( 'The %1$s to which this message relates.', 'woothemes-sensei' ), $message_posttype ),
125
+				'label'			=> sprintf(__('Message from %1$s:', 'woothemes-sensei'), $message_posttype),
126
+				'description'	=> sprintf(__('The %1$s to which this message relates.', 'woothemes-sensei'), $message_posttype),
127 127
 				'type'			=> 'select',
128 128
 				'default'		=> 0,
129 129
 				'options'		=> $post_options,
130 130
 			);
131 131
 		}
132 132
 
133
-		$html = Sensei()->admin->render_settings( $settings, $post->ID, 'message-info' );
133
+		$html = Sensei()->admin->render_settings($settings, $post->ID, 'message-info');
134 134
 
135 135
 		echo $html;
136 136
 	}
137 137
 
138
-	public function save_message( $post_id = 0 ) {
138
+	public function save_message($post_id = 0) {
139 139
 		global $post;
140 140
 
141
-		if( $this->post_type != get_post_type() ) return;
141
+		if ($this->post_type != get_post_type()) return;
142 142
 
143
-		if( isset( $_POST['sender'] ) && $_POST['sender'] ) {
144
-			update_post_meta( $post_id, '_sender', $_POST['sender'] );
143
+		if (isset($_POST['sender']) && $_POST['sender']) {
144
+			update_post_meta($post_id, '_sender', $_POST['sender']);
145 145
 		}
146 146
 
147
-		if( isset( $_POST['receiver'] ) && $_POST['receiver'] ) {
148
-			update_post_meta( $post_id, '_receiver', $_POST['receiver'] );
147
+		if (isset($_POST['receiver']) && $_POST['receiver']) {
148
+			update_post_meta($post_id, '_receiver', $_POST['receiver']);
149 149
 		}
150 150
 
151
-		if( isset( $_POST['post'] ) && $_POST['post'] ) {
152
-			update_post_meta( $post_id, '_post', $_POST['post'] );
151
+		if (isset($_POST['post']) && $_POST['post']) {
152
+			update_post_meta($post_id, '_post', $_POST['post']);
153 153
 		}
154 154
 
155
-		remove_action( 'save_post', array( $this, 'save_message' ) );
155
+		remove_action('save_post', array($this, 'save_message'));
156 156
 
157
-		wp_update_post( array( 'ID' => $post_id, 'comment_status' => 'open' ) );
157
+		wp_update_post(array('ID' => $post_id, 'comment_status' => 'open'));
158 158
 
159
-		add_action( 'save_post', array( $this, 'save_message' ) );
159
+		add_action('save_post', array($this, 'save_message'));
160 160
 	}
161 161
 
162
-	public function send_message_link( $post_id = 0, $user_id = 0 ) {
162
+	public function send_message_link($post_id = 0, $user_id = 0) {
163 163
 		global  $post;
164 164
 
165 165
         // only show the link for the allowed post types:
166 166
         $allowed_post_types = array('lesson', 'course', 'quiz');
167
-		if ( ! in_array( get_post_type() , $allowed_post_types ) ) {
167
+		if ( ! in_array(get_post_type(), $allowed_post_types)) {
168 168
 
169 169
 			return;
170 170
 
@@ -172,28 +172,28 @@  discard block
 block discarded – undo
172 172
 
173 173
 		$html = '';
174 174
 
175
-		if( ! isset( Sensei()->settings->settings['messages_disable'] ) || ! Sensei()->settings->settings['messages_disable'] ) {
175
+		if ( ! isset(Sensei()->settings->settings['messages_disable']) || ! Sensei()->settings->settings['messages_disable']) {
176 176
 
177
-			if( ! is_user_logged_in() ) return;
177
+			if ( ! is_user_logged_in()) return;
178 178
 
179
-			if( isset( $_GET['contact'] ) ) {
180
-				$html .= $this->teacher_contact_form( $post );
179
+			if (isset($_GET['contact'])) {
180
+				$html .= $this->teacher_contact_form($post);
181 181
 			} else {
182
-				$href = add_query_arg( array( 'contact' => $post->post_type ) );
183
-
184
-				if( 'lesson' == $post->post_type ) {
185
-					$contact_button_text = __( 'Contact Lesson Teacher', 'woothemes-sensei' );
186
-				} elseif( 'course' == $post->post_type ) {
187
-					$contact_button_text = __( 'Contact Course Teacher', 'woothemes-sensei' );
188
-				}else{
189
-                    $contact_button_text = __( 'Contact Teacher', 'woothemes-sensei' );
182
+				$href = add_query_arg(array('contact' => $post->post_type));
183
+
184
+				if ('lesson' == $post->post_type) {
185
+					$contact_button_text = __('Contact Lesson Teacher', 'woothemes-sensei');
186
+				} elseif ('course' == $post->post_type) {
187
+					$contact_button_text = __('Contact Course Teacher', 'woothemes-sensei');
188
+				} else {
189
+                    $contact_button_text = __('Contact Teacher', 'woothemes-sensei');
190 190
                 }
191 191
 
192
-				$html .= '<p><a class="button send-message-button" href="' . esc_url($href) . '#private_message">' . $contact_button_text . '</a></p>';
192
+				$html .= '<p><a class="button send-message-button" href="'.esc_url($href).'#private_message">'.$contact_button_text.'</a></p>';
193 193
 			}
194 194
 
195
-			if( isset( $this->message_notice ) && isset( $this->message_notice['type'] ) && isset( $this->message_notice['notice'] ) ) {
196
-				$html .= '<div class="sensei-message ' . $this->message_notice['type'] . '">' . $this->message_notice['notice'] . '</div>';
195
+			if (isset($this->message_notice) && isset($this->message_notice['type']) && isset($this->message_notice['notice'])) {
196
+				$html .= '<div class="sensei-message '.$this->message_notice['type'].'">'.$this->message_notice['notice'].'</div>';
197 197
 			}
198 198
 
199 199
 		}
@@ -201,40 +201,40 @@  discard block
 block discarded – undo
201 201
 		echo $html;
202 202
 	}
203 203
 
204
-	public function teacher_contact_form( $post ) {
204
+	public function teacher_contact_form($post) {
205 205
 
206
-		if( ! is_user_logged_in() ) return;
206
+		if ( ! is_user_logged_in()) return;
207 207
 
208 208
 		global $current_user;
209 209
 		wp_get_current_user();
210 210
 
211 211
 		$html = '';
212 212
 
213
-		if( ! isset( $post->ID ) ) return $html;
213
+		if ( ! isset($post->ID)) return $html;
214 214
 
215 215
         //confirm private message
216 216
         $confirmation = '';
217
-        if( isset( $_GET[ 'send' ] ) && 'complete' == $_GET[ 'send' ] ) {
217
+        if (isset($_GET['send']) && 'complete' == $_GET['send']) {
218 218
 
219 219
             $confirmation_message = __('Your private message has been sent.', 'woothemes-sensei');
220
-            $confirmation = '<div class="sensei-message tick">' . $confirmation_message . '</div>';
220
+            $confirmation = '<div class="sensei-message tick">'.$confirmation_message.'</div>';
221 221
 
222 222
         }
223 223
 
224
-		$html .= '<h3 id="private_message">' . __( 'Send Private Message', 'woothemes-sensei' ) . '</h3>';
224
+		$html .= '<h3 id="private_message">'.__('Send Private Message', 'woothemes-sensei').'</h3>';
225 225
         $html .= '<p>';
226
-        $html .=  $confirmation;
226
+        $html .= $confirmation;
227 227
         $html .= '</p>';
228 228
 		$html .= '<form name="contact-teacher" action="" method="post" class="contact-teacher">';
229 229
 			$html .= '<p class="form-row form-row-wide">';
230
-				$html .= '<textarea name="contact_message" placeholder="' . __( 'Enter your private message.', 'woothemes-sensei' ) . '"></textarea>';
230
+				$html .= '<textarea name="contact_message" placeholder="'.__('Enter your private message.', 'woothemes-sensei').'"></textarea>';
231 231
 			$html .= '</p>';
232 232
 			$html .= '<p class="form-row">';
233
-				$html .= '<input type="hidden" name="post_id" value="' . $post->ID . '" />';
234
-				$html .= '<input type="hidden" name="sender_id" value="' . $current_user->ID . '" />';
235
-				$html .= '<input type="hidden" name="receiver_id" value="' . $post->post_author . '" />';
236
-				$html .= wp_nonce_field( 'message_teacher', 'sensei_message_teacher_nonce', true, false );
237
-				$html .= '<input type="submit" class="send_message" value="' . __( 'Send Message', 'woothemes-sensei' ) . '" />';
233
+				$html .= '<input type="hidden" name="post_id" value="'.$post->ID.'" />';
234
+				$html .= '<input type="hidden" name="sender_id" value="'.$current_user->ID.'" />';
235
+				$html .= '<input type="hidden" name="receiver_id" value="'.$post->post_author.'" />';
236
+				$html .= wp_nonce_field('message_teacher', 'sensei_message_teacher_nonce', true, false);
237
+				$html .= '<input type="submit" class="send_message" value="'.__('Send Message', 'woothemes-sensei').'" />';
238 238
 			$html .= '</p>';
239 239
 			$html .= '<div class="fix"></div>';
240 240
 		$html .= '</form>';
@@ -244,30 +244,30 @@  discard block
 block discarded – undo
244 244
 
245 245
 	public function save_new_message() {
246 246
 
247
-		if( ! isset( $_POST['sensei_message_teacher_nonce'] ) ) return;
247
+		if ( ! isset($_POST['sensei_message_teacher_nonce'])) return;
248 248
 
249
-		if( ! wp_verify_nonce( $_POST['sensei_message_teacher_nonce'], 'message_teacher' ) ) return;
249
+		if ( ! wp_verify_nonce($_POST['sensei_message_teacher_nonce'], 'message_teacher')) return;
250 250
 
251
-		$message_id = $this->save_new_message_post( $_POST['sender_id'], $_POST['receiver_id'], $_POST['contact_message'], $_POST['post_id'] );
251
+		$message_id = $this->save_new_message_post($_POST['sender_id'], $_POST['receiver_id'], $_POST['contact_message'], $_POST['post_id']);
252 252
 
253 253
 	}
254 254
 
255
-	public function message_reply_received( $comment_id = 0 ) {
255
+	public function message_reply_received($comment_id = 0) {
256 256
 
257 257
 		// Get comment object
258
-    	$comment = get_comment( $comment_id );
258
+    	$comment = get_comment($comment_id);
259 259
 
260
-		if( is_null( $comment ) ) return;
260
+		if (is_null($comment)) return;
261 261
 
262 262
 		// Get message post object
263
-		$message = get_post( $comment->comment_post_ID );
263
+		$message = get_post($comment->comment_post_ID);
264 264
 
265
-		if( $message->post_type != $this->post_type ) return;
265
+		if ($message->post_type != $this->post_type) return;
266 266
 
267 267
 		// Force comment to be approved
268
-		wp_set_comment_status( $comment_id, 'approve' );
268
+		wp_set_comment_status($comment_id, 'approve');
269 269
 
270
-		do_action( 'sensei_private_message_reply', $comment, $message );
270
+		do_action('sensei_private_message_reply', $comment, $message);
271 271
 	}
272 272
 
273 273
     /**
@@ -280,11 +280,11 @@  discard block
 block discarded – undo
280 280
      * @param int $comment_id
281 281
      * @return array;
282 282
      */
283
-    public function stop_wp_comment_emails( $emails , $comment_id ){
283
+    public function stop_wp_comment_emails($emails, $comment_id) {
284 284
 
285
-        $comment = get_comment( $comment_id );
286
-        if( isset( $comment->comment_post_ID ) &&
287
-            'sensei_message' == get_post_type( $comment->comment_post_ID )  ){
285
+        $comment = get_comment($comment_id);
286
+        if (isset($comment->comment_post_ID) &&
287
+            'sensei_message' == get_post_type($comment->comment_post_ID)) {
288 288
 
289 289
             // empty the emails array to ensure no emails are sent for this comment
290 290
             $emails = array();
@@ -302,45 +302,45 @@  discard block
 block discarded – undo
302 302
      * @param  string  $post_id     ID of post related to message
303 303
      * @return mixed                Message ID on success, boolean false on failure
304 304
      */
305
-    private function save_new_message_post( $sender_id = 0, $receiver_id = 0, $message = '', $post_id = 0 ) {
305
+    private function save_new_message_post($sender_id = 0, $receiver_id = 0, $message = '', $post_id = 0) {
306 306
 
307 307
     	$message_id = false;
308 308
 
309
-    	if( $sender_id && $receiver_id && $message && $post_id ) {
309
+    	if ($sender_id && $receiver_id && $message && $post_id) {
310 310
 
311
-    		$title = wp_trim_words( $message, 8, '...' );
311
+    		$title = wp_trim_words($message, 8, '...');
312 312
 
313 313
     		// Set up post data for message
314 314
 	    	$message_data = array(
315 315
 	            'post_type'      => $this->post_type,
316
-	            'post_title'     => esc_html( $title ),
317
-	            'post_content'   => esc_html( $message ),
316
+	            'post_title'     => esc_html($title),
317
+	            'post_content'   => esc_html($message),
318 318
 	            'post_status'    => 'publish',
319 319
 	            'ping_status'    => 'closed',
320 320
 	            'comment_status' => 'open',
321 321
 	            'post_excerpt'   => '',
322
-	            'post_author'	 => intval( $sender_id )
322
+	            'post_author'	 => intval($sender_id)
323 323
 	        );
324 324
 
325 325
 	    	// Insert post
326
-	        $message_id = wp_insert_post( $message_data );
326
+	        $message_id = wp_insert_post($message_data);
327 327
 
328
-	        if( ! is_wp_error( $message_id ) ) {
328
+	        if ( ! is_wp_error($message_id)) {
329 329
 
330 330
 	        	// Add sender to message meta
331
-	        	$sender = get_userdata( $sender_id );
332
-	        	add_post_meta( $message_id, '_sender', $sender->user_login );
331
+	        	$sender = get_userdata($sender_id);
332
+	        	add_post_meta($message_id, '_sender', $sender->user_login);
333 333
 
334 334
 	        	// Add receiver to message meta
335
-	        	$receiver = get_userdata( $receiver_id );
336
-		        add_post_meta( $message_id, '_receiver', $receiver->user_login );
335
+	        	$receiver = get_userdata($receiver_id);
336
+		        add_post_meta($message_id, '_receiver', $receiver->user_login);
337 337
 
338 338
 		        // Add lesson/course ID to message meta
339
-		        $post = get_post( $post_id );
340
-		        add_post_meta( $message_id, '_posttype', $post->post_type );
341
-		        add_post_meta( $message_id, '_post', $post->ID );
339
+		        $post = get_post($post_id);
340
+		        add_post_meta($message_id, '_posttype', $post->post_type);
341
+		        add_post_meta($message_id, '_post', $post->ID);
342 342
 
343
-		        do_action( 'sensei_new_private_message', $message_id );
343
+		        do_action('sensei_new_private_message', $message_id);
344 344
 
345 345
 		    } else {
346 346
 
@@ -358,22 +358,22 @@  discard block
 block discarded – undo
358 358
 	 * @param  integer $user_id    ID of user
359 359
 	 * @return boolean             True if user has access to this message
360 360
 	 */
361
-	private function view_message( $message_id, $user_id = 0) {
361
+	private function view_message($message_id, $user_id = 0) {
362 362
 
363
-		if( ! is_user_logged_in() ) return false;
363
+		if ( ! is_user_logged_in()) return false;
364 364
 
365
-		if( $user_id == 0 ) {
365
+		if ($user_id == 0) {
366 366
 			global $current_user;
367 367
 			wp_get_current_user();
368 368
 			$user_login = $current_user->user_login;
369 369
 		}
370 370
 
371 371
 		// Get allowed users
372
-		$receiver = get_post_meta( $message_id, '_receiver', true );
373
-		$sender = get_post_meta( $message_id, '_sender', true );
372
+		$receiver = get_post_meta($message_id, '_receiver', true);
373
+		$sender = get_post_meta($message_id, '_sender', true);
374 374
 
375 375
 		// Check if user is allowed to view the message
376
-		if( in_array( $user_login, array( $receiver, $sender ) ) ) {
376
+		if (in_array($user_login, array($receiver, $sender))) {
377 377
 			return true;
378 378
 		}
379 379
 
@@ -400,27 +400,27 @@  discard block
 block discarded – undo
400 400
      * @return void
401 401
      */
402 402
 
403
-    public function message_login () {
403
+    public function message_login() {
404 404
 
405
-        if ( is_user_logged_in() ) {
405
+        if (is_user_logged_in()) {
406 406
 
407 407
             return;
408 408
         }
409 409
 
410 410
         $settings = Sensei()->settings->get_settings();
411
-        if( isset( $settings[ 'my_course_page' ] )
412
-            && 0 < intval( $settings[ 'my_course_page' ] ) ){
411
+        if (isset($settings['my_course_page'])
412
+            && 0 < intval($settings['my_course_page'])) {
413 413
 
414
-            $my_courses_page_id = $settings[ 'my_course_page' ];
414
+            $my_courses_page_id = $settings['my_course_page'];
415 415
 
416 416
             $my_courses_url = get_permalink($my_courses_page_id);
417 417
 
418 418
         }
419 419
 
420
-        if ( is_single() && is_singular( $this->post_type )
421
-            || is_post_type_archive( $this->post_type ) ) {
420
+        if (is_single() && is_singular($this->post_type)
421
+            || is_post_type_archive($this->post_type)) {
422 422
 
423
-            if ( isset($my_courses_url) ) {
423
+            if (isset($my_courses_url)) {
424 424
 
425 425
                 wp_redirect($my_courses_url, 303);
426 426
                 exit;
@@ -439,12 +439,12 @@  discard block
 block discarded – undo
439 439
      * @param  array $query Original query
440 440
      * @return void
441 441
      */
442
-	public function message_list( $query ) {
442
+	public function message_list($query) {
443 443
 		global $current_user;
444 444
 
445
-		if( is_admin() ) return;
445
+		if (is_admin()) return;
446 446
 
447
-		if( is_post_type_archive( $this->post_type ) && $query->is_main_query() ) {
447
+		if (is_post_type_archive($this->post_type) && $query->is_main_query()) {
448 448
 			wp_get_current_user();
449 449
 			$username = $current_user->user_login;
450 450
 
@@ -462,7 +462,7 @@  discard block
 block discarded – undo
462 462
 				'compare' => '='
463 463
 			);
464 464
 
465
-			$query->set( 'meta_query', $meta_query );
465
+			$query->set('meta_query', $meta_query);
466 466
 
467 467
 			return;
468 468
 		}
@@ -474,11 +474,11 @@  discard block
 block discarded – undo
474 474
 	 * @param  integer $post_id ID of post
475 475
 	 * @return string           Modified string if user does not have access to this message
476 476
 	 */
477
-	public function message_title( $title = '', $post_id = null ) {
477
+	public function message_title($title = '', $post_id = null) {
478 478
 
479
-		if( is_single() && is_singular( $this->post_type ) && in_the_loop() && get_post_type( $post_id ) == $this->post_type ) {
480
-			if( ! is_user_logged_in() || ! $this->view_message( $post_id ) ) {
481
-				$title = __( 'You are not allowed to view this message.', 'woothemes-sensei' );
479
+		if (is_single() && is_singular($this->post_type) && in_the_loop() && get_post_type($post_id) == $this->post_type) {
480
+			if ( ! is_user_logged_in() || ! $this->view_message($post_id)) {
481
+				$title = __('You are not allowed to view this message.', 'woothemes-sensei');
482 482
 			}
483 483
 		}
484 484
 
@@ -490,12 +490,12 @@  discard block
 block discarded – undo
490 490
 	 * @param  string $content Original message content
491 491
 	 * @return string          Empty string if user does not have access to this message
492 492
 	 */
493
-	public function message_content( $content ) {
493
+	public function message_content($content) {
494 494
 		global $post;
495 495
 
496
-		if( is_single() && is_singular( $this->post_type ) && in_the_loop() ) {
497
-			if( ! is_user_logged_in() || ! $this->view_message( $post->ID ) ) {
498
-				$content = __( 'Please log in to view your messages.', 'woothemes-sensei' );
496
+		if (is_single() && is_singular($this->post_type) && in_the_loop()) {
497
+			if ( ! is_user_logged_in() || ! $this->view_message($post->ID)) {
498
+				$content = __('Please log in to view your messages.', 'woothemes-sensei');
499 499
 			}
500 500
 		}
501 501
 
@@ -507,11 +507,11 @@  discard block
 block discarded – undo
507 507
 	 * @param  array $comments Array of replies
508 508
 	 * @return array           Empty array if user does not have access to this message
509 509
 	 */
510
-	public function message_replies( $comments ) {
510
+	public function message_replies($comments) {
511 511
 		global $post;
512 512
 
513
-		if( is_single() && is_singular( $this->post_type ) && in_the_loop() ) {
514
-			if( ! is_user_logged_in() || ! $this->view_message( $post->ID ) ) {
513
+		if (is_single() && is_singular($this->post_type) && in_the_loop()) {
514
+			if ( ! is_user_logged_in() || ! $this->view_message($post->ID)) {
515 515
 				$comments = array();
516 516
 			}
517 517
 		}
@@ -525,11 +525,11 @@  discard block
 block discarded – undo
525 525
 	 * @param  integer $post_id ID of post
526 526
 	 * @return integer          0 if user does not have access to this message
527 527
 	 */
528
-	public function message_reply_count( $count, $post_id ) {
528
+	public function message_reply_count($count, $post_id) {
529 529
 		global $post;
530 530
 
531
-		if( is_single() && is_singular( $this->post_type ) && in_the_loop() ) {
532
-			if( ! is_user_logged_in() || ! $this->view_message( $post->ID ) ) {
531
+		if (is_single() && is_singular($this->post_type) && in_the_loop()) {
532
+			if ( ! is_user_logged_in() || ! $this->view_message($post->ID)) {
533 533
 				$count = 0;
534 534
 			}
535 535
 		}
@@ -543,11 +543,11 @@  discard block
 block discarded – undo
543 543
 	 * @param  integer $post_id ID of post
544 544
 	 * @return boolean          False if user does not have access to this message
545 545
 	 */
546
-	public function message_replies_open( $open, $post_id ) {
546
+	public function message_replies_open($open, $post_id) {
547 547
 		global $post;
548 548
 
549
-		if( is_single() && is_singular( $this->post_type ) && in_the_loop() ) {
550
-			if( ! is_user_logged_in() || ! $this->view_message( $post->ID ) ) {
549
+		if (is_single() && is_singular($this->post_type) && in_the_loop()) {
550
+			if ( ! is_user_logged_in() || ! $this->view_message($post->ID)) {
551 551
 				$open = false;
552 552
 			}
553 553
 		}
@@ -560,17 +560,17 @@  discard block
 block discarded – undo
560 560
      *
561 561
      * @since 1.9.0
562 562
      */
563
-    public static function the_message_sent_by_title(){
563
+    public static function the_message_sent_by_title() {
564 564
 
565
-        $sender_username = get_post_meta( get_the_ID() , '_sender', true );
566
-        if( $sender_username ) {
565
+        $sender_username = get_post_meta(get_the_ID(), '_sender', true);
566
+        if ($sender_username) {
567 567
 
568
-            $sender = get_user_by( 'login', $sender_username ); ?>
568
+            $sender = get_user_by('login', $sender_username); ?>
569 569
 
570 570
             <p class="message-meta">
571 571
                 <small>
572 572
                     <em>
573
-                        <?php printf( __( 'Sent by %1$s on %2$s.', 'woothemes-sensei' ), $sender->display_name, get_the_date() ); ?>
573
+                        <?php printf(__('Sent by %1$s on %2$s.', 'woothemes-sensei'), $sender->display_name, get_the_date()); ?>
574 574
                     </em>
575 575
                 </small>
576 576
             </p>
@@ -589,11 +589,11 @@  discard block
 block discarded – undo
589 589
 
590 590
         global $post;
591 591
 
592
-        $content_post_id = get_post_meta( $post->ID, '_post', true );
593
-        if( $content_post_id ) {
594
-            $title = sprintf( __( 'Re: %1$s', 'woothemes-sensei' ), '<a href="' . get_permalink( $content_post_id ) . '">' . get_the_title( $content_post_id ) . '</a>' );
592
+        $content_post_id = get_post_meta($post->ID, '_post', true);
593
+        if ($content_post_id) {
594
+            $title = sprintf(__('Re: %1$s', 'woothemes-sensei'), '<a href="'.get_permalink($content_post_id).'">'.get_the_title($content_post_id).'</a>');
595 595
         } else {
596
-            $title = get_the_title( $post->ID );
596
+            $title = get_the_title($post->ID);
597 597
         }
598 598
 
599 599
         ?>
@@ -610,7 +610,7 @@  discard block
 block discarded – undo
610 610
                  * @param string $template
611 611
                  * @param string $post_type
612 612
                  */
613
-                echo apply_filters( 'sensei_single_title', $title, $post->post_type );
613
+                echo apply_filters('sensei_single_title', $title, $post->post_type);
614 614
                 ?>
615 615
 
616 616
             </h1>
@@ -629,18 +629,18 @@  discard block
 block discarded – undo
629 629
      *
630 630
      * @return string
631 631
      */
632
-    public static function the_archive_header( ){
632
+    public static function the_archive_header( ) {
633 633
 
634 634
         $html = '';
635 635
         $html .= '<header class="archive-header"><h1>';
636
-        $html .= __( 'My Messages', 'woothemes-sensei' );
636
+        $html .= __('My Messages', 'woothemes-sensei');
637 637
         $html .= '</h1></header>';
638 638
 
639 639
         /**
640 640
          * Filter the sensei messages archive title.
641 641
          * @since 1.0.0
642 642
          */
643
-        echo apply_filters( 'sensei_message_archive_title', $html );
643
+        echo apply_filters('sensei_message_archive_title', $html);
644 644
 
645 645
     } // get_archive_header()
646 646
 
@@ -650,23 +650,23 @@  discard block
 block discarded – undo
650 650
      * @since 1.9.0
651 651
      * @param $post_id
652 652
      */
653
-    public static function the_message_title( $message_post_id ){
653
+    public static function the_message_title($message_post_id) {
654 654
 
655
-        $content_post_id = get_post_meta( $message_post_id, '_post', true );
655
+        $content_post_id = get_post_meta($message_post_id, '_post', true);
656 656
 
657
-        if( $content_post_id ) {
657
+        if ($content_post_id) {
658 658
 
659
-            $title = sprintf( __( 'Re: %1$s', 'woothemes-sensei' ), get_the_title( $content_post_id ) );
659
+            $title = sprintf(__('Re: %1$s', 'woothemes-sensei'), get_the_title($content_post_id));
660 660
 
661 661
         } else {
662 662
 
663
-            $title = get_the_title( $message_post_id );
663
+            $title = get_the_title($message_post_id);
664 664
 
665 665
         }
666 666
 
667 667
         ?>
668 668
         <h2>
669
-            <a href="<?php esc_url( get_permalink( $message_post_id ) );?>">
669
+            <a href="<?php esc_url(get_permalink($message_post_id)); ?>">
670 670
                 <?php echo  $title; ?>
671 671
             </a>
672 672
 
@@ -680,13 +680,13 @@  discard block
 block discarded – undo
680 680
      *
681 681
      * @param $message_post_id
682 682
      */
683
-    public  static function the_message_sender( $message_post_id ){
683
+    public  static function the_message_sender($message_post_id) {
684 684
 
685
-        $sender_username = get_post_meta( $message_post_id, '_sender', true );
686
-        $sender = get_user_by( 'login', $sender_username );
685
+        $sender_username = get_post_meta($message_post_id, '_sender', true);
686
+        $sender = get_user_by('login', $sender_username);
687 687
 
688
-        if( $sender_username && $sender instanceof WP_User ) {
689
-            $sender_display_name = sprintf( __( 'Sent by %1$s on %2$s.', 'woothemes-sensei' ), $sender->display_name, get_the_date() );
688
+        if ($sender_username && $sender instanceof WP_User) {
689
+            $sender_display_name = sprintf(__('Sent by %1$s on %2$s.', 'woothemes-sensei'), $sender->display_name, get_the_date());
690 690
             ?>
691 691
             <p class="message-meta">
692 692
                 <small>
@@ -704,13 +704,13 @@  discard block
 block discarded – undo
704 704
      *
705 705
      * @since 1.9.0
706 706
      */
707
-    public static function the_my_messages_link(){
708
-        if( ! Sensei()->settings->get('messages_disable')  ) {
707
+    public static function the_my_messages_link() {
708
+        if ( ! Sensei()->settings->get('messages_disable')) {
709 709
             ?>
710 710
             <p class="my-messages-link-container">
711
-                <a class="my-messages-link" href="<?php echo get_post_type_archive_link( 'sensei_message' ); ?>"
712
-                   title="<?php _e( 'View & reply to private messages sent to your course & lesson teachers.', 'woothemes-sensei' ); ?>">
713
-                    <?php _e( 'My Messages', 'woothemes-sensei' ); ?>
711
+                <a class="my-messages-link" href="<?php echo get_post_type_archive_link('sensei_message'); ?>"
712
+                   title="<?php _e('View & reply to private messages sent to your course & lesson teachers.', 'woothemes-sensei'); ?>">
713
+                    <?php _e('My Messages', 'woothemes-sensei'); ?>
714 714
                 </a>
715 715
             </p>
716 716
             <?php
@@ -724,4 +724,4 @@  discard block
 block discarded – undo
724 724
  * for backward compatibility
725 725
  * @since 1.9.0
726 726
  */
727
-class WooThemes_Sensei_Messages extends Sensei_Messages{}
727
+class WooThemes_Sensei_Messages extends Sensei_Messages {}
Please login to merge, or discard this patch.
Braces   +39 added lines, -16 removed lines patch added patch discarded remove patch
@@ -1,5 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined( 'ABSPATH' ) ) {
3
+	exit;
4
+}
5
+// Exit if accessed directly
3 6
 
4 7
 /**
5 8
  * Sensei Messages Class
@@ -73,7 +76,9 @@  discard block
 block discarded – undo
73 76
 
74 77
 	public function add_meta_box( $post_type, $post ) {
75 78
 
76
-		if( ! $post_type == $this->post_type ) return;
79
+		if( ! $post_type == $this->post_type ) {
80
+			return;
81
+		}
77 82
 
78 83
 		add_meta_box( $this->post_type . '-data', __( 'Message Information', 'woothemes-sensei' ), array( $this, 'meta_box_content' ), $this->post_type, 'normal', 'default' );
79 84
 
@@ -138,7 +143,9 @@  discard block
 block discarded – undo
138 143
 	public function save_message( $post_id = 0 ) {
139 144
 		global $post;
140 145
 
141
-		if( $this->post_type != get_post_type() ) return;
146
+		if( $this->post_type != get_post_type() ) {
147
+			return;
148
+		}
142 149
 
143 150
 		if( isset( $_POST['sender'] ) && $_POST['sender'] ) {
144 151
 			update_post_meta( $post_id, '_sender', $_POST['sender'] );
@@ -174,7 +181,9 @@  discard block
 block discarded – undo
174 181
 
175 182
 		if( ! isset( Sensei()->settings->settings['messages_disable'] ) || ! Sensei()->settings->settings['messages_disable'] ) {
176 183
 
177
-			if( ! is_user_logged_in() ) return;
184
+			if( ! is_user_logged_in() ) {
185
+				return;
186
+			}
178 187
 
179 188
 			if( isset( $_GET['contact'] ) ) {
180 189
 				$html .= $this->teacher_contact_form( $post );
@@ -185,7 +194,7 @@  discard block
 block discarded – undo
185 194
 					$contact_button_text = __( 'Contact Lesson Teacher', 'woothemes-sensei' );
186 195
 				} elseif( 'course' == $post->post_type ) {
187 196
 					$contact_button_text = __( 'Contact Course Teacher', 'woothemes-sensei' );
188
-				}else{
197
+				} else{
189 198
                     $contact_button_text = __( 'Contact Teacher', 'woothemes-sensei' );
190 199
                 }
191 200
 
@@ -203,14 +212,18 @@  discard block
 block discarded – undo
203 212
 
204 213
 	public function teacher_contact_form( $post ) {
205 214
 
206
-		if( ! is_user_logged_in() ) return;
215
+		if( ! is_user_logged_in() ) {
216
+			return;
217
+		}
207 218
 
208 219
 		global $current_user;
209 220
 		wp_get_current_user();
210 221
 
211 222
 		$html = '';
212 223
 
213
-		if( ! isset( $post->ID ) ) return $html;
224
+		if( ! isset( $post->ID ) ) {
225
+			return $html;
226
+		}
214 227
 
215 228
         //confirm private message
216 229
         $confirmation = '';
@@ -244,9 +257,13 @@  discard block
 block discarded – undo
244 257
 
245 258
 	public function save_new_message() {
246 259
 
247
-		if( ! isset( $_POST['sensei_message_teacher_nonce'] ) ) return;
260
+		if( ! isset( $_POST['sensei_message_teacher_nonce'] ) ) {
261
+			return;
262
+		}
248 263
 
249
-		if( ! wp_verify_nonce( $_POST['sensei_message_teacher_nonce'], 'message_teacher' ) ) return;
264
+		if( ! wp_verify_nonce( $_POST['sensei_message_teacher_nonce'], 'message_teacher' ) ) {
265
+			return;
266
+		}
250 267
 
251 268
 		$message_id = $this->save_new_message_post( $_POST['sender_id'], $_POST['receiver_id'], $_POST['contact_message'], $_POST['post_id'] );
252 269
 
@@ -257,12 +274,16 @@  discard block
 block discarded – undo
257 274
 		// Get comment object
258 275
     	$comment = get_comment( $comment_id );
259 276
 
260
-		if( is_null( $comment ) ) return;
277
+		if( is_null( $comment ) ) {
278
+			return;
279
+		}
261 280
 
262 281
 		// Get message post object
263 282
 		$message = get_post( $comment->comment_post_ID );
264 283
 
265
-		if( $message->post_type != $this->post_type ) return;
284
+		if( $message->post_type != $this->post_type ) {
285
+			return;
286
+		}
266 287
 
267 288
 		// Force comment to be approved
268 289
 		wp_set_comment_status( $comment_id, 'approve' );
@@ -360,7 +381,9 @@  discard block
 block discarded – undo
360 381
 	 */
361 382
 	private function view_message( $message_id, $user_id = 0) {
362 383
 
363
-		if( ! is_user_logged_in() ) return false;
384
+		if( ! is_user_logged_in() ) {
385
+			return false;
386
+		}
364 387
 
365 388
 		if( $user_id == 0 ) {
366 389
 			global $current_user;
@@ -424,9 +447,7 @@  discard block
 block discarded – undo
424 447
 
425 448
                 wp_redirect($my_courses_url, 303);
426 449
                 exit;
427
-            }
428
-
429
-            else {
450
+            } else {
430 451
 
431 452
                 wp_redirect(home_url('/wp-login.php'), 303);
432 453
                 exit;
@@ -442,7 +463,9 @@  discard block
 block discarded – undo
442 463
 	public function message_list( $query ) {
443 464
 		global $current_user;
444 465
 
445
-		if( is_admin() ) return;
466
+		if( is_admin() ) {
467
+			return;
468
+		}
446 469
 
447 470
 		if( is_post_type_archive( $this->post_type ) && $query->is_main_query() ) {
448 471
 			wp_get_current_user();
Please login to merge, or discard this patch.
Indentation   +222 added lines, -222 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@  discard block
 block discarded – undo
22 22
 	 * @since  1.6.0
23 23
 	 */
24 24
 	public function __construct () {
25
-        $this->token = 'messages';
25
+		$this->token = 'messages';
26 26
 		$this->post_type = 'sensei_message';
27 27
 		$this->meta_fields = array( 'sender', 'receiver' );
28 28
 
@@ -37,11 +37,11 @@  discard block
 block discarded – undo
37 37
 		// Monitor when new reply is posted
38 38
 		add_action( 'comment_post', array( $this, 'message_reply_received' ), 10, 1 );
39 39
 
40
-        // Block WordPress from sending comment update emails for the messages post type
41
-        add_filter('comment_notification_recipients', array( $this, 'stop_wp_comment_emails' ),  20, 2  );
40
+		// Block WordPress from sending comment update emails for the messages post type
41
+		add_filter('comment_notification_recipients', array( $this, 'stop_wp_comment_emails' ),  20, 2  );
42 42
 
43
-        // Block WordPress from sending comment moderator emails on the sensei messages post types
44
-        add_filter('comment_moderation_recipients', array( $this, 'stop_wp_comment_emails' ),  20, 2  );
43
+		// Block WordPress from sending comment moderator emails on the sensei messages post types
44
+		add_filter('comment_moderation_recipients', array( $this, 'stop_wp_comment_emails' ),  20, 2  );
45 45
 
46 46
 		// Process saving of message posts
47 47
 		add_action( 'save_post', array( $this, 'save_message' ) );
@@ -49,20 +49,20 @@  discard block
 block discarded – undo
49 49
 		// Add message links to courses & lessons
50 50
 		add_action( 'sensei_single_course_content_inside_before', array( $this, 'send_message_link' ), 35 );
51 51
 
52
-        // add message link to lesson
53
-        add_action( 'sensei_single_lesson_content_inside_before', array( $this, 'send_message_link' ), 30, 2 );
52
+		// add message link to lesson
53
+		add_action( 'sensei_single_lesson_content_inside_before', array( $this, 'send_message_link' ), 30, 2 );
54 54
 
55
-        // add message link to lesson
56
-        add_action( 'sensei_single_quiz_questions_before', array( $this, 'send_message_link' ), 10, 2 );
55
+		// add message link to lesson
56
+		add_action( 'sensei_single_quiz_questions_before', array( $this, 'send_message_link' ), 10, 2 );
57 57
 
58 58
 		// Hide messages and replies from users who do not have access
59
-        add_action( 'template_redirect', array( $this, 'message_login' ), 10, 1 );
60
-        add_action( 'pre_get_posts', array( $this, 'message_list' ), 10, 1 );
61
-        add_filter( 'the_title', array( $this, 'message_title' ), 10, 2 );
62
-        add_filter( 'the_content', array( $this, 'message_content' ), 10, 1 );
63
-        add_filter( 'comments_array', array( $this, 'message_replies' ), 100, 1 );
64
-        add_filter( 'get_comments_number', array( $this, 'message_reply_count' ), 100, 2 );
65
-        add_filter( 'comments_open', array( $this, 'message_replies_open' ), 100, 2 );
59
+		add_action( 'template_redirect', array( $this, 'message_login' ), 10, 1 );
60
+		add_action( 'pre_get_posts', array( $this, 'message_list' ), 10, 1 );
61
+		add_filter( 'the_title', array( $this, 'message_title' ), 10, 2 );
62
+		add_filter( 'the_content', array( $this, 'message_content' ), 10, 1 );
63
+		add_filter( 'comments_array', array( $this, 'message_replies' ), 100, 1 );
64
+		add_filter( 'get_comments_number', array( $this, 'message_reply_count' ), 100, 2 );
65
+		add_filter( 'comments_open', array( $this, 'message_replies_open' ), 100, 2 );
66 66
 	} // End __construct()
67 67
 
68 68
 	public function add_menu_item() {
@@ -163,8 +163,8 @@  discard block
 block discarded – undo
163 163
 	public function send_message_link( $post_id = 0, $user_id = 0 ) {
164 164
 		global  $post;
165 165
 
166
-        // only show the link for the allowed post types:
167
-        $allowed_post_types = array('lesson', 'course', 'quiz');
166
+		// only show the link for the allowed post types:
167
+		$allowed_post_types = array('lesson', 'course', 'quiz');
168 168
 		if ( ! in_array( get_post_type() , $allowed_post_types ) ) {
169 169
 
170 170
 			return;
@@ -187,8 +187,8 @@  discard block
 block discarded – undo
187 187
 				} elseif( 'course' == $post->post_type ) {
188 188
 					$contact_button_text = __( 'Contact Course Teacher', 'woothemes-sensei' );
189 189
 				}else{
190
-                    $contact_button_text = __( 'Contact Teacher', 'woothemes-sensei' );
191
-                }
190
+					$contact_button_text = __( 'Contact Teacher', 'woothemes-sensei' );
191
+				}
192 192
 
193 193
 				$html .= '<p><a class="button send-message-button" href="' . esc_url($href) . '#private_message">' . $contact_button_text . '</a></p>';
194 194
 			}
@@ -213,19 +213,19 @@  discard block
 block discarded – undo
213 213
 
214 214
 		if( ! isset( $post->ID ) ) return $html;
215 215
 
216
-        //confirm private message
217
-        $confirmation = '';
218
-        if( isset( $_GET[ 'send' ] ) && 'complete' == $_GET[ 'send' ] ) {
216
+		//confirm private message
217
+		$confirmation = '';
218
+		if( isset( $_GET[ 'send' ] ) && 'complete' == $_GET[ 'send' ] ) {
219 219
 
220
-            $confirmation_message = __('Your private message has been sent.', 'woothemes-sensei');
221
-            $confirmation = '<div class="sensei-message tick">' . $confirmation_message . '</div>';
220
+			$confirmation_message = __('Your private message has been sent.', 'woothemes-sensei');
221
+			$confirmation = '<div class="sensei-message tick">' . $confirmation_message . '</div>';
222 222
 
223
-        }
223
+		}
224 224
 
225 225
 		$html .= '<h3 id="private_message">' . __( 'Send Private Message', 'woothemes-sensei' ) . '</h3>';
226
-        $html .= '<p>';
227
-        $html .=  $confirmation;
228
-        $html .= '</p>';
226
+		$html .= '<p>';
227
+		$html .=  $confirmation;
228
+		$html .= '</p>';
229 229
 		$html .= '<form name="contact-teacher" action="" method="post" class="contact-teacher">';
230 230
 			$html .= '<p class="form-row form-row-wide">';
231 231
 				$html .= '<textarea name="contact_message" placeholder="' . __( 'Enter your private message.', 'woothemes-sensei' ) . '"></textarea>';
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
 	public function message_reply_received( $comment_id = 0 ) {
257 257
 
258 258
 		// Get comment object
259
-    	$comment = get_comment( $comment_id );
259
+		$comment = get_comment( $comment_id );
260 260
 
261 261
 		if( is_null( $comment ) ) return;
262 262
 
@@ -271,87 +271,87 @@  discard block
 block discarded – undo
271 271
 		do_action( 'sensei_private_message_reply', $comment, $message );
272 272
 	}
273 273
 
274
-    /**
275
-     * This function stops WordPress from sending the default comment update emails.
276
-     *
277
-     * This function is hooked into comment_notification_recipients. It will simply return
278
-     * an empty array if the current passed in comment is on a message post type.
279
-     *
280
-     * @param array $emails
281
-     * @param int $comment_id
282
-     * @return array;
283
-     */
284
-    public function stop_wp_comment_emails( $emails , $comment_id ){
274
+	/**
275
+	 * This function stops WordPress from sending the default comment update emails.
276
+	 *
277
+	 * This function is hooked into comment_notification_recipients. It will simply return
278
+	 * an empty array if the current passed in comment is on a message post type.
279
+	 *
280
+	 * @param array $emails
281
+	 * @param int $comment_id
282
+	 * @return array;
283
+	 */
284
+	public function stop_wp_comment_emails( $emails , $comment_id ){
285 285
 
286
-        $comment = get_comment( $comment_id );
287
-        if( isset( $comment->comment_post_ID ) &&
288
-            'sensei_message' == get_post_type( $comment->comment_post_ID )  ){
286
+		$comment = get_comment( $comment_id );
287
+		if( isset( $comment->comment_post_ID ) &&
288
+			'sensei_message' == get_post_type( $comment->comment_post_ID )  ){
289 289
 
290
-            // empty the emails array to ensure no emails are sent for this comment
291
-            $emails = array();
290
+			// empty the emails array to ensure no emails are sent for this comment
291
+			$emails = array();
292 292
 
293
-        }
294
-        return $emails;
293
+		}
294
+		return $emails;
295 295
 
296
-    }// end stop_wp_comment_emails
296
+	}// end stop_wp_comment_emails
297 297
 
298 298
 	/**
299
-     * Save new message post
300
-     * @param  integer $sender_id   ID of sender
301
-     * @param  integer $receiver_id ID of receiver
302
-     * @param  string  $message     Message content
303
-     * @param  string  $post_id     ID of post related to message
304
-     * @return mixed                Message ID on success, boolean false on failure
305
-     */
306
-    private function save_new_message_post( $sender_id = 0, $receiver_id = 0, $message = '', $post_id = 0 ) {
299
+	 * Save new message post
300
+	 * @param  integer $sender_id   ID of sender
301
+	 * @param  integer $receiver_id ID of receiver
302
+	 * @param  string  $message     Message content
303
+	 * @param  string  $post_id     ID of post related to message
304
+	 * @return mixed                Message ID on success, boolean false on failure
305
+	 */
306
+	private function save_new_message_post( $sender_id = 0, $receiver_id = 0, $message = '', $post_id = 0 ) {
307 307
 
308
-    	$message_id = false;
308
+		$message_id = false;
309 309
 
310
-    	if( $sender_id && $receiver_id && $message && $post_id ) {
310
+		if( $sender_id && $receiver_id && $message && $post_id ) {
311 311
 
312
-    		$title = wp_trim_words( $message, 8, '...' );
312
+			$title = wp_trim_words( $message, 8, '...' );
313 313
 
314
-    		// Set up post data for message
315
-	    	$message_data = array(
316
-	            'post_type'      => $this->post_type,
317
-	            'post_title'     => esc_html( $title ),
318
-	            'post_content'   => esc_html( $message ),
319
-	            'post_status'    => 'publish',
320
-	            'ping_status'    => 'closed',
321
-	            'comment_status' => 'open',
322
-	            'post_excerpt'   => '',
323
-	            'post_author'	 => intval( $sender_id )
324
-	        );
314
+			// Set up post data for message
315
+			$message_data = array(
316
+				'post_type'      => $this->post_type,
317
+				'post_title'     => esc_html( $title ),
318
+				'post_content'   => esc_html( $message ),
319
+				'post_status'    => 'publish',
320
+				'ping_status'    => 'closed',
321
+				'comment_status' => 'open',
322
+				'post_excerpt'   => '',
323
+				'post_author'	 => intval( $sender_id )
324
+			);
325 325
 
326
-	    	// Insert post
327
-	        $message_id = wp_insert_post( $message_data );
326
+			// Insert post
327
+			$message_id = wp_insert_post( $message_data );
328 328
 
329
-	        if( ! is_wp_error( $message_id ) ) {
329
+			if( ! is_wp_error( $message_id ) ) {
330 330
 
331
-	        	// Add sender to message meta
332
-	        	$sender = get_userdata( $sender_id );
333
-	        	add_post_meta( $message_id, '_sender', $sender->user_login );
331
+				// Add sender to message meta
332
+				$sender = get_userdata( $sender_id );
333
+				add_post_meta( $message_id, '_sender', $sender->user_login );
334 334
 
335
-	        	// Add receiver to message meta
336
-	        	$receiver = get_userdata( $receiver_id );
337
-		        add_post_meta( $message_id, '_receiver', $receiver->user_login );
335
+				// Add receiver to message meta
336
+				$receiver = get_userdata( $receiver_id );
337
+				add_post_meta( $message_id, '_receiver', $receiver->user_login );
338 338
 
339
-		        // Add lesson/course ID to message meta
340
-		        $post = get_post( $post_id );
341
-		        add_post_meta( $message_id, '_posttype', $post->post_type );
342
-		        add_post_meta( $message_id, '_post', $post->ID );
339
+				// Add lesson/course ID to message meta
340
+				$post = get_post( $post_id );
341
+				add_post_meta( $message_id, '_posttype', $post->post_type );
342
+				add_post_meta( $message_id, '_post', $post->ID );
343 343
 
344
-		        do_action( 'sensei_new_private_message', $message_id );
344
+				do_action( 'sensei_new_private_message', $message_id );
345 345
 
346
-		    } else {
346
+			} else {
347 347
 
348
-		    	$message_id = false;
348
+				$message_id = false;
349 349
 
350
-		    }
351
-	    }
350
+			}
351
+		}
352 352
 
353
-	    return $message_id;
354
-    }
353
+		return $message_id;
354
+	}
355 355
 
356 356
 	/**
357 357
 	 * Check if user has access to view this message
@@ -390,56 +390,56 @@  discard block
 block discarded – undo
390 390
 		remove_meta_box('commentstatusdiv', $this->post_type, 'normal');
391 391
 	}
392 392
 
393
-    /**
394
-     * Function message_login()
395
-     *
396
-     * Only show /messages/* to logged in users, and
397
-     * redirect logged out users to wp-login.php
398
-     *
399
-     * @since 1.9.0
400
-     * @param  none
401
-     * @return void
402
-     */
393
+	/**
394
+	 * Function message_login()
395
+	 *
396
+	 * Only show /messages/* to logged in users, and
397
+	 * redirect logged out users to wp-login.php
398
+	 *
399
+	 * @since 1.9.0
400
+	 * @param  none
401
+	 * @return void
402
+	 */
403 403
 
404
-    public function message_login () {
404
+	public function message_login () {
405 405
 
406
-        if ( is_user_logged_in() ) {
406
+		if ( is_user_logged_in() ) {
407 407
 
408
-            return;
409
-        }
408
+			return;
409
+		}
410 410
 
411
-        $settings = Sensei()->settings->get_settings();
412
-        if( isset( $settings[ 'my_course_page' ] )
413
-            && 0 < intval( $settings[ 'my_course_page' ] ) ){
411
+		$settings = Sensei()->settings->get_settings();
412
+		if( isset( $settings[ 'my_course_page' ] )
413
+			&& 0 < intval( $settings[ 'my_course_page' ] ) ){
414 414
 
415
-            $my_courses_page_id = $settings[ 'my_course_page' ];
415
+			$my_courses_page_id = $settings[ 'my_course_page' ];
416 416
 
417
-            $my_courses_url = get_permalink($my_courses_page_id);
417
+			$my_courses_url = get_permalink($my_courses_page_id);
418 418
 
419
-        }
419
+		}
420 420
 
421
-        if ( is_single() && is_singular( $this->post_type )
422
-            || is_post_type_archive( $this->post_type ) ) {
421
+		if ( is_single() && is_singular( $this->post_type )
422
+			|| is_post_type_archive( $this->post_type ) ) {
423 423
 
424
-            if ( isset($my_courses_url) ) {
424
+			if ( isset($my_courses_url) ) {
425 425
 
426
-                wp_redirect($my_courses_url, 303);
427
-                exit;
428
-            }
426
+				wp_redirect($my_courses_url, 303);
427
+				exit;
428
+			}
429 429
 
430
-            else {
430
+			else {
431 431
 
432
-                wp_redirect(home_url('/wp-login.php'), 303);
433
-                exit;
434
-            }
432
+				wp_redirect(home_url('/wp-login.php'), 303);
433
+				exit;
434
+			}
435 435
 
436
-        }
437
-    }
436
+		}
437
+	}
438 438
 	/**
439
-     * Only show allowed messages in messages archive
440
-     * @param  array $query Original query
441
-     * @return void
442
-     */
439
+	 * Only show allowed messages in messages archive
440
+	 * @param  array $query Original query
441
+	 * @return void
442
+	 */
443 443
 	public function message_list( $query ) {
444 444
 		global $current_user;
445 445
 
@@ -556,17 +556,17 @@  discard block
 block discarded – undo
556 556
 		return $open;
557 557
 	}
558 558
 
559
-    /**
560
-     * Print outthe message was sent by $sender_username on the
561
-     *
562
-     * @since 1.9.0
563
-     */
564
-    public static function the_message_sent_by_title(){
559
+	/**
560
+	 * Print outthe message was sent by $sender_username on the
561
+	 *
562
+	 * @since 1.9.0
563
+	 */
564
+	public static function the_message_sent_by_title(){
565 565
 
566
-        $sender_username = get_post_meta( get_the_ID() , '_sender', true );
567
-        if( $sender_username ) {
566
+		$sender_username = get_post_meta( get_the_ID() , '_sender', true );
567
+		if( $sender_username ) {
568 568
 
569
-            $sender = get_user_by( 'login', $sender_username ); ?>
569
+			$sender = get_user_by( 'login', $sender_username ); ?>
570 570
 
571 571
             <p class="message-meta">
572 572
                 <small>
@@ -578,41 +578,41 @@  discard block
 block discarded – undo
578 578
 
579 579
         <?php }
580 580
 
581
-    }
581
+	}
582 582
 
583
-    /**
584
-     * sensei_single_title output for single page title
585
-     * @since  1.1.0
586
-     * @return void
587
-     * @deprecate
588
-     */
589
-    public static function the_title() {
583
+	/**
584
+	 * sensei_single_title output for single page title
585
+	 * @since  1.1.0
586
+	 * @return void
587
+	 * @deprecate
588
+	 */
589
+	public static function the_title() {
590 590
 
591
-        global $post;
591
+		global $post;
592 592
 
593
-        $content_post_id = get_post_meta( $post->ID, '_post', true );
594
-        if( $content_post_id ) {
595
-            $title = sprintf( __( 'Re: %1$s', 'woothemes-sensei' ), '<a href="' . get_permalink( $content_post_id ) . '">' . get_the_title( $content_post_id ) . '</a>' );
596
-        } else {
597
-            $title = get_the_title( $post->ID );
598
-        }
593
+		$content_post_id = get_post_meta( $post->ID, '_post', true );
594
+		if( $content_post_id ) {
595
+			$title = sprintf( __( 'Re: %1$s', 'woothemes-sensei' ), '<a href="' . get_permalink( $content_post_id ) . '">' . get_the_title( $content_post_id ) . '</a>' );
596
+		} else {
597
+			$title = get_the_title( $post->ID );
598
+		}
599 599
 
600
-        ?>
600
+		?>
601 601
         <header>
602 602
 
603 603
             <h1>
604 604
 
605 605
                 <?php
606
-                /**
607
-                 * Filter Sensei single title
608
-                 *
609
-                 * @since 1.8.0
610
-                 * @param string $title
611
-                 * @param string $template
612
-                 * @param string $post_type
613
-                 */
614
-                echo apply_filters( 'sensei_single_title', $title, $post->post_type );
615
-                ?>
606
+				/**
607
+				 * Filter Sensei single title
608
+				 *
609
+				 * @since 1.8.0
610
+				 * @param string $title
611
+				 * @param string $template
612
+				 * @param string $post_type
613
+				 */
614
+				echo apply_filters( 'sensei_single_title', $title, $post->post_type );
615
+				?>
616 616
 
617 617
             </h1>
618 618
 
@@ -620,52 +620,52 @@  discard block
 block discarded – undo
620 620
 
621 621
         <?php
622 622
 
623
-    } // End sensei_single_title()
623
+	} // End sensei_single_title()
624 624
 
625
-    /**
626
-     * Generates the my messages
627
-     * archive header.
628
-     *
629
-     * @since 1.9.0
630
-     *
631
-     * @return string
632
-     */
633
-    public static function the_archive_header( ){
625
+	/**
626
+	 * Generates the my messages
627
+	 * archive header.
628
+	 *
629
+	 * @since 1.9.0
630
+	 *
631
+	 * @return string
632
+	 */
633
+	public static function the_archive_header( ){
634 634
 
635
-        $html = '';
636
-        $html .= '<header class="archive-header"><h1>';
637
-        $html .= __( 'My Messages', 'woothemes-sensei' );
638
-        $html .= '</h1></header>';
635
+		$html = '';
636
+		$html .= '<header class="archive-header"><h1>';
637
+		$html .= __( 'My Messages', 'woothemes-sensei' );
638
+		$html .= '</h1></header>';
639 639
 
640
-        /**
641
-         * Filter the sensei messages archive title.
642
-         * @since 1.0.0
643
-         */
644
-        echo apply_filters( 'sensei_message_archive_title', $html );
640
+		/**
641
+		 * Filter the sensei messages archive title.
642
+		 * @since 1.0.0
643
+		 */
644
+		echo apply_filters( 'sensei_message_archive_title', $html );
645 645
 
646
-    } // get_archive_header()
646
+	} // get_archive_header()
647 647
 
648
-    /**
649
-     * Output the title for a message given the post_id.
650
-     *
651
-     * @since 1.9.0
652
-     * @param $post_id
653
-     */
654
-    public static function the_message_title( $message_post_id ){
648
+	/**
649
+	 * Output the title for a message given the post_id.
650
+	 *
651
+	 * @since 1.9.0
652
+	 * @param $post_id
653
+	 */
654
+	public static function the_message_title( $message_post_id ){
655 655
 
656
-        $content_post_id = get_post_meta( $message_post_id, '_post', true );
656
+		$content_post_id = get_post_meta( $message_post_id, '_post', true );
657 657
 
658
-        if( $content_post_id ) {
658
+		if( $content_post_id ) {
659 659
 
660
-            $title = sprintf( __( 'Re: %1$s', 'woothemes-sensei' ), get_the_title( $content_post_id ) );
660
+			$title = sprintf( __( 'Re: %1$s', 'woothemes-sensei' ), get_the_title( $content_post_id ) );
661 661
 
662
-        } else {
662
+		} else {
663 663
 
664
-            $title = get_the_title( $message_post_id );
664
+			$title = get_the_title( $message_post_id );
665 665
 
666
-        }
666
+		}
667 667
 
668
-        ?>
668
+		?>
669 669
         <h2>
670 670
             <a href="<?php esc_url( get_permalink( $message_post_id ) );?>">
671 671
                 <?php echo  $title; ?>
@@ -674,21 +674,21 @@  discard block
 block discarded – undo
674 674
         </h2>
675 675
 
676 676
         <?php
677
-    } //end the_message_header
677
+	} //end the_message_header
678 678
 
679
-    /**
680
-     * Output the message sender given the post id.
681
-     *
682
-     * @param $message_post_id
683
-     */
684
-    public  static function the_message_sender( $message_post_id ){
679
+	/**
680
+	 * Output the message sender given the post id.
681
+	 *
682
+	 * @param $message_post_id
683
+	 */
684
+	public  static function the_message_sender( $message_post_id ){
685 685
 
686
-        $sender_username = get_post_meta( $message_post_id, '_sender', true );
687
-        $sender = get_user_by( 'login', $sender_username );
686
+		$sender_username = get_post_meta( $message_post_id, '_sender', true );
687
+		$sender = get_user_by( 'login', $sender_username );
688 688
 
689
-        if( $sender_username && $sender instanceof WP_User ) {
690
-            $sender_display_name = sprintf( __( 'Sent by %1$s on %2$s.', 'woothemes-sensei' ), $sender->display_name, get_the_date() );
691
-            ?>
689
+		if( $sender_username && $sender instanceof WP_User ) {
690
+			$sender_display_name = sprintf( __( 'Sent by %1$s on %2$s.', 'woothemes-sensei' ), $sender->display_name, get_the_date() );
691
+			?>
692 692
             <p class="message-meta">
693 693
                 <small>
694 694
                     <em> <?php echo $sender_display_name; ?> </em>
@@ -696,18 +696,18 @@  discard block
 block discarded – undo
696 696
             </p>
697 697
 
698 698
             <?php
699
-        } // end if
700
-
701
-    } // end the_message_archive_sender
702
-
703
-    /**
704
-     * Link to the users my messages page
705
-     *
706
-     * @since 1.9.0
707
-     */
708
-    public static function the_my_messages_link(){
709
-        if( ! Sensei()->settings->get('messages_disable')  ) {
710
-            ?>
699
+		} // end if
700
+
701
+	} // end the_message_archive_sender
702
+
703
+	/**
704
+	 * Link to the users my messages page
705
+	 *
706
+	 * @since 1.9.0
707
+	 */
708
+	public static function the_my_messages_link(){
709
+		if( ! Sensei()->settings->get('messages_disable')  ) {
710
+			?>
711 711
             <p class="my-messages-link-container">
712 712
                 <a class="my-messages-link" href="<?php echo get_post_type_archive_link( 'sensei_message' ); ?>"
713 713
                    title="<?php _e( 'View & reply to private messages sent to your course & lesson teachers.', 'woothemes-sensei' ); ?>">
@@ -715,8 +715,8 @@  discard block
 block discarded – undo
715 715
                 </a>
716 716
             </p>
717 717
             <?php
718
-        }
719
-    }
718
+		}
719
+	}
720 720
 
721 721
 } // End Class
722 722
 
Please login to merge, or discard this patch.
includes/class-sensei-notices.php 4 patches
Doc Comments   -8 removed lines patch added patch discarded remove patch
@@ -33,10 +33,6 @@  discard block
 block discarded – undo
33 33
 	* 
34 34
 	*
35 35
 	* 
36
-	* @param string $message 
37
-	* @param string $type defaults to alert options( alert, tick , download , note   )
38
-	*
39
-	* @return void
40 36
 	*/
41 37
 
42 38
 	public function add_notice( $content ,  $type = 'alert'   ){
@@ -47,10 +43,6 @@  discard block
 block discarded – undo
47 43
 	/**
48 44
 	*  Output all notices added 
49 45
 	* 
50
-	* @param string $message 
51
-	* @param string $type
52
-	*
53
-	* @return void
54 46
 	*/
55 47
 
56 48
 	public function print_notices(){
Please login to merge, or discard this patch.
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -16,28 +16,28 @@  discard block
 block discarded – undo
16 16
 class Sensei_Notices{
17 17
 
18 18
 	/**
19
-	*  @var $notices
20
-	*/
19
+	 *  @var $notices
20
+	 */
21 21
 	protected $notices;
22 22
 
23 23
 	/**
24
-	*  constructor 
25
- 	*/
24
+	 *  constructor 
25
+	 */
26 26
 	public function __construct(){
27 27
 		//initialize the notices variable
28 28
 		$this->notices = array();
29 29
 	}
30 30
 
31 31
 	/**
32
-	*  Add a notice to the array of notices for display at a later stage.
33
-	* 
34
-	*
35
-	* 
36
-	* @param string $message 
37
-	* @param string $type defaults to alert options( alert, tick , download , note   )
38
-	*
39
-	* @return void
40
-	*/
32
+	 *  Add a notice to the array of notices for display at a later stage.
33
+	 * 
34
+	 *
35
+	 * 
36
+	 * @param string $message 
37
+	 * @param string $type defaults to alert options( alert, tick , download , note   )
38
+	 *
39
+	 * @return void
40
+	 */
41 41
 
42 42
 	public function add_notice( $content ,  $type = 'alert'   ){
43 43
 		// append the new notice
@@ -45,13 +45,13 @@  discard block
 block discarded – undo
45 45
 	} // end add_notice()
46 46
 
47 47
 	/**
48
-	*  Output all notices added 
49
-	* 
50
-	* @param string $message 
51
-	* @param string $type
52
-	*
53
-	* @return void
54
-	*/
48
+	 *  Output all notices added 
49
+	 * 
50
+	 * @param string $message 
51
+	 * @param string $type
52
+	 *
53
+	 * @return void
54
+	 */
55 55
 
56 56
 	public function print_notices(){
57 57
 		if(  count( $this->notices ) > 0  ){
@@ -68,10 +68,10 @@  discard block
 block discarded – undo
68 68
 	} // end print_notice()
69 69
 
70 70
 	/**
71
-	*  Clear all notices  
72
-	* 
73
-	* @return void
74
-	*/
71
+	 *  Clear all notices  
72
+	 * 
73
+	 * @return void
74
+	 */
75 75
 
76 76
 	public function clear_notices(){
77 77
 		// assign an empty array to clear all existing notices
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
3 3
 
4 4
 /**
5 5
  * Sensei Notices Class
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
  * @since 1.6.3
14 14
  */
15 15
 
16
-class Sensei_Notices{
16
+class Sensei_Notices {
17 17
 
18 18
 	/**
19 19
 	*  @var $notices
@@ -23,7 +23,7 @@  discard block
 block discarded – undo
23 23
 	/**
24 24
 	*  constructor 
25 25
  	*/
26
-	public function __construct(){
26
+	public function __construct() {
27 27
 		//initialize the notices variable
28 28
 		$this->notices = array();
29 29
 	}
@@ -39,9 +39,9 @@  discard block
 block discarded – undo
39 39
 	* @return void
40 40
 	*/
41 41
 
42
-	public function add_notice( $content ,  $type = 'alert'   ){
42
+	public function add_notice($content, $type = 'alert') {
43 43
 		// append the new notice
44
-		$this->notices[] = array('content' => $content , 'type'=> $type );
44
+		$this->notices[] = array('content' => $content, 'type'=> $type);
45 45
 	} // end add_notice()
46 46
 
47 47
 	/**
@@ -53,12 +53,12 @@  discard block
 block discarded – undo
53 53
 	* @return void
54 54
 	*/
55 55
 
56
-	public function print_notices(){
57
-		if(  count( $this->notices ) > 0  ){
56
+	public function print_notices() {
57
+		if (count($this->notices) > 0) {
58 58
 			foreach ($this->notices  as  $notice) {
59 59
 
60
-				$classes = 'sensei-message '. $notice['type'];
61
-				$html = '<div class="'. $classes . '">'. $notice['content'] . '</div>';
60
+				$classes = 'sensei-message '.$notice['type'];
61
+				$html = '<div class="'.$classes.'">'.$notice['content'].'</div>';
62 62
 
63 63
 				echo $html; 
64 64
 			}
@@ -73,7 +73,7 @@  discard block
 block discarded – undo
73 73
 	* @return void
74 74
 	*/
75 75
 
76
-	public function clear_notices(){
76
+	public function clear_notices() {
77 77
 		// assign an empty array to clear all existing notices
78 78
 		$this->notices = array();
79 79
 	} // end clear_notices()
@@ -85,4 +85,4 @@  discard block
 block discarded – undo
85 85
  * for backward compatibility
86 86
  * @since 1.9.0
87 87
  */
88
-class Woothemes_Sensei_Notices extends Sensei_Notices{}
88
+class Woothemes_Sensei_Notices extends Sensei_Notices {}
Please login to merge, or discard this patch.
Braces   +4 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,5 +1,8 @@
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined( 'ABSPATH' ) ) {
3
+	exit;
4
+}
5
+// Exit if accessed directly
3 6
 
4 7
 /**
5 8
  * Sensei Analysis User Profile List Table Class
Please login to merge, or discard this patch.
includes/class-sensei-question.php 4 patches
Doc Comments   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -402,7 +402,7 @@  discard block
 block discarded – undo
402 402
      * This function simply loads the question type template
403 403
      *
404 404
      * @since 1.9.0
405
-     * @param $question_type
405
+     * @param string $question_type
406 406
      */
407 407
     public static function load_question_template( $question_type ){
408 408
 
@@ -487,7 +487,7 @@  discard block
 block discarded – undo
487 487
      * Get the questions media markup
488 488
      *
489 489
      * @since 1.9.0
490
-     * @param $question_id
490
+     * @param string $question_id
491 491
      * @return string
492 492
      */
493 493
     public static function get_the_question_media( $question_id ){
Please login to merge, or discard this patch.
Braces   +15 added lines, -10 removed lines patch added patch discarded remove patch
@@ -1,5 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined( 'ABSPATH' ) ) {
3
+	exit;
4
+}
5
+// Exit if accessed directly
3 6
 
4 7
 /**
5 8
  * Sensei Question Class
@@ -211,7 +214,9 @@  discard block
 block discarded – undo
211 214
 
212 215
 			$lesson_id = get_post_meta( $quiz, '_quiz_lesson', true );
213 216
 
214
-			if( ! $lesson_id ) continue;
217
+			if( ! $lesson_id ) {
218
+				continue;
219
+			}
215 220
 
216 221
 			$lessons[ $lesson_id ]['title'] = get_the_title( $lesson_id );
217 222
 			$lessons[ $lesson_id ]['link'] = admin_url( 'post.php?post=' . $lesson_id . '&action=edit' );
@@ -880,7 +885,7 @@  discard block
 block discarded – undo
880 885
 
881 886
                 $merged_options = array_merge( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
882 887
 
883
-            }  else {
888
+            } else {
884 889
 
885 890
                 array_push( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
886 891
                 $merged_options = $question_data[ 'question_wrong_answers' ];
@@ -908,7 +913,7 @@  discard block
 block discarded – undo
908 913
 
909 914
                         $user_correct = true;
910 915
 
911
-                    }  else if( $question_data[ 'user_question_grade' ] > 0 ) {
916
+                    } else if( $question_data[ 'user_question_grade' ] > 0 ) {
912 917
 
913 918
                         $user_correct = true;
914 919
 
@@ -923,7 +928,7 @@  discard block
 block discarded – undo
923 928
 
924 929
                         $answer_class .= ' right_answer';
925 930
 
926
-                    }  elseif( !is_array($question_data['question_right_answer']) && $question_data['question_right_answer'] == $answer ) {
931
+                    } elseif( !is_array($question_data['question_right_answer']) && $question_data['question_right_answer'] == $answer ) {
927 932
 
928 933
                         $answer_class .= ' right_answer';
929 934
 
@@ -1006,13 +1011,13 @@  discard block
 block discarded – undo
1006 1011
                             }
1007 1012
                         }
1008 1013
 
1009
-                    }else{
1014
+                    } else{
1010 1015
 
1011 1016
                         $answer_options_sorted = $question_answers_options;
1012 1017
 
1013 1018
                     }
1014 1019
 
1015
-                }else{
1020
+                } else{
1016 1021
 
1017 1022
                     $answer_options_sorted = $question_answers_options;
1018 1023
 
@@ -1075,12 +1080,12 @@  discard block
 block discarded – undo
1075 1080
 
1076 1081
             $right_answer = ucfirst($right_answer);
1077 1082
 
1078
-        }elseif( 'multiple-choice' == $type ) {
1083
+        } elseif( 'multiple-choice' == $type ) {
1079 1084
 
1080 1085
             $right_answer = (array) $right_answer;
1081 1086
             $right_answer = implode( ', ', $right_answer );
1082 1087
 
1083
-        }elseif( 'gap-fill' == $type ) {
1088
+        } elseif( 'gap-fill' == $type ) {
1084 1089
 
1085 1090
             $right_answer_array = explode( '||', $right_answer );
1086 1091
             if ( isset( $right_answer_array[0] ) ) { $gapfill_pre = $right_answer_array[0]; } else { $gapfill_pre = ''; }
@@ -1089,7 +1094,7 @@  discard block
 block discarded – undo
1089 1094
 
1090 1095
             $right_answer = $gapfill_pre . ' <span class="highlight">' . $gapfill_gap . '</span> ' . $gapfill_post;
1091 1096
 
1092
-        }else{
1097
+        } else{
1093 1098
 
1094 1099
             // for non auto gradable question types no answer should be returned.
1095 1100
             $right_answer = '';
Please login to merge, or discard this patch.
Spacing   +286 added lines, -286 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
3 3
 
4 4
 /**
5 5
  * Sensei Question Class
@@ -20,34 +20,34 @@  discard block
 block discarded – undo
20 20
 	 * Constructor.
21 21
 	 * @since  1.0.0
22 22
 	 */
23
-	public function __construct () {
23
+	public function __construct() {
24 24
 		$this->question_types = $this->question_types();
25
-		$this->meta_fields = array( 'question_right_answer', 'question_wrong_answers' );
26
-		if ( is_admin() ) {
25
+		$this->meta_fields = array('question_right_answer', 'question_wrong_answers');
26
+		if (is_admin()) {
27 27
 			// Custom Write Panel Columns
28
-			add_filter( 'manage_edit-question_columns', array( $this, 'add_column_headings' ), 10, 1 );
29
-			add_action( 'manage_posts_custom_column', array( $this, 'add_column_data' ), 10, 2 );
30
-			add_action( 'add_meta_boxes', array( $this, 'question_edit_panel_metabox' ), 10, 2 );
28
+			add_filter('manage_edit-question_columns', array($this, 'add_column_headings'), 10, 1);
29
+			add_action('manage_posts_custom_column', array($this, 'add_column_data'), 10, 2);
30
+			add_action('add_meta_boxes', array($this, 'question_edit_panel_metabox'), 10, 2);
31 31
 
32 32
 			// Quesitno list table filters
33
-			add_action( 'restrict_manage_posts', array( $this, 'filter_options' ) );
34
-			add_filter( 'request', array( $this, 'filter_actions' ) );
33
+			add_action('restrict_manage_posts', array($this, 'filter_options'));
34
+			add_filter('request', array($this, 'filter_actions'));
35 35
 
36
-			add_action( 'save_post', array( $this, 'save_question' ), 10, 1 );
36
+			add_action('save_post', array($this, 'save_question'), 10, 1);
37 37
 		} // End If Statement
38 38
 	} // End __construct()
39 39
 
40 40
 	public function question_types() {
41 41
 		$types = array(
42
-			'multiple-choice' => __( 'Multiple Choice', 'woothemes-sensei' ),
43
-			'boolean' => __( 'True/False', 'woothemes-sensei' ),
44
-			'gap-fill' => __( 'Gap Fill', 'woothemes-sensei' ),
45
-			'single-line' => __( 'Single Line', 'woothemes-sensei' ),
46
-			'multi-line' => __( 'Multi Line', 'woothemes-sensei' ),
47
-			'file-upload' => __( 'File Upload', 'woothemes-sensei' ),
42
+			'multiple-choice' => __('Multiple Choice', 'woothemes-sensei'),
43
+			'boolean' => __('True/False', 'woothemes-sensei'),
44
+			'gap-fill' => __('Gap Fill', 'woothemes-sensei'),
45
+			'single-line' => __('Single Line', 'woothemes-sensei'),
46
+			'multi-line' => __('Multi Line', 'woothemes-sensei'),
47
+			'file-upload' => __('File Upload', 'woothemes-sensei'),
48 48
 		);
49 49
 
50
-		return apply_filters( 'sensei_question_types', $types );
50
+		return apply_filters('sensei_question_types', $types);
51 51
 	}
52 52
 
53 53
 	/**
@@ -57,12 +57,12 @@  discard block
 block discarded – undo
57 57
 	 * @param  array $defaults
58 58
 	 * @return array $new_columns
59 59
 	 */
60
-	public function add_column_headings ( $defaults ) {
60
+	public function add_column_headings($defaults) {
61 61
 		$new_columns['cb'] = '<input type="checkbox" />';
62
-		$new_columns['title'] = _x( 'Question', 'column name', 'woothemes-sensei' );
63
-		$new_columns['question-type'] = _x( 'Type', 'column name', 'woothemes-sensei' );
64
-		$new_columns['question-category'] = _x( 'Categories', 'column name', 'woothemes-sensei' );
65
-		if ( isset( $defaults['date'] ) ) {
62
+		$new_columns['title'] = _x('Question', 'column name', 'woothemes-sensei');
63
+		$new_columns['question-type'] = _x('Type', 'column name', 'woothemes-sensei');
64
+		$new_columns['question-category'] = _x('Categories', 'column name', 'woothemes-sensei');
65
+		if (isset($defaults['date'])) {
66 66
 			$new_columns['date'] = $defaults['date'];
67 67
 		}
68 68
 
@@ -77,27 +77,27 @@  discard block
 block discarded – undo
77 77
 	 * @param  int $id
78 78
 	 * @return void
79 79
 	 */
80
-	public function add_column_data ( $column_name, $id ) {
80
+	public function add_column_data($column_name, $id) {
81 81
 		global $wpdb, $post;
82 82
 
83
-		switch ( $column_name ) {
83
+		switch ($column_name) {
84 84
 
85 85
 			case 'id':
86 86
 				echo $id;
87 87
 			break;
88 88
 
89 89
 			case 'question-type':
90
-				$question_type = strip_tags( get_the_term_list( $id, 'question-type', '', ', ', '' ) );
90
+				$question_type = strip_tags(get_the_term_list($id, 'question-type', '', ', ', ''));
91 91
 				$output = '&mdash;';
92
-				if( isset( $this->question_types[ $question_type ] ) ) {
93
-					$output = $this->question_types[ $question_type ];
92
+				if (isset($this->question_types[$question_type])) {
93
+					$output = $this->question_types[$question_type];
94 94
 				}
95 95
 				echo $output;
96 96
 			break;
97 97
 
98 98
 			case 'question-category':
99
-				$output = strip_tags( get_the_term_list( $id, 'question-category', '', ', ', '' ) );
100
-				if( ! $output ) {
99
+				$output = strip_tags(get_the_term_list($id, 'question-category', '', ', ', ''));
100
+				if ( ! $output) {
101 101
 					$output = '&mdash;';
102 102
 				}
103 103
 				echo $output;
@@ -110,49 +110,49 @@  discard block
 block discarded – undo
110 110
 
111 111
 	} // End add_column_data()
112 112
 
113
-	public function question_edit_panel_metabox( $post_type, $post ) {
114
-		if( in_array( $post_type, array( 'question', 'multiple_question' ) ) ) {
113
+	public function question_edit_panel_metabox($post_type, $post) {
114
+		if (in_array($post_type, array('question', 'multiple_question'))) {
115 115
 
116
-			$metabox_title = __( 'Question', 'woothemes-sensei' );
116
+			$metabox_title = __('Question', 'woothemes-sensei');
117 117
 
118
-			if( isset( $post->ID ) ) {
118
+			if (isset($post->ID)) {
119 119
 
120
-                $question_type = Sensei()->question->get_question_type( $post->ID );
120
+                $question_type = Sensei()->question->get_question_type($post->ID);
121 121
 
122
-				if( $question_type ) {
123
-					$type = $this->question_types[ $question_type ];
124
-					if( $type ) {
122
+				if ($question_type) {
123
+					$type = $this->question_types[$question_type];
124
+					if ($type) {
125 125
 						$metabox_title = $type;
126 126
 					}
127 127
 				}
128 128
 			}
129
-			add_meta_box( 'question-edit-panel', $metabox_title, array( $this, 'question_edit_panel' ), 'question', 'normal', 'high' );
130
-			add_meta_box( 'question-lessons-panel', __( 'Quizzes', 'woothemes-sensei' ), array( $this, 'question_lessons_panel' ), 'question', 'side', 'default' );
131
-			add_meta_box( 'multiple-question-lessons-panel', __( 'Quizzes', 'woothemes-sensei' ), array( $this, 'question_lessons_panel' ), 'multiple_question', 'side', 'default' );
129
+			add_meta_box('question-edit-panel', $metabox_title, array($this, 'question_edit_panel'), 'question', 'normal', 'high');
130
+			add_meta_box('question-lessons-panel', __('Quizzes', 'woothemes-sensei'), array($this, 'question_lessons_panel'), 'question', 'side', 'default');
131
+			add_meta_box('multiple-question-lessons-panel', __('Quizzes', 'woothemes-sensei'), array($this, 'question_lessons_panel'), 'multiple_question', 'side', 'default');
132 132
 		}
133 133
 	}
134 134
 
135 135
 	public function question_edit_panel() {
136 136
 		global  $post, $pagenow;
137 137
 
138
-		add_action( 'admin_enqueue_scripts', array( Sensei()->lesson, 'enqueue_scripts' ) );
139
-		add_action( 'admin_enqueue_scripts', array( Sensei()->lesson, 'enqueue_styles' ) );
138
+		add_action('admin_enqueue_scripts', array(Sensei()->lesson, 'enqueue_scripts'));
139
+		add_action('admin_enqueue_scripts', array(Sensei()->lesson, 'enqueue_styles'));
140 140
 
141 141
 		$html = '<div id="lesson-quiz" class="single-question"><div id="add-question-main">';
142 142
 
143
-		if( 'post-new.php' == $pagenow ) {
143
+		if ('post-new.php' == $pagenow) {
144 144
 
145 145
 			$html .= '<div id="add-question-actions">';
146
-				$html .= Sensei()->lesson->quiz_panel_add( 'question' );
146
+				$html .= Sensei()->lesson->quiz_panel_add('question');
147 147
 			$html .= '</div>';
148 148
 
149 149
 		} else {
150 150
 			$question_id = $post->ID;
151 151
 
152
-			$question_type =  Sensei()->question->get_question_type( $post->ID );
152
+			$question_type = Sensei()->question->get_question_type($post->ID);
153 153
 
154 154
 			$html .= '<div id="add-question-metadata"><table class="widefat">';
155
-				$html .= Sensei()->lesson->quiz_panel_question( $question_type, 0, $question_id, 'question' );
155
+				$html .= Sensei()->lesson->quiz_panel_question($question_type, 0, $question_id, 'question');
156 156
 			$html .= '</table></div>';
157 157
 		}
158 158
 
@@ -164,20 +164,20 @@  discard block
 block discarded – undo
164 164
 	public function question_lessons_panel() {
165 165
 		global $post;
166 166
 
167
-		$no_lessons = sprintf( __( '%1$sThis question does not appear in any quizzes yet.%2$s', 'woothemes-sensei' ), '<em>', '</em>' );
167
+		$no_lessons = sprintf(__('%1$sThis question does not appear in any quizzes yet.%2$s', 'woothemes-sensei'), '<em>', '</em>');
168 168
 
169
-		if( ! isset( $post->ID ) ) {
169
+		if ( ! isset($post->ID)) {
170 170
 			echo $no_lessons;
171 171
 			return;
172 172
 		}
173 173
 
174 174
 		// This retrieves those quizzes the question is directly connected to.
175
-		$quizzes = get_post_meta( $post->ID, '_quiz_id', false );
175
+		$quizzes = get_post_meta($post->ID, '_quiz_id', false);
176 176
 
177 177
 		// Collate all 'multiple_question' quizzes the question is part of.
178
-		$categories_of_question = wp_get_post_terms( $post->ID, 'question-category', array( 'fields' => 'ids' ) );
179
-		if ( ! empty( $categories_of_question ) ) {
180
-			foreach ( $categories_of_question as $term_id ) {
178
+		$categories_of_question = wp_get_post_terms($post->ID, 'question-category', array('fields' => 'ids'));
179
+		if ( ! empty($categories_of_question)) {
180
+			foreach ($categories_of_question as $term_id) {
181 181
 				$qargs = array(
182 182
 					'fields'           => 'ids',
183 183
 					'post_type'        => 'multiple_question',
@@ -191,41 +191,41 @@  discard block
 block discarded – undo
191 191
 					'post_status'      => 'any',
192 192
 					'suppress_filters' => 0,
193 193
 				);
194
-				$cat_question_ids = get_posts( $qargs );
195
-				foreach( $cat_question_ids as $cat_question_id ) {
196
-					$cat_quizzes = get_post_meta( $cat_question_id, '_quiz_id', false );
197
-					$quizzes = array_merge( $quizzes, $cat_quizzes );
194
+				$cat_question_ids = get_posts($qargs);
195
+				foreach ($cat_question_ids as $cat_question_id) {
196
+					$cat_quizzes = get_post_meta($cat_question_id, '_quiz_id', false);
197
+					$quizzes = array_merge($quizzes, $cat_quizzes);
198 198
 				}
199 199
 			}
200
-			$quizzes = array_unique( array_filter( $quizzes ) );
200
+			$quizzes = array_unique(array_filter($quizzes));
201 201
 		}
202 202
 
203
-		if( 0 == count( $quizzes ) ) {
203
+		if (0 == count($quizzes)) {
204 204
 			echo $no_lessons;
205 205
 			return;
206 206
 		}
207 207
 
208 208
 		$lessons = false;
209 209
 
210
-		foreach( $quizzes as $quiz ) {
210
+		foreach ($quizzes as $quiz) {
211 211
 
212
-			$lesson_id = get_post_meta( $quiz, '_quiz_lesson', true );
212
+			$lesson_id = get_post_meta($quiz, '_quiz_lesson', true);
213 213
 
214
-			if( ! $lesson_id ) continue;
214
+			if ( ! $lesson_id) continue;
215 215
 
216
-			$lessons[ $lesson_id ]['title'] = get_the_title( $lesson_id );
217
-			$lessons[ $lesson_id ]['link'] = admin_url( 'post.php?post=' . $lesson_id . '&action=edit' );
216
+			$lessons[$lesson_id]['title'] = get_the_title($lesson_id);
217
+			$lessons[$lesson_id]['link'] = admin_url('post.php?post='.$lesson_id.'&action=edit');
218 218
 		}
219 219
 
220
-		if( ! $lessons ) {
220
+		if ( ! $lessons) {
221 221
 			echo $no_lessons;
222 222
 			return;
223 223
 		}
224 224
 
225 225
 		$html = '<ul>';
226 226
 
227
-		foreach( $lessons as $id => $lesson ) {
228
-			$html .= '<li><a href="' . esc_url( $lesson['link'] ) . '">' . esc_html( $lesson['title'] ) . '</a></li>';
227
+		foreach ($lessons as $id => $lesson) {
228
+			$html .= '<li><a href="'.esc_url($lesson['link']).'">'.esc_html($lesson['title']).'</a></li>';
229 229
 		}
230 230
 
231 231
 		$html .= '</ul>';
@@ -234,30 +234,30 @@  discard block
 block discarded – undo
234 234
 
235 235
 	}
236 236
 
237
-	public function save_question( $post_id = 0 ) {
237
+	public function save_question($post_id = 0) {
238 238
 
239
-		if( ! isset( $_POST['post_type']
240
-            ) || 'question' != $_POST['post_type'] ) {
239
+		if ( ! isset($_POST['post_type']
240
+            ) || 'question' != $_POST['post_type']) {
241 241
             return;
242 242
         }
243 243
 
244 244
 
245 245
 
246 246
         //setup the data for saving
247
-		$data = $_POST ;
247
+		$data = $_POST;
248 248
         $data['quiz_id'] = 0;
249 249
 		$data['question_id'] = $post_id;
250 250
 
251
-		if ( ! wp_is_post_revision( $post_id ) ){
251
+		if ( ! wp_is_post_revision($post_id)) {
252 252
 
253 253
 			// Unhook function to prevent infinite loops
254
-			remove_action( 'save_post', array( $this, 'save_question' ) );
254
+			remove_action('save_post', array($this, 'save_question'));
255 255
 
256 256
 			// Update question data
257
-			$question_id = Sensei()->lesson->lesson_save_question( $data, 'question' );
257
+			$question_id = Sensei()->lesson->lesson_save_question($data, 'question');
258 258
 
259 259
 			// Re-hook same function
260
-			add_action( 'save_post', array( $this, 'save_question' ) );
260
+			add_action('save_post', array($this, 'save_question'));
261 261
 		}
262 262
 
263 263
 		return;
@@ -270,15 +270,15 @@  discard block
 block discarded – undo
270 270
 	public function filter_options() {
271 271
 		global $typenow;
272 272
 
273
-		if( is_admin() && 'question' == $typenow ) {
273
+		if (is_admin() && 'question' == $typenow) {
274 274
 
275 275
 			$output = '';
276 276
 
277 277
 			// Question type
278
-			$selected = isset( $_GET['question_type'] ) ? $_GET['question_type'] : '';
279
-			$type_options = '<option value="">' . __( 'All types', 'woothemes-sensei' ) . '</option>';
280
-			foreach( $this->question_types as $label => $type ) {
281
-				$type_options .= '<option value="' . esc_attr( $label ) . '" ' . selected( $selected, $label, false ) . '>' . esc_html( $type ) . '</option>';
278
+			$selected = isset($_GET['question_type']) ? $_GET['question_type'] : '';
279
+			$type_options = '<option value="">'.__('All types', 'woothemes-sensei').'</option>';
280
+			foreach ($this->question_types as $label => $type) {
281
+				$type_options .= '<option value="'.esc_attr($label).'" '.selected($selected, $label, false).'>'.esc_html($type).'</option>';
282 282
 			}
283 283
 
284 284
 			$output .= '<select name="question_type" id="dropdown_question_type">';
@@ -286,12 +286,12 @@  discard block
 block discarded – undo
286 286
 			$output .= '</select>';
287 287
 
288 288
 			// Question category
289
-			$cats = get_terms( 'question-category', array( 'hide_empty' => false ) );
290
-			if ( ! empty( $cats ) && ! is_wp_error( $cats ) ) {
291
-				$selected = isset( $_GET['question_cat'] ) ? $_GET['question_cat'] : '';
292
-				$cat_options = '<option value="">' . __( 'All categories', 'woothemes-sensei' ) . '</option>';
293
-				foreach( $cats as $cat ) {
294
-					$cat_options .= '<option value="' . esc_attr( $cat->slug ) . '" ' . selected( $selected, $cat->slug, false ) . '>' . esc_html( $cat->name ) . '</option>';
289
+			$cats = get_terms('question-category', array('hide_empty' => false));
290
+			if ( ! empty($cats) && ! is_wp_error($cats)) {
291
+				$selected = isset($_GET['question_cat']) ? $_GET['question_cat'] : '';
292
+				$cat_options = '<option value="">'.__('All categories', 'woothemes-sensei').'</option>';
293
+				foreach ($cats as $cat) {
294
+					$cat_options .= '<option value="'.esc_attr($cat->slug).'" '.selected($selected, $cat->slug, false).'>'.esc_html($cat->name).'</option>';
295 295
 				}
296 296
 
297 297
 				$output .= '<select name="question_cat" id="dropdown_question_cat">';
@@ -308,14 +308,14 @@  discard block
 block discarded – undo
308 308
 	 * @param  array $request Current request
309 309
 	 * @return array          Modified request
310 310
 	 */
311
-	public function filter_actions( $request ) {
311
+	public function filter_actions($request) {
312 312
 		global $typenow;
313 313
 
314
-		if( is_admin() && 'question' == $typenow ) {
314
+		if (is_admin() && 'question' == $typenow) {
315 315
 
316 316
 			// Question type
317
-			$question_type = isset( $_GET['question_type'] ) ? $_GET['question_type'] : '';
318
-			if( $question_type ) {
317
+			$question_type = isset($_GET['question_type']) ? $_GET['question_type'] : '';
318
+			if ($question_type) {
319 319
 				$type_query = array(
320 320
 					'taxonomy' => 'question-type',
321 321
 					'terms' => $question_type,
@@ -325,8 +325,8 @@  discard block
 block discarded – undo
325 325
 			}
326 326
 
327 327
 			// Question category
328
-			$question_cat = isset( $_GET['question_cat'] ) ? $_GET['question_cat'] : '';
329
-			if( $question_cat ) {
328
+			$question_cat = isset($_GET['question_cat']) ? $_GET['question_cat'] : '';
329
+			if ($question_cat) {
330 330
 				$cat_query = array(
331 331
 					'taxonomy' => 'question-category',
332 332
 					'terms' => $question_cat,
@@ -351,16 +351,16 @@  discard block
 block discarded – undo
351 351
      *
352 352
      * @return string $question_type | bool
353 353
      */
354
-    public function get_question_type( $question_id ){
354
+    public function get_question_type($question_id) {
355 355
 
356
-        if( empty( $question_id ) || ! intval( $question_id ) > 0
357
-            || 'question' != get_post_type( $question_id )   ){
356
+        if (empty($question_id) || ! intval($question_id) > 0
357
+            || 'question' != get_post_type($question_id)) {
358 358
             return false;
359 359
         }
360 360
 
361 361
         $question_type = 'multiple-choice';
362
-        $question_types = wp_get_post_terms( $question_id, 'question-type' );
363
-        foreach( $question_types as $type ) {
362
+        $question_types = wp_get_post_terms($question_id, 'question-type');
363
+        foreach ($question_types as $type) {
364 364
             $question_type = $type->slug;
365 365
         }
366 366
 
@@ -377,21 +377,21 @@  discard block
 block discarded – undo
377 377
 	 *
378 378
 	 * @return int $question_grade | bool
379 379
 	 */
380
-	public function get_question_grade( $question_id ) {
380
+	public function get_question_grade($question_id) {
381 381
 
382
-		if ( empty( $question_id ) || ! intval( $question_id ) > 0
383
-			|| 'question' != get_post_type( $question_id ) ) {
382
+		if (empty($question_id) || ! intval($question_id) > 0
383
+			|| 'question' != get_post_type($question_id)) {
384 384
 			return false;
385 385
 		}
386 386
 
387
-		$question_grade_raw = get_post_meta( $question_id, '_question_grade', true );
387
+		$question_grade_raw = get_post_meta($question_id, '_question_grade', true);
388 388
 		// If not set then default to 1...
389
-		if ( false === $question_grade_raw || $question_grade_raw == '' ) {
389
+		if (false === $question_grade_raw || $question_grade_raw == '') {
390 390
 			$question_grade = 1;
391 391
 		}
392 392
 		// ...but allow a grade of 0 for non-marked questions
393 393
 		else {
394
-			$question_grade = intval( $question_grade_raw );
394
+			$question_grade = intval($question_grade_raw);
395 395
 		}
396 396
 		return $question_grade;
397 397
 
@@ -404,9 +404,9 @@  discard block
 block discarded – undo
404 404
      * @since 1.9.0
405 405
      * @param $question_type
406 406
      */
407
-    public static function load_question_template( $question_type ){
407
+    public static function load_question_template($question_type) {
408 408
 
409
-        Sensei_Templates::get_template  ( 'single-quiz/question_type-' . $question_type . '.php' );
409
+        Sensei_Templates::get_template('single-quiz/question_type-'.$question_type.'.php');
410 410
     }
411 411
 
412 412
     /**
@@ -417,9 +417,9 @@  discard block
 block discarded – undo
417 417
      * @since 1.9.0
418 418
      * @param $question_id
419 419
      */
420
-    public static function the_question_title( $question_id ){
420
+    public static function the_question_title($question_id) {
421 421
 
422
-        echo self::get_the_question_title( $question_id );
422
+        echo self::get_the_question_title($question_id);
423 423
 
424 424
     }// end the_question_title
425 425
 
@@ -431,7 +431,7 @@  discard block
 block discarded – undo
431 431
      * @param $question_id
432 432
      * @return string
433 433
      */
434
-    public static function get_the_question_title( $question_id ){
434
+    public static function get_the_question_title($question_id) {
435 435
 
436 436
         /**
437 437
          * Filter the sensei question title
@@ -439,17 +439,17 @@  discard block
 block discarded – undo
439 439
          * @since 1.3.0
440 440
          * @param $question_title
441 441
          */
442
-        $title = apply_filters( 'sensei_question_title', get_the_title( $question_id ) );
442
+        $title = apply_filters('sensei_question_title', get_the_title($question_id));
443 443
 
444 444
         /**
445 445
          * hook document in class-woothemes-sensei-message.php the_title()
446 446
          */
447
-        $title = apply_filters( 'sensei_single_title', $title, 'question');
447
+        $title = apply_filters('sensei_single_title', $title, 'question');
448 448
 
449 449
         $title_html  = '<span class="question question-title">';
450 450
         $title_html .= $title;
451 451
         $title_html .= '<span class="grade"><?php sensi_the_question_grade()?></span>';
452
-        $title_html .='</span>';
452
+        $title_html .= '</span>';
453 453
 
454 454
         return $title_html;
455 455
     }
@@ -460,14 +460,14 @@  discard block
 block discarded – undo
460 460
      * @param $question_id
461 461
      * @return string
462 462
      */
463
-    public static function get_the_question_description( $question_id ){
463
+    public static function get_the_question_description($question_id) {
464 464
 
465
-        $question = get_post( $question_id );
465
+        $question = get_post($question_id);
466 466
 
467 467
         /**
468 468
          * Already documented within WordPress Core
469 469
          */
470
-        return apply_filters( 'the_content', $question->post_content );
470
+        return apply_filters('the_content', $question->post_content);
471 471
 
472 472
     }
473 473
 
@@ -477,9 +477,9 @@  discard block
 block discarded – undo
477 477
      * @since 1.9.0
478 478
      * @param $question_id
479 479
      */
480
-    public static function the_question_description( $question_id  ){
480
+    public static function the_question_description($question_id) {
481 481
 
482
-        echo self::get_the_question_description( $question_id );
482
+        echo self::get_the_question_description($question_id);
483 483
 
484 484
     }
485 485
 
@@ -490,38 +490,38 @@  discard block
 block discarded – undo
490 490
      * @param $question_id
491 491
      * @return string
492 492
      */
493
-    public static function get_the_question_media( $question_id ){
493
+    public static function get_the_question_media($question_id) {
494 494
 
495
-        $question_media = get_post_meta( $question_id, '_question_media', true );
495
+        $question_media = get_post_meta($question_id, '_question_media', true);
496 496
         $question_media_link = '';
497
-        if( 0 < intval( $question_media ) ) {
498
-            $mimetype = get_post_mime_type( $question_media );
499
-            if( $mimetype ) {
500
-                $mimetype_array = explode( '/', $mimetype);
501
-                if( isset( $mimetype_array[0] ) && $mimetype_array[0] ) {
497
+        if (0 < intval($question_media)) {
498
+            $mimetype = get_post_mime_type($question_media);
499
+            if ($mimetype) {
500
+                $mimetype_array = explode('/', $mimetype);
501
+                if (isset($mimetype_array[0]) && $mimetype_array[0]) {
502 502
                     $question_media_type = $mimetype_array[0];
503
-                    $question_media_url = wp_get_attachment_url( $question_media );
504
-                    $attachment = get_post( $question_media );
503
+                    $question_media_url = wp_get_attachment_url($question_media);
504
+                    $attachment = get_post($question_media);
505 505
                     $question_media_title = $attachment->post_title;
506 506
                     $question_media_description = $attachment->post_content;
507
-                    switch( $question_media_type ) {
507
+                    switch ($question_media_type) {
508 508
                         case 'image':
509
-                            $image_size = apply_filters( 'sensei_question_image_size', 'medium', $question_id );
510
-                            $attachment_src = wp_get_attachment_image_src( $question_media, $image_size );
511
-                            $question_media_link = '<a class="' . esc_attr( $question_media_type ) . '" title="' . esc_attr( $question_media_title ) . '" href="' . esc_url( $question_media_url ) . '" target="_blank"><img src="' . $attachment_src[0] . '" width="' . $attachment_src[1] . '" height="' . $attachment_src[2] . '" /></a>';
509
+                            $image_size = apply_filters('sensei_question_image_size', 'medium', $question_id);
510
+                            $attachment_src = wp_get_attachment_image_src($question_media, $image_size);
511
+                            $question_media_link = '<a class="'.esc_attr($question_media_type).'" title="'.esc_attr($question_media_title).'" href="'.esc_url($question_media_url).'" target="_blank"><img src="'.$attachment_src[0].'" width="'.$attachment_src[1].'" height="'.$attachment_src[2].'" /></a>';
512 512
                             break;
513 513
 
514 514
                         case 'audio':
515
-                            $question_media_link = wp_audio_shortcode( array( 'src' => $question_media_url ) );
515
+                            $question_media_link = wp_audio_shortcode(array('src' => $question_media_url));
516 516
                             break;
517 517
 
518 518
                         case 'video':
519
-                            $question_media_link = wp_video_shortcode( array( 'src' => $question_media_url ) );
519
+                            $question_media_link = wp_video_shortcode(array('src' => $question_media_url));
520 520
                             break;
521 521
 
522 522
                         default:
523
-                            $question_media_filename = basename( $question_media_url );
524
-                            $question_media_link = '<a class="' . esc_attr( $question_media_type ) . '" title="' . esc_attr( $question_media_title ) . '" href="' . esc_url( $question_media_url ) . '" target="_blank">' . $question_media_filename . '</a>';
523
+                            $question_media_filename = basename($question_media_url);
524
+                            $question_media_link = '<a class="'.esc_attr($question_media_type).'" title="'.esc_attr($question_media_title).'" href="'.esc_url($question_media_url).'" target="_blank">'.$question_media_filename.'</a>';
525 525
                             break;
526 526
                     }
527 527
                 }
@@ -529,21 +529,21 @@  discard block
 block discarded – undo
529 529
         }
530 530
 
531 531
         $output = '';
532
-        if( $question_media_link ) {
532
+        if ($question_media_link) {
533 533
 
534 534
                 $output .= '<div class="question_media_display">';
535
-                $output .=      $question_media_link;
535
+                $output .= $question_media_link;
536 536
                 $output .= '<dl>';
537 537
 
538
-                if( $question_media_title ) {
538
+                if ($question_media_title) {
539 539
 
540
-                   $output .= '<dt>'. $question_media_title. '</dt>';
540
+                   $output .= '<dt>'.$question_media_title.'</dt>';
541 541
 
542 542
                  }
543 543
 
544
-                if( $question_media_description ) {
544
+                if ($question_media_description) {
545 545
 
546
-                    $output .= '<dd>' . $question_media_description . '</dd>';
546
+                    $output .= '<dd>'.$question_media_description.'</dd>';
547 547
 
548 548
                 }
549 549
 
@@ -564,9 +564,9 @@  discard block
 block discarded – undo
564 564
      * @since 1.9.0
565 565
      * @param string $question_id
566 566
      */
567
-    public static function the_question_media( $question_id ){
567
+    public static function the_question_media($question_id) {
568 568
 
569
-        echo self::get_the_question_media( $question_id );
569
+        echo self::get_the_question_media($question_id);
570 570
 
571 571
     }
572 572
 
@@ -577,11 +577,11 @@  discard block
 block discarded – undo
577 577
      *
578 578
      * @param $question_id
579 579
      */
580
-    public static function the_question_hidden_fields( $question_id ){
580
+    public static function the_question_hidden_fields($question_id) {
581 581
         ?>
582 582
 
583
-            <input type="hidden" name="question_id_<?php $question_id;?>" value="<?php $question_id;?>" />
584
-            <input type="hidden" name="questions_asked[]" value="<?php esc_attr_e( $question_id ); ?>" />
583
+            <input type="hidden" name="question_id_<?php $question_id; ?>" value="<?php $question_id; ?>" />
584
+            <input type="hidden" name="questions_asked[]" value="<?php esc_attr_e($question_id); ?>" />
585 585
 
586 586
         <?php
587 587
     }
@@ -592,27 +592,27 @@  discard block
 block discarded – undo
592 592
      * @since 1.9.0
593 593
      * @param $question_id
594 594
      */
595
-    public static function answer_feedback_notes( $question_id ){
595
+    public static function answer_feedback_notes($question_id) {
596 596
 
597 597
         //IDS
598 598
         $quiz_id = get_the_ID();
599
-        $lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id );
599
+        $lesson_id = Sensei()->quiz->get_lesson_id($quiz_id);
600 600
 
601 601
         // Data to check before showing feedback
602
-        $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, get_current_user_id() );
603
-        $user_quiz_grade = Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
604
-        $not_empty_user_quiz_grade = !empty( $user_quiz_grade );
605
-        $reset_quiz_allowed = Sensei_Quiz::is_reset_allowed( $lesson_id );
606
-        $lesson_completed = Sensei_Utils::user_completed_lesson( $lesson_id );
607
-        $quiz_grade_type = get_post_meta( $quiz_id , '_quiz_grade_type', true );
602
+        $user_lesson_status = Sensei_Utils::user_lesson_status($lesson_id, get_current_user_id());
603
+        $user_quiz_grade = Sensei_Quiz::get_user_quiz_grade($lesson_id, get_current_user_id());
604
+        $not_empty_user_quiz_grade = ! empty($user_quiz_grade);
605
+        $reset_quiz_allowed = Sensei_Quiz::is_reset_allowed($lesson_id);
606
+        $lesson_completed = Sensei_Utils::user_completed_lesson($lesson_id);
607
+        $quiz_grade_type = get_post_meta($quiz_id, '_quiz_grade_type', true);
608 608
 
609
-        if( ( $lesson_completed  && $not_empty_user_quiz_grade  )
610
-            ||  ( $lesson_completed && ! $reset_quiz_allowed && 'auto' == $quiz_grade_type )
611
-            || ( 'auto' == $quiz_grade_type && ! $reset_quiz_allowed && $not_empty_user_quiz_grade ) ) {
609
+        if (($lesson_completed && $not_empty_user_quiz_grade)
610
+            ||  ($lesson_completed && ! $reset_quiz_allowed && 'auto' == $quiz_grade_type)
611
+            || ('auto' == $quiz_grade_type && ! $reset_quiz_allowed && $not_empty_user_quiz_grade)) {
612 612
 
613
-            $answer_notes = Sensei()->quiz->get_user_question_feedback( $lesson_id, $question_id, get_current_user_id() );
613
+            $answer_notes = Sensei()->quiz->get_user_question_feedback($lesson_id, $question_id, get_current_user_id());
614 614
 
615
-            if( $answer_notes ) { ?>
615
+            if ($answer_notes) { ?>
616 616
 
617 617
                 <div class="sensei-message info info-special answer-feedback">
618 618
 
@@ -626,7 +626,7 @@  discard block
 block discarded – undo
626 626
                          * @param string $question_id
627 627
                          * @param string $lesson_id
628 628
                          */
629
-                        echo apply_filters( 'sensei_question_answer_notes', $answer_notes, $question_id, $lesson_id );
629
+                        echo apply_filters('sensei_question_answer_notes', $answer_notes, $question_id, $lesson_id);
630 630
 
631 631
                     ?>
632 632
 
@@ -645,72 +645,72 @@  discard block
 block discarded – undo
645 645
      * @since 1.9.0
646 646
      * @param string $question_id
647 647
      */
648
-    public static function the_answer_result_indication( $question_id ){
648
+    public static function the_answer_result_indication($question_id) {
649 649
 
650
-        global $post,  $current_user, $sensei_question_loop;
650
+        global $post, $current_user, $sensei_question_loop;
651 651
 
652 652
         // Post Data
653 653
         $quiz_id = $sensei_question_loop['quiz_id'];
654
-        $lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id );
654
+        $lesson_id = Sensei()->quiz->get_lesson_id($quiz_id);
655 655
         $question_item = $sensei_question_loop['current_question'];
656 656
 
657 657
         // Setup variable needed to determine if the message should show and what it should show
658
-        $user_quiz_grade = Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
659
-        $lesson_complete = Sensei_Utils::user_completed_lesson( $lesson_id, get_current_user_id() );
660
-        $reset_quiz_allowed = Sensei_Quiz::is_reset_allowed( $lesson_id );
661
-        $quiz_grade_type = get_post_meta( $quiz_id, '_quiz_grade_type', true );
658
+        $user_quiz_grade = Sensei_Quiz::get_user_quiz_grade($lesson_id, get_current_user_id());
659
+        $lesson_complete = Sensei_Utils::user_completed_lesson($lesson_id, get_current_user_id());
660
+        $reset_quiz_allowed = Sensei_Quiz::is_reset_allowed($lesson_id);
661
+        $quiz_grade_type = get_post_meta($quiz_id, '_quiz_grade_type', true);
662 662
 
663 663
         // retrieve the question total grade
664
-        $question_grade = Sensei()->question->get_question_grade( $question_id );
664
+        $question_grade = Sensei()->question->get_question_grade($question_id);
665 665
 
666 666
         // retrieve grade the user achieved
667
-        $user_question_grade = Sensei()->quiz->get_user_question_grade( $lesson_id, $question_id, get_current_user_id() );
667
+        $user_question_grade = Sensei()->quiz->get_user_question_grade($lesson_id, $question_id, get_current_user_id());
668 668
 
669 669
         // Question ID
670 670
         $question_id = $question_item->ID;
671 671
 
672 672
         // conditions to check
673
-        $completed_with_valid_grade = $lesson_complete && $user_quiz_grade != '' ;
674
-        $completed_with_valid_grade_and_reset_not_allowed = $lesson_complete &&  $user_quiz_grade != '' && ! $reset_quiz_allowed ;
675
-        $grade_type_auto_a_valid_grade_and_reset_not_allowed =  'auto' == $quiz_grade_type && ! $reset_quiz_allowed && $user_quiz_grade != '' ;
673
+        $completed_with_valid_grade = $lesson_complete && $user_quiz_grade != '';
674
+        $completed_with_valid_grade_and_reset_not_allowed = $lesson_complete && $user_quiz_grade != '' && ! $reset_quiz_allowed;
675
+        $grade_type_auto_a_valid_grade_and_reset_not_allowed = 'auto' == $quiz_grade_type && ! $reset_quiz_allowed && $user_quiz_grade != '';
676 676
 
677
-        if (  $completed_with_valid_grade
677
+        if ($completed_with_valid_grade
678 678
             || $completed_with_valid_grade_and_reset_not_allowed
679
-            || $grade_type_auto_a_valid_grade_and_reset_not_allowed  ) {
679
+            || $grade_type_auto_a_valid_grade_and_reset_not_allowed) {
680 680
 
681 681
             $user_correct = false;
682
-            $answer_message = __( 'Incorrect', 'woothemes-sensei' );
682
+            $answer_message = __('Incorrect', 'woothemes-sensei');
683 683
             $answer_message_class = 'user_wrong';
684 684
             // For zero grade mark as 'correct' but add no classes
685
-            if ( 0 == $question_grade ) {
685
+            if (0 == $question_grade) {
686 686
 
687 687
                 $user_correct = true;
688 688
                 $answer_message = '';
689 689
                 $answer_message_class = '';
690 690
 
691
-            } else if( $user_question_grade > 0 ) {
691
+            } else if ($user_question_grade > 0) {
692 692
 
693 693
                 $user_correct = true;
694
-                $answer_message = sprintf( __( 'Grade: %d', 'woothemes-sensei' ), $user_question_grade );
694
+                $answer_message = sprintf(__('Grade: %d', 'woothemes-sensei'), $user_question_grade);
695 695
                 $answer_message_class = 'user_right';
696 696
 
697 697
             }
698 698
 
699 699
             // attach the correct answer if the question is auto gradable and user got it wrong
700
-            if( !$reset_quiz_allowed && !$user_correct ){
700
+            if ( ! $reset_quiz_allowed && ! $user_correct) {
701 701
 
702
-                $answer_message .=  ' - '. __('Right Answer:','woothemes-sensei') . ' ' . self::get_correct_answer( $question_item->ID );
702
+                $answer_message .= ' - '.__('Right Answer:', 'woothemes-sensei').' '.self::get_correct_answer($question_item->ID);
703 703
 
704 704
             }
705 705
 
706 706
             // answer feedback
707
-            $answer_notes = Sensei()->quiz->get_user_question_feedback( $lesson_id, $question_id, $current_user->ID );
708
-            if( $answer_notes ) {
707
+            $answer_notes = Sensei()->quiz->get_user_question_feedback($lesson_id, $question_id, $current_user->ID);
708
+            if ($answer_notes) {
709 709
                 $answer_message_class .= ' has_notes';
710 710
             }
711 711
             ?>
712 712
 
713
-            <div class="answer_message <?php esc_attr_e( $answer_message_class ); ?>">
713
+            <div class="answer_message <?php esc_attr_e($answer_message_class); ?>">
714 714
 
715 715
                 <span><?php echo $answer_message; ?></span>
716 716
 
@@ -731,39 +731,39 @@  discard block
 block discarded – undo
731 731
      * @param $quiz_id
732 732
      * @return array $question_data
733 733
      */
734
-    public static function get_template_data( $question_id, $quiz_id ){
734
+    public static function get_template_data($question_id, $quiz_id) {
735 735
 
736
-        $lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id  );
736
+        $lesson_id = Sensei()->quiz->get_lesson_id($quiz_id);
737 737
 
738
-        $reset_allowed = get_post_meta( $quiz_id, '_enable_quiz_reset', true );
738
+        $reset_allowed = get_post_meta($quiz_id, '_enable_quiz_reset', true);
739 739
         //backwards compatibility
740
-        if( 'on' == $reset_allowed ) {
740
+        if ('on' == $reset_allowed) {
741 741
             $reset_allowed = 1;
742 742
         }
743 743
 
744 744
         // Check again that the lesson is complete
745
-        $user_lesson_end = Sensei_Utils::user_completed_lesson( Sensei()->quiz->get_lesson_id( $quiz_id), get_current_user_id() );
745
+        $user_lesson_end = Sensei_Utils::user_completed_lesson(Sensei()->quiz->get_lesson_id($quiz_id), get_current_user_id());
746 746
         $user_lesson_complete = false;
747
-        if ( $user_lesson_end ) {
747
+        if ($user_lesson_end) {
748 748
             $user_lesson_complete = true;
749 749
         }
750 750
 
751 751
         //setup the question data
752
-        $data[ 'ID' ]                     = $question_id;
753
-        $data[ 'title' ]                  = get_the_title( $question_id );
754
-        $data[ 'content' ]                = get_post( $question_id )->post_content;
755
-        $data[ 'quiz_id' ]                = $quiz_id;
756
-        $data[ 'lesson_id' ]              = Sensei()->quiz->get_lesson_id( $quiz_id );
757
-        $data[ 'type' ]                   = Sensei()->question->get_question_type( $question_id );
758
-        $data[ 'question_grade' ]         = Sensei()->question->get_question_grade(  $question_id  );
759
-        $data[ 'user_question_grade' ]    = Sensei()->quiz->get_user_question_grade( $lesson_id,  $question_id , get_current_user_id());
760
-        $data[ 'question_right_answer' ]  = get_post_meta( $question_id , '_question_right_answer', true );
761
-        $data[ 'question_wrong_answers' ] = get_post_meta( $question_id , '_question_wrong_answers', true );
762
-        $data[ 'user_answer_entry' ]      = Sensei()->quiz->get_user_question_answer( $lesson_id,  $question_id , get_current_user_id() );
763
-        $data[ 'lesson_completed' ]       = Sensei_Utils::user_completed_course( $lesson_id, get_current_user_id( ) );
764
-        $data[ 'quiz_grade_type' ]        = get_post_meta( $quiz_id , '_quiz_grade_type', true );
765
-        $data[ 'reset_quiz_allowed' ]     = $reset_allowed;
766
-        $data[ 'lesson_complete' ]        = $user_lesson_complete;
752
+        $data['ID']                     = $question_id;
753
+        $data['title']                  = get_the_title($question_id);
754
+        $data['content']                = get_post($question_id)->post_content;
755
+        $data['quiz_id']                = $quiz_id;
756
+        $data['lesson_id']              = Sensei()->quiz->get_lesson_id($quiz_id);
757
+        $data['type']                   = Sensei()->question->get_question_type($question_id);
758
+        $data['question_grade']         = Sensei()->question->get_question_grade($question_id);
759
+        $data['user_question_grade']    = Sensei()->quiz->get_user_question_grade($lesson_id, $question_id, get_current_user_id());
760
+        $data['question_right_answer']  = get_post_meta($question_id, '_question_right_answer', true);
761
+        $data['question_wrong_answers'] = get_post_meta($question_id, '_question_wrong_answers', true);
762
+        $data['user_answer_entry']      = Sensei()->quiz->get_user_question_answer($lesson_id, $question_id, get_current_user_id());
763
+        $data['lesson_completed']       = Sensei_Utils::user_completed_course($lesson_id, get_current_user_id( ));
764
+        $data['quiz_grade_type']        = get_post_meta($quiz_id, '_quiz_grade_type', true);
765
+        $data['reset_quiz_allowed']     = $reset_allowed;
766
+        $data['lesson_complete']        = $user_lesson_complete;
767 767
 
768 768
         /**
769 769
          * Filter the question template data. This filter fires  in
@@ -777,7 +777,7 @@  discard block
 block discarded – undo
777 777
          * @param string $question_id
778 778
          * @param string $quiz_id
779 779
          */
780
-        return apply_filters( 'sensei_get_question_template_data', $data, $question_id, $quiz_id );
780
+        return apply_filters('sensei_get_question_template_data', $data, $question_id, $quiz_id);
781 781
 
782 782
     }
783 783
 
@@ -793,28 +793,28 @@  discard block
 block discarded – undo
793 793
      *
794 794
      * @return array()
795 795
      */
796
-    public static function file_upload_load_question_data ( $question_data, $question_id, $quiz_id ){
796
+    public static function file_upload_load_question_data($question_data, $question_id, $quiz_id) {
797 797
 
798 798
 
799
-        if( 'file-upload' == Sensei()->question->get_question_type( $question_id ) ) {
799
+        if ('file-upload' == Sensei()->question->get_question_type($question_id)) {
800 800
 
801 801
             // Get uploaded file
802
-            $attachment_id = $question_data[ 'user_answer_entry' ];
802
+            $attachment_id = $question_data['user_answer_entry'];
803 803
             $answer_media_url = $answer_media_filename = '';
804 804
 
805 805
 
806 806
             $question_helptext = '';
807
-            if( isset( $question_data['question_wrong_answers'][0] ) ) {
807
+            if (isset($question_data['question_wrong_answers'][0])) {
808 808
 
809
-                $question_helptext =  $question_data['question_wrong_answers'][0];
809
+                $question_helptext = $question_data['question_wrong_answers'][0];
810 810
 
811 811
             }
812 812
 
813 813
 
814
-            if( 0 < intval( $attachment_id ) ) {
814
+            if (0 < intval($attachment_id)) {
815 815
 
816
-                $answer_media_url = wp_get_attachment_url( $attachment_id );
817
-                $answer_media_filename = basename( $answer_media_url );
816
+                $answer_media_url = wp_get_attachment_url($attachment_id);
817
+                $answer_media_filename = basename($answer_media_url);
818 818
 
819 819
             }
820 820
 
@@ -822,11 +822,11 @@  discard block
 block discarded – undo
822 822
             // Get max upload file size, formatted for display
823 823
             // Code copied from wp-admin/includes/media.php:1515
824 824
             $upload_size_unit = $max_upload_size = wp_max_upload_size();
825
-            $sizes = array( 'KB', 'MB', 'GB' );
826
-            for ( $u = -1; $upload_size_unit > 1024 && $u < count( $sizes ) - 1; $u++ ) {
825
+            $sizes = array('KB', 'MB', 'GB');
826
+            for ($u = -1; $upload_size_unit > 1024 && $u < count($sizes) - 1; $u++) {
827 827
                 $upload_size_unit /= 1024;
828 828
             }
829
-            if ( $u < 0 ) {
829
+            if ($u < 0) {
830 830
 
831 831
                 $upload_size_unit = 0;
832 832
                 $u = 0;
@@ -836,14 +836,14 @@  discard block
 block discarded – undo
836 836
                 $upload_size_unit = (int) $upload_size_unit;
837 837
 
838 838
             }
839
-            $max_upload_size = sprintf( __( 'Maximum upload file size: %d%s' ), esc_html( $upload_size_unit ), esc_html( $sizes[ $u ] ) );
839
+            $max_upload_size = sprintf(__('Maximum upload file size: %d%s'), esc_html($upload_size_unit), esc_html($sizes[$u]));
840 840
 
841 841
             // Assemble all the data needed by the file upload template
842
-            $question_data[ 'answer_media_url' ]      = $answer_media_url;
843
-            $question_data[ 'answer_media_filename' ] = $answer_media_filename;
844
-            $question_data[ 'max_upload_size' ]       = $max_upload_size;
842
+            $question_data['answer_media_url']      = $answer_media_url;
843
+            $question_data['answer_media_filename'] = $answer_media_filename;
844
+            $question_data['max_upload_size']       = $max_upload_size;
845 845
 
846
-            $question_data[ 'question_helptext' ]     = $question_helptext;
846
+            $question_data['question_helptext']     = $question_helptext;
847 847
 
848 848
         }// end if is file upload type
849 849
 
@@ -863,27 +863,27 @@  discard block
 block discarded – undo
863 863
      *
864 864
      * @return array()
865 865
      */
866
-    public static function multiple_choice_load_question_data( $question_data, $question_id, $quiz_id ){
866
+    public static function multiple_choice_load_question_data($question_data, $question_id, $quiz_id) {
867 867
 
868
-        if( 'multiple-choice' == Sensei()->question->get_question_type( $question_id ) ) {
868
+        if ('multiple-choice' == Sensei()->question->get_question_type($question_id)) {
869 869
 
870 870
 
871 871
             $answer_type = 'radio';
872
-            if ( is_array( $question_data[ 'question_right_answer' ] ) && ( 1 < count( $question_data[ 'question_right_answer' ] ) ) ) {
872
+            if (is_array($question_data['question_right_answer']) && (1 < count($question_data['question_right_answer']))) {
873 873
 
874 874
                 $answer_type = 'checkbox';
875 875
 
876 876
             }
877 877
 
878 878
             // Merge right and wrong answers
879
-            if ( is_array( $question_data[ 'question_right_answer' ] ) ) {
879
+            if (is_array($question_data['question_right_answer'])) {
880 880
 
881
-                $merged_options = array_merge( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
881
+                $merged_options = array_merge($question_data['question_wrong_answers'], $question_data['question_right_answer']);
882 882
 
883
-            }  else {
883
+            } else {
884 884
 
885
-                array_push( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
886
-                $merged_options = $question_data[ 'question_wrong_answers' ];
885
+                array_push($question_data['question_wrong_answers'], $question_data['question_right_answer']);
886
+                $merged_options = $question_data['question_wrong_answers'];
887 887
 
888 888
             }
889 889
 
@@ -891,24 +891,24 @@  discard block
 block discarded – undo
891 891
             $question_answers_options = array();
892 892
             $count = 0;
893 893
 
894
-            foreach( $merged_options as $answer ) {
894
+            foreach ($merged_options as $answer) {
895 895
 
896 896
                 $count++;
897 897
                 $question_option = array();
898 898
 
899
-                if( ( $question_data[ 'lesson_completed' ] && $question_data[ 'user_quiz_grade' ] != '' )
900
-                    || ( $question_data[ 'lesson_completed' ] && ! $question_data[ 'reset_quiz_allowed' ] && $question_data[ 'user_quiz_grade' ] != '' )
901
-                    || ( 'auto' == $question_data[ 'quiz_grade_type' ] && ! $question_data[ 'reset_quiz_allowed' ]  && ! empty( $question_data[ 'user_quiz_grade' ] ) ) ) {
899
+                if (($question_data['lesson_completed'] && $question_data['user_quiz_grade'] != '')
900
+                    || ($question_data['lesson_completed'] && ! $question_data['reset_quiz_allowed'] && $question_data['user_quiz_grade'] != '')
901
+                    || ('auto' == $question_data['quiz_grade_type'] && ! $question_data['reset_quiz_allowed'] && ! empty($question_data['user_quiz_grade']))) {
902 902
 
903 903
                     $user_correct = false;
904 904
 
905 905
 
906 906
                     // For zero grade mark as 'correct' but add no classes
907
-                    if ( 0 == $question_data[ 'question_grade' ] ) {
907
+                    if (0 == $question_data['question_grade']) {
908 908
 
909 909
                         $user_correct = true;
910 910
 
911
-                    }  else if( $question_data[ 'user_question_grade' ] > 0 ) {
911
+                    } else if ($question_data['user_question_grade'] > 0) {
912 912
 
913 913
                         $user_correct = true;
914 914
 
@@ -918,20 +918,20 @@  discard block
 block discarded – undo
918 918
 
919 919
                 // setup the option specific classes
920 920
                 $answer_class = '';
921
-                if( isset( $user_correct ) && 0 < $question_data[ 'question_grade' ] ) {
922
-                    if ( is_array( $question_data['question_right_answer'] ) && in_array($answer, $question_data['question_right_answer']) ) {
921
+                if (isset($user_correct) && 0 < $question_data['question_grade']) {
922
+                    if (is_array($question_data['question_right_answer']) && in_array($answer, $question_data['question_right_answer'])) {
923 923
 
924 924
                         $answer_class .= ' right_answer';
925 925
 
926
-                    }  elseif( !is_array($question_data['question_right_answer']) && $question_data['question_right_answer'] == $answer ) {
926
+                    }  elseif ( ! is_array($question_data['question_right_answer']) && $question_data['question_right_answer'] == $answer) {
927 927
 
928 928
                         $answer_class .= ' right_answer';
929 929
 
930
-                    } elseif( ( is_array( $question_data['user_answer_entry']  ) && in_array($answer, $question_data['user_answer_entry'] ) )
931
-                        ||  ( !  $question_data['user_answer_entry'] &&  $question_data['user_answer_entry'] == $answer ) ) {
930
+                    } elseif ((is_array($question_data['user_answer_entry']) && in_array($answer, $question_data['user_answer_entry']))
931
+                        ||  ( ! $question_data['user_answer_entry'] && $question_data['user_answer_entry'] == $answer)) {
932 932
 
933 933
                         $answer_class = 'user_wrong';
934
-                        if( $user_correct ) {
934
+                        if ($user_correct) {
935 935
 
936 936
                             $answer_class = 'user_right';
937 937
 
@@ -943,26 +943,26 @@  discard block
 block discarded – undo
943 943
 
944 944
                 // determine if the current option must be checked
945 945
                 $checked = '';
946
-                if ( isset( $question_data['user_answer_entry'] ) && 0 < count( $question_data['user_answer_entry'] ) ) {
947
-                    if ( is_array( $question_data['user_answer_entry'] ) && in_array( $answer, $question_data['user_answer_entry'] ) ) {
946
+                if (isset($question_data['user_answer_entry']) && 0 < count($question_data['user_answer_entry'])) {
947
+                    if (is_array($question_data['user_answer_entry']) && in_array($answer, $question_data['user_answer_entry'])) {
948 948
 
949 949
                         $checked = 'checked="checked"';
950 950
 
951
-                    } elseif ( !is_array( $question_data['user_answer_entry'] ) ) {
951
+                    } elseif ( ! is_array($question_data['user_answer_entry'])) {
952 952
 
953
-                        $checked = checked( $answer, $question_data['user_answer_entry'] , false );
953
+                        $checked = checked($answer, $question_data['user_answer_entry'], false);
954 954
 
955 955
                     }
956 956
 
957 957
                 } // End If Statement
958 958
 
959 959
                 //Load the answer option data
960
-                $question_option[ 'ID' ]          = Sensei()->lesson->get_answer_id( $answer );
961
-                $question_option[ 'answer' ]      = $answer;
962
-                $question_option[ 'option_class'] = $answer_class;
963
-                $question_option[ 'checked']      = $checked;
964
-                $question_option[ 'count' ]       = $count;
965
-                $question_option[ 'type' ] = $answer_type;
960
+                $question_option['ID']          = Sensei()->lesson->get_answer_id($answer);
961
+                $question_option['answer']      = $answer;
962
+                $question_option['option_class'] = $answer_class;
963
+                $question_option['checked']      = $checked;
964
+                $question_option['count']       = $count;
965
+                $question_option['type'] = $answer_type;
966 966
 
967 967
                 // add the speci  fic option to the list of options for this question
968 968
                 $question_answers_options[] = $question_option;
@@ -972,47 +972,47 @@  discard block
 block discarded – undo
972 972
 
973 973
             // Shuffle the array depending on the settings
974 974
             $answer_options_sorted = array();
975
-            $random_order = get_post_meta( $question_data['ID'], '_random_order', true );
976
-            if(  $random_order && $random_order == 'yes' ) {
975
+            $random_order = get_post_meta($question_data['ID'], '_random_order', true);
976
+            if ($random_order && $random_order == 'yes') {
977 977
 
978 978
                 $answer_options_sorted = $question_answers_options;
979
-                shuffle( $answer_options_sorted );
979
+                shuffle($answer_options_sorted);
980 980
 
981 981
             } else {
982 982
 
983 983
                 $answer_order = array();
984
-                $answer_order_string = get_post_meta( $question_data['ID'], '_answer_order', true );
985
-                if( $answer_order_string ) {
984
+                $answer_order_string = get_post_meta($question_data['ID'], '_answer_order', true);
985
+                if ($answer_order_string) {
986 986
 
987
-                    $answer_order = array_filter( explode( ',', $answer_order_string ) );
988
-                    if( count( $answer_order ) > 0 ) {
987
+                    $answer_order = array_filter(explode(',', $answer_order_string));
988
+                    if (count($answer_order) > 0) {
989 989
 
990
-                        foreach( $answer_order as $answer_id ) {
990
+                        foreach ($answer_order as $answer_id) {
991 991
 
992
-                            if( isset( $question_answers_options[ $answer_id ] ) ) {
992
+                            if (isset($question_answers_options[$answer_id])) {
993 993
 
994
-                                $answer_options_sorted[ $answer_id ] = $question_answers_options[ $answer_id ];
995
-                                unset( $question_answers_options[ $answer_id ] );
994
+                                $answer_options_sorted[$answer_id] = $question_answers_options[$answer_id];
995
+                                unset($question_answers_options[$answer_id]);
996 996
 
997 997
                             }
998 998
 
999 999
                         }
1000 1000
 
1001
-                        if( count( $question_answers_options ) > 0 ) {
1002
-                            foreach( $question_answers_options as $id => $answer ) {
1001
+                        if (count($question_answers_options) > 0) {
1002
+                            foreach ($question_answers_options as $id => $answer) {
1003 1003
 
1004
-                                $answer_options_sorted[ $id ] = $answer;
1004
+                                $answer_options_sorted[$id] = $answer;
1005 1005
 
1006 1006
                             }
1007 1007
                         }
1008 1008
 
1009
-                    }else{
1009
+                    } else {
1010 1010
 
1011 1011
                         $answer_options_sorted = $question_answers_options;
1012 1012
 
1013 1013
                     }
1014 1014
 
1015
-                }else{
1015
+                } else {
1016 1016
 
1017 1017
                     $answer_options_sorted = $question_answers_options;
1018 1018
 
@@ -1022,7 +1022,7 @@  discard block
 block discarded – undo
1022 1022
 
1023 1023
 
1024 1024
             // assemble and setup the data for the templates data array
1025
-            $question_data[ 'answer_options' ]    =  $answer_options_sorted;
1025
+            $question_data['answer_options'] = $answer_options_sorted;
1026 1026
 
1027 1027
         }
1028 1028
 
@@ -1042,14 +1042,14 @@  discard block
 block discarded – undo
1042 1042
      *
1043 1043
      * @return array()
1044 1044
      */
1045
-    public static function gap_fill_load_question_data( $question_data, $question_id, $quiz_id ){
1045
+    public static function gap_fill_load_question_data($question_data, $question_id, $quiz_id) {
1046 1046
 
1047
-        if( 'gap-fill' == Sensei()->question->get_question_type( $question_id ) ) {
1047
+        if ('gap-fill' == Sensei()->question->get_question_type($question_id)) {
1048 1048
 
1049
-            $gapfill_array = explode( '||', $question_data[ 'question_right_answer' ] );
1050
-            $question_data[ 'gapfill_pre' ]  = isset( $gapfill_array[0] ) ? $gapfill_array[0] : '';
1051
-            $question_data[ 'gapfill_gap' ]  = isset( $gapfill_array[1] ) ? $gapfill_array[1] : '';
1052
-            $question_data[ 'gapfill_post' ] = isset( $gapfill_array[2] ) ? $gapfill_array[2] : '';
1049
+            $gapfill_array = explode('||', $question_data['question_right_answer']);
1050
+            $question_data['gapfill_pre']  = isset($gapfill_array[0]) ? $gapfill_array[0] : '';
1051
+            $question_data['gapfill_gap']  = isset($gapfill_array[1]) ? $gapfill_array[1] : '';
1052
+            $question_data['gapfill_post'] = isset($gapfill_array[2]) ? $gapfill_array[2] : '';
1053 1053
 
1054 1054
         }
1055 1055
 
@@ -1064,32 +1064,32 @@  discard block
 block discarded – undo
1064 1064
      * @param $question_id
1065 1065
      * @return string $correct_answer or empty
1066 1066
      */
1067
-    public static function get_correct_answer( $question_id ){
1067
+    public static function get_correct_answer($question_id) {
1068 1068
 
1069
-        $right_answer = get_post_meta( $question_id, '_question_right_answer', true );
1070
-        $type = Sensei()->question->get_question_type( $question_id );
1071
-        $type_name = __( 'Multiple Choice', 'woothemes-sensei' );
1069
+        $right_answer = get_post_meta($question_id, '_question_right_answer', true);
1070
+        $type = Sensei()->question->get_question_type($question_id);
1071
+        $type_name = __('Multiple Choice', 'woothemes-sensei');
1072 1072
         $grade_type = 'manual-grade';
1073 1073
 
1074
-        if ('boolean'== $type ) {
1074
+        if ('boolean' == $type) {
1075 1075
 
1076 1076
             $right_answer = ucfirst($right_answer);
1077 1077
 
1078
-        }elseif( 'multiple-choice' == $type ) {
1078
+        }elseif ('multiple-choice' == $type) {
1079 1079
 
1080 1080
             $right_answer = (array) $right_answer;
1081
-            $right_answer = implode( ', ', $right_answer );
1081
+            $right_answer = implode(', ', $right_answer);
1082 1082
 
1083
-        }elseif( 'gap-fill' == $type ) {
1083
+        }elseif ('gap-fill' == $type) {
1084 1084
 
1085
-            $right_answer_array = explode( '||', $right_answer );
1086
-            if ( isset( $right_answer_array[0] ) ) { $gapfill_pre = $right_answer_array[0]; } else { $gapfill_pre = ''; }
1087
-            if ( isset( $right_answer_array[1] ) ) { $gapfill_gap = $right_answer_array[1]; } else { $gapfill_gap = ''; }
1088
-            if ( isset( $right_answer_array[2] ) ) { $gapfill_post = $right_answer_array[2]; } else { $gapfill_post = ''; }
1085
+            $right_answer_array = explode('||', $right_answer);
1086
+            if (isset($right_answer_array[0])) { $gapfill_pre = $right_answer_array[0]; } else { $gapfill_pre = ''; }
1087
+            if (isset($right_answer_array[1])) { $gapfill_gap = $right_answer_array[1]; } else { $gapfill_gap = ''; }
1088
+            if (isset($right_answer_array[2])) { $gapfill_post = $right_answer_array[2]; } else { $gapfill_post = ''; }
1089 1089
 
1090
-            $right_answer = $gapfill_pre . ' <span class="highlight">' . $gapfill_gap . '</span> ' . $gapfill_post;
1090
+            $right_answer = $gapfill_pre.' <span class="highlight">'.$gapfill_gap.'</span> '.$gapfill_post;
1091 1091
 
1092
-        }else{
1092
+        } else {
1093 1093
 
1094 1094
             // for non auto gradable question types no answer should be returned.
1095 1095
             $right_answer = '';
@@ -1107,4 +1107,4 @@  discard block
 block discarded – undo
1107 1107
  * for backward compatibility
1108 1108
  * @since 1.9.0
1109 1109
  */
1110
-class WooThemes_Sensei_Question extends Sensei_Question{}
1110
+class WooThemes_Sensei_Question extends Sensei_Question {}
Please login to merge, or discard this patch.
Indentation   +567 added lines, -567 removed lines patch added patch discarded remove patch
@@ -21,7 +21,7 @@  discard block
 block discarded – undo
21 21
 	 * @since  1.0.0
22 22
 	 */
23 23
 	public function __construct () {
24
-        $this->token = 'question';
24
+		$this->token = 'question';
25 25
 		$this->question_types = $this->question_types();
26 26
 		$this->meta_fields = array( 'question_right_answer', 'question_wrong_answers' );
27 27
 		if ( is_admin() ) {
@@ -118,7 +118,7 @@  discard block
 block discarded – undo
118 118
 
119 119
 			if( isset( $post->ID ) ) {
120 120
 
121
-                $question_type = Sensei()->question->get_question_type( $post->ID );
121
+				$question_type = Sensei()->question->get_question_type( $post->ID );
122 122
 
123 123
 				if( $question_type ) {
124 124
 					$type = $this->question_types[ $question_type ];
@@ -238,15 +238,15 @@  discard block
 block discarded – undo
238 238
 	public function save_question( $post_id = 0 ) {
239 239
 
240 240
 		if( ! isset( $_POST['post_type']
241
-            ) || 'question' != $_POST['post_type'] ) {
242
-            return;
243
-        }
241
+			) || 'question' != $_POST['post_type'] ) {
242
+			return;
243
+		}
244 244
 
245 245
 
246 246
 
247
-        //setup the data for saving
247
+		//setup the data for saving
248 248
 		$data = $_POST ;
249
-        $data['quiz_id'] = 0;
249
+		$data['quiz_id'] = 0;
250 250
 		$data['question_id'] = $post_id;
251 251
 
252 252
 		if ( ! wp_is_post_revision( $post_id ) ){
@@ -340,34 +340,34 @@  discard block
 block discarded – undo
340 340
 		return $request;
341 341
 	}
342 342
 
343
-    /**
344
-     * Get the type of question by id
345
-     *
346
-     * This function uses the post terms to determine which question type
347
-     * the passed question id belongs to.
348
-     *
349
-     * @since 1.7.4
350
-     *
351
-     * @param int $question_id
352
-     *
353
-     * @return string $question_type | bool
354
-     */
355
-    public function get_question_type( $question_id ){
356
-
357
-        if( empty( $question_id ) || ! intval( $question_id ) > 0
358
-            || 'question' != get_post_type( $question_id )   ){
359
-            return false;
360
-        }
361
-
362
-        $question_type = 'multiple-choice';
363
-        $question_types = wp_get_post_terms( $question_id, 'question-type' );
364
-        foreach( $question_types as $type ) {
365
-            $question_type = $type->slug;
366
-        }
367
-
368
-        return $question_type;
369
-
370
-    }// end get_question_type
343
+	/**
344
+	 * Get the type of question by id
345
+	 *
346
+	 * This function uses the post terms to determine which question type
347
+	 * the passed question id belongs to.
348
+	 *
349
+	 * @since 1.7.4
350
+	 *
351
+	 * @param int $question_id
352
+	 *
353
+	 * @return string $question_type | bool
354
+	 */
355
+	public function get_question_type( $question_id ){
356
+
357
+		if( empty( $question_id ) || ! intval( $question_id ) > 0
358
+			|| 'question' != get_post_type( $question_id )   ){
359
+			return false;
360
+		}
361
+
362
+		$question_type = 'multiple-choice';
363
+		$question_types = wp_get_post_terms( $question_id, 'question-type' );
364
+		foreach( $question_types as $type ) {
365
+			$question_type = $type->slug;
366
+		}
367
+
368
+		return $question_type;
369
+
370
+	}// end get_question_type
371 371
 
372 372
 	/**
373 373
 	 * Given a question ID, return the grade that can be achieved.
@@ -399,317 +399,317 @@  discard block
 block discarded – undo
399 399
 	} // end get_question_grade
400 400
 
401 401
 
402
-    /**
403
-     * This function simply loads the question type template
404
-     *
405
-     * @since 1.9.0
406
-     * @param $question_type
407
-     */
408
-    public static function load_question_template( $question_type ){
409
-
410
-        Sensei_Templates::get_template  ( 'single-quiz/question_type-' . $question_type . '.php' );
411
-    }
412
-
413
-    /**
414
-     * Echo the sensei question title.
415
-     *
416
-     * @uses WooThemes_Sensei_Question::get_the_question_title
417
-     *
418
-     * @since 1.9.0
419
-     * @param $question_id
420
-     */
421
-    public static function the_question_title( $question_id ){
422
-
423
-        echo self::get_the_question_title( $question_id );
424
-
425
-    }// end the_question_title
426
-
427
-    /**
428
-     * Generate the question title with it's grade.
429
-     *
430
-     * @since 1.9.0
431
-     *
432
-     * @param $question_id
433
-     * @return string
434
-     */
435
-    public static function get_the_question_title( $question_id ){
436
-
437
-        /**
438
-         * Filter the sensei question title
439
-         *
440
-         * @since 1.3.0
441
-         * @param $question_title
442
-         */
443
-        $title = apply_filters( 'sensei_question_title', get_the_title( $question_id ) );
444
-
445
-        /**
446
-         * hook document in class-woothemes-sensei-message.php the_title()
447
-         */
448
-        $title = apply_filters( 'sensei_single_title', $title, 'question');
449
-
450
-        $title_html  = '<span class="question question-title">';
451
-        $title_html .= $title;
452
-        $title_html .= '<span class="grade"><?php sensi_the_question_grade()?></span>';
453
-        $title_html .='</span>';
454
-
455
-        return $title_html;
456
-    }
457
-
458
-    /**
459
-     * Tech the question description
460
-     *
461
-     * @param $question_id
462
-     * @return string
463
-     */
464
-    public static function get_the_question_description( $question_id ){
465
-
466
-        $question = get_post( $question_id );
467
-
468
-        /**
469
-         * Already documented within WordPress Core
470
-         */
471
-        return apply_filters( 'the_content', $question->post_content );
472
-
473
-    }
474
-
475
-    /**
476
-     * Output the question description
477
-     *
478
-     * @since 1.9.0
479
-     * @param $question_id
480
-     */
481
-    public static function the_question_description( $question_id  ){
482
-
483
-        echo self::get_the_question_description( $question_id );
484
-
485
-    }
486
-
487
-    /**
488
-     * Get the questions media markup
489
-     *
490
-     * @since 1.9.0
491
-     * @param $question_id
492
-     * @return string
493
-     */
494
-    public static function get_the_question_media( $question_id ){
495
-
496
-        $question_media = get_post_meta( $question_id, '_question_media', true );
497
-        $question_media_link = '';
498
-        if( 0 < intval( $question_media ) ) {
499
-            $mimetype = get_post_mime_type( $question_media );
500
-            if( $mimetype ) {
501
-                $mimetype_array = explode( '/', $mimetype);
502
-                if( isset( $mimetype_array[0] ) && $mimetype_array[0] ) {
503
-                    $question_media_type = $mimetype_array[0];
504
-                    $question_media_url = wp_get_attachment_url( $question_media );
505
-                    $attachment = get_post( $question_media );
506
-                    $question_media_title = $attachment->post_title;
507
-                    $question_media_description = $attachment->post_content;
508
-                    switch( $question_media_type ) {
509
-                        case 'image':
510
-                            $image_size = apply_filters( 'sensei_question_image_size', 'medium', $question_id );
511
-                            $attachment_src = wp_get_attachment_image_src( $question_media, $image_size );
512
-                            $question_media_link = '<a class="' . esc_attr( $question_media_type ) . '" title="' . esc_attr( $question_media_title ) . '" href="' . esc_url( $question_media_url ) . '" target="_blank"><img src="' . $attachment_src[0] . '" width="' . $attachment_src[1] . '" height="' . $attachment_src[2] . '" /></a>';
513
-                            break;
514
-
515
-                        case 'audio':
516
-                            $question_media_link = wp_audio_shortcode( array( 'src' => $question_media_url ) );
517
-                            break;
518
-
519
-                        case 'video':
520
-                            $question_media_link = wp_video_shortcode( array( 'src' => $question_media_url ) );
521
-                            break;
522
-
523
-                        default:
524
-                            $question_media_filename = basename( $question_media_url );
525
-                            $question_media_link = '<a class="' . esc_attr( $question_media_type ) . '" title="' . esc_attr( $question_media_title ) . '" href="' . esc_url( $question_media_url ) . '" target="_blank">' . $question_media_filename . '</a>';
526
-                            break;
527
-                    }
528
-                }
529
-            }
530
-        }
531
-
532
-        $output = '';
533
-        if( $question_media_link ) {
534
-
535
-                $output .= '<div class="question_media_display">';
536
-                $output .=      $question_media_link;
537
-                $output .= '<dl>';
538
-
539
-                if( $question_media_title ) {
540
-
541
-                   $output .= '<dt>'. $question_media_title. '</dt>';
542
-
543
-                 }
544
-
545
-                if( $question_media_description ) {
546
-
547
-                    $output .= '<dd>' . $question_media_description . '</dd>';
548
-
549
-                }
550
-
551
-                $output .= '</dl>';
552
-                $output .= '</div>';
402
+	/**
403
+	 * This function simply loads the question type template
404
+	 *
405
+	 * @since 1.9.0
406
+	 * @param $question_type
407
+	 */
408
+	public static function load_question_template( $question_type ){
409
+
410
+		Sensei_Templates::get_template  ( 'single-quiz/question_type-' . $question_type . '.php' );
411
+	}
412
+
413
+	/**
414
+	 * Echo the sensei question title.
415
+	 *
416
+	 * @uses WooThemes_Sensei_Question::get_the_question_title
417
+	 *
418
+	 * @since 1.9.0
419
+	 * @param $question_id
420
+	 */
421
+	public static function the_question_title( $question_id ){
422
+
423
+		echo self::get_the_question_title( $question_id );
424
+
425
+	}// end the_question_title
426
+
427
+	/**
428
+	 * Generate the question title with it's grade.
429
+	 *
430
+	 * @since 1.9.0
431
+	 *
432
+	 * @param $question_id
433
+	 * @return string
434
+	 */
435
+	public static function get_the_question_title( $question_id ){
436
+
437
+		/**
438
+		 * Filter the sensei question title
439
+		 *
440
+		 * @since 1.3.0
441
+		 * @param $question_title
442
+		 */
443
+		$title = apply_filters( 'sensei_question_title', get_the_title( $question_id ) );
444
+
445
+		/**
446
+		 * hook document in class-woothemes-sensei-message.php the_title()
447
+		 */
448
+		$title = apply_filters( 'sensei_single_title', $title, 'question');
449
+
450
+		$title_html  = '<span class="question question-title">';
451
+		$title_html .= $title;
452
+		$title_html .= '<span class="grade"><?php sensi_the_question_grade()?></span>';
453
+		$title_html .='</span>';
454
+
455
+		return $title_html;
456
+	}
457
+
458
+	/**
459
+	 * Tech the question description
460
+	 *
461
+	 * @param $question_id
462
+	 * @return string
463
+	 */
464
+	public static function get_the_question_description( $question_id ){
465
+
466
+		$question = get_post( $question_id );
467
+
468
+		/**
469
+		 * Already documented within WordPress Core
470
+		 */
471
+		return apply_filters( 'the_content', $question->post_content );
472
+
473
+	}
474
+
475
+	/**
476
+	 * Output the question description
477
+	 *
478
+	 * @since 1.9.0
479
+	 * @param $question_id
480
+	 */
481
+	public static function the_question_description( $question_id  ){
482
+
483
+		echo self::get_the_question_description( $question_id );
484
+
485
+	}
486
+
487
+	/**
488
+	 * Get the questions media markup
489
+	 *
490
+	 * @since 1.9.0
491
+	 * @param $question_id
492
+	 * @return string
493
+	 */
494
+	public static function get_the_question_media( $question_id ){
495
+
496
+		$question_media = get_post_meta( $question_id, '_question_media', true );
497
+		$question_media_link = '';
498
+		if( 0 < intval( $question_media ) ) {
499
+			$mimetype = get_post_mime_type( $question_media );
500
+			if( $mimetype ) {
501
+				$mimetype_array = explode( '/', $mimetype);
502
+				if( isset( $mimetype_array[0] ) && $mimetype_array[0] ) {
503
+					$question_media_type = $mimetype_array[0];
504
+					$question_media_url = wp_get_attachment_url( $question_media );
505
+					$attachment = get_post( $question_media );
506
+					$question_media_title = $attachment->post_title;
507
+					$question_media_description = $attachment->post_content;
508
+					switch( $question_media_type ) {
509
+						case 'image':
510
+							$image_size = apply_filters( 'sensei_question_image_size', 'medium', $question_id );
511
+							$attachment_src = wp_get_attachment_image_src( $question_media, $image_size );
512
+							$question_media_link = '<a class="' . esc_attr( $question_media_type ) . '" title="' . esc_attr( $question_media_title ) . '" href="' . esc_url( $question_media_url ) . '" target="_blank"><img src="' . $attachment_src[0] . '" width="' . $attachment_src[1] . '" height="' . $attachment_src[2] . '" /></a>';
513
+							break;
514
+
515
+						case 'audio':
516
+							$question_media_link = wp_audio_shortcode( array( 'src' => $question_media_url ) );
517
+							break;
518
+
519
+						case 'video':
520
+							$question_media_link = wp_video_shortcode( array( 'src' => $question_media_url ) );
521
+							break;
522
+
523
+						default:
524
+							$question_media_filename = basename( $question_media_url );
525
+							$question_media_link = '<a class="' . esc_attr( $question_media_type ) . '" title="' . esc_attr( $question_media_title ) . '" href="' . esc_url( $question_media_url ) . '" target="_blank">' . $question_media_filename . '</a>';
526
+							break;
527
+					}
528
+				}
529
+			}
530
+		}
531
+
532
+		$output = '';
533
+		if( $question_media_link ) {
553 534
 
535
+				$output .= '<div class="question_media_display">';
536
+				$output .=      $question_media_link;
537
+				$output .= '<dl>';
554 538
 
555
-         }
556
-
557
-        return $output;
558
-
559
-    } // end get_the_question_media
560
-
539
+				if( $question_media_title ) {
561 540
 
562
-    /**
563
-     * Output the question media
564
-     *
565
-     * @since 1.9.0
566
-     * @param string $question_id
567
-     */
568
-    public static function the_question_media( $question_id ){
541
+				   $output .= '<dt>'. $question_media_title. '</dt>';
569 542
 
570
-        echo self::get_the_question_media( $question_id );
543
+				 }
571 544
 
572
-    }
545
+				if( $question_media_description ) {
573 546
 
574
-    /**
575
-     * Output a special field for the question needed for question submission.
576
-     *
577
-     * @since 1.9.0
578
-     *
579
-     * @param $question_id
580
-     */
581
-    public static function the_question_hidden_fields( $question_id ){
582
-        ?>
547
+					$output .= '<dd>' . $question_media_description . '</dd>';
548
+
549
+				}
550
+
551
+				$output .= '</dl>';
552
+				$output .= '</div>';
553
+
554
+
555
+		 }
556
+
557
+		return $output;
558
+
559
+	} // end get_the_question_media
560
+
561
+
562
+	/**
563
+	 * Output the question media
564
+	 *
565
+	 * @since 1.9.0
566
+	 * @param string $question_id
567
+	 */
568
+	public static function the_question_media( $question_id ){
569
+
570
+		echo self::get_the_question_media( $question_id );
571
+
572
+	}
573
+
574
+	/**
575
+	 * Output a special field for the question needed for question submission.
576
+	 *
577
+	 * @since 1.9.0
578
+	 *
579
+	 * @param $question_id
580
+	 */
581
+	public static function the_question_hidden_fields( $question_id ){
582
+		?>
583 583
 
584 584
             <input type="hidden" name="question_id_<?php $question_id;?>" value="<?php $question_id;?>" />
585 585
             <input type="hidden" name="questions_asked[]" value="<?php esc_attr_e( $question_id ); ?>" />
586 586
 
587 587
         <?php
588
-    }
588
+	}
589 589
 
590
-    /**
591
-     * This function can only be run withing the single quiz question loop
592
-     *
593
-     * @since 1.9.0
594
-     * @param $question_id
595
-     */
596
-    public static function answer_feedback_notes( $question_id ){
590
+	/**
591
+	 * This function can only be run withing the single quiz question loop
592
+	 *
593
+	 * @since 1.9.0
594
+	 * @param $question_id
595
+	 */
596
+	public static function answer_feedback_notes( $question_id ){
597 597
 
598
-        //IDS
599
-        $quiz_id = get_the_ID();
600
-        $lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id );
598
+		//IDS
599
+		$quiz_id = get_the_ID();
600
+		$lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id );
601 601
 
602
-        // Data to check before showing feedback
603
-        $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, get_current_user_id() );
604
-        $user_quiz_grade = Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
605
-        $not_empty_user_quiz_grade = !empty( $user_quiz_grade );
606
-        $reset_quiz_allowed = Sensei_Quiz::is_reset_allowed( $lesson_id );
607
-        $lesson_completed = Sensei_Utils::user_completed_lesson( $lesson_id );
608
-        $quiz_grade_type = get_post_meta( $quiz_id , '_quiz_grade_type', true );
602
+		// Data to check before showing feedback
603
+		$user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, get_current_user_id() );
604
+		$user_quiz_grade = Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
605
+		$not_empty_user_quiz_grade = !empty( $user_quiz_grade );
606
+		$reset_quiz_allowed = Sensei_Quiz::is_reset_allowed( $lesson_id );
607
+		$lesson_completed = Sensei_Utils::user_completed_lesson( $lesson_id );
608
+		$quiz_grade_type = get_post_meta( $quiz_id , '_quiz_grade_type', true );
609 609
 
610
-        if( ( $lesson_completed  && $not_empty_user_quiz_grade  )
611
-            ||  ( $lesson_completed && ! $reset_quiz_allowed && 'auto' == $quiz_grade_type )
612
-            || ( 'auto' == $quiz_grade_type && ! $reset_quiz_allowed && $not_empty_user_quiz_grade ) ) {
610
+		if( ( $lesson_completed  && $not_empty_user_quiz_grade  )
611
+			||  ( $lesson_completed && ! $reset_quiz_allowed && 'auto' == $quiz_grade_type )
612
+			|| ( 'auto' == $quiz_grade_type && ! $reset_quiz_allowed && $not_empty_user_quiz_grade ) ) {
613 613
 
614
-            $answer_notes = Sensei()->quiz->get_user_question_feedback( $lesson_id, $question_id, get_current_user_id() );
614
+			$answer_notes = Sensei()->quiz->get_user_question_feedback( $lesson_id, $question_id, get_current_user_id() );
615 615
 
616
-            if( $answer_notes ) { ?>
616
+			if( $answer_notes ) { ?>
617 617
 
618 618
                 <div class="sensei-message info info-special answer-feedback">
619 619
 
620 620
                     <?php
621 621
 
622
-                        /**
623
-                         * Filter the answer feedback
624
-                         * Since 1.9.0
625
-                         *
626
-                         * @param string $answer_notes
627
-                         * @param string $question_id
628
-                         * @param string $lesson_id
629
-                         */
630
-                        echo apply_filters( 'sensei_question_answer_notes', $answer_notes, $question_id, $lesson_id );
622
+						/**
623
+						 * Filter the answer feedback
624
+						 * Since 1.9.0
625
+						 *
626
+						 * @param string $answer_notes
627
+						 * @param string $question_id
628
+						 * @param string $lesson_id
629
+						 */
630
+						echo apply_filters( 'sensei_question_answer_notes', $answer_notes, $question_id, $lesson_id );
631 631
 
632
-                    ?>
632
+					?>
633 633
 
634 634
                 </div>
635 635
 
636 636
             <?php }
637 637
 
638
-        }// end if we can show answer feedback
638
+		}// end if we can show answer feedback
639 639
 
640
-    }// end answer_feedback_notes
640
+	}// end answer_feedback_notes
641 641
 
642
-    /**
643
-     * This function has to be run inside the quiz question loop on the single quiz page.
644
-     *
645
-     *
646
-     * @since 1.9.0
647
-     * @param string $question_id
648
-     */
649
-    public static function the_answer_result_indication( $question_id ){
642
+	/**
643
+	 * This function has to be run inside the quiz question loop on the single quiz page.
644
+	 *
645
+	 *
646
+	 * @since 1.9.0
647
+	 * @param string $question_id
648
+	 */
649
+	public static function the_answer_result_indication( $question_id ){
650 650
 
651
-        global $post,  $current_user, $sensei_question_loop;
651
+		global $post,  $current_user, $sensei_question_loop;
652 652
 
653
-        // Post Data
654
-        $quiz_id = $sensei_question_loop['quiz_id'];
655
-        $lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id );
656
-        $question_item = $sensei_question_loop['current_question'];
653
+		// Post Data
654
+		$quiz_id = $sensei_question_loop['quiz_id'];
655
+		$lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id );
656
+		$question_item = $sensei_question_loop['current_question'];
657 657
 
658
-        // Setup variable needed to determine if the message should show and what it should show
659
-        $user_quiz_grade = Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
660
-        $lesson_complete = Sensei_Utils::user_completed_lesson( $lesson_id, get_current_user_id() );
661
-        $reset_quiz_allowed = Sensei_Quiz::is_reset_allowed( $lesson_id );
662
-        $quiz_grade_type = get_post_meta( $quiz_id, '_quiz_grade_type', true );
658
+		// Setup variable needed to determine if the message should show and what it should show
659
+		$user_quiz_grade = Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
660
+		$lesson_complete = Sensei_Utils::user_completed_lesson( $lesson_id, get_current_user_id() );
661
+		$reset_quiz_allowed = Sensei_Quiz::is_reset_allowed( $lesson_id );
662
+		$quiz_grade_type = get_post_meta( $quiz_id, '_quiz_grade_type', true );
663 663
 
664
-        // retrieve the question total grade
665
-        $question_grade = Sensei()->question->get_question_grade( $question_id );
664
+		// retrieve the question total grade
665
+		$question_grade = Sensei()->question->get_question_grade( $question_id );
666 666
 
667
-        // retrieve grade the user achieved
668
-        $user_question_grade = Sensei()->quiz->get_user_question_grade( $lesson_id, $question_id, get_current_user_id() );
667
+		// retrieve grade the user achieved
668
+		$user_question_grade = Sensei()->quiz->get_user_question_grade( $lesson_id, $question_id, get_current_user_id() );
669 669
 
670
-        // Question ID
671
-        $question_id = $question_item->ID;
670
+		// Question ID
671
+		$question_id = $question_item->ID;
672 672
 
673
-        // conditions to check
674
-        $completed_with_valid_grade = $lesson_complete && $user_quiz_grade != '' ;
675
-        $completed_with_valid_grade_and_reset_not_allowed = $lesson_complete &&  $user_quiz_grade != '' && ! $reset_quiz_allowed ;
676
-        $grade_type_auto_a_valid_grade_and_reset_not_allowed =  'auto' == $quiz_grade_type && ! $reset_quiz_allowed && $user_quiz_grade != '' ;
673
+		// conditions to check
674
+		$completed_with_valid_grade = $lesson_complete && $user_quiz_grade != '' ;
675
+		$completed_with_valid_grade_and_reset_not_allowed = $lesson_complete &&  $user_quiz_grade != '' && ! $reset_quiz_allowed ;
676
+		$grade_type_auto_a_valid_grade_and_reset_not_allowed =  'auto' == $quiz_grade_type && ! $reset_quiz_allowed && $user_quiz_grade != '' ;
677 677
 
678
-        if (  $completed_with_valid_grade
679
-            || $completed_with_valid_grade_and_reset_not_allowed
680
-            || $grade_type_auto_a_valid_grade_and_reset_not_allowed  ) {
678
+		if (  $completed_with_valid_grade
679
+			|| $completed_with_valid_grade_and_reset_not_allowed
680
+			|| $grade_type_auto_a_valid_grade_and_reset_not_allowed  ) {
681 681
 
682
-            $user_correct = false;
683
-            $answer_message = __( 'Incorrect', 'woothemes-sensei' );
684
-            $answer_message_class = 'user_wrong';
685
-            // For zero grade mark as 'correct' but add no classes
686
-            if ( 0 == $question_grade ) {
682
+			$user_correct = false;
683
+			$answer_message = __( 'Incorrect', 'woothemes-sensei' );
684
+			$answer_message_class = 'user_wrong';
685
+			// For zero grade mark as 'correct' but add no classes
686
+			if ( 0 == $question_grade ) {
687 687
 
688
-                $user_correct = true;
689
-                $answer_message = '';
690
-                $answer_message_class = '';
688
+				$user_correct = true;
689
+				$answer_message = '';
690
+				$answer_message_class = '';
691 691
 
692
-            } else if( $user_question_grade > 0 ) {
692
+			} else if( $user_question_grade > 0 ) {
693 693
 
694
-                $user_correct = true;
695
-                $answer_message = sprintf( __( 'Grade: %d', 'woothemes-sensei' ), $user_question_grade );
696
-                $answer_message_class = 'user_right';
694
+				$user_correct = true;
695
+				$answer_message = sprintf( __( 'Grade: %d', 'woothemes-sensei' ), $user_question_grade );
696
+				$answer_message_class = 'user_right';
697 697
 
698
-            }
698
+			}
699 699
 
700
-            // attach the correct answer if the question is auto gradable and user got it wrong
701
-            if( !$reset_quiz_allowed && !$user_correct ){
700
+			// attach the correct answer if the question is auto gradable and user got it wrong
701
+			if( !$reset_quiz_allowed && !$user_correct ){
702 702
 
703
-                $answer_message .=  ' - '. __('Right Answer:','woothemes-sensei') . ' ' . self::get_correct_answer( $question_item->ID );
703
+				$answer_message .=  ' - '. __('Right Answer:','woothemes-sensei') . ' ' . self::get_correct_answer( $question_item->ID );
704 704
 
705
-            }
705
+			}
706 706
 
707
-            // answer feedback
708
-            $answer_notes = Sensei()->quiz->get_user_question_feedback( $lesson_id, $question_id, $current_user->ID );
709
-            if( $answer_notes ) {
710
-                $answer_message_class .= ' has_notes';
711
-            }
712
-            ?>
707
+			// answer feedback
708
+			$answer_notes = Sensei()->quiz->get_user_question_feedback( $lesson_id, $question_id, $current_user->ID );
709
+			if( $answer_notes ) {
710
+				$answer_message_class .= ' has_notes';
711
+			}
712
+			?>
713 713
 
714 714
             <div class="answer_message <?php esc_attr_e( $answer_message_class ); ?>">
715 715
 
@@ -719,387 +719,387 @@  discard block
 block discarded – undo
719 719
 
720 720
             <?php
721 721
 
722
-        } // end if user can see all the goodies
723
-
724
-    }// end the_answer_result_indication
725
-
726
-    /**
727
-     * Generate the question template data and return it as an array.
728
-     *
729
-     * @since 1.9.0
730
-     *
731
-     * @param string $question_id
732
-     * @param $quiz_id
733
-     * @return array $question_data
734
-     */
735
-    public static function get_template_data( $question_id, $quiz_id ){
736
-
737
-        $lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id  );
738
-
739
-        $reset_allowed = get_post_meta( $quiz_id, '_enable_quiz_reset', true );
740
-        //backwards compatibility
741
-        if( 'on' == $reset_allowed ) {
742
-            $reset_allowed = 1;
743
-        }
744
-
745
-        // Check again that the lesson is complete
746
-        $user_lesson_end = Sensei_Utils::user_completed_lesson( Sensei()->quiz->get_lesson_id( $quiz_id), get_current_user_id() );
747
-        $user_lesson_complete = false;
748
-        if ( $user_lesson_end ) {
749
-            $user_lesson_complete = true;
750
-        }
751
-
752
-        //setup the question data
753
-        $data[ 'ID' ]                     = $question_id;
754
-        $data[ 'title' ]                  = get_the_title( $question_id );
755
-        $data[ 'content' ]                = get_post( $question_id )->post_content;
756
-        $data[ 'quiz_id' ]                = $quiz_id;
757
-        $data[ 'lesson_id' ]              = Sensei()->quiz->get_lesson_id( $quiz_id );
758
-        $data[ 'type' ]                   = Sensei()->question->get_question_type( $question_id );
759
-        $data[ 'question_grade' ]         = Sensei()->question->get_question_grade(  $question_id  );
760
-        $data[ 'user_question_grade' ]    = Sensei()->quiz->get_user_question_grade( $lesson_id,  $question_id , get_current_user_id());
761
-        $data[ 'question_right_answer' ]  = get_post_meta( $question_id , '_question_right_answer', true );
762
-        $data[ 'question_wrong_answers' ] = get_post_meta( $question_id , '_question_wrong_answers', true );
763
-        $data[ 'user_answer_entry' ]      = Sensei()->quiz->get_user_question_answer( $lesson_id,  $question_id , get_current_user_id() );
764
-        $data[ 'lesson_completed' ]       = Sensei_Utils::user_completed_course( $lesson_id, get_current_user_id( ) );
765
-        $data[ 'quiz_grade_type' ]        = get_post_meta( $quiz_id , '_quiz_grade_type', true );
766
-        $data[ 'reset_quiz_allowed' ]     = $reset_allowed;
767
-        $data[ 'lesson_complete' ]        = $user_lesson_complete;
768
-
769
-        /**
770
-         * Filter the question template data. This filter fires  in
771
-         * the get_template_data function
772
-         *
773
-         * @hooked self::boolean_load_question_data
774
-         *
775
-         * @since 1.9.0
776
-         *
777
-         * @param array $data
778
-         * @param string $question_id
779
-         * @param string $quiz_id
780
-         */
781
-        return apply_filters( 'sensei_get_question_template_data', $data, $question_id, $quiz_id );
722
+		} // end if user can see all the goodies
782 723
 
783
-    }
724
+	}// end the_answer_result_indication
784 725
 
785
-    /**
786
-     * Load multiple choice question data on the sensei_get_question_template_data
787
-     * filter.
788
-     *
789
-     * @since 1.9.0
790
-     *
791
-     * @param $question_data
792
-     * @param $question_id
793
-     * @param $quiz_id
794
-     *
795
-     * @return array()
796
-     */
797
-    public static function file_upload_load_question_data ( $question_data, $question_id, $quiz_id ){
726
+	/**
727
+	 * Generate the question template data and return it as an array.
728
+	 *
729
+	 * @since 1.9.0
730
+	 *
731
+	 * @param string $question_id
732
+	 * @param $quiz_id
733
+	 * @return array $question_data
734
+	 */
735
+	public static function get_template_data( $question_id, $quiz_id ){
798 736
 
737
+		$lesson_id = Sensei()->quiz->get_lesson_id( $quiz_id  );
799 738
 
800
-        if( 'file-upload' == Sensei()->question->get_question_type( $question_id ) ) {
739
+		$reset_allowed = get_post_meta( $quiz_id, '_enable_quiz_reset', true );
740
+		//backwards compatibility
741
+		if( 'on' == $reset_allowed ) {
742
+			$reset_allowed = 1;
743
+		}
801 744
 
802
-            // Get uploaded file
803
-            $attachment_id = $question_data[ 'user_answer_entry' ];
804
-            $answer_media_url = $answer_media_filename = '';
745
+		// Check again that the lesson is complete
746
+		$user_lesson_end = Sensei_Utils::user_completed_lesson( Sensei()->quiz->get_lesson_id( $quiz_id), get_current_user_id() );
747
+		$user_lesson_complete = false;
748
+		if ( $user_lesson_end ) {
749
+			$user_lesson_complete = true;
750
+		}
805 751
 
752
+		//setup the question data
753
+		$data[ 'ID' ]                     = $question_id;
754
+		$data[ 'title' ]                  = get_the_title( $question_id );
755
+		$data[ 'content' ]                = get_post( $question_id )->post_content;
756
+		$data[ 'quiz_id' ]                = $quiz_id;
757
+		$data[ 'lesson_id' ]              = Sensei()->quiz->get_lesson_id( $quiz_id );
758
+		$data[ 'type' ]                   = Sensei()->question->get_question_type( $question_id );
759
+		$data[ 'question_grade' ]         = Sensei()->question->get_question_grade(  $question_id  );
760
+		$data[ 'user_question_grade' ]    = Sensei()->quiz->get_user_question_grade( $lesson_id,  $question_id , get_current_user_id());
761
+		$data[ 'question_right_answer' ]  = get_post_meta( $question_id , '_question_right_answer', true );
762
+		$data[ 'question_wrong_answers' ] = get_post_meta( $question_id , '_question_wrong_answers', true );
763
+		$data[ 'user_answer_entry' ]      = Sensei()->quiz->get_user_question_answer( $lesson_id,  $question_id , get_current_user_id() );
764
+		$data[ 'lesson_completed' ]       = Sensei_Utils::user_completed_course( $lesson_id, get_current_user_id( ) );
765
+		$data[ 'quiz_grade_type' ]        = get_post_meta( $quiz_id , '_quiz_grade_type', true );
766
+		$data[ 'reset_quiz_allowed' ]     = $reset_allowed;
767
+		$data[ 'lesson_complete' ]        = $user_lesson_complete;
768
+
769
+		/**
770
+		 * Filter the question template data. This filter fires  in
771
+		 * the get_template_data function
772
+		 *
773
+		 * @hooked self::boolean_load_question_data
774
+		 *
775
+		 * @since 1.9.0
776
+		 *
777
+		 * @param array $data
778
+		 * @param string $question_id
779
+		 * @param string $quiz_id
780
+		 */
781
+		return apply_filters( 'sensei_get_question_template_data', $data, $question_id, $quiz_id );
806 782
 
807
-            $question_helptext = '';
808
-            if( isset( $question_data['question_wrong_answers'][0] ) ) {
783
+	}
809 784
 
810
-                $question_helptext =  $question_data['question_wrong_answers'][0];
785
+	/**
786
+	 * Load multiple choice question data on the sensei_get_question_template_data
787
+	 * filter.
788
+	 *
789
+	 * @since 1.9.0
790
+	 *
791
+	 * @param $question_data
792
+	 * @param $question_id
793
+	 * @param $quiz_id
794
+	 *
795
+	 * @return array()
796
+	 */
797
+	public static function file_upload_load_question_data ( $question_data, $question_id, $quiz_id ){
811 798
 
812
-            }
813 799
 
800
+		if( 'file-upload' == Sensei()->question->get_question_type( $question_id ) ) {
814 801
 
815
-            if( 0 < intval( $attachment_id ) ) {
802
+			// Get uploaded file
803
+			$attachment_id = $question_data[ 'user_answer_entry' ];
804
+			$answer_media_url = $answer_media_filename = '';
816 805
 
817
-                $answer_media_url = wp_get_attachment_url( $attachment_id );
818
-                $answer_media_filename = basename( $answer_media_url );
819 806
 
820
-            }
807
+			$question_helptext = '';
808
+			if( isset( $question_data['question_wrong_answers'][0] ) ) {
821 809
 
810
+				$question_helptext =  $question_data['question_wrong_answers'][0];
822 811
 
823
-            // Get max upload file size, formatted for display
824
-            // Code copied from wp-admin/includes/media.php:1515
825
-            $upload_size_unit = $max_upload_size = wp_max_upload_size();
826
-            $sizes = array( 'KB', 'MB', 'GB' );
827
-            for ( $u = -1; $upload_size_unit > 1024 && $u < count( $sizes ) - 1; $u++ ) {
828
-                $upload_size_unit /= 1024;
829
-            }
830
-            if ( $u < 0 ) {
812
+			}
831 813
 
832
-                $upload_size_unit = 0;
833
-                $u = 0;
834 814
 
835
-            } else {
815
+			if( 0 < intval( $attachment_id ) ) {
836 816
 
837
-                $upload_size_unit = (int) $upload_size_unit;
817
+				$answer_media_url = wp_get_attachment_url( $attachment_id );
818
+				$answer_media_filename = basename( $answer_media_url );
838 819
 
839
-            }
840
-            $max_upload_size = sprintf( __( 'Maximum upload file size: %d%s' ), esc_html( $upload_size_unit ), esc_html( $sizes[ $u ] ) );
820
+			}
841 821
 
842
-            // Assemble all the data needed by the file upload template
843
-            $question_data[ 'answer_media_url' ]      = $answer_media_url;
844
-            $question_data[ 'answer_media_filename' ] = $answer_media_filename;
845
-            $question_data[ 'max_upload_size' ]       = $max_upload_size;
846 822
 
847
-            $question_data[ 'question_helptext' ]     = $question_helptext;
823
+			// Get max upload file size, formatted for display
824
+			// Code copied from wp-admin/includes/media.php:1515
825
+			$upload_size_unit = $max_upload_size = wp_max_upload_size();
826
+			$sizes = array( 'KB', 'MB', 'GB' );
827
+			for ( $u = -1; $upload_size_unit > 1024 && $u < count( $sizes ) - 1; $u++ ) {
828
+				$upload_size_unit /= 1024;
829
+			}
830
+			if ( $u < 0 ) {
848 831
 
849
-        }// end if is file upload type
832
+				$upload_size_unit = 0;
833
+				$u = 0;
850 834
 
851
-        return $question_data;
835
+			} else {
852 836
 
853
-    }// end file_upload_load_question_data
837
+				$upload_size_unit = (int) $upload_size_unit;
854 838
 
855
-    /**
856
-     * Load multiple choice question data on the sensei_get_question_template_data
857
-     * filter.
858
-     *
859
-     * @since 1.9.0
860
-     *
861
-     * @param $question_data
862
-     * @param $question_id
863
-     * @param $quiz_id
864
-     *
865
-     * @return array()
866
-     */
867
-    public static function multiple_choice_load_question_data( $question_data, $question_id, $quiz_id ){
839
+			}
840
+			$max_upload_size = sprintf( __( 'Maximum upload file size: %d%s' ), esc_html( $upload_size_unit ), esc_html( $sizes[ $u ] ) );
868 841
 
869
-        if( 'multiple-choice' == Sensei()->question->get_question_type( $question_id ) ) {
842
+			// Assemble all the data needed by the file upload template
843
+			$question_data[ 'answer_media_url' ]      = $answer_media_url;
844
+			$question_data[ 'answer_media_filename' ] = $answer_media_filename;
845
+			$question_data[ 'max_upload_size' ]       = $max_upload_size;
870 846
 
847
+			$question_data[ 'question_helptext' ]     = $question_helptext;
871 848
 
872
-            $answer_type = 'radio';
873
-            if ( is_array( $question_data[ 'question_right_answer' ] ) && ( 1 < count( $question_data[ 'question_right_answer' ] ) ) ) {
849
+		}// end if is file upload type
874 850
 
875
-                $answer_type = 'checkbox';
851
+		return $question_data;
876 852
 
877
-            }
853
+	}// end file_upload_load_question_data
878 854
 
879
-            // Merge right and wrong answers
880
-            if ( is_array( $question_data[ 'question_right_answer' ] ) ) {
855
+	/**
856
+	 * Load multiple choice question data on the sensei_get_question_template_data
857
+	 * filter.
858
+	 *
859
+	 * @since 1.9.0
860
+	 *
861
+	 * @param $question_data
862
+	 * @param $question_id
863
+	 * @param $quiz_id
864
+	 *
865
+	 * @return array()
866
+	 */
867
+	public static function multiple_choice_load_question_data( $question_data, $question_id, $quiz_id ){
881 868
 
882
-                $merged_options = array_merge( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
869
+		if( 'multiple-choice' == Sensei()->question->get_question_type( $question_id ) ) {
883 870
 
884
-            }  else {
885 871
 
886
-                array_push( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
887
-                $merged_options = $question_data[ 'question_wrong_answers' ];
872
+			$answer_type = 'radio';
873
+			if ( is_array( $question_data[ 'question_right_answer' ] ) && ( 1 < count( $question_data[ 'question_right_answer' ] ) ) ) {
888 874
 
889
-            }
875
+				$answer_type = 'checkbox';
890 876
 
891
-            // Setup answer options array.
892
-            $question_answers_options = array();
893
-            $count = 0;
877
+			}
894 878
 
895
-            foreach( $merged_options as $answer ) {
879
+			// Merge right and wrong answers
880
+			if ( is_array( $question_data[ 'question_right_answer' ] ) ) {
896 881
 
897
-                $count++;
898
-                $question_option = array();
882
+				$merged_options = array_merge( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
899 883
 
900
-                if( ( $question_data[ 'lesson_completed' ] && $question_data[ 'user_quiz_grade' ] != '' )
901
-                    || ( $question_data[ 'lesson_completed' ] && ! $question_data[ 'reset_quiz_allowed' ] && $question_data[ 'user_quiz_grade' ] != '' )
902
-                    || ( 'auto' == $question_data[ 'quiz_grade_type' ] && ! $question_data[ 'reset_quiz_allowed' ]  && ! empty( $question_data[ 'user_quiz_grade' ] ) ) ) {
884
+			}  else {
903 885
 
904
-                    $user_correct = false;
886
+				array_push( $question_data[ 'question_wrong_answers' ], $question_data[ 'question_right_answer' ] );
887
+				$merged_options = $question_data[ 'question_wrong_answers' ];
905 888
 
889
+			}
906 890
 
907
-                    // For zero grade mark as 'correct' but add no classes
908
-                    if ( 0 == $question_data[ 'question_grade' ] ) {
891
+			// Setup answer options array.
892
+			$question_answers_options = array();
893
+			$count = 0;
909 894
 
910
-                        $user_correct = true;
895
+			foreach( $merged_options as $answer ) {
911 896
 
912
-                    }  else if( $question_data[ 'user_question_grade' ] > 0 ) {
897
+				$count++;
898
+				$question_option = array();
913 899
 
914
-                        $user_correct = true;
900
+				if( ( $question_data[ 'lesson_completed' ] && $question_data[ 'user_quiz_grade' ] != '' )
901
+					|| ( $question_data[ 'lesson_completed' ] && ! $question_data[ 'reset_quiz_allowed' ] && $question_data[ 'user_quiz_grade' ] != '' )
902
+					|| ( 'auto' == $question_data[ 'quiz_grade_type' ] && ! $question_data[ 'reset_quiz_allowed' ]  && ! empty( $question_data[ 'user_quiz_grade' ] ) ) ) {
915 903
 
916
-                    }
904
+					$user_correct = false;
917 905
 
918
-                }
919 906
 
920
-                // setup the option specific classes
921
-                $answer_class = '';
922
-                if( isset( $user_correct ) && 0 < $question_data[ 'question_grade' ] ) {
923
-                    if ( is_array( $question_data['question_right_answer'] ) && in_array($answer, $question_data['question_right_answer']) ) {
907
+					// For zero grade mark as 'correct' but add no classes
908
+					if ( 0 == $question_data[ 'question_grade' ] ) {
924 909
 
925
-                        $answer_class .= ' right_answer';
910
+						$user_correct = true;
926 911
 
927
-                    }  elseif( !is_array($question_data['question_right_answer']) && $question_data['question_right_answer'] == $answer ) {
912
+					}  else if( $question_data[ 'user_question_grade' ] > 0 ) {
928 913
 
929
-                        $answer_class .= ' right_answer';
914
+						$user_correct = true;
930 915
 
931
-                    } elseif( ( is_array( $question_data['user_answer_entry']  ) && in_array($answer, $question_data['user_answer_entry'] ) )
932
-                        ||  ( !  $question_data['user_answer_entry'] &&  $question_data['user_answer_entry'] == $answer ) ) {
916
+					}
933 917
 
934
-                        $answer_class = 'user_wrong';
935
-                        if( $user_correct ) {
918
+				}
936 919
 
937
-                            $answer_class = 'user_right';
920
+				// setup the option specific classes
921
+				$answer_class = '';
922
+				if( isset( $user_correct ) && 0 < $question_data[ 'question_grade' ] ) {
923
+					if ( is_array( $question_data['question_right_answer'] ) && in_array($answer, $question_data['question_right_answer']) ) {
938 924
 
939
-                        }
925
+						$answer_class .= ' right_answer';
940 926
 
941
-                    }
927
+					}  elseif( !is_array($question_data['question_right_answer']) && $question_data['question_right_answer'] == $answer ) {
942 928
 
943
-                }
929
+						$answer_class .= ' right_answer';
944 930
 
945
-                // determine if the current option must be checked
946
-                $checked = '';
947
-                if ( isset( $question_data['user_answer_entry'] ) && 0 < count( $question_data['user_answer_entry'] ) ) {
948
-                    if ( is_array( $question_data['user_answer_entry'] ) && in_array( $answer, $question_data['user_answer_entry'] ) ) {
931
+					} elseif( ( is_array( $question_data['user_answer_entry']  ) && in_array($answer, $question_data['user_answer_entry'] ) )
932
+						||  ( !  $question_data['user_answer_entry'] &&  $question_data['user_answer_entry'] == $answer ) ) {
949 933
 
950
-                        $checked = 'checked="checked"';
934
+						$answer_class = 'user_wrong';
935
+						if( $user_correct ) {
951 936
 
952
-                    } elseif ( !is_array( $question_data['user_answer_entry'] ) ) {
937
+							$answer_class = 'user_right';
953 938
 
954
-                        $checked = checked( $answer, $question_data['user_answer_entry'] , false );
939
+						}
955 940
 
956
-                    }
941
+					}
957 942
 
958
-                } // End If Statement
943
+				}
959 944
 
960
-                //Load the answer option data
961
-                $question_option[ 'ID' ]          = Sensei()->lesson->get_answer_id( $answer );
962
-                $question_option[ 'answer' ]      = $answer;
963
-                $question_option[ 'option_class'] = $answer_class;
964
-                $question_option[ 'checked']      = $checked;
965
-                $question_option[ 'count' ]       = $count;
966
-                $question_option[ 'type' ] = $answer_type;
945
+				// determine if the current option must be checked
946
+				$checked = '';
947
+				if ( isset( $question_data['user_answer_entry'] ) && 0 < count( $question_data['user_answer_entry'] ) ) {
948
+					if ( is_array( $question_data['user_answer_entry'] ) && in_array( $answer, $question_data['user_answer_entry'] ) ) {
967 949
 
968
-                // add the speci  fic option to the list of options for this question
969
-                $question_answers_options[] = $question_option;
950
+						$checked = 'checked="checked"';
970 951
 
971
-            } // end for each option
952
+					} elseif ( !is_array( $question_data['user_answer_entry'] ) ) {
972 953
 
954
+						$checked = checked( $answer, $question_data['user_answer_entry'] , false );
973 955
 
974
-            // Shuffle the array depending on the settings
975
-            $answer_options_sorted = array();
976
-            $random_order = get_post_meta( $question_data['ID'], '_random_order', true );
977
-            if(  $random_order && $random_order == 'yes' ) {
956
+					}
978 957
 
979
-                $answer_options_sorted = $question_answers_options;
980
-                shuffle( $answer_options_sorted );
958
+				} // End If Statement
981 959
 
982
-            } else {
960
+				//Load the answer option data
961
+				$question_option[ 'ID' ]          = Sensei()->lesson->get_answer_id( $answer );
962
+				$question_option[ 'answer' ]      = $answer;
963
+				$question_option[ 'option_class'] = $answer_class;
964
+				$question_option[ 'checked']      = $checked;
965
+				$question_option[ 'count' ]       = $count;
966
+				$question_option[ 'type' ] = $answer_type;
983 967
 
984
-                $answer_order = array();
985
-                $answer_order_string = get_post_meta( $question_data['ID'], '_answer_order', true );
986
-                if( $answer_order_string ) {
968
+				// add the speci  fic option to the list of options for this question
969
+				$question_answers_options[] = $question_option;
987 970
 
988
-                    $answer_order = array_filter( explode( ',', $answer_order_string ) );
989
-                    if( count( $answer_order ) > 0 ) {
971
+			} // end for each option
990 972
 
991
-                        foreach( $answer_order as $answer_id ) {
992 973
 
993
-                            if( isset( $question_answers_options[ $answer_id ] ) ) {
974
+			// Shuffle the array depending on the settings
975
+			$answer_options_sorted = array();
976
+			$random_order = get_post_meta( $question_data['ID'], '_random_order', true );
977
+			if(  $random_order && $random_order == 'yes' ) {
994 978
 
995
-                                $answer_options_sorted[ $answer_id ] = $question_answers_options[ $answer_id ];
996
-                                unset( $question_answers_options[ $answer_id ] );
979
+				$answer_options_sorted = $question_answers_options;
980
+				shuffle( $answer_options_sorted );
997 981
 
998
-                            }
982
+			} else {
999 983
 
1000
-                        }
984
+				$answer_order = array();
985
+				$answer_order_string = get_post_meta( $question_data['ID'], '_answer_order', true );
986
+				if( $answer_order_string ) {
1001 987
 
1002
-                        if( count( $question_answers_options ) > 0 ) {
1003
-                            foreach( $question_answers_options as $id => $answer ) {
988
+					$answer_order = array_filter( explode( ',', $answer_order_string ) );
989
+					if( count( $answer_order ) > 0 ) {
1004 990
 
1005
-                                $answer_options_sorted[ $id ] = $answer;
991
+						foreach( $answer_order as $answer_id ) {
1006 992
 
1007
-                            }
1008
-                        }
993
+							if( isset( $question_answers_options[ $answer_id ] ) ) {
1009 994
 
1010
-                    }else{
995
+								$answer_options_sorted[ $answer_id ] = $question_answers_options[ $answer_id ];
996
+								unset( $question_answers_options[ $answer_id ] );
1011 997
 
1012
-                        $answer_options_sorted = $question_answers_options;
998
+							}
1013 999
 
1014
-                    }
1000
+						}
1015 1001
 
1016
-                }else{
1002
+						if( count( $question_answers_options ) > 0 ) {
1003
+							foreach( $question_answers_options as $id => $answer ) {
1017 1004
 
1018
-                    $answer_options_sorted = $question_answers_options;
1005
+								$answer_options_sorted[ $id ] = $answer;
1019 1006
 
1020
-                } // end if $answer_order_string
1007
+							}
1008
+						}
1021 1009
 
1022
-            } // end if random order
1010
+					}else{
1023 1011
 
1012
+						$answer_options_sorted = $question_answers_options;
1024 1013
 
1025
-            // assemble and setup the data for the templates data array
1026
-            $question_data[ 'answer_options' ]    =  $answer_options_sorted;
1014
+					}
1027 1015
 
1028
-        }
1016
+				}else{
1029 1017
 
1030
-        return $question_data;
1018
+					$answer_options_sorted = $question_answers_options;
1031 1019
 
1032
-    }//  end multiple_choice_load_question_data
1020
+				} // end if $answer_order_string
1033 1021
 
1034
-    /**
1035
-     * Load the gap fill question data on the sensei_get_question_template_data
1036
-     * filter.
1037
-     *
1038
-     * @since 1.9.0
1039
-     *
1040
-     * @param $question_data
1041
-     * @param $question_id
1042
-     * @param $quiz_id
1043
-     *
1044
-     * @return array()
1045
-     */
1046
-    public static function gap_fill_load_question_data( $question_data, $question_id, $quiz_id ){
1022
+			} // end if random order
1047 1023
 
1048
-        if( 'gap-fill' == Sensei()->question->get_question_type( $question_id ) ) {
1049 1024
 
1050
-            $gapfill_array = explode( '||', $question_data[ 'question_right_answer' ] );
1051
-            $question_data[ 'gapfill_pre' ]  = isset( $gapfill_array[0] ) ? $gapfill_array[0] : '';
1052
-            $question_data[ 'gapfill_gap' ]  = isset( $gapfill_array[1] ) ? $gapfill_array[1] : '';
1053
-            $question_data[ 'gapfill_post' ] = isset( $gapfill_array[2] ) ? $gapfill_array[2] : '';
1025
+			// assemble and setup the data for the templates data array
1026
+			$question_data[ 'answer_options' ]    =  $answer_options_sorted;
1054 1027
 
1055
-        }
1028
+		}
1056 1029
 
1057
-        return $question_data;
1030
+		return $question_data;
1058 1031
 
1059
-    }//  end gap_fill_load_question_data
1032
+	}//  end multiple_choice_load_question_data
1033
+
1034
+	/**
1035
+	 * Load the gap fill question data on the sensei_get_question_template_data
1036
+	 * filter.
1037
+	 *
1038
+	 * @since 1.9.0
1039
+	 *
1040
+	 * @param $question_data
1041
+	 * @param $question_id
1042
+	 * @param $quiz_id
1043
+	 *
1044
+	 * @return array()
1045
+	 */
1046
+	public static function gap_fill_load_question_data( $question_data, $question_id, $quiz_id ){
1047
+
1048
+		if( 'gap-fill' == Sensei()->question->get_question_type( $question_id ) ) {
1049
+
1050
+			$gapfill_array = explode( '||', $question_data[ 'question_right_answer' ] );
1051
+			$question_data[ 'gapfill_pre' ]  = isset( $gapfill_array[0] ) ? $gapfill_array[0] : '';
1052
+			$question_data[ 'gapfill_gap' ]  = isset( $gapfill_array[1] ) ? $gapfill_array[1] : '';
1053
+			$question_data[ 'gapfill_post' ] = isset( $gapfill_array[2] ) ? $gapfill_array[2] : '';
1054
+
1055
+		}
1056
+
1057
+		return $question_data;
1058
+
1059
+	}//  end gap_fill_load_question_data
1060 1060
 
1061 1061
 
1062
-    /**
1063
-     * Get the correct answer for a question
1064
-     *
1065
-     * @param $question_id
1066
-     * @return string $correct_answer or empty
1067
-     */
1068
-    public static function get_correct_answer( $question_id ){
1062
+	/**
1063
+	 * Get the correct answer for a question
1064
+	 *
1065
+	 * @param $question_id
1066
+	 * @return string $correct_answer or empty
1067
+	 */
1068
+	public static function get_correct_answer( $question_id ){
1069 1069
 
1070
-        $right_answer = get_post_meta( $question_id, '_question_right_answer', true );
1071
-        $type = Sensei()->question->get_question_type( $question_id );
1072
-        $type_name = __( 'Multiple Choice', 'woothemes-sensei' );
1073
-        $grade_type = 'manual-grade';
1070
+		$right_answer = get_post_meta( $question_id, '_question_right_answer', true );
1071
+		$type = Sensei()->question->get_question_type( $question_id );
1072
+		$type_name = __( 'Multiple Choice', 'woothemes-sensei' );
1073
+		$grade_type = 'manual-grade';
1074 1074
 
1075
-        if ('boolean'== $type ) {
1075
+		if ('boolean'== $type ) {
1076 1076
 
1077
-            $right_answer = ucfirst($right_answer);
1077
+			$right_answer = ucfirst($right_answer);
1078 1078
 
1079
-        }elseif( 'multiple-choice' == $type ) {
1079
+		}elseif( 'multiple-choice' == $type ) {
1080 1080
 
1081
-            $right_answer = (array) $right_answer;
1082
-            $right_answer = implode( ', ', $right_answer );
1081
+			$right_answer = (array) $right_answer;
1082
+			$right_answer = implode( ', ', $right_answer );
1083 1083
 
1084
-        }elseif( 'gap-fill' == $type ) {
1084
+		}elseif( 'gap-fill' == $type ) {
1085 1085
 
1086
-            $right_answer_array = explode( '||', $right_answer );
1087
-            if ( isset( $right_answer_array[0] ) ) { $gapfill_pre = $right_answer_array[0]; } else { $gapfill_pre = ''; }
1088
-            if ( isset( $right_answer_array[1] ) ) { $gapfill_gap = $right_answer_array[1]; } else { $gapfill_gap = ''; }
1089
-            if ( isset( $right_answer_array[2] ) ) { $gapfill_post = $right_answer_array[2]; } else { $gapfill_post = ''; }
1086
+			$right_answer_array = explode( '||', $right_answer );
1087
+			if ( isset( $right_answer_array[0] ) ) { $gapfill_pre = $right_answer_array[0]; } else { $gapfill_pre = ''; }
1088
+			if ( isset( $right_answer_array[1] ) ) { $gapfill_gap = $right_answer_array[1]; } else { $gapfill_gap = ''; }
1089
+			if ( isset( $right_answer_array[2] ) ) { $gapfill_post = $right_answer_array[2]; } else { $gapfill_post = ''; }
1090 1090
 
1091
-            $right_answer = $gapfill_pre . ' <span class="highlight">' . $gapfill_gap . '</span> ' . $gapfill_post;
1091
+			$right_answer = $gapfill_pre . ' <span class="highlight">' . $gapfill_gap . '</span> ' . $gapfill_post;
1092 1092
 
1093
-        }else{
1093
+		}else{
1094 1094
 
1095
-            // for non auto gradable question types no answer should be returned.
1096
-            $right_answer = '';
1095
+			// for non auto gradable question types no answer should be returned.
1096
+			$right_answer = '';
1097 1097
 
1098
-        }
1098
+		}
1099 1099
 
1100
-        return $right_answer;
1100
+		return $right_answer;
1101 1101
 
1102
-    } // get_correct_answer
1102
+	} // get_correct_answer
1103 1103
 
1104 1104
 } // End Class
1105 1105
 
Please login to merge, or discard this patch.
includes/class-sensei-quiz.php 4 patches
Doc Comments   +4 added lines, -5 removed lines patch added patch discarded remove patch
@@ -123,7 +123,7 @@  discard block
 block discarded – undo
123 123
      *
124 124
      * This function hooks into the quiz page and accepts the answer form save post.
125 125
      * @since 1.7.3
126
-     * @return bool $saved;
126
+     * @return boolean|null $saved;
127 127
      */
128 128
     public function user_save_quiz_answers_listener(){
129 129
 
@@ -214,7 +214,7 @@  discard block
 block discarded – undo
214 214
 	 * @param int $lesson_id
215 215
 	 * @param int $user_id
216 216
 	 *
217
-	 * @return array $answers or false
217
+	 * @return boolean $answers or false
218 218
 	 */
219 219
 	public function get_user_answers( $lesson_id, $user_id ){
220 220
 
@@ -707,7 +707,7 @@  discard block
 block discarded – undo
707 707
       *      @type int $question_id
708 708
       *      @type int $question_grade
709 709
       * }
710
-      * @param $lesson_id
710
+      * @param integer $lesson_id
711 711
       * @param $user_id (Optional) will use the current user if not supplied
712 712
       *
713 713
       * @return bool
@@ -754,7 +754,7 @@  discard block
 block discarded – undo
754 754
       *
755 755
       * @since 1.7.4
756 756
       *
757
-      * @param $lesson_id
757
+      * @param integer $lesson_id
758 758
       * @param $user_id (Optional) will use the current user if not supplied
759 759
       *
760 760
       * @return array $user_quiz_grades or false if none exists for this users
@@ -1090,7 +1090,6 @@  discard block
 block discarded – undo
1090 1090
       * Filter the single title and add the Quiz to it.
1091 1091
       *
1092 1092
       * @param string $title
1093
-      * @param int $id title post id
1094 1093
       * @return string $quiz_title
1095 1094
       */
1096 1095
      public static function single_quiz_title( $title, $post_id ){
Please login to merge, or discard this patch.
Braces   +7 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,5 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined( 'ABSPATH' ) ) {
3
+	exit;
4
+}
5
+// Exit if accessed directly
3 6
 
4 7
 /**
5 8
  * Sensei Quiz Class
@@ -104,7 +107,7 @@  discard block
 block discarded – undo
104 107
 			global $post;
105 108
 			if( 'quiz' == get_post_type( $post ) ){
106 109
 				$quiz_id = $post->ID;
107
-			}else{
110
+			} else{
108 111
 				return false;
109 112
 			}
110 113
 
@@ -234,7 +237,7 @@  discard block
 block discarded – undo
234 237
 
235 238
             $encoded_user_answers = $transient_cached_answers;
236 239
 
237
-        }else{
240
+        } else{
238 241
 
239 242
             $encoded_user_answers = WooThemes_Sensei_Utils::get_user_data( 'quiz_answers', $lesson_id  , $user_id );
240 243
 
@@ -424,7 +427,7 @@  discard block
 block discarded – undo
424 427
             // compress the answer for saving
425 428
 			if( 'multi-line' == $question_type ) {
426 429
                 $answer = esc_html( $answer );
427
-            }elseif( 'file-upload' == $question_type  ){
430
+            } elseif( 'file-upload' == $question_type  ){
428 431
                 $file_key = 'file_upload_' . $question_id;
429 432
                 if( isset( $files[ $file_key ] ) ) {
430 433
                         $attachment_id = WooThemes_Sensei_Utils::upload_file(  $files[ $file_key ] );
Please login to merge, or discard this patch.
Spacing   +286 added lines, -286 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2
+if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
3 3
 
4 4
 /**
5 5
  * Sensei Quiz Class
@@ -23,24 +23,24 @@  discard block
 block discarded – undo
23 23
 	 *
24 24
 	 * @param $file
25 25
 	 */
26
-	public function __construct ( $file = __FILE__ ) {
26
+	public function __construct($file = __FILE__) {
27 27
 		$this->file = $file;
28
-		$this->meta_fields = array( 'quiz_passmark', 'quiz_lesson', 'quiz_type', 'quiz_grade_type', 'pass_required','enable_quiz_reset' );
29
-		add_action( 'save_post', array( $this, 'update_author' ));
28
+		$this->meta_fields = array('quiz_passmark', 'quiz_lesson', 'quiz_type', 'quiz_grade_type', 'pass_required', 'enable_quiz_reset');
29
+		add_action('save_post', array($this, 'update_author'));
30 30
 
31 31
 		// listen to the reset button click
32
-		add_action( 'template_redirect', array( $this, 'reset_button_click_listener'  ) );
32
+		add_action('template_redirect', array($this, 'reset_button_click_listener'));
33 33
 
34 34
         // fire the complete quiz button submit for grading action
35
-        add_action( 'sensei_complete_quiz', array( $this, 'user_quiz_submit_listener' ) );
35
+        add_action('sensei_complete_quiz', array($this, 'user_quiz_submit_listener'));
36 36
 
37 37
 		// fire the save user answers quiz button click responder
38
-		add_action( 'sensei_complete_quiz', array( $this, 'user_save_quiz_answers_listener' ) );
38
+		add_action('sensei_complete_quiz', array($this, 'user_save_quiz_answers_listener'));
39 39
 
40 40
         // fire the load global data function
41
-        add_action( 'sensei_complete_quiz', array( $this, 'load_global_quiz_data' ), 80 );
41
+        add_action('sensei_complete_quiz', array($this, 'load_global_quiz_data'), 80);
42 42
 
43
-        add_action( 'template_redirect', array ( $this, 'quiz_has_no_questions') );
43
+        add_action('template_redirect', array($this, 'quiz_has_no_questions'));
44 44
 
45 45
 
46 46
     } // End __construct()
@@ -51,26 +51,26 @@  discard block
 block discarded – undo
51 51
 	* @param int $post_id
52 52
 	* @return void
53 53
 	*/
54
-	public function update_author( $post_id ){
54
+	public function update_author($post_id) {
55 55
 
56 56
 
57 57
 		// If this isn't a 'lesson' post, don't update it.
58 58
         // if this is a revision don't save it
59
-	    if ( isset( $_POST['post_type'] ) && 'lesson' != $_POST['post_type']
60
-            || wp_is_post_revision( $post_id ) ) {
59
+	    if (isset($_POST['post_type']) && 'lesson' != $_POST['post_type']
60
+            || wp_is_post_revision($post_id)) {
61 61
 
62 62
                 return;
63 63
 
64 64
         }
65 65
 	    // get the lesson author id to be use late
66
-	    $saved_post = get_post( $post_id );
67
-	    $new_lesson_author_id =  $saved_post->post_author;
66
+	    $saved_post = get_post($post_id);
67
+	    $new_lesson_author_id = $saved_post->post_author;
68 68
 
69 69
 	    //get the lessons quiz
70
-		$lesson_quizzes = Sensei()->lesson->lesson_quizzes( $post_id );
71
-	    foreach ( (array) $lesson_quizzes as $quiz_item ) {
70
+		$lesson_quizzes = Sensei()->lesson->lesson_quizzes($post_id);
71
+	    foreach ((array) $lesson_quizzes as $quiz_item) {
72 72
 
73
-	    	if( ! $quiz_item ) {
73
+	    	if ( ! $quiz_item) {
74 74
 	    		continue;
75 75
 	    	}
76 76
 
@@ -81,10 +81,10 @@  discard block
 block discarded – undo
81 81
 			);
82 82
 
83 83
             // remove the action so that it doesn't fire again
84
-            remove_action( 'save_post', array( $this, 'update_author' ));
84
+            remove_action('save_post', array($this, 'update_author'));
85 85
 
86 86
 			// Update the post into the database
87
-		  	wp_update_post( $my_post );
87
+		  	wp_update_post($my_post);
88 88
 	    }
89 89
 
90 90
 	    return;
@@ -98,19 +98,19 @@  discard block
 block discarded – undo
98 98
 	 * @param int $quiz_id
99 99
 	 * @return int @lesson_id
100 100
 	 */
101
-	public function get_lesson_id( $quiz_id ){
101
+	public function get_lesson_id($quiz_id) {
102 102
 
103
-		if( empty( $quiz_id ) || ! intval( $quiz_id ) > 0 ){
103
+		if (empty($quiz_id) || ! intval($quiz_id) > 0) {
104 104
 			global $post;
105
-			if( 'quiz' == get_post_type( $post ) ){
105
+			if ('quiz' == get_post_type($post)) {
106 106
 				$quiz_id = $post->ID;
107
-			}else{
107
+			} else {
108 108
 				return false;
109 109
 			}
110 110
 
111 111
 		}
112 112
 
113
-		$quiz = get_post( $quiz_id );
113
+		$quiz = get_post($quiz_id);
114 114
 		$lesson_id = $quiz->post_parent;
115 115
 
116 116
 		return $lesson_id;
@@ -125,23 +125,23 @@  discard block
 block discarded – undo
125 125
      * @since 1.7.3
126 126
      * @return bool $saved;
127 127
      */
128
-    public function user_save_quiz_answers_listener(){
128
+    public function user_save_quiz_answers_listener() {
129 129
 
130
-        if( ! isset( $_POST[ 'quiz_save' ])
131
-            || !isset( $_POST[ 'sensei_question' ] )
132
-            || empty( $_POST[ 'sensei_question' ] )
133
-            ||  ! wp_verify_nonce( $_POST['woothemes_sensei_save_quiz_nonce'], 'woothemes_sensei_save_quiz_nonce'  ) > 1 ) {
130
+        if ( ! isset($_POST['quiz_save'])
131
+            || ! isset($_POST['sensei_question'])
132
+            || empty($_POST['sensei_question'])
133
+            ||  ! wp_verify_nonce($_POST['woothemes_sensei_save_quiz_nonce'], 'woothemes_sensei_save_quiz_nonce') > 1) {
134 134
             return;
135 135
         }
136 136
 
137 137
         global $post;
138
-        $lesson_id = $this->get_lesson_id( $post->ID );
139
-        $quiz_answers = $_POST[ 'sensei_question' ];
138
+        $lesson_id = $this->get_lesson_id($post->ID);
139
+        $quiz_answers = $_POST['sensei_question'];
140 140
         // call the save function
141
-        self::save_user_answers( $quiz_answers, $_FILES , $lesson_id  , get_current_user_id() );
141
+        self::save_user_answers($quiz_answers, $_FILES, $lesson_id, get_current_user_id());
142 142
 
143 143
         // remove the hook as it should only fire once per click
144
-        remove_action( 'sensei_complete_quiz', 'user_save_quiz_answers_listener' );
144
+        remove_action('sensei_complete_quiz', 'user_save_quiz_answers_listener');
145 145
 
146 146
     } // end user_save_quiz_answers_listener
147 147
 
@@ -160,17 +160,17 @@  discard block
 block discarded – undo
160 160
 	 *
161 161
 	 * @return false or int $answers_saved
162 162
 	 */
163
-	public static function save_user_answers( $quiz_answers, $files = array(), $lesson_id , $user_id = 0 ){
163
+	public static function save_user_answers($quiz_answers, $files = array(), $lesson_id, $user_id = 0) {
164 164
 
165
-        if( ! ( $user_id > 0 ) ){
165
+        if ( ! ($user_id > 0)) {
166 166
             $user_id = get_current_user_id();
167 167
         }
168 168
 
169 169
         // make sure the parameters are valid before continuing
170
-		if( empty( $lesson_id ) || empty( $user_id )
171
-			|| 'lesson' != get_post_type( $lesson_id )
172
-			||!get_userdata( $user_id )
173
-			|| !is_array( $quiz_answers ) ){
170
+		if (empty($lesson_id) || empty($user_id)
171
+			|| 'lesson' != get_post_type($lesson_id)
172
+			||! get_userdata($user_id)
173
+			|| ! is_array($quiz_answers)) {
174 174
 
175 175
 			return false;
176 176
 
@@ -178,23 +178,23 @@  discard block
 block discarded – undo
178 178
 
179 179
 
180 180
         // start the lesson before saving the data in case the user has not started the lesson
181
-        $activity_logged = Sensei_Utils::sensei_start_lesson( $lesson_id, $user_id );
181
+        $activity_logged = Sensei_Utils::sensei_start_lesson($lesson_id, $user_id);
182 182
 
183 183
 		//prepare the answers
184
-		$prepared_answers = self::prepare_form_submitted_answers( $quiz_answers , $files );
184
+		$prepared_answers = self::prepare_form_submitted_answers($quiz_answers, $files);
185 185
 
186 186
 		// save the user data
187
-        $answers_saved = Sensei_Utils::add_user_data( 'quiz_answers', $lesson_id, $prepared_answers, $user_id ) ;
187
+        $answers_saved = Sensei_Utils::add_user_data('quiz_answers', $lesson_id, $prepared_answers, $user_id);
188 188
 
189 189
 		// were the answers saved correctly?
190
-		if( intval( $answers_saved ) > 0){
190
+		if (intval($answers_saved) > 0) {
191 191
 
192 192
             // save transient to make retrieval faster
193 193
             $transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
194
-            set_transient( $transient_key, $prepared_answers, 10 * DAY_IN_SECONDS );
194
+            set_transient($transient_key, $prepared_answers, 10 * DAY_IN_SECONDS);
195 195
 
196 196
             // update the message showed to user
197
-            Sensei()->frontend->messages = '<div class="sensei-message note">' . __( 'Quiz Saved Successfully.', 'woothemes-sensei' )  . '</div>';
197
+            Sensei()->frontend->messages = '<div class="sensei-message note">'.__('Quiz Saved Successfully.', 'woothemes-sensei').'</div>';
198 198
         }
199 199
 
200 200
 		return $answers_saved;
@@ -216,41 +216,41 @@  discard block
 block discarded – undo
216 216
 	 *
217 217
 	 * @return array $answers or false
218 218
 	 */
219
-	public function get_user_answers( $lesson_id, $user_id ){
219
+	public function get_user_answers($lesson_id, $user_id) {
220 220
 
221 221
 		$answers = false;
222 222
 
223
-		if ( ! intval( $lesson_id ) > 0 || 'lesson' != get_post_type( $lesson_id )
224
-		|| ! intval( $user_id )  > 0 || !get_userdata( $user_id )  ) {
223
+		if ( ! intval($lesson_id) > 0 || 'lesson' != get_post_type($lesson_id)
224
+		|| ! intval($user_id) > 0 || ! get_userdata($user_id)) {
225 225
 			return false;
226 226
 		}
227 227
 
228 228
         // save some time and get the transient cached data
229 229
         $transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
230
-        $transient_cached_answers = get_transient( $transient_key );
230
+        $transient_cached_answers = get_transient($transient_key);
231 231
 
232 232
         // return the transient or get the values get the values from the comment meta
233
-        if( !empty( $transient_cached_answers  ) && false != $transient_cached_answers ){
233
+        if ( ! empty($transient_cached_answers) && false != $transient_cached_answers) {
234 234
 
235 235
             $encoded_user_answers = $transient_cached_answers;
236 236
 
237
-        }else{
237
+        } else {
238 238
 
239
-            $encoded_user_answers = Sensei_Utils::get_user_data( 'quiz_answers', $lesson_id  , $user_id );
239
+            $encoded_user_answers = Sensei_Utils::get_user_data('quiz_answers', $lesson_id, $user_id);
240 240
 
241 241
         } // end if transient check
242 242
 
243
-		if( ! is_array( $encoded_user_answers ) ){
243
+		if ( ! is_array($encoded_user_answers)) {
244 244
 			return false;
245 245
 		}
246 246
 
247 247
         //set the transient with the new valid data for faster retrieval in future
248
-        set_transient( $transient_key,  $encoded_user_answers, 10 * DAY_IN_SECONDS);
248
+        set_transient($transient_key, $encoded_user_answers, 10 * DAY_IN_SECONDS);
249 249
 
250 250
 		// decode an unserialize all answers
251
-		foreach( $encoded_user_answers as $question_id => $encoded_answer ) {
252
-			$decoded_answer = base64_decode( $encoded_answer );
253
-			$answers[$question_id] = maybe_unserialize( $decoded_answer );
251
+		foreach ($encoded_user_answers as $question_id => $encoded_answer) {
252
+			$decoded_answer = base64_decode($encoded_answer);
253
+			$answers[$question_id] = maybe_unserialize($decoded_answer);
254 254
 		}
255 255
 
256 256
 		return $answers;
@@ -267,23 +267,23 @@  discard block
 block discarded – undo
267 267
 	 *
268 268
 	 * @return void;
269 269
 	 */
270
-	public function reset_button_click_listener( ){
270
+	public function reset_button_click_listener( ) {
271 271
 
272
-		if( ! isset( $_POST[ 'quiz_reset' ])
273
-			||  ! wp_verify_nonce( $_POST['woothemes_sensei_reset_quiz_nonce'], 'woothemes_sensei_reset_quiz_nonce'  ) > 1 ) {
272
+		if ( ! isset($_POST['quiz_reset'])
273
+			||  ! wp_verify_nonce($_POST['woothemes_sensei_reset_quiz_nonce'], 'woothemes_sensei_reset_quiz_nonce') > 1) {
274 274
 
275 275
 			return; // exit
276 276
 		}
277 277
 
278 278
 		global $post;
279 279
 		$current_quiz_id = $post->ID;
280
-		$lesson_id = $this->get_lesson_id( $current_quiz_id );
280
+		$lesson_id = $this->get_lesson_id($current_quiz_id);
281 281
 
282 282
         // reset all user data
283
-        $this->reset_user_lesson_data( $lesson_id, get_current_user_id() );
283
+        $this->reset_user_lesson_data($lesson_id, get_current_user_id());
284 284
 
285 285
 		//this function should only run once
286
-		remove_action( 'template_redirect', array( $this, 'reset_button_click_listener'  ) );
286
+		remove_action('template_redirect', array($this, 'reset_button_click_listener'));
287 287
 
288 288
 	} // end reset_button_click_listener
289 289
 
@@ -302,18 +302,18 @@  discard block
 block discarded – undo
302 302
 	public function user_quiz_submit_listener() {
303 303
 
304 304
         // only respond to valid quiz completion submissions
305
-        if( ! isset( $_POST[ 'quiz_complete' ])
306
-            || !isset( $_POST[ 'sensei_question' ] )
307
-            || empty( $_POST[ 'sensei_question' ] )
308
-            ||  ! wp_verify_nonce( $_POST['woothemes_sensei_complete_quiz_nonce'], 'woothemes_sensei_complete_quiz_nonce'  ) > 1 ) {
305
+        if ( ! isset($_POST['quiz_complete'])
306
+            || ! isset($_POST['sensei_question'])
307
+            || empty($_POST['sensei_question'])
308
+            ||  ! wp_verify_nonce($_POST['woothemes_sensei_complete_quiz_nonce'], 'woothemes_sensei_complete_quiz_nonce') > 1) {
309 309
             return;
310 310
         }
311 311
 
312 312
         global $post, $current_user;
313
-        $lesson_id = $this->get_lesson_id( $post->ID );
314
-        $quiz_answers = $_POST[ 'sensei_question' ];
313
+        $lesson_id = $this->get_lesson_id($post->ID);
314
+        $quiz_answers = $_POST['sensei_question'];
315 315
 
316
-        self::submit_answers_for_grading( $quiz_answers, $_FILES ,  $lesson_id  , $current_user->ID );
316
+        self::submit_answers_for_grading($quiz_answers, $_FILES, $lesson_id, $current_user->ID);
317 317
 
318 318
 	} // End sensei_complete_quiz()
319 319
 
@@ -327,7 +327,7 @@  discard block
 block discarded – undo
327 327
      * @access public
328 328
      *
329 329
      */
330
-    public function load_global_quiz_data(){
330
+    public function load_global_quiz_data() {
331 331
 
332 332
         global  $post, $current_user;
333 333
         $this->data = new stdClass();
@@ -336,46 +336,46 @@  discard block
 block discarded – undo
336 336
         $grade = 0;
337 337
 
338 338
         // Get Quiz Questions
339
-        $lesson_quiz_questions = Sensei()->lesson->lesson_quiz_questions( $post->ID );
339
+        $lesson_quiz_questions = Sensei()->lesson->lesson_quiz_questions($post->ID);
340 340
 
341
-        $quiz_lesson_id = absint( get_post_meta( $post->ID, '_quiz_lesson', true ) );
341
+        $quiz_lesson_id = absint(get_post_meta($post->ID, '_quiz_lesson', true));
342 342
 
343 343
         // Get quiz grade type
344
-        $quiz_grade_type = get_post_meta( $post->ID, '_quiz_grade_type', true );
344
+        $quiz_grade_type = get_post_meta($post->ID, '_quiz_grade_type', true);
345 345
 
346 346
         // Get quiz pass setting
347
-        $pass_required = get_post_meta( $post->ID, '_pass_required', true );
347
+        $pass_required = get_post_meta($post->ID, '_pass_required', true);
348 348
 
349 349
         // Get quiz pass mark
350
-        $quiz_passmark = abs( round( doubleval( get_post_meta( $post->ID, '_quiz_passmark', true ) ), 2 ) );
350
+        $quiz_passmark = abs(round(doubleval(get_post_meta($post->ID, '_quiz_passmark', true)), 2));
351 351
 
352 352
         // Get latest quiz answers and grades
353
-        $lesson_id = Sensei()->quiz->get_lesson_id( $post->ID );
354
-        $user_quizzes = Sensei()->quiz->get_user_answers( $lesson_id, get_current_user_id() );
355
-        $user_lesson_status = Sensei_Utils::user_lesson_status( $quiz_lesson_id, $current_user->ID );
353
+        $lesson_id = Sensei()->quiz->get_lesson_id($post->ID);
354
+        $user_quizzes = Sensei()->quiz->get_user_answers($lesson_id, get_current_user_id());
355
+        $user_lesson_status = Sensei_Utils::user_lesson_status($quiz_lesson_id, $current_user->ID);
356 356
         $user_quiz_grade = 0;
357
-        if( isset( $user_lesson_status->comment_ID ) ) {
358
-            $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
357
+        if (isset($user_lesson_status->comment_ID)) {
358
+            $user_quiz_grade = get_comment_meta($user_lesson_status->comment_ID, 'grade', true);
359 359
         }
360 360
 
361
-        if ( ! is_array($user_quizzes) ) { $user_quizzes = array(); }
361
+        if ( ! is_array($user_quizzes)) { $user_quizzes = array(); }
362 362
 
363 363
         // Check again that the lesson is complete
364
-        $user_lesson_end = Sensei_Utils::user_completed_lesson( $user_lesson_status );
364
+        $user_lesson_end = Sensei_Utils::user_completed_lesson($user_lesson_status);
365 365
         $user_lesson_complete = false;
366
-        if ( $user_lesson_end ) {
366
+        if ($user_lesson_end) {
367 367
             $user_lesson_complete = true;
368 368
         } // End If Statement
369 369
 
370
-        $reset_allowed = get_post_meta( $post->ID, '_enable_quiz_reset', true );
370
+        $reset_allowed = get_post_meta($post->ID, '_enable_quiz_reset', true);
371 371
         //backwards compatibility
372
-        if( 'on' == $reset_allowed ) {
372
+        if ('on' == $reset_allowed) {
373 373
             $reset_allowed = 1;
374 374
         }
375 375
 
376 376
         // Build frontend data object for backwards compatibility
377 377
         // using this is no longer recommended
378
-        $this->data->user_quiz_grade = $user_quiz_grade;// Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
378
+        $this->data->user_quiz_grade = $user_quiz_grade; // Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
379 379
         $this->data->quiz_passmark = $quiz_passmark;
380 380
         $this->data->quiz_lesson = $quiz_lesson_id;
381 381
         $this->data->quiz_grade_type = $quiz_grade_type; // get_post_meta( $quiz_id, '_quiz_grade_type', true );
@@ -400,41 +400,41 @@  discard block
 block discarded – undo
400 400
 	 * @param $files
401 401
 	 * @return array
402 402
 	 */
403
-	public static function prepare_form_submitted_answers( $unprepared_answers,  $files ){
403
+	public static function prepare_form_submitted_answers($unprepared_answers, $files) {
404 404
 
405 405
 
406 406
 		$prepared_answers = array();
407 407
 
408 408
 		// validate incoming answers
409
-		if( empty( $unprepared_answers  ) || ! is_array( $unprepared_answers ) ){
409
+		if (empty($unprepared_answers) || ! is_array($unprepared_answers)) {
410 410
 			return false;
411 411
 		}
412 412
 
413 413
 		// Loop through submitted quiz answers and save them appropriately
414
-		foreach( $unprepared_answers as $question_id => $answer ) {
414
+		foreach ($unprepared_answers as $question_id => $answer) {
415 415
 
416 416
 			//get the current questions question type
417
-            $question_type = Sensei()->question->get_question_type( $question_id );
417
+            $question_type = Sensei()->question->get_question_type($question_id);
418 418
 
419 419
 			// Sanitise answer
420
-			if( 0 == get_magic_quotes_gpc() ) {
421
-				$answer = wp_unslash( $answer );
420
+			if (0 == get_magic_quotes_gpc()) {
421
+				$answer = wp_unslash($answer);
422 422
 			}
423 423
 
424 424
             // compress the answer for saving
425
-			if( 'multi-line' == $question_type ) {
426
-                $answer = esc_html( $answer );
427
-            }elseif( 'file-upload' == $question_type  ){
428
-                $file_key = 'file_upload_' . $question_id;
429
-                if( isset( $files[ $file_key ] ) ) {
430
-                        $attachment_id = Sensei_Utils::upload_file(  $files[ $file_key ] );
431
-                        if( $attachment_id ) {
425
+			if ('multi-line' == $question_type) {
426
+                $answer = esc_html($answer);
427
+            }elseif ('file-upload' == $question_type) {
428
+                $file_key = 'file_upload_'.$question_id;
429
+                if (isset($files[$file_key])) {
430
+                        $attachment_id = Sensei_Utils::upload_file($files[$file_key]);
431
+                        if ($attachment_id) {
432 432
                             $answer = $attachment_id;
433 433
                         }
434 434
                     }
435 435
             } // end if
436 436
 
437
-			$prepared_answers[ $question_id ] =  base64_encode( maybe_serialize( $answer ) );
437
+			$prepared_answers[$question_id] = base64_encode(maybe_serialize($answer));
438 438
 
439 439
 		}// end for each $quiz_answers
440 440
 
@@ -454,54 +454,54 @@  discard block
 block discarded – undo
454 454
      * @param int $user_id
455 455
      * @param int $lesson_id
456 456
      */
457
-    public function reset_user_lesson_data( $lesson_id , $user_id = 0 ){
457
+    public function reset_user_lesson_data($lesson_id, $user_id = 0) {
458 458
 
459 459
         //make sure the parameters are valid
460
-        if( empty( $lesson_id ) || empty( $user_id )
461
-            || 'lesson' != get_post_type( $lesson_id )
462
-            || ! get_userdata( $user_id ) ){
460
+        if (empty($lesson_id) || empty($user_id)
461
+            || 'lesson' != get_post_type($lesson_id)
462
+            || ! get_userdata($user_id)) {
463 463
             return false;
464 464
         }
465 465
 
466 466
 
467 467
 
468 468
         //get the users lesson status to make
469
-        $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
470
-        if( ! isset( $user_lesson_status->comment_ID ) ) {
469
+        $user_lesson_status = Sensei_Utils::user_lesson_status($lesson_id, $user_id);
470
+        if ( ! isset($user_lesson_status->comment_ID)) {
471 471
             // this user is not taking this lesson so this process is not needed
472 472
             return false;
473 473
         }
474 474
 
475 475
         //get the lesson quiz and course
476
-        $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
477
-        $course_id = Sensei()->lesson->get_course_id( $lesson_id );
476
+        $quiz_id = Sensei()->lesson->lesson_quizzes($lesson_id);
477
+        $course_id = Sensei()->lesson->get_course_id($lesson_id);
478 478
 
479 479
         // reset the transients
480 480
         $answers_transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
481 481
         $grades_transient_key = 'quiz_grades_'.$user_id.'_'.$lesson_id;
482 482
         $answers_feedback_transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
483
-        delete_transient( $answers_transient_key );
484
-        delete_transient( $grades_transient_key );
485
-        delete_transient( $answers_feedback_transient_key );
483
+        delete_transient($answers_transient_key);
484
+        delete_transient($grades_transient_key);
485
+        delete_transient($answers_feedback_transient_key);
486 486
 
487 487
         // reset the quiz answers and feedback notes
488
-        $deleted_answers = Sensei_Utils::delete_user_data( 'quiz_answers', $lesson_id, $user_id );
489
-        $deleted_grades = Sensei_Utils::delete_user_data( 'quiz_grades', $lesson_id, $user_id );
490
-        $deleted_user_feedback = Sensei_Utils::delete_user_data( 'quiz_answers_feedback', $lesson_id, $user_id );
488
+        $deleted_answers = Sensei_Utils::delete_user_data('quiz_answers', $lesson_id, $user_id);
489
+        $deleted_grades = Sensei_Utils::delete_user_data('quiz_grades', $lesson_id, $user_id);
490
+        $deleted_user_feedback = Sensei_Utils::delete_user_data('quiz_answers_feedback', $lesson_id, $user_id);
491 491
 
492 492
         // Delete quiz answers, this auto deletes the corresponding meta data, such as the question/answer grade
493
-        Sensei_Utils::sensei_delete_quiz_answers( $quiz_id, $user_id );
493
+        Sensei_Utils::sensei_delete_quiz_answers($quiz_id, $user_id);
494 494
 
495
-        Sensei_Utils::update_lesson_status( $user_id , $lesson_id, 'in-progress', array( 'questions_asked' => '', 'grade' => '' ) );
495
+        Sensei_Utils::update_lesson_status($user_id, $lesson_id, 'in-progress', array('questions_asked' => '', 'grade' => ''));
496 496
 
497 497
         // Update course completion
498
-        Sensei_Utils::update_course_status( $user_id, $course_id );
498
+        Sensei_Utils::update_course_status($user_id, $course_id);
499 499
 
500 500
         // Run any action on quiz/lesson reset (previously this didn't occur on resetting a quiz, see resetting a lesson in sensei_complete_lesson()
501
-        do_action( 'sensei_user_lesson_reset', $user_id, $lesson_id );
502
-        Sensei()->frontend->messages = '<div class="sensei-message note">' . __( 'Quiz Reset Successfully.', 'woothemes-sensei' ) . '</div>';
501
+        do_action('sensei_user_lesson_reset', $user_id, $lesson_id);
502
+        Sensei()->frontend->messages = '<div class="sensei-message note">'.__('Quiz Reset Successfully.', 'woothemes-sensei').'</div>';
503 503
 
504
-        return ( $deleted_answers && $deleted_grades ) ;
504
+        return ($deleted_answers && $deleted_grades);
505 505
 
506 506
     } // end reset_user_lesson_data
507 507
 
@@ -521,20 +521,20 @@  discard block
 block discarded – undo
521 521
       *
522 522
       * @return bool $answers_submitted
523 523
       */
524
-     public static function submit_answers_for_grading( $quiz_answers , $files = array() , $lesson_id , $user_id = 0 ){
524
+     public static function submit_answers_for_grading($quiz_answers, $files = array(), $lesson_id, $user_id = 0) {
525 525
 
526 526
          $answers_submitted = false;
527 527
 
528 528
          // get the user_id if none was passed in use the current logged in user
529
-         if( ! intval( $user_id ) > 0 ) {
529
+         if ( ! intval($user_id) > 0) {
530 530
              $user_id = get_current_user_id();
531 531
          }
532 532
 
533 533
          // make sure the parameters are valid before continuing
534
-         if( empty( $lesson_id ) || empty( $user_id )
535
-             || 'lesson' != get_post_type( $lesson_id )
536
-             ||!get_userdata( $user_id )
537
-             || !is_array( $quiz_answers ) ){
534
+         if (empty($lesson_id) || empty($user_id)
535
+             || 'lesson' != get_post_type($lesson_id)
536
+             ||! get_userdata($user_id)
537
+             || ! is_array($quiz_answers)) {
538 538
 
539 539
              return false;
540 540
 
@@ -544,38 +544,38 @@  discard block
 block discarded – undo
544 544
          $grade = 0;
545 545
 
546 546
          // Get Quiz ID
547
-         $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
547
+         $quiz_id = Sensei()->lesson->lesson_quizzes($lesson_id);
548 548
 
549 549
          // Get quiz grade type
550
-         $quiz_grade_type = get_post_meta( $quiz_id, '_quiz_grade_type', true );
550
+         $quiz_grade_type = get_post_meta($quiz_id, '_quiz_grade_type', true);
551 551
 
552 552
          // Get quiz pass setting
553
-         $pass_required = get_post_meta( $quiz_id, '_pass_required', true );
553
+         $pass_required = get_post_meta($quiz_id, '_pass_required', true);
554 554
 
555 555
          // Get the minimum percentage need to pass this quiz
556
-         $quiz_pass_percentage = abs( round( doubleval( get_post_meta( $quiz_id, '_quiz_passmark', true ) ), 2 ) );
556
+         $quiz_pass_percentage = abs(round(doubleval(get_post_meta($quiz_id, '_quiz_passmark', true)), 2));
557 557
 
558 558
          // Handle Quiz Questions asked
559 559
          // This is to ensure we save the questions that we've asked this user and that this can't be change unless
560 560
          // the quiz is reset by admin or user( user: only if the setting is enabled ).
561 561
          // get the questions asked when when the quiz questions were generated for the user : Sensei_Lesson::lesson_quiz_questions
562
-         $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
563
-         $questions_asked = get_comment_meta( $user_lesson_status->comment_ID, 'questions_asked', true );
564
-         if( empty( $questions_asked ) ){
562
+         $user_lesson_status = Sensei_Utils::user_lesson_status($lesson_id, $user_id);
563
+         $questions_asked = get_comment_meta($user_lesson_status->comment_ID, 'questions_asked', true);
564
+         if (empty($questions_asked)) {
565 565
 
566
-             $questions_asked = array_keys( $quiz_answers );
567
-             $questions_asked_string = implode( ',', $questions_asked );
566
+             $questions_asked = array_keys($quiz_answers);
567
+             $questions_asked_string = implode(',', $questions_asked);
568 568
 
569 569
              // Save questions that were asked in this quiz
570
-             update_comment_meta( $user_lesson_status->comment_ID, 'questions_asked', $questions_asked_string );
570
+             update_comment_meta($user_lesson_status->comment_ID, 'questions_asked', $questions_asked_string);
571 571
 
572 572
          }
573 573
 
574 574
          // Save Quiz Answers for grading, the save function also calls the sensei_start_lesson
575
-         self::save_user_answers( $quiz_answers , $files , $lesson_id , $user_id );
575
+         self::save_user_answers($quiz_answers, $files, $lesson_id, $user_id);
576 576
 
577 577
          // Grade quiz
578
-         $grade = Sensei_Grading::grade_quiz_auto( $quiz_id, $quiz_answers, 0 , $quiz_grade_type );
578
+         $grade = Sensei_Grading::grade_quiz_auto($quiz_id, $quiz_answers, 0, $quiz_grade_type);
579 579
 
580 580
          // Get Lesson Grading Setting
581 581
          $lesson_metadata = array();
@@ -585,13 +585,13 @@  discard block
 block discarded – undo
585 585
          $answers_submitted = true;
586 586
 
587 587
          // if this condition is false the quiz should manually be graded by admin
588
-         if ('auto' == $quiz_grade_type && ! is_wp_error( $grade )  ) {
588
+         if ('auto' == $quiz_grade_type && ! is_wp_error($grade)) {
589 589
 
590 590
              // Quiz has been automatically Graded
591
-             if ( 'on' == $pass_required ) {
591
+             if ('on' == $pass_required) {
592 592
 
593 593
                  // Student has reached the pass mark and lesson is complete
594
-                 if ( $quiz_pass_percentage <= $grade ) {
594
+                 if ($quiz_pass_percentage <= $grade) {
595 595
 
596 596
                      $lesson_status = 'passed';
597 597
 
@@ -612,9 +612,9 @@  discard block
 block discarded – undo
612 612
 
613 613
          } // end if ! is_wp_error( $grade ...
614 614
 
615
-         Sensei_Utils::update_lesson_status( $user_id, $lesson_id, $lesson_status, $lesson_metadata );
615
+         Sensei_Utils::update_lesson_status($user_id, $lesson_id, $lesson_status, $lesson_metadata);
616 616
 
617
-         if( 'passed' == $lesson_status || 'graded' == $lesson_status ){
617
+         if ('passed' == $lesson_status || 'graded' == $lesson_status) {
618 618
 
619 619
              /**
620 620
               * Lesson end action hook
@@ -624,7 +624,7 @@  discard block
 block discarded – undo
624 624
               * @param int $user_id
625 625
               * @param int $lesson_id
626 626
               */
627
-             do_action( 'sensei_user_lesson_end', $user_id, $lesson_id );
627
+             do_action('sensei_user_lesson_end', $user_id, $lesson_id);
628 628
 
629 629
          }
630 630
 
@@ -640,7 +640,7 @@  discard block
 block discarded – undo
640 640
           * @param string $quiz_pass_percentage
641 641
           * @param string $quiz_grade_type
642 642
           */
643
-         do_action( 'sensei_user_quiz_submitted', $user_id, $quiz_id, $grade, $quiz_pass_percentage, $quiz_grade_type );
643
+         do_action('sensei_user_quiz_submitted', $user_id, $quiz_id, $grade, $quiz_pass_percentage, $quiz_grade_type);
644 644
 
645 645
          return $answers_submitted;
646 646
 
@@ -660,38 +660,38 @@  discard block
 block discarded – undo
660 660
       *
661 661
       * @return bool $answers_submitted
662 662
       */
663
-     public function get_user_question_answer( $lesson_id, $question_id, $user_id = 0 ){
663
+     public function get_user_question_answer($lesson_id, $question_id, $user_id = 0) {
664 664
 
665 665
          // parameter validation
666
-         if( empty( $lesson_id ) || empty( $question_id )
667
-             || ! ( intval( $lesson_id  ) > 0 )
668
-             || ! ( intval( $question_id  ) > 0 )
669
-             || 'lesson' != get_post_type( $lesson_id )
670
-             || 'question' != get_post_type( $question_id )) {
666
+         if (empty($lesson_id) || empty($question_id)
667
+             || ! (intval($lesson_id) > 0)
668
+             || ! (intval($question_id) > 0)
669
+             || 'lesson' != get_post_type($lesson_id)
670
+             || 'question' != get_post_type($question_id)) {
671 671
 
672 672
              return false;
673 673
          }
674 674
 
675
-         if( ! ( intval( $user_id ) > 0 )   ){
675
+         if ( ! (intval($user_id) > 0)) {
676 676
              $user_id = get_current_user_id();
677 677
          }
678 678
 
679
-         $users_answers = $this->get_user_answers( $lesson_id, $user_id );
679
+         $users_answers = $this->get_user_answers($lesson_id, $user_id);
680 680
 
681
-         if( !$users_answers || empty( $users_answers )
682
-         ||  ! is_array( $users_answers ) || ! isset( $users_answers[ $question_id ] ) ){
681
+         if ( ! $users_answers || empty($users_answers)
682
+         ||  ! is_array($users_answers) || ! isset($users_answers[$question_id])) {
683 683
 
684 684
              //Fallback for pre 1.7.4 data
685
-             $comment =  Sensei_Utils::sensei_check_for_activity( array( 'post_id' => $question_id, 'user_id' => $user_id, 'type' => 'sensei_user_answer' ), true );
685
+             $comment = Sensei_Utils::sensei_check_for_activity(array('post_id' => $question_id, 'user_id' => $user_id, 'type' => 'sensei_user_answer'), true);
686 686
 
687
-             if( ! isset( $comment->comment_content ) ){
687
+             if ( ! isset($comment->comment_content)) {
688 688
                  return false;
689 689
              }
690 690
 
691
-             return maybe_unserialize( base64_decode( $comment->comment_content ) );
691
+             return maybe_unserialize(base64_decode($comment->comment_content));
692 692
          }
693 693
 
694
-         return $users_answers[ $question_id ];
694
+         return $users_answers[$question_id];
695 695
 
696 696
      }// end get_user_question_answer
697 697
 
@@ -712,18 +712,18 @@  discard block
 block discarded – undo
712 712
       *
713 713
       * @return bool
714 714
       */
715
-     public function set_user_grades( $quiz_grades, $lesson_id, $user_id = 0 ){
715
+     public function set_user_grades($quiz_grades, $lesson_id, $user_id = 0) {
716 716
 
717 717
          // get the user_id if none was passed in use the current logged in user
718
-         if( ! intval( $user_id ) > 0 ) {
718
+         if ( ! intval($user_id) > 0) {
719 719
              $user_id = get_current_user_id();
720 720
          }
721 721
 
722 722
          // make sure the parameters are valid before continuing
723
-         if( empty( $lesson_id ) || empty( $user_id )
724
-             || 'lesson' != get_post_type( $lesson_id )
725
-             ||!get_userdata( $user_id )
726
-             || !is_array( $quiz_grades ) ){
723
+         if (empty($lesson_id) || empty($user_id)
724
+             || 'lesson' != get_post_type($lesson_id)
725
+             ||! get_userdata($user_id)
726
+             || ! is_array($quiz_grades)) {
727 727
 
728 728
              return false;
729 729
 
@@ -732,15 +732,15 @@  discard block
 block discarded – undo
732 732
          $success = false;
733 733
 
734 734
          // save that data for the user on the lesson comment meta
735
-         $comment_meta_id = Sensei_Utils::add_user_data( 'quiz_grades', $lesson_id, $quiz_grades, $user_id   );
735
+         $comment_meta_id = Sensei_Utils::add_user_data('quiz_grades', $lesson_id, $quiz_grades, $user_id);
736 736
 
737 737
          // were the grades save successfully ?
738
-         if( intval( $comment_meta_id ) > 0 ) {
738
+         if (intval($comment_meta_id) > 0) {
739 739
 
740 740
              $success = true;
741 741
              // save transient
742
-             $transient_key = 'quiz_grades_'. $user_id . '_' . $lesson_id;
743
-             set_transient( $transient_key, $quiz_grades, 10 * DAY_IN_SECONDS );
742
+             $transient_key = 'quiz_grades_'.$user_id.'_'.$lesson_id;
743
+             set_transient($transient_key, $quiz_grades, 10 * DAY_IN_SECONDS);
744 744
          }
745 745
 
746 746
          return $success;
@@ -759,36 +759,36 @@  discard block
 block discarded – undo
759 759
       *
760 760
       * @return array $user_quiz_grades or false if none exists for this users
761 761
       */
762
-     public function get_user_grades( $lesson_id, $user_id = 0 ){
762
+     public function get_user_grades($lesson_id, $user_id = 0) {
763 763
 
764 764
          $user_grades = array();
765 765
 
766 766
          // get the user_id if none was passed in use the current logged in user
767
-         if( ! intval( $user_id ) > 0 ) {
767
+         if ( ! intval($user_id) > 0) {
768 768
              $user_id = get_current_user_id();
769 769
          }
770 770
 
771
-         if ( ! intval( $lesson_id ) > 0 || 'lesson' != get_post_type( $lesson_id )
772
-             || ! intval( $user_id )  > 0 || !get_userdata( $user_id )  ) {
771
+         if ( ! intval($lesson_id) > 0 || 'lesson' != get_post_type($lesson_id)
772
+             || ! intval($user_id) > 0 || ! get_userdata($user_id)) {
773 773
              return false;
774 774
          }
775 775
 
776 776
          // save some time and get the transient cached data
777
-         $transient_key = 'quiz_grades_'. $user_id . '_' . $lesson_id;
778
-         $user_grades = get_transient( $transient_key );
777
+         $transient_key = 'quiz_grades_'.$user_id.'_'.$lesson_id;
778
+         $user_grades = get_transient($transient_key);
779 779
 
780 780
          // get the data if nothing was stored in the transient
781
-         if( empty( $user_grades  ) || false != $user_grades ){
781
+         if (empty($user_grades) || false != $user_grades) {
782 782
 
783
-             $user_grades = Sensei_Utils::get_user_data( 'quiz_grades', $lesson_id, $user_id );
783
+             $user_grades = Sensei_Utils::get_user_data('quiz_grades', $lesson_id, $user_id);
784 784
 
785 785
              //set the transient with the new valid data for faster retrieval in future
786
-             set_transient( $transient_key,  $user_grades, 10 * DAY_IN_SECONDS );
786
+             set_transient($transient_key, $user_grades, 10 * DAY_IN_SECONDS);
787 787
 
788 788
          } // end if transient check
789 789
 
790 790
          // if there is no data for this user
791
-         if( ! is_array( $user_grades ) ){
791
+         if ( ! is_array($user_grades)) {
792 792
              return false;
793 793
          }
794 794
 
@@ -811,21 +811,21 @@  discard block
 block discarded – undo
811 811
       *
812 812
       * @return bool $question_grade
813 813
       */
814
-     public function get_user_question_grade( $lesson_id, $question_id, $user_id = 0 ){
814
+     public function get_user_question_grade($lesson_id, $question_id, $user_id = 0) {
815 815
 
816 816
          // parameter validation
817
-         if( empty( $lesson_id ) || empty( $question_id )
818
-             || ! ( intval( $lesson_id  ) > 0 )
819
-             || ! ( intval( $question_id  ) > 0 )
820
-             || 'lesson' != get_post_type( $lesson_id )
821
-             || 'question' != get_post_type( $question_id )) {
817
+         if (empty($lesson_id) || empty($question_id)
818
+             || ! (intval($lesson_id) > 0)
819
+             || ! (intval($question_id) > 0)
820
+             || 'lesson' != get_post_type($lesson_id)
821
+             || 'question' != get_post_type($question_id)) {
822 822
 
823 823
              return false;
824 824
          }
825 825
 
826
-         $all_user_grades = self::get_user_grades( $lesson_id,$user_id );
826
+         $all_user_grades = self::get_user_grades($lesson_id, $user_id);
827 827
 
828
-         if( ! $all_user_grades || ! isset(  $all_user_grades[ $question_id ] ) ){
828
+         if ( ! $all_user_grades || ! isset($all_user_grades[$question_id])) {
829 829
 
830 830
              //fallback to data pre 1.7.4
831 831
              $args = array(
@@ -834,17 +834,17 @@  discard block
 block discarded – undo
834 834
                  'type'    => 'sensei_user_answer'
835 835
              );
836 836
 
837
-             $question_activity = Sensei_Utils::sensei_check_for_activity( $args , true );
837
+             $question_activity = Sensei_Utils::sensei_check_for_activity($args, true);
838 838
              $fall_back_grade = false;
839
-             if( isset( $question_activity->comment_ID ) ){
840
-                 $fall_back_grade = get_comment_meta(  $question_activity->comment_ID , 'user_grade', true );
839
+             if (isset($question_activity->comment_ID)) {
840
+                 $fall_back_grade = get_comment_meta($question_activity->comment_ID, 'user_grade', true);
841 841
              }
842 842
 
843 843
              return $fall_back_grade;
844 844
 
845 845
          } // end if $all_user_grades...
846 846
 
847
-         return $all_user_grades[ $question_id ];
847
+         return $all_user_grades[$question_id];
848 848
 
849 849
      }// end get_user_question_grade
850 850
 
@@ -866,13 +866,13 @@  discard block
 block discarded – undo
866 866
       *
867 867
       * @return false or int $feedback_saved
868 868
       */
869
-    public function save_user_answers_feedback( $answers_feedback, $lesson_id , $user_id = 0 ){
869
+    public function save_user_answers_feedback($answers_feedback, $lesson_id, $user_id = 0) {
870 870
 
871 871
         // make sure the parameters are valid before continuing
872
-        if( empty( $lesson_id ) || empty( $user_id )
873
-            || 'lesson' != get_post_type( $lesson_id )
874
-            ||!get_userdata( $user_id )
875
-            || !is_array( $answers_feedback ) ){
872
+        if (empty($lesson_id) || empty($user_id)
873
+            || 'lesson' != get_post_type($lesson_id)
874
+            ||! get_userdata($user_id)
875
+            || ! is_array($answers_feedback)) {
876 876
 
877 877
             return false;
878 878
 
@@ -880,25 +880,25 @@  discard block
 block discarded – undo
880 880
 
881 881
 
882 882
         // check if the lesson is started before saving, if not start the lesson for the user
883
-        if ( !( 0 < intval( Sensei_Utils::user_started_lesson( $lesson_id, $user_id) ) ) ) {
884
-            Sensei_Utils::sensei_start_lesson( $lesson_id, $user_id );
883
+        if ( ! (0 < intval(Sensei_Utils::user_started_lesson($lesson_id, $user_id)))) {
884
+            Sensei_Utils::sensei_start_lesson($lesson_id, $user_id);
885 885
         }
886 886
 
887 887
         // encode the feedback
888
-        $encoded_answers_feedback =  array();
889
-        foreach( $answers_feedback as $question_id => $feedback ){
890
-            $encoded_answers_feedback[ $question_id ] = base64_encode( $feedback );
888
+        $encoded_answers_feedback = array();
889
+        foreach ($answers_feedback as $question_id => $feedback) {
890
+            $encoded_answers_feedback[$question_id] = base64_encode($feedback);
891 891
         }
892 892
 
893 893
         // save the user data
894
-        $feedback_saved = Sensei_Utils::add_user_data( 'quiz_answers_feedback', $lesson_id , $encoded_answers_feedback, $user_id ) ;
894
+        $feedback_saved = Sensei_Utils::add_user_data('quiz_answers_feedback', $lesson_id, $encoded_answers_feedback, $user_id);
895 895
 
896 896
         //Were the the question feedback save correctly?
897
-        if( intval( $feedback_saved ) > 0){
897
+        if (intval($feedback_saved) > 0) {
898 898
 
899 899
             // save transient to make retrieval faster in future
900 900
              $transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
901
-             set_transient( $transient_key, $encoded_answers_feedback, 10 * DAY_IN_SECONDS );
901
+             set_transient($transient_key, $encoded_answers_feedback, 10 * DAY_IN_SECONDS);
902 902
 
903 903
         }
904 904
 
@@ -923,42 +923,42 @@  discard block
 block discarded – undo
923 923
       *  $type string $question_feedback
924 924
       * }
925 925
       */
926
-     public function get_user_answers_feedback( $lesson_id , $user_id = 0 ){
926
+     public function get_user_answers_feedback($lesson_id, $user_id = 0) {
927 927
 
928 928
          $answers_feedback = array();
929 929
 
930 930
          // get the user_id if none was passed in use the current logged in user
931
-         if( ! intval( $user_id ) > 0 ) {
931
+         if ( ! intval($user_id) > 0) {
932 932
              $user_id = get_current_user_id();
933 933
          }
934 934
 
935
-         if ( ! intval( $lesson_id ) > 0 || 'lesson' != get_post_type( $lesson_id )
936
-             || ! intval( $user_id )  > 0 || !get_userdata( $user_id )  ) {
935
+         if ( ! intval($lesson_id) > 0 || 'lesson' != get_post_type($lesson_id)
936
+             || ! intval($user_id) > 0 || ! get_userdata($user_id)) {
937 937
              return false;
938 938
          }
939 939
 
940 940
          // first check the transient to save a few split seconds
941 941
          $transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
942
-         $encoded_feedback = get_transient( $transient_key );
942
+         $encoded_feedback = get_transient($transient_key);
943 943
 
944 944
          // get the data if nothing was stored in the transient
945
-         if( empty( $encoded_feedback  ) || !$encoded_feedback ){
945
+         if (empty($encoded_feedback) || ! $encoded_feedback) {
946 946
 
947
-             $encoded_feedback = Sensei_Utils::get_user_data( 'quiz_answers_feedback', $lesson_id, $user_id );
947
+             $encoded_feedback = Sensei_Utils::get_user_data('quiz_answers_feedback', $lesson_id, $user_id);
948 948
 
949 949
              //set the transient with the new valid data for faster retrieval in future
950
-             set_transient( $transient_key,  $encoded_feedback, 10 * DAY_IN_SECONDS);
950
+             set_transient($transient_key, $encoded_feedback, 10 * DAY_IN_SECONDS);
951 951
 
952 952
          } // end if transient check
953 953
 
954 954
          // if there is no data for this user
955
-         if( ! is_array( $encoded_feedback ) ){
955
+         if ( ! is_array($encoded_feedback)) {
956 956
              return false;
957 957
          }
958 958
 
959
-         foreach( $encoded_feedback as $question_id => $feedback ){
959
+         foreach ($encoded_feedback as $question_id => $feedback) {
960 960
 
961
-             $answers_feedback[ $question_id ] = base64_decode( $feedback );
961
+             $answers_feedback[$question_id] = base64_decode($feedback);
962 962
 
963 963
          }
964 964
 
@@ -981,25 +981,25 @@  discard block
 block discarded – undo
981 981
       *
982 982
       * @return string $feedback or bool if false
983 983
       */
984
-     public function get_user_question_feedback( $lesson_id, $question_id, $user_id = 0 ){
984
+     public function get_user_question_feedback($lesson_id, $question_id, $user_id = 0) {
985 985
 
986 986
          $feedback = false;
987 987
 
988 988
          // parameter validation
989
-         if( empty( $lesson_id ) || empty( $question_id )
990
-             || ! ( intval( $lesson_id  ) > 0 )
991
-             || ! ( intval( $question_id  ) > 0 )
992
-             || 'lesson' != get_post_type( $lesson_id )
993
-             || 'question' != get_post_type( $question_id )) {
989
+         if (empty($lesson_id) || empty($question_id)
990
+             || ! (intval($lesson_id) > 0)
991
+             || ! (intval($question_id) > 0)
992
+             || 'lesson' != get_post_type($lesson_id)
993
+             || 'question' != get_post_type($question_id)) {
994 994
 
995 995
              return false;
996 996
          }
997 997
 
998 998
          // get all the feedback for the user on the given lesson
999
-         $all_feedback = $this->get_user_answers_feedback( $lesson_id, $user_id );
999
+         $all_feedback = $this->get_user_answers_feedback($lesson_id, $user_id);
1000 1000
 
1001
-         if( !$all_feedback || empty( $all_feedback )
1002
-             || ! is_array( $all_feedback ) || ! isset( $all_feedback[ $question_id ] ) ){
1001
+         if ( ! $all_feedback || empty($all_feedback)
1002
+             || ! is_array($all_feedback) || ! isset($all_feedback[$question_id])) {
1003 1003
 
1004 1004
              //fallback to data pre 1.7.4
1005 1005
 
@@ -1009,23 +1009,23 @@  discard block
 block discarded – undo
1009 1009
                  'user_id' => $user_id,
1010 1010
                  'type'    => 'sensei_user_answer'
1011 1011
              );
1012
-             $question_activity = Sensei_Utils::sensei_check_for_activity( $args , true );
1012
+             $question_activity = Sensei_Utils::sensei_check_for_activity($args, true);
1013 1013
 
1014 1014
              // set the default to false and return that if no old data is available.
1015
-             if( isset( $question_activity->comment_ID ) ){
1016
-                 $feedback = base64_decode( get_comment_meta(  $question_activity->comment_ID , 'answer_note', true ) );
1015
+             if (isset($question_activity->comment_ID)) {
1016
+                 $feedback = base64_decode(get_comment_meta($question_activity->comment_ID, 'answer_note', true));
1017 1017
              }
1018 1018
 
1019 1019
              // finally use the default question feedback
1020
-             if( empty( $feedback ) ){
1021
-                 $feedback = get_post_meta( $question_id, '_answer_feedback', true );
1020
+             if (empty($feedback)) {
1021
+                 $feedback = get_post_meta($question_id, '_answer_feedback', true);
1022 1022
              }
1023 1023
 
1024 1024
              return $feedback;
1025 1025
 
1026 1026
          }
1027 1027
 
1028
-         return $all_feedback[ $question_id ];
1028
+         return $all_feedback[$question_id];
1029 1029
 
1030 1030
      } // end get_user_question_feedback
1031 1031
 
@@ -1044,7 +1044,7 @@  discard block
 block discarded – undo
1044 1044
      public function quiz_has_no_questions() {
1045 1045
 
1046 1046
 
1047
-         if( ! is_singular( 'quiz' ) )  {
1047
+         if ( ! is_singular('quiz')) {
1048 1048
              return;
1049 1049
          }
1050 1050
 
@@ -1052,11 +1052,11 @@  discard block
 block discarded – undo
1052 1052
 
1053 1053
          $lesson_id = $this->get_lesson_id($post->ID);
1054 1054
 
1055
-         $has_questions = get_post_meta( $lesson_id, '_quiz_has_questions', true );
1055
+         $has_questions = get_post_meta($lesson_id, '_quiz_has_questions', true);
1056 1056
 
1057 1057
          $lesson = get_post($lesson_id);
1058 1058
 
1059
-         if ( is_singular('quiz') && ! $has_questions && $_SERVER['REQUEST_URI'] != "/lesson/$lesson->post_name" ) {
1059
+         if (is_singular('quiz') && ! $has_questions && $_SERVER['REQUEST_URI'] != "/lesson/$lesson->post_name") {
1060 1060
 
1061 1061
              wp_redirect(get_permalink($lesson->ID), 301);
1062 1062
              exit;
@@ -1070,7 +1070,7 @@  discard block
 block discarded – undo
1070 1070
   *
1071 1071
   * @deprecated since 1.9.0
1072 1072
   */
1073
- public static function deprecate_quiz_sensei_single_main_content_hook(){
1073
+ public static function deprecate_quiz_sensei_single_main_content_hook() {
1074 1074
 
1075 1075
      sensei_do_deprecated_action('sensei_single_main_content', '1.9.0', 'sensei_single_quiz_content_inside_before or sensei_single_quiz_content_inside_after');
1076 1076
 
@@ -1080,7 +1080,7 @@  discard block
 block discarded – undo
1080 1080
      *
1081 1081
      * @deprecated since 1.9.0
1082 1082
      */
1083
-     public static function deprecate_quiz_sensei_quiz_single_title_hook(){
1083
+     public static function deprecate_quiz_sensei_quiz_single_title_hook() {
1084 1084
 
1085 1085
          sensei_do_deprecated_action('sensei_quiz_single_title', '1.9.0', 'sensei_single_quiz_content_inside_before ');
1086 1086
 
@@ -1093,29 +1093,29 @@  discard block
 block discarded – undo
1093 1093
       * @param int $id title post id
1094 1094
       * @return string $quiz_title
1095 1095
       */
1096
-     public static function single_quiz_title( $title, $post_id ){
1096
+     public static function single_quiz_title($title, $post_id) {
1097 1097
 
1098
-         if( 'quiz' == get_post_type( $post_id ) ){
1098
+         if ('quiz' == get_post_type($post_id)) {
1099 1099
 
1100 1100
              $title_with_no_quizzes = $title;
1101 1101
 
1102 1102
              // if the title has quiz, remove it: legacy titles have the word quiz stored.
1103
-             if( 1 < substr_count( strtoupper( $title_with_no_quizzes ), 'QUIZ' ) ){
1103
+             if (1 < substr_count(strtoupper($title_with_no_quizzes), 'QUIZ')) {
1104 1104
 
1105 1105
                  // remove all possible appearances of quiz
1106
-                 $title_with_no_quizzes = str_replace( 'quiz', '', $title  );
1107
-                 $title_with_no_quizzes = str_replace( 'Quiz', '', $title_with_no_quizzes  );
1108
-                 $title_with_no_quizzes = str_replace( 'QUIZ', '', $title_with_no_quizzes  );
1106
+                 $title_with_no_quizzes = str_replace('quiz', '', $title);
1107
+                 $title_with_no_quizzes = str_replace('Quiz', '', $title_with_no_quizzes);
1108
+                 $title_with_no_quizzes = str_replace('QUIZ', '', $title_with_no_quizzes);
1109 1109
 
1110 1110
              }
1111 1111
 
1112
-             $title = $title_with_no_quizzes .  ' ' . __( 'Quiz', 'woothemes-sensei' );
1112
+             $title = $title_with_no_quizzes.' '.__('Quiz', 'woothemes-sensei');
1113 1113
          }
1114 1114
 
1115 1115
          /**
1116 1116
           * hook document in class-woothemes-sensei-message.php
1117 1117
           */
1118
-         return apply_filters( 'sensei_single_title', $title, get_post_type( ) );
1118
+         return apply_filters('sensei_single_title', $title, get_post_type( ));
1119 1119
 
1120 1120
      }
1121 1121
 
@@ -1127,21 +1127,21 @@  discard block
 block discarded – undo
1127 1127
       * @since 1.9.0
1128 1128
       *
1129 1129
       */
1130
-     public static function start_quiz_questions_loop(){
1130
+     public static function start_quiz_questions_loop() {
1131 1131
 
1132 1132
          global $sensei_question_loop;
1133 1133
 
1134 1134
          //intialize the questions loop object
1135 1135
          $sensei_question_loop['current'] = -1;
1136
-         $sensei_question_loop['total']   =  0;
1136
+         $sensei_question_loop['total']   = 0;
1137 1137
          $sensei_question_loop['questions'] = array();
1138 1138
 
1139 1139
 
1140
-         $questions = Sensei()->lesson->lesson_quiz_questions( get_the_ID() );
1140
+         $questions = Sensei()->lesson->lesson_quiz_questions(get_the_ID());
1141 1141
 
1142
-         if( count( $questions  ) > 0  ){
1142
+         if (count($questions) > 0) {
1143 1143
 
1144
-             $sensei_question_loop['total']   =  count( $questions );
1144
+             $sensei_question_loop['total']   = count($questions);
1145 1145
              $sensei_question_loop['questions'] = $questions;
1146 1146
              $sensei_question_loop['quiz_id'] = get_the_ID();
1147 1147
 
@@ -1157,9 +1157,9 @@  discard block
 block discarded – undo
1157 1157
       * @since 1.9.0
1158 1158
       *
1159 1159
       */
1160
-     public static function stop_quiz_questions_loop(){
1160
+     public static function stop_quiz_questions_loop() {
1161 1161
 
1162
-         $sensei_question_loop['total']   =  0;
1162
+         $sensei_question_loop['total']   = 0;
1163 1163
          $sensei_question_loop['questions'] = array();
1164 1164
          $sensei_question_loop['quiz_id'] = '';
1165 1165
 
@@ -1170,7 +1170,7 @@  discard block
 block discarded – undo
1170 1170
       *
1171 1171
       * @since 1.9.0
1172 1172
       */
1173
-     public static function the_title(){
1173
+     public static function the_title() {
1174 1174
          ?>
1175 1175
          <header>
1176 1176
 
@@ -1180,7 +1180,7 @@  discard block
 block discarded – undo
1180 1180
                  /**
1181 1181
                   * Filter documented in class-sensei-messages.php the_title
1182 1182
                   */
1183
-                 echo apply_filters( 'sensei_single_title', get_the_title( get_post() ), get_post_type( get_the_ID() ) );
1183
+                 echo apply_filters('sensei_single_title', get_the_title(get_post()), get_post_type(get_the_ID()));
1184 1184
                  ?>
1185 1185
 
1186 1186
              </h1>
@@ -1195,11 +1195,11 @@  discard block
 block discarded – undo
1195 1195
       *
1196 1196
       * @param $quiz_id
1197 1197
       */
1198
-    public static function  the_user_status_message( $quiz_id ){
1198
+    public static function  the_user_status_message($quiz_id) {
1199 1199
 
1200
-        $lesson_id =  Sensei()->quiz->get_lesson_id( $quiz_id );
1201
-        $status = Sensei_Utils::sensei_user_quiz_status_message( $lesson_id , get_current_user_id() );
1202
-        echo '<div class="sensei-message ' . $status['box_class'] . '">' . $status['message'] . '</div>';
1200
+        $lesson_id = Sensei()->quiz->get_lesson_id($quiz_id);
1201
+        $status = Sensei_Utils::sensei_user_quiz_status_message($lesson_id, get_current_user_id());
1202
+        echo '<div class="sensei-message '.$status['box_class'].'">'.$status['message'].'</div>';
1203 1203
 
1204 1204
     }
1205 1205
 
@@ -1210,9 +1210,9 @@  discard block
 block discarded – undo
1210 1210
       * @since 1.9.0
1211 1211
       * @deprecated
1212 1212
       */
1213
-     public static function deprecate_sensei_quiz_action_buttons_hook(){
1213
+     public static function deprecate_sensei_quiz_action_buttons_hook() {
1214 1214
 
1215
-         sensei_do_deprecated_action( 'sensei_quiz_action_buttons', '1.9.0', 'sensei_single_quiz_questions_after');
1215
+         sensei_do_deprecated_action('sensei_quiz_action_buttons', '1.9.0', 'sensei_single_quiz_questions_after');
1216 1216
 
1217 1217
      }
1218 1218
 
@@ -1226,50 +1226,50 @@  discard block
 block discarded – undo
1226 1226
 
1227 1227
          global $post, $current_user;
1228 1228
 
1229
-         $lesson_id = (int) get_post_meta( $post->ID, '_quiz_lesson', true );
1230
-         $lesson_course_id = (int) get_post_meta( $lesson_id, '_lesson_course', true );
1231
-         $lesson_prerequisite = (int) get_post_meta( $lesson_id, '_lesson_prerequisite', true );
1229
+         $lesson_id = (int) get_post_meta($post->ID, '_quiz_lesson', true);
1230
+         $lesson_course_id = (int) get_post_meta($lesson_id, '_lesson_course', true);
1231
+         $lesson_prerequisite = (int) get_post_meta($lesson_id, '_lesson_prerequisite', true);
1232 1232
          $show_actions = true;
1233
-         $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $current_user->ID );
1233
+         $user_lesson_status = Sensei_Utils::user_lesson_status($lesson_id, $current_user->ID);
1234 1234
 
1235 1235
          //setup quiz grade
1236 1236
          $user_quiz_grade = '';
1237
-         if( ! empty( $user_lesson_status  ) ){
1238
-             $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
1237
+         if ( ! empty($user_lesson_status)) {
1238
+             $user_quiz_grade = get_comment_meta($user_lesson_status->comment_ID, 'grade', true);
1239 1239
          }
1240 1240
 
1241 1241
 
1242
-         if( intval( $lesson_prerequisite ) > 0 ) {
1242
+         if (intval($lesson_prerequisite) > 0) {
1243 1243
 
1244 1244
              // If the user hasn't completed the prereq then hide the current actions
1245
-             $show_actions = Sensei_Utils::user_completed_lesson( $lesson_prerequisite, $current_user->ID );
1245
+             $show_actions = Sensei_Utils::user_completed_lesson($lesson_prerequisite, $current_user->ID);
1246 1246
 
1247 1247
          }
1248
-         if ( $show_actions && is_user_logged_in() && Sensei_Utils::user_started_course( $lesson_course_id, $current_user->ID ) ) {
1248
+         if ($show_actions && is_user_logged_in() && Sensei_Utils::user_started_course($lesson_course_id, $current_user->ID)) {
1249 1249
 
1250 1250
              // Get Reset Settings
1251
-             $reset_quiz_allowed = get_post_meta( $post->ID, '_enable_quiz_reset', true ); ?>
1251
+             $reset_quiz_allowed = get_post_meta($post->ID, '_enable_quiz_reset', true); ?>
1252 1252
 
1253 1253
              <!-- Action Nonce's -->
1254 1254
              <input type="hidden" name="woothemes_sensei_complete_quiz_nonce" id="woothemes_sensei_complete_quiz_nonce"
1255
-                    value="<?php echo esc_attr(  wp_create_nonce( 'woothemes_sensei_complete_quiz_nonce' ) ); ?>" />
1255
+                    value="<?php echo esc_attr(wp_create_nonce('woothemes_sensei_complete_quiz_nonce')); ?>" />
1256 1256
              <input type="hidden" name="woothemes_sensei_reset_quiz_nonce" id="woothemes_sensei_reset_quiz_nonce"
1257
-                    value="<?php echo esc_attr(  wp_create_nonce( 'woothemes_sensei_reset_quiz_nonce' ) ); ?>" />
1257
+                    value="<?php echo esc_attr(wp_create_nonce('woothemes_sensei_reset_quiz_nonce')); ?>" />
1258 1258
              <input type="hidden" name="woothemes_sensei_save_quiz_nonce" id="woothemes_sensei_save_quiz_nonce"
1259
-                    value="<?php echo esc_attr(  wp_create_nonce( 'woothemes_sensei_save_quiz_nonce' ) ); ?>" />
1259
+                    value="<?php echo esc_attr(wp_create_nonce('woothemes_sensei_save_quiz_nonce')); ?>" />
1260 1260
              <!--#end Action Nonce's -->
1261 1261
 
1262
-             <?php if ( '' == $user_quiz_grade) { ?>
1262
+             <?php if ('' == $user_quiz_grade) { ?>
1263 1263
 
1264
-                 <span><input type="submit" name="quiz_complete" class="quiz-submit complete" value="<?php  _e( 'Complete Quiz', 'woothemes-sensei' ); ?>"/></span>
1264
+                 <span><input type="submit" name="quiz_complete" class="quiz-submit complete" value="<?php  _e('Complete Quiz', 'woothemes-sensei'); ?>"/></span>
1265 1265
 
1266
-                 <span><input type="submit" name="quiz_save" class="quiz-submit save" value="<?php _e( 'Save Quiz', 'woothemes-sensei' ); ?>"/></span>
1266
+                 <span><input type="submit" name="quiz_save" class="quiz-submit save" value="<?php _e('Save Quiz', 'woothemes-sensei'); ?>"/></span>
1267 1267
 
1268 1268
              <?php } // End If Statement ?>
1269 1269
 
1270
-             <?php if ( isset( $reset_quiz_allowed ) && $reset_quiz_allowed ) { ?>
1270
+             <?php if (isset($reset_quiz_allowed) && $reset_quiz_allowed) { ?>
1271 1271
 
1272
-                 <span><input type="submit" name="quiz_reset" class="quiz-submit reset" value="<?php _e( 'Reset Quiz', 'woothemes-sensei' ); ?>"/></span>
1272
+                 <span><input type="submit" name="quiz_reset" class="quiz-submit reset" value="<?php _e('Reset Quiz', 'woothemes-sensei'); ?>"/></span>
1273 1273
 
1274 1274
              <?php } ?>
1275 1275
 
@@ -1287,13 +1287,13 @@  discard block
 block discarded – undo
1287 1287
       *
1288 1288
       * @return double $user_quiz_grade
1289 1289
       */
1290
-     public static function get_user_quiz_grade( $lesson_id, $user_id ){
1290
+     public static function get_user_quiz_grade($lesson_id, $user_id) {
1291 1291
 
1292 1292
          // get the quiz grade
1293
-         $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
1293
+         $user_lesson_status = Sensei_Utils::user_lesson_status($lesson_id, $user_id);
1294 1294
          $user_quiz_grade = 0;
1295
-         if( isset( $user_lesson_status->comment_ID ) ) {
1296
-             $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
1295
+         if (isset($user_lesson_status->comment_ID)) {
1296
+             $user_quiz_grade = get_comment_meta($user_lesson_status->comment_ID, 'grade', true);
1297 1297
          }
1298 1298
 
1299 1299
          return (double) $user_quiz_grade;
@@ -1311,13 +1311,13 @@  discard block
 block discarded – undo
1311 1311
       * @param int $lesson_id
1312 1312
       * @return bool
1313 1313
       */
1314
-     public static function is_reset_allowed( $lesson_id ){
1314
+     public static function is_reset_allowed($lesson_id) {
1315 1315
 
1316
-         $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
1316
+         $quiz_id = Sensei()->lesson->lesson_quizzes($lesson_id);
1317 1317
 
1318
-         $reset_allowed = get_post_meta( $quiz_id, '_enable_quiz_reset', true );
1318
+         $reset_allowed = get_post_meta($quiz_id, '_enable_quiz_reset', true);
1319 1319
          //backwards compatibility
1320
-         if( 'on' == $reset_allowed ) {
1320
+         if ('on' == $reset_allowed) {
1321 1321
              $reset_allowed = 1;
1322 1322
          }
1323 1323
 
@@ -1334,4 +1334,4 @@  discard block
 block discarded – undo
1334 1334
  * for backward compatibility
1335 1335
  * @since 1.9.0
1336 1336
  */
1337
-class WooThemes_Sensei_Quiz extends Sensei_Quiz{}
1337
+class WooThemes_Sensei_Quiz extends Sensei_Quiz {}
Please login to merge, or discard this patch.
Indentation   +883 added lines, -883 removed lines patch added patch discarded remove patch
@@ -25,70 +25,70 @@  discard block
 block discarded – undo
25 25
 	 */
26 26
 	public function __construct ( $file = __FILE__ ) {
27 27
 		$this->file = $file;
28
-        $this->token = 'quiz';
28
+		$this->token = 'quiz';
29 29
 		$this->meta_fields = array( 'quiz_passmark', 'quiz_lesson', 'quiz_type', 'quiz_grade_type', 'pass_required','enable_quiz_reset' );
30 30
 		add_action( 'save_post', array( $this, 'update_author' ));
31 31
 
32 32
 		// listen to the reset button click
33 33
 		add_action( 'template_redirect', array( $this, 'reset_button_click_listener'  ) );
34 34
 
35
-        // fire the complete quiz button submit for grading action
36
-        add_action( 'sensei_complete_quiz', array( $this, 'user_quiz_submit_listener' ) );
35
+		// fire the complete quiz button submit for grading action
36
+		add_action( 'sensei_complete_quiz', array( $this, 'user_quiz_submit_listener' ) );
37 37
 
38 38
 		// fire the save user answers quiz button click responder
39 39
 		add_action( 'sensei_complete_quiz', array( $this, 'user_save_quiz_answers_listener' ) );
40 40
 
41
-        // fire the load global data function
42
-        add_action( 'sensei_complete_quiz', array( $this, 'load_global_quiz_data' ), 80 );
41
+		// fire the load global data function
42
+		add_action( 'sensei_complete_quiz', array( $this, 'load_global_quiz_data' ), 80 );
43 43
 
44
-        add_action( 'template_redirect', array ( $this, 'quiz_has_no_questions') );
44
+		add_action( 'template_redirect', array ( $this, 'quiz_has_no_questions') );
45 45
 
46 46
 
47
-    } // End __construct()
47
+	} // End __construct()
48 48
 
49 49
 	/**
50
-	* Update the quiz author when the lesson post type is save
51
-	*
52
-	* @param int $post_id
53
-	* @return void
54
-	*/
50
+	 * Update the quiz author when the lesson post type is save
51
+	 *
52
+	 * @param int $post_id
53
+	 * @return void
54
+	 */
55 55
 	public function update_author( $post_id ){
56 56
 
57 57
 
58 58
 		// If this isn't a 'lesson' post, don't update it.
59
-        // if this is a revision don't save it
60
-	    if ( isset( $_POST['post_type'] ) && 'lesson' != $_POST['post_type']
61
-            || wp_is_post_revision( $post_id ) ) {
59
+		// if this is a revision don't save it
60
+		if ( isset( $_POST['post_type'] ) && 'lesson' != $_POST['post_type']
61
+			|| wp_is_post_revision( $post_id ) ) {
62 62
 
63
-                return;
63
+				return;
64 64
 
65
-        }
66
-	    // get the lesson author id to be use late
67
-	    $saved_post = get_post( $post_id );
68
-	    $new_lesson_author_id =  $saved_post->post_author;
65
+		}
66
+		// get the lesson author id to be use late
67
+		$saved_post = get_post( $post_id );
68
+		$new_lesson_author_id =  $saved_post->post_author;
69 69
 
70
-	    //get the lessons quiz
70
+		//get the lessons quiz
71 71
 		$lesson_quizzes = Sensei()->lesson->lesson_quizzes( $post_id );
72
-	    foreach ( (array) $lesson_quizzes as $quiz_item ) {
72
+		foreach ( (array) $lesson_quizzes as $quiz_item ) {
73 73
 
74
-	    	if( ! $quiz_item ) {
75
-	    		continue;
76
-	    	}
74
+			if( ! $quiz_item ) {
75
+				continue;
76
+			}
77 77
 
78
-		    // setup the quiz items new author value
78
+			// setup the quiz items new author value
79 79
 			$my_post = array(
80
-			      'ID'           => $quiz_item,
81
-			      'post_author' =>  $new_lesson_author_id
80
+				  'ID'           => $quiz_item,
81
+				  'post_author' =>  $new_lesson_author_id
82 82
 			);
83 83
 
84
-            // remove the action so that it doesn't fire again
85
-            remove_action( 'save_post', array( $this, 'update_author' ));
84
+			// remove the action so that it doesn't fire again
85
+			remove_action( 'save_post', array( $this, 'update_author' ));
86 86
 
87 87
 			// Update the post into the database
88 88
 		  	wp_update_post( $my_post );
89
-	    }
89
+		}
90 90
 
91
-	    return;
91
+		return;
92 92
 	}// end update_author
93 93
 
94 94
 
@@ -119,32 +119,32 @@  discard block
 block discarded – undo
119 119
 	} // end lesson
120 120
 
121 121
 
122
-    /**
123
-     * user_save_quiz_answers_listener
124
-     *
125
-     * This function hooks into the quiz page and accepts the answer form save post.
126
-     * @since 1.7.3
127
-     * @return bool $saved;
128
-     */
129
-    public function user_save_quiz_answers_listener(){
122
+	/**
123
+	 * user_save_quiz_answers_listener
124
+	 *
125
+	 * This function hooks into the quiz page and accepts the answer form save post.
126
+	 * @since 1.7.3
127
+	 * @return bool $saved;
128
+	 */
129
+	public function user_save_quiz_answers_listener(){
130 130
 
131
-        if( ! isset( $_POST[ 'quiz_save' ])
132
-            || !isset( $_POST[ 'sensei_question' ] )
133
-            || empty( $_POST[ 'sensei_question' ] )
134
-            ||  ! wp_verify_nonce( $_POST['woothemes_sensei_save_quiz_nonce'], 'woothemes_sensei_save_quiz_nonce'  ) > 1 ) {
135
-            return;
136
-        }
131
+		if( ! isset( $_POST[ 'quiz_save' ])
132
+			|| !isset( $_POST[ 'sensei_question' ] )
133
+			|| empty( $_POST[ 'sensei_question' ] )
134
+			||  ! wp_verify_nonce( $_POST['woothemes_sensei_save_quiz_nonce'], 'woothemes_sensei_save_quiz_nonce'  ) > 1 ) {
135
+			return;
136
+		}
137 137
 
138
-        global $post;
139
-        $lesson_id = $this->get_lesson_id( $post->ID );
140
-        $quiz_answers = $_POST[ 'sensei_question' ];
141
-        // call the save function
142
-        self::save_user_answers( $quiz_answers, $_FILES , $lesson_id  , get_current_user_id() );
138
+		global $post;
139
+		$lesson_id = $this->get_lesson_id( $post->ID );
140
+		$quiz_answers = $_POST[ 'sensei_question' ];
141
+		// call the save function
142
+		self::save_user_answers( $quiz_answers, $_FILES , $lesson_id  , get_current_user_id() );
143 143
 
144
-        // remove the hook as it should only fire once per click
145
-        remove_action( 'sensei_complete_quiz', 'user_save_quiz_answers_listener' );
144
+		// remove the hook as it should only fire once per click
145
+		remove_action( 'sensei_complete_quiz', 'user_save_quiz_answers_listener' );
146 146
 
147
-    } // end user_save_quiz_answers_listener
147
+	} // end user_save_quiz_answers_listener
148 148
 
149 149
 	/**
150 150
 	 * Save the user answers for the given lesson's quiz
@@ -155,7 +155,7 @@  discard block
 block discarded – undo
155 155
 	 * @access public
156 156
 	 *
157 157
 	 * @param array $quiz_answers
158
-     * @param array $files from global $_FILES
158
+	 * @param array $files from global $_FILES
159 159
 	 * @param int $lesson_id
160 160
 	 * @param int $user_id
161 161
 	 *
@@ -163,11 +163,11 @@  discard block
 block discarded – undo
163 163
 	 */
164 164
 	public static function save_user_answers( $quiz_answers, $files = array(), $lesson_id , $user_id = 0 ){
165 165
 
166
-        if( ! ( $user_id > 0 ) ){
167
-            $user_id = get_current_user_id();
168
-        }
166
+		if( ! ( $user_id > 0 ) ){
167
+			$user_id = get_current_user_id();
168
+		}
169 169
 
170
-        // make sure the parameters are valid before continuing
170
+		// make sure the parameters are valid before continuing
171 171
 		if( empty( $lesson_id ) || empty( $user_id )
172 172
 			|| 'lesson' != get_post_type( $lesson_id )
173 173
 			||!get_userdata( $user_id )
@@ -178,25 +178,25 @@  discard block
 block discarded – undo
178 178
 		}
179 179
 
180 180
 
181
-        // start the lesson before saving the data in case the user has not started the lesson
182
-        $activity_logged = Sensei_Utils::sensei_start_lesson( $lesson_id, $user_id );
181
+		// start the lesson before saving the data in case the user has not started the lesson
182
+		$activity_logged = Sensei_Utils::sensei_start_lesson( $lesson_id, $user_id );
183 183
 
184 184
 		//prepare the answers
185 185
 		$prepared_answers = self::prepare_form_submitted_answers( $quiz_answers , $files );
186 186
 
187 187
 		// save the user data
188
-        $answers_saved = Sensei_Utils::add_user_data( 'quiz_answers', $lesson_id, $prepared_answers, $user_id ) ;
188
+		$answers_saved = Sensei_Utils::add_user_data( 'quiz_answers', $lesson_id, $prepared_answers, $user_id ) ;
189 189
 
190 190
 		// were the answers saved correctly?
191 191
 		if( intval( $answers_saved ) > 0){
192 192
 
193
-            // save transient to make retrieval faster
194
-            $transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
195
-            set_transient( $transient_key, $prepared_answers, 10 * DAY_IN_SECONDS );
193
+			// save transient to make retrieval faster
194
+			$transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
195
+			set_transient( $transient_key, $prepared_answers, 10 * DAY_IN_SECONDS );
196 196
 
197
-            // update the message showed to user
198
-            Sensei()->frontend->messages = '<div class="sensei-message note">' . __( 'Quiz Saved Successfully.', 'woothemes-sensei' )  . '</div>';
199
-        }
197
+			// update the message showed to user
198
+			Sensei()->frontend->messages = '<div class="sensei-message note">' . __( 'Quiz Saved Successfully.', 'woothemes-sensei' )  . '</div>';
199
+		}
200 200
 
201 201
 		return $answers_saved;
202 202
 
@@ -204,9 +204,9 @@  discard block
 block discarded – undo
204 204
 
205 205
 	/**
206 206
 	 * Get the user answers for the given lesson's quiz.
207
-     *
208
-     * This function returns the data that is stored on the lesson as meta and is not compatible with
209
-     * retrieving data for quiz answer before sensei 1.7.4
207
+	 *
208
+	 * This function returns the data that is stored on the lesson as meta and is not compatible with
209
+	 * retrieving data for quiz answer before sensei 1.7.4
210 210
 	 *
211 211
 	 *
212 212
 	 * @since 1.7.4
@@ -226,27 +226,27 @@  discard block
 block discarded – undo
226 226
 			return false;
227 227
 		}
228 228
 
229
-        // save some time and get the transient cached data
230
-        $transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
231
-        $transient_cached_answers = get_transient( $transient_key );
229
+		// save some time and get the transient cached data
230
+		$transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
231
+		$transient_cached_answers = get_transient( $transient_key );
232 232
 
233
-        // return the transient or get the values get the values from the comment meta
234
-        if( !empty( $transient_cached_answers  ) && false != $transient_cached_answers ){
233
+		// return the transient or get the values get the values from the comment meta
234
+		if( !empty( $transient_cached_answers  ) && false != $transient_cached_answers ){
235 235
 
236
-            $encoded_user_answers = $transient_cached_answers;
236
+			$encoded_user_answers = $transient_cached_answers;
237 237
 
238
-        }else{
238
+		}else{
239 239
 
240
-            $encoded_user_answers = Sensei_Utils::get_user_data( 'quiz_answers', $lesson_id  , $user_id );
240
+			$encoded_user_answers = Sensei_Utils::get_user_data( 'quiz_answers', $lesson_id  , $user_id );
241 241
 
242
-        } // end if transient check
242
+		} // end if transient check
243 243
 
244 244
 		if( ! is_array( $encoded_user_answers ) ){
245 245
 			return false;
246 246
 		}
247 247
 
248
-        //set the transient with the new valid data for faster retrieval in future
249
-        set_transient( $transient_key,  $encoded_user_answers, 10 * DAY_IN_SECONDS);
248
+		//set the transient with the new valid data for faster retrieval in future
249
+		set_transient( $transient_key,  $encoded_user_answers, 10 * DAY_IN_SECONDS);
250 250
 
251 251
 		// decode an unserialize all answers
252 252
 		foreach( $encoded_user_answers as $question_id => $encoded_answer ) {
@@ -280,8 +280,8 @@  discard block
 block discarded – undo
280 280
 		$current_quiz_id = $post->ID;
281 281
 		$lesson_id = $this->get_lesson_id( $current_quiz_id );
282 282
 
283
-        // reset all user data
284
-        $this->reset_user_lesson_data( $lesson_id, get_current_user_id() );
283
+		// reset all user data
284
+		$this->reset_user_lesson_data( $lesson_id, get_current_user_id() );
285 285
 
286 286
 		//this function should only run once
287 287
 		remove_action( 'template_redirect', array( $this, 'reset_button_click_listener'  ) );
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
 	 * Complete/ submit  quiz hooked function
293 293
 	 *
294 294
 	 * This function listens to the complete button submit action and processes the users submitted answers
295
-     * not that this function submits the given users quiz answers for grading.
295
+	 * not that this function submits the given users quiz answers for grading.
296 296
 	 *
297 297
 	 * @since  1.7.4
298 298
 	 * @access public
@@ -302,90 +302,90 @@  discard block
 block discarded – undo
302 302
 	 */
303 303
 	public function user_quiz_submit_listener() {
304 304
 
305
-        // only respond to valid quiz completion submissions
306
-        if( ! isset( $_POST[ 'quiz_complete' ])
307
-            || !isset( $_POST[ 'sensei_question' ] )
308
-            || empty( $_POST[ 'sensei_question' ] )
309
-            ||  ! wp_verify_nonce( $_POST['woothemes_sensei_complete_quiz_nonce'], 'woothemes_sensei_complete_quiz_nonce'  ) > 1 ) {
310
-            return;
311
-        }
305
+		// only respond to valid quiz completion submissions
306
+		if( ! isset( $_POST[ 'quiz_complete' ])
307
+			|| !isset( $_POST[ 'sensei_question' ] )
308
+			|| empty( $_POST[ 'sensei_question' ] )
309
+			||  ! wp_verify_nonce( $_POST['woothemes_sensei_complete_quiz_nonce'], 'woothemes_sensei_complete_quiz_nonce'  ) > 1 ) {
310
+			return;
311
+		}
312 312
 
313
-        global $post, $current_user;
314
-        $lesson_id = $this->get_lesson_id( $post->ID );
315
-        $quiz_answers = $_POST[ 'sensei_question' ];
313
+		global $post, $current_user;
314
+		$lesson_id = $this->get_lesson_id( $post->ID );
315
+		$quiz_answers = $_POST[ 'sensei_question' ];
316 316
 
317
-        self::submit_answers_for_grading( $quiz_answers, $_FILES ,  $lesson_id  , $current_user->ID );
317
+		self::submit_answers_for_grading( $quiz_answers, $_FILES ,  $lesson_id  , $current_user->ID );
318 318
 
319 319
 	} // End sensei_complete_quiz()
320 320
 
321
-    /**
322
-     * This function set's up the data need for the quiz page
323
-     *
324
-     * This function hooks into sensei_complete_quiz and load the global data for the
325
-     * current quiz.
326
-     *
327
-     * @since 1.7.4
328
-     * @access public
329
-     *
330
-     */
331
-    public function load_global_quiz_data(){
321
+	/**
322
+	 * This function set's up the data need for the quiz page
323
+	 *
324
+	 * This function hooks into sensei_complete_quiz and load the global data for the
325
+	 * current quiz.
326
+	 *
327
+	 * @since 1.7.4
328
+	 * @access public
329
+	 *
330
+	 */
331
+	public function load_global_quiz_data(){
332 332
 
333
-        global  $post, $current_user;
334
-        $this->data = new stdClass();
333
+		global  $post, $current_user;
334
+		$this->data = new stdClass();
335 335
 
336
-        // Default grade
337
-        $grade = 0;
336
+		// Default grade
337
+		$grade = 0;
338 338
 
339
-        // Get Quiz Questions
340
-        $lesson_quiz_questions = Sensei()->lesson->lesson_quiz_questions( $post->ID );
339
+		// Get Quiz Questions
340
+		$lesson_quiz_questions = Sensei()->lesson->lesson_quiz_questions( $post->ID );
341 341
 
342
-        $quiz_lesson_id = absint( get_post_meta( $post->ID, '_quiz_lesson', true ) );
342
+		$quiz_lesson_id = absint( get_post_meta( $post->ID, '_quiz_lesson', true ) );
343 343
 
344
-        // Get quiz grade type
345
-        $quiz_grade_type = get_post_meta( $post->ID, '_quiz_grade_type', true );
344
+		// Get quiz grade type
345
+		$quiz_grade_type = get_post_meta( $post->ID, '_quiz_grade_type', true );
346 346
 
347
-        // Get quiz pass setting
348
-        $pass_required = get_post_meta( $post->ID, '_pass_required', true );
347
+		// Get quiz pass setting
348
+		$pass_required = get_post_meta( $post->ID, '_pass_required', true );
349 349
 
350
-        // Get quiz pass mark
351
-        $quiz_passmark = abs( round( doubleval( get_post_meta( $post->ID, '_quiz_passmark', true ) ), 2 ) );
350
+		// Get quiz pass mark
351
+		$quiz_passmark = abs( round( doubleval( get_post_meta( $post->ID, '_quiz_passmark', true ) ), 2 ) );
352 352
 
353
-        // Get latest quiz answers and grades
354
-        $lesson_id = Sensei()->quiz->get_lesson_id( $post->ID );
355
-        $user_quizzes = Sensei()->quiz->get_user_answers( $lesson_id, get_current_user_id() );
356
-        $user_lesson_status = Sensei_Utils::user_lesson_status( $quiz_lesson_id, $current_user->ID );
357
-        $user_quiz_grade = 0;
358
-        if( isset( $user_lesson_status->comment_ID ) ) {
359
-            $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
360
-        }
353
+		// Get latest quiz answers and grades
354
+		$lesson_id = Sensei()->quiz->get_lesson_id( $post->ID );
355
+		$user_quizzes = Sensei()->quiz->get_user_answers( $lesson_id, get_current_user_id() );
356
+		$user_lesson_status = Sensei_Utils::user_lesson_status( $quiz_lesson_id, $current_user->ID );
357
+		$user_quiz_grade = 0;
358
+		if( isset( $user_lesson_status->comment_ID ) ) {
359
+			$user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
360
+		}
361 361
 
362
-        if ( ! is_array($user_quizzes) ) { $user_quizzes = array(); }
362
+		if ( ! is_array($user_quizzes) ) { $user_quizzes = array(); }
363 363
 
364
-        // Check again that the lesson is complete
365
-        $user_lesson_end = Sensei_Utils::user_completed_lesson( $user_lesson_status );
366
-        $user_lesson_complete = false;
367
-        if ( $user_lesson_end ) {
368
-            $user_lesson_complete = true;
369
-        } // End If Statement
364
+		// Check again that the lesson is complete
365
+		$user_lesson_end = Sensei_Utils::user_completed_lesson( $user_lesson_status );
366
+		$user_lesson_complete = false;
367
+		if ( $user_lesson_end ) {
368
+			$user_lesson_complete = true;
369
+		} // End If Statement
370 370
 
371
-        $reset_allowed = get_post_meta( $post->ID, '_enable_quiz_reset', true );
372
-        //backwards compatibility
373
-        if( 'on' == $reset_allowed ) {
374
-            $reset_allowed = 1;
375
-        }
371
+		$reset_allowed = get_post_meta( $post->ID, '_enable_quiz_reset', true );
372
+		//backwards compatibility
373
+		if( 'on' == $reset_allowed ) {
374
+			$reset_allowed = 1;
375
+		}
376 376
 
377
-        // Build frontend data object for backwards compatibility
378
-        // using this is no longer recommended
379
-        $this->data->user_quiz_grade = $user_quiz_grade;// Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
380
-        $this->data->quiz_passmark = $quiz_passmark;
381
-        $this->data->quiz_lesson = $quiz_lesson_id;
382
-        $this->data->quiz_grade_type = $quiz_grade_type; // get_post_meta( $quiz_id, '_quiz_grade_type', true );
383
-        $this->data->user_lesson_end = $user_lesson_end;
384
-        $this->data->user_lesson_complete = $user_lesson_complete; //Sensei_Utils::user_completed_lesson( $lesson_id, get_current_user_id() );
385
-        $this->data->lesson_quiz_questions = $lesson_quiz_questions;
386
-        $this->data->reset_quiz_allowed = $reset_allowed; // Sensei_Quiz::is_reset_allowed( $lesson_id );
377
+		// Build frontend data object for backwards compatibility
378
+		// using this is no longer recommended
379
+		$this->data->user_quiz_grade = $user_quiz_grade;// Sensei_Quiz::get_user_quiz_grade( $lesson_id, get_current_user_id() );
380
+		$this->data->quiz_passmark = $quiz_passmark;
381
+		$this->data->quiz_lesson = $quiz_lesson_id;
382
+		$this->data->quiz_grade_type = $quiz_grade_type; // get_post_meta( $quiz_id, '_quiz_grade_type', true );
383
+		$this->data->user_lesson_end = $user_lesson_end;
384
+		$this->data->user_lesson_complete = $user_lesson_complete; //Sensei_Utils::user_completed_lesson( $lesson_id, get_current_user_id() );
385
+		$this->data->lesson_quiz_questions = $lesson_quiz_questions;
386
+		$this->data->reset_quiz_allowed = $reset_allowed; // Sensei_Quiz::is_reset_allowed( $lesson_id );
387 387
 
388
-    } // end load_global_quiz_data
388
+	} // end load_global_quiz_data
389 389
 
390 390
 
391 391
 	/**
@@ -415,25 +415,25 @@  discard block
 block discarded – undo
415 415
 		foreach( $unprepared_answers as $question_id => $answer ) {
416 416
 
417 417
 			//get the current questions question type
418
-            $question_type = Sensei()->question->get_question_type( $question_id );
418
+			$question_type = Sensei()->question->get_question_type( $question_id );
419 419
 
420 420
 			// Sanitise answer
421 421
 			if( 0 == get_magic_quotes_gpc() ) {
422 422
 				$answer = wp_unslash( $answer );
423 423
 			}
424 424
 
425
-            // compress the answer for saving
425
+			// compress the answer for saving
426 426
 			if( 'multi-line' == $question_type ) {
427
-                $answer = esc_html( $answer );
428
-            }elseif( 'file-upload' == $question_type  ){
429
-                $file_key = 'file_upload_' . $question_id;
430
-                if( isset( $files[ $file_key ] ) ) {
431
-                        $attachment_id = Sensei_Utils::upload_file(  $files[ $file_key ] );
432
-                        if( $attachment_id ) {
433
-                            $answer = $attachment_id;
434
-                        }
435
-                    }
436
-            } // end if
427
+				$answer = esc_html( $answer );
428
+			}elseif( 'file-upload' == $question_type  ){
429
+				$file_key = 'file_upload_' . $question_id;
430
+				if( isset( $files[ $file_key ] ) ) {
431
+						$attachment_id = Sensei_Utils::upload_file(  $files[ $file_key ] );
432
+						if( $attachment_id ) {
433
+							$answer = $attachment_id;
434
+						}
435
+					}
436
+			} // end if
437 437
 
438 438
 			$prepared_answers[ $question_id ] =  base64_encode( maybe_serialize( $answer ) );
439 439
 
@@ -442,814 +442,814 @@  discard block
 block discarded – undo
442 442
 		return $prepared_answers;
443 443
 	} // prepare_form_submitted_answers
444 444
 
445
-    /**
446
-     * Reset user submitted questions
447
-     *
448
-     * This function resets the quiz data for a user that has been submitted fro grading already. It is different to
449
-     * the save_user_answers as currently the saved and submitted answers are stored differently.
450
-     *
451
-     * @since 1.7.4
452
-     * @access public
453
-     *
454
-     * @return bool $reset_success
455
-     * @param int $user_id
456
-     * @param int $lesson_id
457
-     */
458
-    public function reset_user_lesson_data( $lesson_id , $user_id = 0 ){
445
+	/**
446
+	 * Reset user submitted questions
447
+	 *
448
+	 * This function resets the quiz data for a user that has been submitted fro grading already. It is different to
449
+	 * the save_user_answers as currently the saved and submitted answers are stored differently.
450
+	 *
451
+	 * @since 1.7.4
452
+	 * @access public
453
+	 *
454
+	 * @return bool $reset_success
455
+	 * @param int $user_id
456
+	 * @param int $lesson_id
457
+	 */
458
+	public function reset_user_lesson_data( $lesson_id , $user_id = 0 ){
459
+
460
+		//make sure the parameters are valid
461
+		if( empty( $lesson_id ) || empty( $user_id )
462
+			|| 'lesson' != get_post_type( $lesson_id )
463
+			|| ! get_userdata( $user_id ) ){
464
+			return false;
465
+		}
466
+
467
+
468
+
469
+		//get the users lesson status to make
470
+		$user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
471
+		if( ! isset( $user_lesson_status->comment_ID ) ) {
472
+			// this user is not taking this lesson so this process is not needed
473
+			return false;
474
+		}
475
+
476
+		//get the lesson quiz and course
477
+		$quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
478
+		$course_id = Sensei()->lesson->get_course_id( $lesson_id );
479
+
480
+		// reset the transients
481
+		$answers_transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
482
+		$grades_transient_key = 'quiz_grades_'.$user_id.'_'.$lesson_id;
483
+		$answers_feedback_transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
484
+		delete_transient( $answers_transient_key );
485
+		delete_transient( $grades_transient_key );
486
+		delete_transient( $answers_feedback_transient_key );
487
+
488
+		// reset the quiz answers and feedback notes
489
+		$deleted_answers = Sensei_Utils::delete_user_data( 'quiz_answers', $lesson_id, $user_id );
490
+		$deleted_grades = Sensei_Utils::delete_user_data( 'quiz_grades', $lesson_id, $user_id );
491
+		$deleted_user_feedback = Sensei_Utils::delete_user_data( 'quiz_answers_feedback', $lesson_id, $user_id );
492
+
493
+		// Delete quiz answers, this auto deletes the corresponding meta data, such as the question/answer grade
494
+		Sensei_Utils::sensei_delete_quiz_answers( $quiz_id, $user_id );
495
+
496
+		Sensei_Utils::update_lesson_status( $user_id , $lesson_id, 'in-progress', array( 'questions_asked' => '', 'grade' => '' ) );
497
+
498
+		// Update course completion
499
+		Sensei_Utils::update_course_status( $user_id, $course_id );
459 500
 
460
-        //make sure the parameters are valid
461
-        if( empty( $lesson_id ) || empty( $user_id )
462
-            || 'lesson' != get_post_type( $lesson_id )
463
-            || ! get_userdata( $user_id ) ){
464
-            return false;
465
-        }
466
-
467
-
468
-
469
-        //get the users lesson status to make
470
-        $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
471
-        if( ! isset( $user_lesson_status->comment_ID ) ) {
472
-            // this user is not taking this lesson so this process is not needed
473
-            return false;
474
-        }
501
+		// Run any action on quiz/lesson reset (previously this didn't occur on resetting a quiz, see resetting a lesson in sensei_complete_lesson()
502
+		do_action( 'sensei_user_lesson_reset', $user_id, $lesson_id );
503
+		Sensei()->frontend->messages = '<div class="sensei-message note">' . __( 'Quiz Reset Successfully.', 'woothemes-sensei' ) . '</div>';
475 504
 
476
-        //get the lesson quiz and course
477
-        $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
478
-        $course_id = Sensei()->lesson->get_course_id( $lesson_id );
505
+		return ( $deleted_answers && $deleted_grades ) ;
479 506
 
480
-        // reset the transients
481
-        $answers_transient_key = 'sensei_answers_'.$user_id.'_'.$lesson_id;
482
-        $grades_transient_key = 'quiz_grades_'.$user_id.'_'.$lesson_id;
483
-        $answers_feedback_transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
484
-        delete_transient( $answers_transient_key );
485
-        delete_transient( $grades_transient_key );
486
-        delete_transient( $answers_feedback_transient_key );
507
+	} // end reset_user_lesson_data
487 508
 
488
-        // reset the quiz answers and feedback notes
489
-        $deleted_answers = Sensei_Utils::delete_user_data( 'quiz_answers', $lesson_id, $user_id );
490
-        $deleted_grades = Sensei_Utils::delete_user_data( 'quiz_grades', $lesson_id, $user_id );
491
-        $deleted_user_feedback = Sensei_Utils::delete_user_data( 'quiz_answers_feedback', $lesson_id, $user_id );
509
+	 /**
510
+	  * Submit the users quiz answers for grading
511
+	  *
512
+	  * This function accepts users answers and stores it but also initiates the grading
513
+	  * if a quiz can be graded automatically it will, if not the answers can be graded by the teacher.
514
+	  *
515
+	  * @since 1.7.4
516
+	  * @access public
517
+	  *
518
+	  * @param array $quiz_answers
519
+	  * @param array $files from $_FILES
520
+	  * @param int $user_id
521
+	  * @param int $lesson_id
522
+	  *
523
+	  * @return bool $answers_submitted
524
+	  */
525
+	 public static function submit_answers_for_grading( $quiz_answers , $files = array() , $lesson_id , $user_id = 0 ){
492 526
 
493
-        // Delete quiz answers, this auto deletes the corresponding meta data, such as the question/answer grade
494
-        Sensei_Utils::sensei_delete_quiz_answers( $quiz_id, $user_id );
527
+		 $answers_submitted = false;
495 528
 
496
-        Sensei_Utils::update_lesson_status( $user_id , $lesson_id, 'in-progress', array( 'questions_asked' => '', 'grade' => '' ) );
529
+		 // get the user_id if none was passed in use the current logged in user
530
+		 if( ! intval( $user_id ) > 0 ) {
531
+			 $user_id = get_current_user_id();
532
+		 }
497 533
 
498
-        // Update course completion
499
-        Sensei_Utils::update_course_status( $user_id, $course_id );
534
+		 // make sure the parameters are valid before continuing
535
+		 if( empty( $lesson_id ) || empty( $user_id )
536
+			 || 'lesson' != get_post_type( $lesson_id )
537
+			 ||!get_userdata( $user_id )
538
+			 || !is_array( $quiz_answers ) ){
500 539
 
501
-        // Run any action on quiz/lesson reset (previously this didn't occur on resetting a quiz, see resetting a lesson in sensei_complete_lesson()
502
-        do_action( 'sensei_user_lesson_reset', $user_id, $lesson_id );
503
-        Sensei()->frontend->messages = '<div class="sensei-message note">' . __( 'Quiz Reset Successfully.', 'woothemes-sensei' ) . '</div>';
540
+			 return false;
504 541
 
505
-        return ( $deleted_answers && $deleted_grades ) ;
542
+		 }
506 543
 
507
-    } // end reset_user_lesson_data
544
+		 // Default grade
545
+		 $grade = 0;
508 546
 
509
-     /**
510
-      * Submit the users quiz answers for grading
511
-      *
512
-      * This function accepts users answers and stores it but also initiates the grading
513
-      * if a quiz can be graded automatically it will, if not the answers can be graded by the teacher.
514
-      *
515
-      * @since 1.7.4
516
-      * @access public
517
-      *
518
-      * @param array $quiz_answers
519
-      * @param array $files from $_FILES
520
-      * @param int $user_id
521
-      * @param int $lesson_id
522
-      *
523
-      * @return bool $answers_submitted
524
-      */
525
-     public static function submit_answers_for_grading( $quiz_answers , $files = array() , $lesson_id , $user_id = 0 ){
547
+		 // Get Quiz ID
548
+		 $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
526 549
 
527
-         $answers_submitted = false;
550
+		 // Get quiz grade type
551
+		 $quiz_grade_type = get_post_meta( $quiz_id, '_quiz_grade_type', true );
528 552
 
529
-         // get the user_id if none was passed in use the current logged in user
530
-         if( ! intval( $user_id ) > 0 ) {
531
-             $user_id = get_current_user_id();
532
-         }
553
+		 // Get quiz pass setting
554
+		 $pass_required = get_post_meta( $quiz_id, '_pass_required', true );
533 555
 
534
-         // make sure the parameters are valid before continuing
535
-         if( empty( $lesson_id ) || empty( $user_id )
536
-             || 'lesson' != get_post_type( $lesson_id )
537
-             ||!get_userdata( $user_id )
538
-             || !is_array( $quiz_answers ) ){
556
+		 // Get the minimum percentage need to pass this quiz
557
+		 $quiz_pass_percentage = abs( round( doubleval( get_post_meta( $quiz_id, '_quiz_passmark', true ) ), 2 ) );
539 558
 
540
-             return false;
559
+		 // Handle Quiz Questions asked
560
+		 // This is to ensure we save the questions that we've asked this user and that this can't be change unless
561
+		 // the quiz is reset by admin or user( user: only if the setting is enabled ).
562
+		 // get the questions asked when when the quiz questions were generated for the user : Sensei_Lesson::lesson_quiz_questions
563
+		 $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
564
+		 $questions_asked = get_comment_meta( $user_lesson_status->comment_ID, 'questions_asked', true );
565
+		 if( empty( $questions_asked ) ){
541 566
 
542
-         }
567
+			 $questions_asked = array_keys( $quiz_answers );
568
+			 $questions_asked_string = implode( ',', $questions_asked );
543 569
 
544
-         // Default grade
545
-         $grade = 0;
570
+			 // Save questions that were asked in this quiz
571
+			 update_comment_meta( $user_lesson_status->comment_ID, 'questions_asked', $questions_asked_string );
546 572
 
547
-         // Get Quiz ID
548
-         $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
573
+		 }
549 574
 
550
-         // Get quiz grade type
551
-         $quiz_grade_type = get_post_meta( $quiz_id, '_quiz_grade_type', true );
575
+		 // Save Quiz Answers for grading, the save function also calls the sensei_start_lesson
576
+		 self::save_user_answers( $quiz_answers , $files , $lesson_id , $user_id );
552 577
 
553
-         // Get quiz pass setting
554
-         $pass_required = get_post_meta( $quiz_id, '_pass_required', true );
578
+		 // Grade quiz
579
+		 $grade = Sensei_Grading::grade_quiz_auto( $quiz_id, $quiz_answers, 0 , $quiz_grade_type );
555 580
 
556
-         // Get the minimum percentage need to pass this quiz
557
-         $quiz_pass_percentage = abs( round( doubleval( get_post_meta( $quiz_id, '_quiz_passmark', true ) ), 2 ) );
581
+		 // Get Lesson Grading Setting
582
+		 $lesson_metadata = array();
583
+		 $lesson_status = 'ungraded'; // Default when completing a quiz
558 584
 
559
-         // Handle Quiz Questions asked
560
-         // This is to ensure we save the questions that we've asked this user and that this can't be change unless
561
-         // the quiz is reset by admin or user( user: only if the setting is enabled ).
562
-         // get the questions asked when when the quiz questions were generated for the user : Sensei_Lesson::lesson_quiz_questions
563
-         $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
564
-         $questions_asked = get_comment_meta( $user_lesson_status->comment_ID, 'questions_asked', true );
565
-         if( empty( $questions_asked ) ){
585
+		 // At this point the answers have been submitted
586
+		 $answers_submitted = true;
566 587
 
567
-             $questions_asked = array_keys( $quiz_answers );
568
-             $questions_asked_string = implode( ',', $questions_asked );
569
-
570
-             // Save questions that were asked in this quiz
571
-             update_comment_meta( $user_lesson_status->comment_ID, 'questions_asked', $questions_asked_string );
588
+		 // if this condition is false the quiz should manually be graded by admin
589
+		 if ('auto' == $quiz_grade_type && ! is_wp_error( $grade )  ) {
572 590
 
573
-         }
591
+			 // Quiz has been automatically Graded
592
+			 if ( 'on' == $pass_required ) {
574 593
 
575
-         // Save Quiz Answers for grading, the save function also calls the sensei_start_lesson
576
-         self::save_user_answers( $quiz_answers , $files , $lesson_id , $user_id );
594
+				 // Student has reached the pass mark and lesson is complete
595
+				 if ( $quiz_pass_percentage <= $grade ) {
577 596
 
578
-         // Grade quiz
579
-         $grade = Sensei_Grading::grade_quiz_auto( $quiz_id, $quiz_answers, 0 , $quiz_grade_type );
597
+					 $lesson_status = 'passed';
580 598
 
581
-         // Get Lesson Grading Setting
582
-         $lesson_metadata = array();
583
-         $lesson_status = 'ungraded'; // Default when completing a quiz
599
+				 } else {
584 600
 
585
-         // At this point the answers have been submitted
586
-         $answers_submitted = true;
601
+					 $lesson_status = 'failed';
587 602
 
588
-         // if this condition is false the quiz should manually be graded by admin
589
-         if ('auto' == $quiz_grade_type && ! is_wp_error( $grade )  ) {
603
+				 } // End If Statement
590 604
 
591
-             // Quiz has been automatically Graded
592
-             if ( 'on' == $pass_required ) {
605
+			 } else {
593 606
 
594
-                 // Student has reached the pass mark and lesson is complete
595
-                 if ( $quiz_pass_percentage <= $grade ) {
607
+				 // Student only has to partake the quiz
608
+				 $lesson_status = 'graded';
609
+
610
+			 }
611
+
612
+			 $lesson_metadata['grade'] = $grade; // Technically already set as part of "WooThemes_Sensei_Utils::sensei_grade_quiz_auto()" above
613
+
614
+		 } // end if ! is_wp_error( $grade ...
615
+
616
+		 Sensei_Utils::update_lesson_status( $user_id, $lesson_id, $lesson_status, $lesson_metadata );
596 617
 
597
-                     $lesson_status = 'passed';
618
+		 if( 'passed' == $lesson_status || 'graded' == $lesson_status ){
598 619
 
599
-                 } else {
620
+			 /**
621
+			  * Lesson end action hook
622
+			  *
623
+			  * This hook is fired after a lesson quiz has been graded and the lesson status is 'passed' OR 'graded'
624
+			  *
625
+			  * @param int $user_id
626
+			  * @param int $lesson_id
627
+			  */
628
+			 do_action( 'sensei_user_lesson_end', $user_id, $lesson_id );
600 629
 
601
-                     $lesson_status = 'failed';
630
+		 }
602 631
 
603
-                 } // End If Statement
632
+		 /**
633
+		  * User quiz has been submitted
634
+		  *
635
+		  * Fires the end of the submit_answers_for_grading function. It will fire irrespective of the submission
636
+		  * results.
637
+		  *
638
+		  * @param int $user_id
639
+		  * @param int $quiz_id
640
+		  * @param string $grade
641
+		  * @param string $quiz_pass_percentage
642
+		  * @param string $quiz_grade_type
643
+		  */
644
+		 do_action( 'sensei_user_quiz_submitted', $user_id, $quiz_id, $grade, $quiz_pass_percentage, $quiz_grade_type );
604 645
 
605
-             } else {
646
+		 return $answers_submitted;
606 647
 
607
-                 // Student only has to partake the quiz
608
-                 $lesson_status = 'graded';
609
-
610
-             }
611
-
612
-             $lesson_metadata['grade'] = $grade; // Technically already set as part of "WooThemes_Sensei_Utils::sensei_grade_quiz_auto()" above
613
-
614
-         } // end if ! is_wp_error( $grade ...
615
-
616
-         Sensei_Utils::update_lesson_status( $user_id, $lesson_id, $lesson_status, $lesson_metadata );
648
+	 }// end submit_answers_for_grading
617 649
 
618
-         if( 'passed' == $lesson_status || 'graded' == $lesson_status ){
650
+	 /**
651
+	  * Get the user question answer
652
+	  *
653
+	  * This function gets the the users saved answer on given quiz for the given question parameter
654
+	  * this function allows for a fallback to users still using the question saved data from before 1.7.4
655
+	  *
656
+	  * @since 1.7.4
657
+	  *
658
+	  * @param int  $lesson_id
659
+	  * @param int $question_id
660
+	  * @param int  $user_id ( optional )
661
+	  *
662
+	  * @return bool $answers_submitted
663
+	  */
664
+	 public function get_user_question_answer( $lesson_id, $question_id, $user_id = 0 ){
619 665
 
620
-             /**
621
-              * Lesson end action hook
622
-              *
623
-              * This hook is fired after a lesson quiz has been graded and the lesson status is 'passed' OR 'graded'
624
-              *
625
-              * @param int $user_id
626
-              * @param int $lesson_id
627
-              */
628
-             do_action( 'sensei_user_lesson_end', $user_id, $lesson_id );
666
+		 // parameter validation
667
+		 if( empty( $lesson_id ) || empty( $question_id )
668
+			 || ! ( intval( $lesson_id  ) > 0 )
669
+			 || ! ( intval( $question_id  ) > 0 )
670
+			 || 'lesson' != get_post_type( $lesson_id )
671
+			 || 'question' != get_post_type( $question_id )) {
629 672
 
630
-         }
673
+			 return false;
674
+		 }
675
+
676
+		 if( ! ( intval( $user_id ) > 0 )   ){
677
+			 $user_id = get_current_user_id();
678
+		 }
679
+
680
+		 $users_answers = $this->get_user_answers( $lesson_id, $user_id );
681
+
682
+		 if( !$users_answers || empty( $users_answers )
683
+		 ||  ! is_array( $users_answers ) || ! isset( $users_answers[ $question_id ] ) ){
684
+
685
+			 //Fallback for pre 1.7.4 data
686
+			 $comment =  Sensei_Utils::sensei_check_for_activity( array( 'post_id' => $question_id, 'user_id' => $user_id, 'type' => 'sensei_user_answer' ), true );
687
+
688
+			 if( ! isset( $comment->comment_content ) ){
689
+				 return false;
690
+			 }
691
+
692
+			 return maybe_unserialize( base64_decode( $comment->comment_content ) );
693
+		 }
694
+
695
+		 return $users_answers[ $question_id ];
696
+
697
+	 }// end get_user_question_answer
698
+
699
+	 /**
700
+	  * Saving the users quiz question grades
701
+	  *
702
+	  * This function save all the grades for all the question in a given quiz on the lesson
703
+	  * comment meta. It makes use of transients to save the grades for easier access at a later stage
704
+	  *
705
+	  * @since 1.7.4
706
+	  *
707
+	  * @param array $quiz_grades{
708
+	  *      @type int $question_id
709
+	  *      @type int $question_grade
710
+	  * }
711
+	  * @param $lesson_id
712
+	  * @param $user_id (Optional) will use the current user if not supplied
713
+	  *
714
+	  * @return bool
715
+	  */
716
+	 public function set_user_grades( $quiz_grades, $lesson_id, $user_id = 0 ){
717
+
718
+		 // get the user_id if none was passed in use the current logged in user
719
+		 if( ! intval( $user_id ) > 0 ) {
720
+			 $user_id = get_current_user_id();
721
+		 }
722
+
723
+		 // make sure the parameters are valid before continuing
724
+		 if( empty( $lesson_id ) || empty( $user_id )
725
+			 || 'lesson' != get_post_type( $lesson_id )
726
+			 ||!get_userdata( $user_id )
727
+			 || !is_array( $quiz_grades ) ){
728
+
729
+			 return false;
730
+
731
+		 }
732
+
733
+		 $success = false;
734
+
735
+		 // save that data for the user on the lesson comment meta
736
+		 $comment_meta_id = Sensei_Utils::add_user_data( 'quiz_grades', $lesson_id, $quiz_grades, $user_id   );
737
+
738
+		 // were the grades save successfully ?
739
+		 if( intval( $comment_meta_id ) > 0 ) {
740
+
741
+			 $success = true;
742
+			 // save transient
743
+			 $transient_key = 'quiz_grades_'. $user_id . '_' . $lesson_id;
744
+			 set_transient( $transient_key, $quiz_grades, 10 * DAY_IN_SECONDS );
745
+		 }
746
+
747
+		 return $success;
748
+
749
+	 }// end set_user_grades
750
+
751
+	 /**
752
+	  * Retrieve the users quiz question grades
753
+	  *
754
+	  * This function gets all the grades for all the questions in the given lesson quiz for a specific user.
755
+	  *
756
+	  * @since 1.7.4
757
+	  *
758
+	  * @param $lesson_id
759
+	  * @param $user_id (Optional) will use the current user if not supplied
760
+	  *
761
+	  * @return array $user_quiz_grades or false if none exists for this users
762
+	  */
763
+	 public function get_user_grades( $lesson_id, $user_id = 0 ){
764
+
765
+		 $user_grades = array();
766
+
767
+		 // get the user_id if none was passed in use the current logged in user
768
+		 if( ! intval( $user_id ) > 0 ) {
769
+			 $user_id = get_current_user_id();
770
+		 }
771
+
772
+		 if ( ! intval( $lesson_id ) > 0 || 'lesson' != get_post_type( $lesson_id )
773
+			 || ! intval( $user_id )  > 0 || !get_userdata( $user_id )  ) {
774
+			 return false;
775
+		 }
776
+
777
+		 // save some time and get the transient cached data
778
+		 $transient_key = 'quiz_grades_'. $user_id . '_' . $lesson_id;
779
+		 $user_grades = get_transient( $transient_key );
780
+
781
+		 // get the data if nothing was stored in the transient
782
+		 if( empty( $user_grades  ) || false != $user_grades ){
783
+
784
+			 $user_grades = Sensei_Utils::get_user_data( 'quiz_grades', $lesson_id, $user_id );
785
+
786
+			 //set the transient with the new valid data for faster retrieval in future
787
+			 set_transient( $transient_key,  $user_grades, 10 * DAY_IN_SECONDS );
788
+
789
+		 } // end if transient check
790
+
791
+		 // if there is no data for this user
792
+		 if( ! is_array( $user_grades ) ){
793
+			 return false;
794
+		 }
795
+
796
+		 return $user_grades;
797
+
798
+	 }// end  get_user_grades
799
+
800
+	 /**
801
+	  * Get the user question grade
802
+	  *
803
+	  * This function gets the grade on a quiz for the given question parameter
804
+	  * It does NOT do any grading. It simply retrieves the data that was stored during grading.
805
+	  * this function allows for a fallback to users still using the question saved data from before 1.7.4
806
+	  *
807
+	  * @since 1.7.4
808
+	  *
809
+	  * @param int  $lesson_id
810
+	  * @param int $question_id
811
+	  * @param int  $user_id ( optional )
812
+	  *
813
+	  * @return bool $question_grade
814
+	  */
815
+	 public function get_user_question_grade( $lesson_id, $question_id, $user_id = 0 ){
816
+
817
+		 // parameter validation
818
+		 if( empty( $lesson_id ) || empty( $question_id )
819
+			 || ! ( intval( $lesson_id  ) > 0 )
820
+			 || ! ( intval( $question_id  ) > 0 )
821
+			 || 'lesson' != get_post_type( $lesson_id )
822
+			 || 'question' != get_post_type( $question_id )) {
823
+
824
+			 return false;
825
+		 }
826
+
827
+		 $all_user_grades = self::get_user_grades( $lesson_id,$user_id );
828
+
829
+		 if( ! $all_user_grades || ! isset(  $all_user_grades[ $question_id ] ) ){
830
+
831
+			 //fallback to data pre 1.7.4
832
+			 $args = array(
833
+				 'post_id' => $question_id,
834
+				 'user_id' => $user_id,
835
+				 'type'    => 'sensei_user_answer'
836
+			 );
837
+
838
+			 $question_activity = Sensei_Utils::sensei_check_for_activity( $args , true );
839
+			 $fall_back_grade = false;
840
+			 if( isset( $question_activity->comment_ID ) ){
841
+				 $fall_back_grade = get_comment_meta(  $question_activity->comment_ID , 'user_grade', true );
842
+			 }
843
+
844
+			 return $fall_back_grade;
845
+
846
+		 } // end if $all_user_grades...
847
+
848
+		 return $all_user_grades[ $question_id ];
849
+
850
+	 }// end get_user_question_grade
851
+
852
+	 /**
853
+	  * Save the user's answers feedback
854
+	  *
855
+	  * For this function you must supply all three parameters. If will return false one is left out.
856
+	  * The data will be saved on the lesson ID supplied.
857
+	  *
858
+	  * @since 1.7.5
859
+	  * @access public
860
+	  *
861
+	  * @param array $answers_feedback{
862
+	  *  $type int $question_id
863
+	  *  $type string $question_feedback
864
+	  * }
865
+	  * @param int $lesson_id
866
+	  * @param int $user_id
867
+	  *
868
+	  * @return false or int $feedback_saved
869
+	  */
870
+	public function save_user_answers_feedback( $answers_feedback, $lesson_id , $user_id = 0 ){
871
+
872
+		// make sure the parameters are valid before continuing
873
+		if( empty( $lesson_id ) || empty( $user_id )
874
+			|| 'lesson' != get_post_type( $lesson_id )
875
+			||!get_userdata( $user_id )
876
+			|| !is_array( $answers_feedback ) ){
877
+
878
+			return false;
879
+
880
+		}
881
+
882
+
883
+		// check if the lesson is started before saving, if not start the lesson for the user
884
+		if ( !( 0 < intval( Sensei_Utils::user_started_lesson( $lesson_id, $user_id) ) ) ) {
885
+			Sensei_Utils::sensei_start_lesson( $lesson_id, $user_id );
886
+		}
631 887
 
632
-         /**
633
-          * User quiz has been submitted
634
-          *
635
-          * Fires the end of the submit_answers_for_grading function. It will fire irrespective of the submission
636
-          * results.
637
-          *
638
-          * @param int $user_id
639
-          * @param int $quiz_id
640
-          * @param string $grade
641
-          * @param string $quiz_pass_percentage
642
-          * @param string $quiz_grade_type
643
-          */
644
-         do_action( 'sensei_user_quiz_submitted', $user_id, $quiz_id, $grade, $quiz_pass_percentage, $quiz_grade_type );
888
+		// encode the feedback
889
+		$encoded_answers_feedback =  array();
890
+		foreach( $answers_feedback as $question_id => $feedback ){
891
+			$encoded_answers_feedback[ $question_id ] = base64_encode( $feedback );
892
+		}
893
+
894
+		// save the user data
895
+		$feedback_saved = Sensei_Utils::add_user_data( 'quiz_answers_feedback', $lesson_id , $encoded_answers_feedback, $user_id ) ;
896
+
897
+		//Were the the question feedback save correctly?
898
+		if( intval( $feedback_saved ) > 0){
899
+
900
+			// save transient to make retrieval faster in future
901
+			 $transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
902
+			 set_transient( $transient_key, $encoded_answers_feedback, 10 * DAY_IN_SECONDS );
645 903
 
646
-         return $answers_submitted;
904
+		}
905
+
906
+		return $feedback_saved;
907
+
908
+	} // end save_user_answers_feedback
909
+
910
+	 /**
911
+	  * Get the user's answers feedback.
912
+	  *
913
+	  * This function returns the feedback submitted by the teacher/admin
914
+	  * during grading. Grading occurs manually or automatically.
915
+	  *
916
+	  * @since 1.7.5
917
+	  * @access public
918
+	  *
919
+	  * @param int $lesson_id
920
+	  * @param int $user_id
921
+	  *
922
+	  * @return false | array $answers_feedback{
923
+	  *  $type int $question_id
924
+	  *  $type string $question_feedback
925
+	  * }
926
+	  */
927
+	 public function get_user_answers_feedback( $lesson_id , $user_id = 0 ){
928
+
929
+		 $answers_feedback = array();
647 930
 
648
-     }// end submit_answers_for_grading
931
+		 // get the user_id if none was passed in use the current logged in user
932
+		 if( ! intval( $user_id ) > 0 ) {
933
+			 $user_id = get_current_user_id();
934
+		 }
649 935
 
650
-     /**
651
-      * Get the user question answer
652
-      *
653
-      * This function gets the the users saved answer on given quiz for the given question parameter
654
-      * this function allows for a fallback to users still using the question saved data from before 1.7.4
655
-      *
656
-      * @since 1.7.4
657
-      *
658
-      * @param int  $lesson_id
659
-      * @param int $question_id
660
-      * @param int  $user_id ( optional )
661
-      *
662
-      * @return bool $answers_submitted
663
-      */
664
-     public function get_user_question_answer( $lesson_id, $question_id, $user_id = 0 ){
936
+		 if ( ! intval( $lesson_id ) > 0 || 'lesson' != get_post_type( $lesson_id )
937
+			 || ! intval( $user_id )  > 0 || !get_userdata( $user_id )  ) {
938
+			 return false;
939
+		 }
940
+
941
+		 // first check the transient to save a few split seconds
942
+		 $transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
943
+		 $encoded_feedback = get_transient( $transient_key );
944
+
945
+		 // get the data if nothing was stored in the transient
946
+		 if( empty( $encoded_feedback  ) || !$encoded_feedback ){
665 947
 
666
-         // parameter validation
667
-         if( empty( $lesson_id ) || empty( $question_id )
668
-             || ! ( intval( $lesson_id  ) > 0 )
669
-             || ! ( intval( $question_id  ) > 0 )
670
-             || 'lesson' != get_post_type( $lesson_id )
671
-             || 'question' != get_post_type( $question_id )) {
948
+			 $encoded_feedback = Sensei_Utils::get_user_data( 'quiz_answers_feedback', $lesson_id, $user_id );
949
+
950
+			 //set the transient with the new valid data for faster retrieval in future
951
+			 set_transient( $transient_key,  $encoded_feedback, 10 * DAY_IN_SECONDS);
952
+
953
+		 } // end if transient check
672 954
 
673
-             return false;
674
-         }
675
-
676
-         if( ! ( intval( $user_id ) > 0 )   ){
677
-             $user_id = get_current_user_id();
678
-         }
679
-
680
-         $users_answers = $this->get_user_answers( $lesson_id, $user_id );
681
-
682
-         if( !$users_answers || empty( $users_answers )
683
-         ||  ! is_array( $users_answers ) || ! isset( $users_answers[ $question_id ] ) ){
684
-
685
-             //Fallback for pre 1.7.4 data
686
-             $comment =  Sensei_Utils::sensei_check_for_activity( array( 'post_id' => $question_id, 'user_id' => $user_id, 'type' => 'sensei_user_answer' ), true );
687
-
688
-             if( ! isset( $comment->comment_content ) ){
689
-                 return false;
690
-             }
691
-
692
-             return maybe_unserialize( base64_decode( $comment->comment_content ) );
693
-         }
694
-
695
-         return $users_answers[ $question_id ];
696
-
697
-     }// end get_user_question_answer
698
-
699
-     /**
700
-      * Saving the users quiz question grades
701
-      *
702
-      * This function save all the grades for all the question in a given quiz on the lesson
703
-      * comment meta. It makes use of transients to save the grades for easier access at a later stage
704
-      *
705
-      * @since 1.7.4
706
-      *
707
-      * @param array $quiz_grades{
708
-      *      @type int $question_id
709
-      *      @type int $question_grade
710
-      * }
711
-      * @param $lesson_id
712
-      * @param $user_id (Optional) will use the current user if not supplied
713
-      *
714
-      * @return bool
715
-      */
716
-     public function set_user_grades( $quiz_grades, $lesson_id, $user_id = 0 ){
717
-
718
-         // get the user_id if none was passed in use the current logged in user
719
-         if( ! intval( $user_id ) > 0 ) {
720
-             $user_id = get_current_user_id();
721
-         }
722
-
723
-         // make sure the parameters are valid before continuing
724
-         if( empty( $lesson_id ) || empty( $user_id )
725
-             || 'lesson' != get_post_type( $lesson_id )
726
-             ||!get_userdata( $user_id )
727
-             || !is_array( $quiz_grades ) ){
728
-
729
-             return false;
730
-
731
-         }
732
-
733
-         $success = false;
734
-
735
-         // save that data for the user on the lesson comment meta
736
-         $comment_meta_id = Sensei_Utils::add_user_data( 'quiz_grades', $lesson_id, $quiz_grades, $user_id   );
737
-
738
-         // were the grades save successfully ?
739
-         if( intval( $comment_meta_id ) > 0 ) {
740
-
741
-             $success = true;
742
-             // save transient
743
-             $transient_key = 'quiz_grades_'. $user_id . '_' . $lesson_id;
744
-             set_transient( $transient_key, $quiz_grades, 10 * DAY_IN_SECONDS );
745
-         }
746
-
747
-         return $success;
748
-
749
-     }// end set_user_grades
750
-
751
-     /**
752
-      * Retrieve the users quiz question grades
753
-      *
754
-      * This function gets all the grades for all the questions in the given lesson quiz for a specific user.
755
-      *
756
-      * @since 1.7.4
757
-      *
758
-      * @param $lesson_id
759
-      * @param $user_id (Optional) will use the current user if not supplied
760
-      *
761
-      * @return array $user_quiz_grades or false if none exists for this users
762
-      */
763
-     public function get_user_grades( $lesson_id, $user_id = 0 ){
764
-
765
-         $user_grades = array();
766
-
767
-         // get the user_id if none was passed in use the current logged in user
768
-         if( ! intval( $user_id ) > 0 ) {
769
-             $user_id = get_current_user_id();
770
-         }
771
-
772
-         if ( ! intval( $lesson_id ) > 0 || 'lesson' != get_post_type( $lesson_id )
773
-             || ! intval( $user_id )  > 0 || !get_userdata( $user_id )  ) {
774
-             return false;
775
-         }
776
-
777
-         // save some time and get the transient cached data
778
-         $transient_key = 'quiz_grades_'. $user_id . '_' . $lesson_id;
779
-         $user_grades = get_transient( $transient_key );
780
-
781
-         // get the data if nothing was stored in the transient
782
-         if( empty( $user_grades  ) || false != $user_grades ){
783
-
784
-             $user_grades = Sensei_Utils::get_user_data( 'quiz_grades', $lesson_id, $user_id );
785
-
786
-             //set the transient with the new valid data for faster retrieval in future
787
-             set_transient( $transient_key,  $user_grades, 10 * DAY_IN_SECONDS );
788
-
789
-         } // end if transient check
790
-
791
-         // if there is no data for this user
792
-         if( ! is_array( $user_grades ) ){
793
-             return false;
794
-         }
795
-
796
-         return $user_grades;
797
-
798
-     }// end  get_user_grades
799
-
800
-     /**
801
-      * Get the user question grade
802
-      *
803
-      * This function gets the grade on a quiz for the given question parameter
804
-      * It does NOT do any grading. It simply retrieves the data that was stored during grading.
805
-      * this function allows for a fallback to users still using the question saved data from before 1.7.4
806
-      *
807
-      * @since 1.7.4
808
-      *
809
-      * @param int  $lesson_id
810
-      * @param int $question_id
811
-      * @param int  $user_id ( optional )
812
-      *
813
-      * @return bool $question_grade
814
-      */
815
-     public function get_user_question_grade( $lesson_id, $question_id, $user_id = 0 ){
816
-
817
-         // parameter validation
818
-         if( empty( $lesson_id ) || empty( $question_id )
819
-             || ! ( intval( $lesson_id  ) > 0 )
820
-             || ! ( intval( $question_id  ) > 0 )
821
-             || 'lesson' != get_post_type( $lesson_id )
822
-             || 'question' != get_post_type( $question_id )) {
823
-
824
-             return false;
825
-         }
826
-
827
-         $all_user_grades = self::get_user_grades( $lesson_id,$user_id );
828
-
829
-         if( ! $all_user_grades || ! isset(  $all_user_grades[ $question_id ] ) ){
830
-
831
-             //fallback to data pre 1.7.4
832
-             $args = array(
833
-                 'post_id' => $question_id,
834
-                 'user_id' => $user_id,
835
-                 'type'    => 'sensei_user_answer'
836
-             );
837
-
838
-             $question_activity = Sensei_Utils::sensei_check_for_activity( $args , true );
839
-             $fall_back_grade = false;
840
-             if( isset( $question_activity->comment_ID ) ){
841
-                 $fall_back_grade = get_comment_meta(  $question_activity->comment_ID , 'user_grade', true );
842
-             }
843
-
844
-             return $fall_back_grade;
845
-
846
-         } // end if $all_user_grades...
847
-
848
-         return $all_user_grades[ $question_id ];
849
-
850
-     }// end get_user_question_grade
851
-
852
-     /**
853
-      * Save the user's answers feedback
854
-      *
855
-      * For this function you must supply all three parameters. If will return false one is left out.
856
-      * The data will be saved on the lesson ID supplied.
857
-      *
858
-      * @since 1.7.5
859
-      * @access public
860
-      *
861
-      * @param array $answers_feedback{
862
-      *  $type int $question_id
863
-      *  $type string $question_feedback
864
-      * }
865
-      * @param int $lesson_id
866
-      * @param int $user_id
867
-      *
868
-      * @return false or int $feedback_saved
869
-      */
870
-    public function save_user_answers_feedback( $answers_feedback, $lesson_id , $user_id = 0 ){
871
-
872
-        // make sure the parameters are valid before continuing
873
-        if( empty( $lesson_id ) || empty( $user_id )
874
-            || 'lesson' != get_post_type( $lesson_id )
875
-            ||!get_userdata( $user_id )
876
-            || !is_array( $answers_feedback ) ){
877
-
878
-            return false;
879
-
880
-        }
881
-
882
-
883
-        // check if the lesson is started before saving, if not start the lesson for the user
884
-        if ( !( 0 < intval( Sensei_Utils::user_started_lesson( $lesson_id, $user_id) ) ) ) {
885
-            Sensei_Utils::sensei_start_lesson( $lesson_id, $user_id );
886
-        }
887
-
888
-        // encode the feedback
889
-        $encoded_answers_feedback =  array();
890
-        foreach( $answers_feedback as $question_id => $feedback ){
891
-            $encoded_answers_feedback[ $question_id ] = base64_encode( $feedback );
892
-        }
893
-
894
-        // save the user data
895
-        $feedback_saved = Sensei_Utils::add_user_data( 'quiz_answers_feedback', $lesson_id , $encoded_answers_feedback, $user_id ) ;
896
-
897
-        //Were the the question feedback save correctly?
898
-        if( intval( $feedback_saved ) > 0){
899
-
900
-            // save transient to make retrieval faster in future
901
-             $transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
902
-             set_transient( $transient_key, $encoded_answers_feedback, 10 * DAY_IN_SECONDS );
903
-
904
-        }
905
-
906
-        return $feedback_saved;
907
-
908
-    } // end save_user_answers_feedback
909
-
910
-     /**
911
-      * Get the user's answers feedback.
912
-      *
913
-      * This function returns the feedback submitted by the teacher/admin
914
-      * during grading. Grading occurs manually or automatically.
915
-      *
916
-      * @since 1.7.5
917
-      * @access public
918
-      *
919
-      * @param int $lesson_id
920
-      * @param int $user_id
921
-      *
922
-      * @return false | array $answers_feedback{
923
-      *  $type int $question_id
924
-      *  $type string $question_feedback
925
-      * }
926
-      */
927
-     public function get_user_answers_feedback( $lesson_id , $user_id = 0 ){
928
-
929
-         $answers_feedback = array();
930
-
931
-         // get the user_id if none was passed in use the current logged in user
932
-         if( ! intval( $user_id ) > 0 ) {
933
-             $user_id = get_current_user_id();
934
-         }
935
-
936
-         if ( ! intval( $lesson_id ) > 0 || 'lesson' != get_post_type( $lesson_id )
937
-             || ! intval( $user_id )  > 0 || !get_userdata( $user_id )  ) {
938
-             return false;
939
-         }
940
-
941
-         // first check the transient to save a few split seconds
942
-         $transient_key = 'sensei_answers_feedback_'.$user_id.'_'.$lesson_id;
943
-         $encoded_feedback = get_transient( $transient_key );
944
-
945
-         // get the data if nothing was stored in the transient
946
-         if( empty( $encoded_feedback  ) || !$encoded_feedback ){
947
-
948
-             $encoded_feedback = Sensei_Utils::get_user_data( 'quiz_answers_feedback', $lesson_id, $user_id );
949
-
950
-             //set the transient with the new valid data for faster retrieval in future
951
-             set_transient( $transient_key,  $encoded_feedback, 10 * DAY_IN_SECONDS);
952
-
953
-         } // end if transient check
954
-
955
-         // if there is no data for this user
956
-         if( ! is_array( $encoded_feedback ) ){
957
-             return false;
958
-         }
955
+		 // if there is no data for this user
956
+		 if( ! is_array( $encoded_feedback ) ){
957
+			 return false;
958
+		 }
959 959
 
960
-         foreach( $encoded_feedback as $question_id => $feedback ){
960
+		 foreach( $encoded_feedback as $question_id => $feedback ){
961 961
 
962
-             $answers_feedback[ $question_id ] = base64_decode( $feedback );
962
+			 $answers_feedback[ $question_id ] = base64_decode( $feedback );
963 963
 
964
-         }
964
+		 }
965 965
 
966
-         return $answers_feedback;
966
+		 return $answers_feedback;
967 967
 
968
-     } // end get_user_answers_feedback
968
+	 } // end get_user_answers_feedback
969 969
 
970
-     /**
971
-      * Get the user's answer feedback for a specific question.
972
-      *
973
-      * This function gives you a single answer note/feedback string
974
-      * for the user on the given question.
975
-      *
976
-      * @since 1.7.5
977
-      * @access public
978
-      *
979
-      * @param int $lesson_id
980
-      * @param int $question_id
981
-      * @param int $user_id
982
-      *
983
-      * @return string $feedback or bool if false
984
-      */
985
-     public function get_user_question_feedback( $lesson_id, $question_id, $user_id = 0 ){
970
+	 /**
971
+	  * Get the user's answer feedback for a specific question.
972
+	  *
973
+	  * This function gives you a single answer note/feedback string
974
+	  * for the user on the given question.
975
+	  *
976
+	  * @since 1.7.5
977
+	  * @access public
978
+	  *
979
+	  * @param int $lesson_id
980
+	  * @param int $question_id
981
+	  * @param int $user_id
982
+	  *
983
+	  * @return string $feedback or bool if false
984
+	  */
985
+	 public function get_user_question_feedback( $lesson_id, $question_id, $user_id = 0 ){
986 986
 
987
-         $feedback = false;
987
+		 $feedback = false;
988 988
 
989
-         // parameter validation
990
-         if( empty( $lesson_id ) || empty( $question_id )
991
-             || ! ( intval( $lesson_id  ) > 0 )
992
-             || ! ( intval( $question_id  ) > 0 )
993
-             || 'lesson' != get_post_type( $lesson_id )
994
-             || 'question' != get_post_type( $question_id )) {
989
+		 // parameter validation
990
+		 if( empty( $lesson_id ) || empty( $question_id )
991
+			 || ! ( intval( $lesson_id  ) > 0 )
992
+			 || ! ( intval( $question_id  ) > 0 )
993
+			 || 'lesson' != get_post_type( $lesson_id )
994
+			 || 'question' != get_post_type( $question_id )) {
995 995
 
996
-             return false;
997
-         }
996
+			 return false;
997
+		 }
998 998
 
999
-         // get all the feedback for the user on the given lesson
1000
-         $all_feedback = $this->get_user_answers_feedback( $lesson_id, $user_id );
999
+		 // get all the feedback for the user on the given lesson
1000
+		 $all_feedback = $this->get_user_answers_feedback( $lesson_id, $user_id );
1001 1001
 
1002
-         if( !$all_feedback || empty( $all_feedback )
1003
-             || ! is_array( $all_feedback ) || ! isset( $all_feedback[ $question_id ] ) ){
1002
+		 if( !$all_feedback || empty( $all_feedback )
1003
+			 || ! is_array( $all_feedback ) || ! isset( $all_feedback[ $question_id ] ) ){
1004 1004
 
1005
-             //fallback to data pre 1.7.4
1005
+			 //fallback to data pre 1.7.4
1006 1006
 
1007
-             // setup the sensei data query
1008
-             $args = array(
1009
-                 'post_id' => $question_id,
1010
-                 'user_id' => $user_id,
1011
-                 'type'    => 'sensei_user_answer'
1012
-             );
1013
-             $question_activity = Sensei_Utils::sensei_check_for_activity( $args , true );
1007
+			 // setup the sensei data query
1008
+			 $args = array(
1009
+				 'post_id' => $question_id,
1010
+				 'user_id' => $user_id,
1011
+				 'type'    => 'sensei_user_answer'
1012
+			 );
1013
+			 $question_activity = Sensei_Utils::sensei_check_for_activity( $args , true );
1014 1014
 
1015
-             // set the default to false and return that if no old data is available.
1016
-             if( isset( $question_activity->comment_ID ) ){
1017
-                 $feedback = base64_decode( get_comment_meta(  $question_activity->comment_ID , 'answer_note', true ) );
1018
-             }
1015
+			 // set the default to false and return that if no old data is available.
1016
+			 if( isset( $question_activity->comment_ID ) ){
1017
+				 $feedback = base64_decode( get_comment_meta(  $question_activity->comment_ID , 'answer_note', true ) );
1018
+			 }
1019 1019
 
1020
-             // finally use the default question feedback
1021
-             if( empty( $feedback ) ){
1022
-                 $feedback = get_post_meta( $question_id, '_answer_feedback', true );
1023
-             }
1020
+			 // finally use the default question feedback
1021
+			 if( empty( $feedback ) ){
1022
+				 $feedback = get_post_meta( $question_id, '_answer_feedback', true );
1023
+			 }
1024 1024
 
1025
-             return $feedback;
1025
+			 return $feedback;
1026 1026
 
1027
-         }
1027
+		 }
1028 1028
 
1029
-         return $all_feedback[ $question_id ];
1029
+		 return $all_feedback[ $question_id ];
1030 1030
 
1031
-     } // end get_user_question_feedback
1031
+	 } // end get_user_question_feedback
1032 1032
 
1033
-     /**
1034
-      * Check if a quiz has no questions, and redirect back to lesson.
1035
-      *
1036
-      * Though a quiz is created for each lesson, it should not be visible
1037
-      * unless it has questions.
1038
-      *
1039
-      * @since 1.9.0
1040
-      * @access public
1041
-      * @param none
1042
-      * @return void
1043
-      */
1033
+	 /**
1034
+	  * Check if a quiz has no questions, and redirect back to lesson.
1035
+	  *
1036
+	  * Though a quiz is created for each lesson, it should not be visible
1037
+	  * unless it has questions.
1038
+	  *
1039
+	  * @since 1.9.0
1040
+	  * @access public
1041
+	  * @param none
1042
+	  * @return void
1043
+	  */
1044 1044
 
1045
-     public function quiz_has_no_questions() {
1045
+	 public function quiz_has_no_questions() {
1046 1046
 
1047 1047
 
1048
-         if( ! is_singular( 'quiz' ) )  {
1049
-             return;
1050
-         }
1048
+		 if( ! is_singular( 'quiz' ) )  {
1049
+			 return;
1050
+		 }
1051 1051
 
1052
-         global $post;
1052
+		 global $post;
1053 1053
 
1054
-         $lesson_id = $this->get_lesson_id($post->ID);
1054
+		 $lesson_id = $this->get_lesson_id($post->ID);
1055 1055
 
1056
-         $has_questions = get_post_meta( $lesson_id, '_quiz_has_questions', true );
1056
+		 $has_questions = get_post_meta( $lesson_id, '_quiz_has_questions', true );
1057 1057
 
1058
-         $lesson = get_post($lesson_id);
1058
+		 $lesson = get_post($lesson_id);
1059 1059
 
1060
-         if ( is_singular('quiz') && ! $has_questions && $_SERVER['REQUEST_URI'] != "/lesson/$lesson->post_name" ) {
1060
+		 if ( is_singular('quiz') && ! $has_questions && $_SERVER['REQUEST_URI'] != "/lesson/$lesson->post_name" ) {
1061 1061
 
1062
-             wp_redirect(get_permalink($lesson->ID), 301);
1063
-             exit;
1062
+			 wp_redirect(get_permalink($lesson->ID), 301);
1063
+			 exit;
1064 1064
 
1065
-         }
1065
+		 }
1066 1066
 
1067
-     } // end quiz_has_no_questions
1067
+	 } // end quiz_has_no_questions
1068 1068
 
1069 1069
 /**
1070
-  * Deprecate the sensei_single_main_content on the single-quiz template.
1071
-  *
1072
-  * @deprecated since 1.9.0
1073
-  */
1070
+ * Deprecate the sensei_single_main_content on the single-quiz template.
1071
+ *
1072
+ * @deprecated since 1.9.0
1073
+ */
1074 1074
  public static function deprecate_quiz_sensei_single_main_content_hook(){
1075 1075
 
1076
-     sensei_do_deprecated_action('sensei_single_main_content', '1.9.0', 'sensei_single_quiz_content_inside_before or sensei_single_quiz_content_inside_after');
1076
+	 sensei_do_deprecated_action('sensei_single_main_content', '1.9.0', 'sensei_single_quiz_content_inside_before or sensei_single_quiz_content_inside_after');
1077 1077
 
1078 1078
  }
1079
-    /*
1079
+	/*
1080 1080
      * Deprecate the sensei_quiz_single_title on the single-quiz template.
1081 1081
      *
1082 1082
      * @deprecated since 1.9.0
1083 1083
      */
1084
-     public static function deprecate_quiz_sensei_quiz_single_title_hook(){
1084
+	 public static function deprecate_quiz_sensei_quiz_single_title_hook(){
1085 1085
 
1086
-         sensei_do_deprecated_action('sensei_quiz_single_title', '1.9.0', 'sensei_single_quiz_content_inside_before ');
1086
+		 sensei_do_deprecated_action('sensei_quiz_single_title', '1.9.0', 'sensei_single_quiz_content_inside_before ');
1087 1087
 
1088
-     }
1088
+	 }
1089 1089
 
1090
-     /**
1091
-      * Filter the single title and add the Quiz to it.
1092
-      *
1093
-      * @param string $title
1094
-      * @param int $id title post id
1095
-      * @return string $quiz_title
1096
-      */
1097
-     public static function single_quiz_title( $title, $post_id ){
1090
+	 /**
1091
+	  * Filter the single title and add the Quiz to it.
1092
+	  *
1093
+	  * @param string $title
1094
+	  * @param int $id title post id
1095
+	  * @return string $quiz_title
1096
+	  */
1097
+	 public static function single_quiz_title( $title, $post_id ){
1098 1098
 
1099
-         if( 'quiz' == get_post_type( $post_id ) ){
1099
+		 if( 'quiz' == get_post_type( $post_id ) ){
1100 1100
 
1101
-             $title_with_no_quizzes = $title;
1101
+			 $title_with_no_quizzes = $title;
1102 1102
 
1103
-             // if the title has quiz, remove it: legacy titles have the word quiz stored.
1104
-             if( 1 < substr_count( strtoupper( $title_with_no_quizzes ), 'QUIZ' ) ){
1103
+			 // if the title has quiz, remove it: legacy titles have the word quiz stored.
1104
+			 if( 1 < substr_count( strtoupper( $title_with_no_quizzes ), 'QUIZ' ) ){
1105 1105
 
1106
-                 // remove all possible appearances of quiz
1107
-                 $title_with_no_quizzes = str_replace( 'quiz', '', $title  );
1108
-                 $title_with_no_quizzes = str_replace( 'Quiz', '', $title_with_no_quizzes  );
1109
-                 $title_with_no_quizzes = str_replace( 'QUIZ', '', $title_with_no_quizzes  );
1106
+				 // remove all possible appearances of quiz
1107
+				 $title_with_no_quizzes = str_replace( 'quiz', '', $title  );
1108
+				 $title_with_no_quizzes = str_replace( 'Quiz', '', $title_with_no_quizzes  );
1109
+				 $title_with_no_quizzes = str_replace( 'QUIZ', '', $title_with_no_quizzes  );
1110 1110
 
1111
-             }
1111
+			 }
1112 1112
 
1113
-             $title = $title_with_no_quizzes .  ' ' . __( 'Quiz', 'woothemes-sensei' );
1114
-         }
1113
+			 $title = $title_with_no_quizzes .  ' ' . __( 'Quiz', 'woothemes-sensei' );
1114
+		 }
1115 1115
 
1116
-         /**
1117
-          * hook document in class-woothemes-sensei-message.php
1118
-          */
1119
-         return apply_filters( 'sensei_single_title', $title, get_post_type( ) );
1116
+		 /**
1117
+		  * hook document in class-woothemes-sensei-message.php
1118
+		  */
1119
+		 return apply_filters( 'sensei_single_title', $title, get_post_type( ) );
1120 1120
 
1121
-     }
1121
+	 }
1122 1122
 
1123
-     /**
1124
-      * Initialize the quiz question loop on the single quiz template
1125
-      *
1126
-      * The function will create a global quiz loop varialbe.
1127
-      *
1128
-      * @since 1.9.0
1129
-      *
1130
-      */
1131
-     public static function start_quiz_questions_loop(){
1123
+	 /**
1124
+	  * Initialize the quiz question loop on the single quiz template
1125
+	  *
1126
+	  * The function will create a global quiz loop varialbe.
1127
+	  *
1128
+	  * @since 1.9.0
1129
+	  *
1130
+	  */
1131
+	 public static function start_quiz_questions_loop(){
1132 1132
 
1133
-         global $sensei_question_loop;
1133
+		 global $sensei_question_loop;
1134 1134
 
1135
-         //intialize the questions loop object
1136
-         $sensei_question_loop['current'] = -1;
1137
-         $sensei_question_loop['total']   =  0;
1138
-         $sensei_question_loop['questions'] = array();
1135
+		 //intialize the questions loop object
1136
+		 $sensei_question_loop['current'] = -1;
1137
+		 $sensei_question_loop['total']   =  0;
1138
+		 $sensei_question_loop['questions'] = array();
1139 1139
 
1140 1140
 
1141
-         $questions = Sensei()->lesson->lesson_quiz_questions( get_the_ID() );
1141
+		 $questions = Sensei()->lesson->lesson_quiz_questions( get_the_ID() );
1142 1142
 
1143
-         if( count( $questions  ) > 0  ){
1143
+		 if( count( $questions  ) > 0  ){
1144 1144
 
1145
-             $sensei_question_loop['total']   =  count( $questions );
1146
-             $sensei_question_loop['questions'] = $questions;
1147
-             $sensei_question_loop['quiz_id'] = get_the_ID();
1145
+			 $sensei_question_loop['total']   =  count( $questions );
1146
+			 $sensei_question_loop['questions'] = $questions;
1147
+			 $sensei_question_loop['quiz_id'] = get_the_ID();
1148 1148
 
1149
-         }
1149
+		 }
1150 1150
 
1151
-     }// static function
1151
+	 }// static function
1152 1152
 
1153
-     /**
1154
-      * Initialize the quiz question loop on the single quiz template
1155
-      *
1156
-      * The function will create a global quiz loop varialbe.
1157
-      *
1158
-      * @since 1.9.0
1159
-      *
1160
-      */
1161
-     public static function stop_quiz_questions_loop(){
1153
+	 /**
1154
+	  * Initialize the quiz question loop on the single quiz template
1155
+	  *
1156
+	  * The function will create a global quiz loop varialbe.
1157
+	  *
1158
+	  * @since 1.9.0
1159
+	  *
1160
+	  */
1161
+	 public static function stop_quiz_questions_loop(){
1162 1162
 
1163
-         $sensei_question_loop['total']   =  0;
1164
-         $sensei_question_loop['questions'] = array();
1165
-         $sensei_question_loop['quiz_id'] = '';
1163
+		 $sensei_question_loop['total']   =  0;
1164
+		 $sensei_question_loop['questions'] = array();
1165
+		 $sensei_question_loop['quiz_id'] = '';
1166 1166
 
1167
-     }
1167
+	 }
1168 1168
 
1169
-     /**
1170
-      * Output the title for the single quiz page
1171
-      *
1172
-      * @since 1.9.0
1173
-      */
1174
-     public static function the_title(){
1175
-         ?>
1169
+	 /**
1170
+	  * Output the title for the single quiz page
1171
+	  *
1172
+	  * @since 1.9.0
1173
+	  */
1174
+	 public static function the_title(){
1175
+		 ?>
1176 1176
          <header>
1177 1177
 
1178 1178
              <h1>
1179 1179
 
1180 1180
                  <?php
1181
-                 /**
1182
-                  * Filter documented in class-sensei-messages.php the_title
1183
-                  */
1184
-                 echo apply_filters( 'sensei_single_title', get_the_title( get_post() ), get_post_type( get_the_ID() ) );
1185
-                 ?>
1181
+				 /**
1182
+				  * Filter documented in class-sensei-messages.php the_title
1183
+				  */
1184
+				 echo apply_filters( 'sensei_single_title', get_the_title( get_post() ), get_post_type( get_the_ID() ) );
1185
+				 ?>
1186 1186
 
1187 1187
              </h1>
1188 1188
 
1189 1189
          </header>
1190 1190
 
1191 1191
          <?php
1192
-     }//the_title
1192
+	 }//the_title
1193 1193
 
1194
-     /**
1195
-      * Output the sensei quiz status message.
1196
-      *
1197
-      * @param $quiz_id
1198
-      */
1199
-    public static function  the_user_status_message( $quiz_id ){
1194
+	 /**
1195
+	  * Output the sensei quiz status message.
1196
+	  *
1197
+	  * @param $quiz_id
1198
+	  */
1199
+	public static function  the_user_status_message( $quiz_id ){
1200 1200
 
1201
-        $lesson_id =  Sensei()->quiz->get_lesson_id( $quiz_id );
1202
-        $status = Sensei_Utils::sensei_user_quiz_status_message( $lesson_id , get_current_user_id() );
1203
-        echo '<div class="sensei-message ' . $status['box_class'] . '">' . $status['message'] . '</div>';
1201
+		$lesson_id =  Sensei()->quiz->get_lesson_id( $quiz_id );
1202
+		$status = Sensei_Utils::sensei_user_quiz_status_message( $lesson_id , get_current_user_id() );
1203
+		echo '<div class="sensei-message ' . $status['box_class'] . '">' . $status['message'] . '</div>';
1204 1204
 
1205
-    }
1205
+	}
1206 1206
 
1207
-     /**
1208
-      * This functions runs the old sensei_quiz_action_buttons action
1209
-      * for backwards compatiblity sake.
1210
-      *
1211
-      * @since 1.9.0
1212
-      * @deprecated
1213
-      */
1214
-     public static function deprecate_sensei_quiz_action_buttons_hook(){
1207
+	 /**
1208
+	  * This functions runs the old sensei_quiz_action_buttons action
1209
+	  * for backwards compatiblity sake.
1210
+	  *
1211
+	  * @since 1.9.0
1212
+	  * @deprecated
1213
+	  */
1214
+	 public static function deprecate_sensei_quiz_action_buttons_hook(){
1215 1215
 
1216
-         sensei_do_deprecated_action( 'sensei_quiz_action_buttons', '1.9.0', 'sensei_single_quiz_questions_after');
1216
+		 sensei_do_deprecated_action( 'sensei_quiz_action_buttons', '1.9.0', 'sensei_single_quiz_questions_after');
1217 1217
 
1218
-     }
1218
+	 }
1219 1219
 
1220
-     /**
1221
-      * The quiz action buttons needed to ouput quiz
1222
-      * action such as reset complete and save.
1223
-      *
1224
-      * @since 1.3.0
1225
-      */
1226
-     public static function action_buttons() {
1220
+	 /**
1221
+	  * The quiz action buttons needed to ouput quiz
1222
+	  * action such as reset complete and save.
1223
+	  *
1224
+	  * @since 1.3.0
1225
+	  */
1226
+	 public static function action_buttons() {
1227 1227
 
1228
-         global $post, $current_user;
1228
+		 global $post, $current_user;
1229 1229
 
1230
-         $lesson_id = (int) get_post_meta( $post->ID, '_quiz_lesson', true );
1231
-         $lesson_course_id = (int) get_post_meta( $lesson_id, '_lesson_course', true );
1232
-         $lesson_prerequisite = (int) get_post_meta( $lesson_id, '_lesson_prerequisite', true );
1233
-         $show_actions = true;
1234
-         $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $current_user->ID );
1230
+		 $lesson_id = (int) get_post_meta( $post->ID, '_quiz_lesson', true );
1231
+		 $lesson_course_id = (int) get_post_meta( $lesson_id, '_lesson_course', true );
1232
+		 $lesson_prerequisite = (int) get_post_meta( $lesson_id, '_lesson_prerequisite', true );
1233
+		 $show_actions = true;
1234
+		 $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $current_user->ID );
1235 1235
 
1236
-         //setup quiz grade
1237
-         $user_quiz_grade = '';
1238
-         if( ! empty( $user_lesson_status  ) ){
1239
-             $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
1240
-         }
1236
+		 //setup quiz grade
1237
+		 $user_quiz_grade = '';
1238
+		 if( ! empty( $user_lesson_status  ) ){
1239
+			 $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
1240
+		 }
1241 1241
 
1242 1242
 
1243
-         if( intval( $lesson_prerequisite ) > 0 ) {
1243
+		 if( intval( $lesson_prerequisite ) > 0 ) {
1244 1244
 
1245
-             // If the user hasn't completed the prereq then hide the current actions
1246
-             $show_actions = Sensei_Utils::user_completed_lesson( $lesson_prerequisite, $current_user->ID );
1245
+			 // If the user hasn't completed the prereq then hide the current actions
1246
+			 $show_actions = Sensei_Utils::user_completed_lesson( $lesson_prerequisite, $current_user->ID );
1247 1247
 
1248
-         }
1249
-         if ( $show_actions && is_user_logged_in() && Sensei_Utils::user_started_course( $lesson_course_id, $current_user->ID ) ) {
1248
+		 }
1249
+		 if ( $show_actions && is_user_logged_in() && Sensei_Utils::user_started_course( $lesson_course_id, $current_user->ID ) ) {
1250 1250
 
1251
-             // Get Reset Settings
1252
-             $reset_quiz_allowed = get_post_meta( $post->ID, '_enable_quiz_reset', true ); ?>
1251
+			 // Get Reset Settings
1252
+			 $reset_quiz_allowed = get_post_meta( $post->ID, '_enable_quiz_reset', true ); ?>
1253 1253
 
1254 1254
              <!-- Action Nonce's -->
1255 1255
              <input type="hidden" name="woothemes_sensei_complete_quiz_nonce" id="woothemes_sensei_complete_quiz_nonce"
@@ -1276,55 +1276,55 @@  discard block
 block discarded – undo
1276 1276
 
1277 1277
          <?php }
1278 1278
 
1279
-     } // End sensei_quiz_action_buttons()
1280
-
1281
-     /**
1282
-      * Fetch the quiz grade
1283
-      *
1284
-      * @since 1.9.0
1285
-      *
1286
-      * @param int $lesson_id
1287
-      * @param int $user_id
1288
-      *
1289
-      * @return double $user_quiz_grade
1290
-      */
1291
-     public static function get_user_quiz_grade( $lesson_id, $user_id ){
1292
-
1293
-         // get the quiz grade
1294
-         $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
1295
-         $user_quiz_grade = 0;
1296
-         if( isset( $user_lesson_status->comment_ID ) ) {
1297
-             $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
1298
-         }
1299
-
1300
-         return (double) $user_quiz_grade;
1301
-
1302
-     }
1303
-
1304
-     /**
1305
-      * Check the quiz reset property for a given lesson's quiz.
1306
-      *
1307
-      * The data is stored on the quiz but going forward the quiz post
1308
-      * type will be retired, hence the lesson_id is a require parameter.
1309
-      *
1310
-      * @since 1.9.0
1311
-      *
1312
-      * @param int $lesson_id
1313
-      * @return bool
1314
-      */
1315
-     public static function is_reset_allowed( $lesson_id ){
1316
-
1317
-         $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
1318
-
1319
-         $reset_allowed = get_post_meta( $quiz_id, '_enable_quiz_reset', true );
1320
-         //backwards compatibility
1321
-         if( 'on' == $reset_allowed ) {
1322
-             $reset_allowed = 1;
1323
-         }
1324
-
1325
-         return (bool) $reset_allowed;
1326
-
1327
-     }
1279
+	 } // End sensei_quiz_action_buttons()
1280
+
1281
+	 /**
1282
+	  * Fetch the quiz grade
1283
+	  *
1284
+	  * @since 1.9.0
1285
+	  *
1286
+	  * @param int $lesson_id
1287
+	  * @param int $user_id
1288
+	  *
1289
+	  * @return double $user_quiz_grade
1290
+	  */
1291
+	 public static function get_user_quiz_grade( $lesson_id, $user_id ){
1292
+
1293
+		 // get the quiz grade
1294
+		 $user_lesson_status = Sensei_Utils::user_lesson_status( $lesson_id, $user_id );
1295
+		 $user_quiz_grade = 0;
1296
+		 if( isset( $user_lesson_status->comment_ID ) ) {
1297
+			 $user_quiz_grade = get_comment_meta( $user_lesson_status->comment_ID, 'grade', true );
1298
+		 }
1299
+
1300
+		 return (double) $user_quiz_grade;
1301
+
1302
+	 }
1303
+
1304
+	 /**
1305
+	  * Check the quiz reset property for a given lesson's quiz.
1306
+	  *
1307
+	  * The data is stored on the quiz but going forward the quiz post
1308
+	  * type will be retired, hence the lesson_id is a require parameter.
1309
+	  *
1310
+	  * @since 1.9.0
1311
+	  *
1312
+	  * @param int $lesson_id
1313
+	  * @return bool
1314
+	  */
1315
+	 public static function is_reset_allowed( $lesson_id ){
1316
+
1317
+		 $quiz_id = Sensei()->lesson->lesson_quizzes( $lesson_id );
1318
+
1319
+		 $reset_allowed = get_post_meta( $quiz_id, '_enable_quiz_reset', true );
1320
+		 //backwards compatibility
1321
+		 if( 'on' == $reset_allowed ) {
1322
+			 $reset_allowed = 1;
1323
+		 }
1324
+
1325
+		 return (bool) $reset_allowed;
1326
+
1327
+	 }
1328 1328
 
1329 1329
  } // End Class WooThemes_Sensei_Quiz
1330 1330
 
Please login to merge, or discard this patch.