Passed
Push — master ( 6be735...4371ac )
by Brian
05:32 queued 01:30
created
widgets/checkout.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -46,18 +46,18 @@
 block discarded – undo
46 46
         parent::__construct( $options );
47 47
     }
48 48
 
49
-	/**
50
-	 * The Super block output function.
51
-	 *
52
-	 * @param array $args
53
-	 * @param array $widget_args
54
-	 * @param string $content
55
-	 *
56
-	 * @return mixed|string|bool
57
-	 */
49
+    /**
50
+     * The Super block output function.
51
+     *
52
+     * @param array $args
53
+     * @param array $widget_args
54
+     * @param string $content
55
+     *
56
+     * @return mixed|string|bool
57
+     */
58 58
     public function output( $args = array(), $widget_args = array(), $content = '' ) {
59 59
 
60
-	    return wpinv_checkout_form();
60
+        return wpinv_checkout_form();
61 61
 
62 62
     }
63 63
 
Please login to merge, or discard this patch.
widgets/subscriptions.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -46,25 +46,25 @@
 block discarded – undo
46 46
         parent::__construct( $options );
47 47
     }
48 48
 
49
-	/**
50
-	 * The Super block output function.
51
-	 *
52
-	 * @param array $args
53
-	 * @param array $widget_args
54
-	 * @param string $content
55
-	 *
56
-	 * @return mixed|string|bool
57
-	 */
49
+    /**
50
+     * The Super block output function.
51
+     *
52
+     * @param array $args
53
+     * @param array $widget_args
54
+     * @param string $content
55
+     *
56
+     * @return mixed|string|bool
57
+     */
58 58
     public function output( $args = array(), $widget_args = array(), $content = '' ) {
59 59
 
60
-	    ob_start();
60
+        ob_start();
61 61
 
62
-	    do_action( 'wpinv_before_user_subscriptions' );
63
-	    wpinv_get_template_part( 'wpinv-subscriptions-history' );
64
-	    do_action( 'wpinv_after_user_subscriptions' );
62
+        do_action( 'wpinv_before_user_subscriptions' );
63
+        wpinv_get_template_part( 'wpinv-subscriptions-history' );
64
+        do_action( 'wpinv_after_user_subscriptions' );
65 65
 
66
-	    $output = ob_get_clean();
67
-	    return trim($output);
66
+        $output = ob_get_clean();
67
+        return trim($output);
68 68
 
69 69
     }
70 70
 
Please login to merge, or discard this patch.
widgets/invoice-receipt.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -44,25 +44,25 @@
 block discarded – undo
44 44
         parent::__construct( $options );
45 45
     }
46 46
 
47
-	/**
48
-	 * The Super block output function.
49
-	 *
50
-	 * @param array $args
51
-	 * @param array $widget_args
52
-	 * @param string $content
53
-	 *
54
-	 * @return mixed|string|bool
55
-	 */
47
+    /**
48
+     * The Super block output function.
49
+     *
50
+     * @param array $args
51
+     * @param array $widget_args
52
+     * @param string $content
53
+     *
54
+     * @return mixed|string|bool
55
+     */
56 56
     public function output( $args = array(), $widget_args = array(), $content = '' ) {
57 57
 
58
-	    ob_start();
58
+        ob_start();
59 59
 
60
-	    do_action( 'wpinv_success_content_before' );
61
-	    echo wpinv_payment_receipt( $args );
62
-	    do_action( 'wpinv_success_content_after' );
60
+        do_action( 'wpinv_success_content_before' );
61
+        echo wpinv_payment_receipt( $args );
62
+        do_action( 'wpinv_success_content_after' );
63 63
 
64
-	    $output = ob_get_clean();
65
-	    return trim($output);
64
+        $output = ob_get_clean();
65
+        return trim($output);
66 66
 
67 67
     }
68 68
 
Please login to merge, or discard this patch.
includes/class-wpinv.php 1 patch
Indentation   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -139,12 +139,12 @@  discard block
 block discarded – undo
139 139
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php' );
140 140
         require_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php' );
141 141
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php' );
142
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' );
143
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' );
144
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' );
145
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' );
146
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' );
147
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/buy-item.php' );
142
+        require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' );
143
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' );
144
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' );
145
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' );
146
+        require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' );
147
+        require_once( WPINV_PLUGIN_DIR . 'widgets/buy-item.php' );
148 148
 
149 149
         if ( !class_exists( 'WPInv_EUVat' ) ) {
150 150
             require_once( WPINV_PLUGIN_DIR . 'includes/libraries/wpinv-euvat/class-wpinv-euvat.php' );
@@ -420,16 +420,16 @@  discard block
 block discarded – undo
420 420
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php' );
421 421
     }
422 422
 
423
-	/**
424
-	 * Register widgets
425
-	 *
426
-	 */
427
-	public function register_widgets() {
428
-		register_widget( "WPInv_Checkout_Widget" );
429
-		register_widget( "WPInv_History_Widget" );
430
-		register_widget( "WPInv_Receipt_Widget" );
431
-		register_widget( "WPInv_Subscriptions_Widget" );
432
-		register_widget( "WPInv_Buy_Item_Widget" );
433
-		register_widget( "WPInv_Messages_Widget" );
434
-	}
423
+    /**
424
+     * Register widgets
425
+     *
426
+     */
427
+    public function register_widgets() {
428
+        register_widget( "WPInv_Checkout_Widget" );
429
+        register_widget( "WPInv_History_Widget" );
430
+        register_widget( "WPInv_Receipt_Widget" );
431
+        register_widget( "WPInv_Subscriptions_Widget" );
432
+        register_widget( "WPInv_Buy_Item_Widget" );
433
+        register_widget( "WPInv_Messages_Widget" );
434
+    }
435 435
 }
436 436
\ No newline at end of file
Please login to merge, or discard this patch.
includes/admin/register-settings.php 1 patch
Indentation   +328 added lines, -328 removed lines patch added patch discarded remove patch
@@ -984,326 +984,326 @@  discard block
 block discarded – undo
984 984
 }
985 985
 
986 986
 function wpinv_get_pages( $with_slug = false, $default_label = NULL ) {
987
-	$pages_options = array();
987
+    $pages_options = array();
988 988
 
989
-	if( $default_label !== NULL && $default_label !== false ) {
990
-		$pages_options = array( '' => $default_label ); // Blank option
991
-	}
989
+    if( $default_label !== NULL && $default_label !== false ) {
990
+        $pages_options = array( '' => $default_label ); // Blank option
991
+    }
992 992
 
993
-	$pages = get_pages();
994
-	if ( $pages ) {
995
-		foreach ( $pages as $page ) {
996
-			$title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title;
993
+    $pages = get_pages();
994
+    if ( $pages ) {
995
+        foreach ( $pages as $page ) {
996
+            $title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title;
997 997
             $pages_options[ $page->ID ] = $title;
998
-		}
999
-	}
998
+        }
999
+    }
1000 1000
 
1001
-	return $pages_options;
1001
+    return $pages_options;
1002 1002
 }
1003 1003
 
1004 1004
 function wpinv_header_callback( $args ) {
1005
-	if ( !empty( $args['desc'] ) ) {
1005
+    if ( !empty( $args['desc'] ) ) {
1006 1006
         echo $args['desc'];
1007 1007
     }
1008 1008
 }
1009 1009
 
1010 1010
 function wpinv_hidden_callback( $args ) {
1011
-	global $wpinv_options;
1012
-
1013
-	if ( isset( $args['set_value'] ) ) {
1014
-		$value = $args['set_value'];
1015
-	} elseif ( isset( $wpinv_options[ $args['id'] ] ) ) {
1016
-		$value = $wpinv_options[ $args['id'] ];
1017
-	} else {
1018
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1019
-	}
1020
-
1021
-	if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1022
-		$args['readonly'] = true;
1023
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1024
-		$name  = '';
1025
-	} else {
1026
-		$name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
1027
-	}
1028
-
1029
-	$html = '<input type="hidden" id="wpinv_settings[' . wpinv_sanitize_key( $args['id'] ) . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '" />';
1011
+    global $wpinv_options;
1012
+
1013
+    if ( isset( $args['set_value'] ) ) {
1014
+        $value = $args['set_value'];
1015
+    } elseif ( isset( $wpinv_options[ $args['id'] ] ) ) {
1016
+        $value = $wpinv_options[ $args['id'] ];
1017
+    } else {
1018
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1019
+    }
1020
+
1021
+    if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1022
+        $args['readonly'] = true;
1023
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1024
+        $name  = '';
1025
+    } else {
1026
+        $name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
1027
+    }
1028
+
1029
+    $html = '<input type="hidden" id="wpinv_settings[' . wpinv_sanitize_key( $args['id'] ) . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '" />';
1030 1030
     
1031
-	echo $html;
1031
+    echo $html;
1032 1032
 }
1033 1033
 
1034 1034
 function wpinv_checkbox_callback( $args ) {
1035
-	global $wpinv_options;
1035
+    global $wpinv_options;
1036 1036
     
1037 1037
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1038 1038
 
1039
-	if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1040
-		$name = '';
1041
-	} else {
1042
-		$name = 'name="wpinv_settings[' . $sanitize_id . ']"';
1043
-	}
1039
+    if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1040
+        $name = '';
1041
+    } else {
1042
+        $name = 'name="wpinv_settings[' . $sanitize_id . ']"';
1043
+    }
1044 1044
 
1045
-	$checked = isset( $wpinv_options[ $args['id'] ] ) ? checked( 1, $wpinv_options[ $args['id'] ], false ) : '';
1046
-	$html = '<input type="checkbox" id="wpinv_settings[' . $sanitize_id . ']"' . $name . ' value="1" ' . $checked . '/>';
1047
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1045
+    $checked = isset( $wpinv_options[ $args['id'] ] ) ? checked( 1, $wpinv_options[ $args['id'] ], false ) : '';
1046
+    $html = '<input type="checkbox" id="wpinv_settings[' . $sanitize_id . ']"' . $name . ' value="1" ' . $checked . '/>';
1047
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1048 1048
 
1049
-	echo $html;
1049
+    echo $html;
1050 1050
 }
1051 1051
 
1052 1052
 function wpinv_multicheck_callback( $args ) {
1053
-	global $wpinv_options;
1053
+    global $wpinv_options;
1054 1054
 
1055
-	$sanitize_id = wpinv_sanitize_key( $args['id'] );
1056
-	$class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
1055
+    $sanitize_id = wpinv_sanitize_key( $args['id'] );
1056
+    $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
1057 1057
 
1058
-	if ( ! empty( $args['options'] ) ) {
1059
-		echo '<div class="wpi-mcheck-rows wpi-mcheck-' . $sanitize_id . $class . '">';
1058
+    if ( ! empty( $args['options'] ) ) {
1059
+        echo '<div class="wpi-mcheck-rows wpi-mcheck-' . $sanitize_id . $class . '">';
1060 1060
         foreach( $args['options'] as $key => $option ):
1061
-			$sanitize_key = wpinv_sanitize_key( $key );
1062
-			if ( isset( $wpinv_options[$args['id']][$sanitize_key] ) ) { 
1063
-				$enabled = $sanitize_key;
1064
-			} else { 
1065
-				$enabled = NULL; 
1066
-			}
1067
-			echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/>&nbsp;';
1068
-			echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . wp_kses_post( $option ) . '</label></div>';
1069
-		endforeach;
1070
-		echo '</div>';
1071
-		echo '<p class="description">' . $args['desc'] . '</p>';
1072
-	}
1061
+            $sanitize_key = wpinv_sanitize_key( $key );
1062
+            if ( isset( $wpinv_options[$args['id']][$sanitize_key] ) ) { 
1063
+                $enabled = $sanitize_key;
1064
+            } else { 
1065
+                $enabled = NULL; 
1066
+            }
1067
+            echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/>&nbsp;';
1068
+            echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . wp_kses_post( $option ) . '</label></div>';
1069
+        endforeach;
1070
+        echo '</div>';
1071
+        echo '<p class="description">' . $args['desc'] . '</p>';
1072
+    }
1073 1073
 }
1074 1074
 
1075 1075
 function wpinv_payment_icons_callback( $args ) {
1076
-	global $wpinv_options;
1076
+    global $wpinv_options;
1077 1077
     
1078 1078
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1079 1079
 
1080
-	if ( ! empty( $args['options'] ) ) {
1081
-		foreach( $args['options'] as $key => $option ) {
1080
+    if ( ! empty( $args['options'] ) ) {
1081
+        foreach( $args['options'] as $key => $option ) {
1082 1082
             $sanitize_key = wpinv_sanitize_key( $key );
1083 1083
             
1084
-			if( isset( $wpinv_options[$args['id']][$key] ) ) {
1085
-				$enabled = $option;
1086
-			} else {
1087
-				$enabled = NULL;
1088
-			}
1089
-
1090
-			echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">';
1091
-
1092
-				echo '<input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/>&nbsp;';
1093
-
1094
-				if ( wpinv_string_is_image_url( $key ) ) {
1095
-					echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
1096
-				} else {
1097
-					$card = strtolower( str_replace( ' ', '', $option ) );
1098
-
1099
-					if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) {
1100
-						$image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' );
1101
-					} else {
1102
-						$image       = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false );
1103
-						$content_dir = WP_CONTENT_DIR;
1104
-
1105
-						if ( function_exists( 'wp_normalize_path' ) ) {
1106
-							// Replaces backslashes with forward slashes for Windows systems
1107
-							$image = wp_normalize_path( $image );
1108
-							$content_dir = wp_normalize_path( $content_dir );
1109
-						}
1110
-
1111
-						$image = str_replace( $content_dir, content_url(), $image );
1112
-					}
1113
-
1114
-					echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
1115
-				}
1116
-			echo $option . '</label>';
1117
-		}
1118
-		echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>';
1119
-	}
1084
+            if( isset( $wpinv_options[$args['id']][$key] ) ) {
1085
+                $enabled = $option;
1086
+            } else {
1087
+                $enabled = NULL;
1088
+            }
1089
+
1090
+            echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">';
1091
+
1092
+                echo '<input name="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/>&nbsp;';
1093
+
1094
+                if ( wpinv_string_is_image_url( $key ) ) {
1095
+                    echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
1096
+                } else {
1097
+                    $card = strtolower( str_replace( ' ', '', $option ) );
1098
+
1099
+                    if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) {
1100
+                        $image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' );
1101
+                    } else {
1102
+                        $image       = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false );
1103
+                        $content_dir = WP_CONTENT_DIR;
1104
+
1105
+                        if ( function_exists( 'wp_normalize_path' ) ) {
1106
+                            // Replaces backslashes with forward slashes for Windows systems
1107
+                            $image = wp_normalize_path( $image );
1108
+                            $content_dir = wp_normalize_path( $content_dir );
1109
+                        }
1110
+
1111
+                        $image = str_replace( $content_dir, content_url(), $image );
1112
+                    }
1113
+
1114
+                    echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
1115
+                }
1116
+            echo $option . '</label>';
1117
+        }
1118
+        echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>';
1119
+    }
1120 1120
 }
1121 1121
 
1122 1122
 function wpinv_radio_callback( $args ) {
1123
-	global $wpinv_options;
1123
+    global $wpinv_options;
1124 1124
     
1125 1125
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1126 1126
     
1127 1127
     foreach ( $args['options'] as $key => $option ) :
1128
-		$sanitize_key = wpinv_sanitize_key( $key );
1128
+        $sanitize_key = wpinv_sanitize_key( $key );
1129 1129
         
1130 1130
         $checked = false;
1131 1131
 
1132
-		if ( isset( $wpinv_options[ $args['id'] ] ) && $wpinv_options[ $args['id'] ] == $key )
1133
-			$checked = true;
1134
-		elseif( isset( $args['std'] ) && $args['std'] == $key && ! isset( $wpinv_options[ $args['id'] ] ) )
1135
-			$checked = true;
1132
+        if ( isset( $wpinv_options[ $args['id'] ] ) && $wpinv_options[ $args['id'] ] == $key )
1133
+            $checked = true;
1134
+        elseif( isset( $args['std'] ) && $args['std'] == $key && ! isset( $wpinv_options[ $args['id'] ] ) )
1135
+            $checked = true;
1136 1136
 
1137
-		echo '<input name="wpinv_settings[' . $sanitize_id . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="radio" value="' . $sanitize_key . '" ' . checked(true, $checked, false) . '/>&nbsp;';
1138
-		echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . esc_html( $option ) . '</label><br/>';
1139
-	endforeach;
1137
+        echo '<input name="wpinv_settings[' . $sanitize_id . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="radio" value="' . $sanitize_key . '" ' . checked(true, $checked, false) . '/>&nbsp;';
1138
+        echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . esc_html( $option ) . '</label><br/>';
1139
+    endforeach;
1140 1140
 
1141
-	echo '<p class="description">' . wp_kses_post( $args['desc'] ) . '</p>';
1141
+    echo '<p class="description">' . wp_kses_post( $args['desc'] ) . '</p>';
1142 1142
 }
1143 1143
 
1144 1144
 function wpinv_gateways_callback( $args ) {
1145
-	global $wpinv_options;
1145
+    global $wpinv_options;
1146 1146
     
1147 1147
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1148 1148
 
1149
-	foreach ( $args['options'] as $key => $option ) :
1150
-		$sanitize_key = wpinv_sanitize_key( $key );
1149
+    foreach ( $args['options'] as $key => $option ) :
1150
+        $sanitize_key = wpinv_sanitize_key( $key );
1151 1151
         
1152 1152
         if ( isset( $wpinv_options['gateways'][ $key ] ) )
1153
-			$enabled = '1';
1154
-		else
1155
-			$enabled = null;
1153
+            $enabled = '1';
1154
+        else
1155
+            $enabled = null;
1156 1156
 
1157
-		echo '<input name="wpinv_settings[' . esc_attr( $args['id'] ) . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="1" ' . checked('1', $enabled, false) . '/>&nbsp;';
1158
-		echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . esc_html( $option['admin_label'] ) . '</label><br/>';
1159
-	endforeach;
1157
+        echo '<input name="wpinv_settings[' . esc_attr( $args['id'] ) . '][' . $sanitize_key . ']" id="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']" type="checkbox" value="1" ' . checked('1', $enabled, false) . '/>&nbsp;';
1158
+        echo '<label for="wpinv_settings[' . $sanitize_id . '][' . $sanitize_key . ']">' . esc_html( $option['admin_label'] ) . '</label><br/>';
1159
+    endforeach;
1160 1160
 }
1161 1161
 
1162 1162
 function wpinv_gateway_select_callback($args) {
1163
-	global $wpinv_options;
1163
+    global $wpinv_options;
1164 1164
     
1165 1165
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1166 1166
     $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
1167 1167
 
1168
-	echo '<select name="wpinv_settings[' . $sanitize_id . ']"" id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'" >';
1168
+    echo '<select name="wpinv_settings[' . $sanitize_id . ']"" id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'" >';
1169 1169
 
1170
-	foreach ( $args['options'] as $key => $option ) :
1171
-		if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) {
1170
+    foreach ( $args['options'] as $key => $option ) :
1171
+        if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) {
1172 1172
             $selected = selected( $key, $args['selected'], false );
1173 1173
         } else {
1174 1174
             $selected = isset( $wpinv_options[ $args['id'] ] ) ? selected( $key, $wpinv_options[$args['id']], false ) : '';
1175 1175
         }
1176
-		echo '<option value="' . wpinv_sanitize_key( $key ) . '"' . $selected . '>' . esc_html( $option['admin_label'] ) . '</option>';
1177
-	endforeach;
1176
+        echo '<option value="' . wpinv_sanitize_key( $key ) . '"' . $selected . '>' . esc_html( $option['admin_label'] ) . '</option>';
1177
+    endforeach;
1178 1178
 
1179
-	echo '</select>';
1180
-	echo '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1179
+    echo '</select>';
1180
+    echo '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1181 1181
 }
1182 1182
 
1183 1183
 function wpinv_text_callback( $args ) {
1184
-	global $wpinv_options;
1184
+    global $wpinv_options;
1185 1185
     
1186 1186
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1187 1187
 
1188
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1189
-		$value = $wpinv_options[ $args['id'] ];
1190
-	} else {
1191
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1192
-	}
1193
-
1194
-	if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1195
-		$args['readonly'] = true;
1196
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1197
-		$name  = '';
1198
-	} else {
1199
-		$name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
1200
-	}
1201
-	$class = !empty( $args['class'] ) ? sanitize_html_class( $args['class'] ) : '';
1202
-
1203
-	$readonly = $args['readonly'] === true ? ' readonly="readonly"' : '';
1204
-	$size     = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1205
-	$html     = '<input type="text" class="' . sanitize_html_class( $size ) . '-text ' . $class . '" id="wpinv_settings[' . $sanitize_id . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '"' . $readonly . '/>';
1206
-	$html    .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1207
-
1208
-	echo $html;
1188
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1189
+        $value = $wpinv_options[ $args['id'] ];
1190
+    } else {
1191
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1192
+    }
1193
+
1194
+    if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1195
+        $args['readonly'] = true;
1196
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1197
+        $name  = '';
1198
+    } else {
1199
+        $name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
1200
+    }
1201
+    $class = !empty( $args['class'] ) ? sanitize_html_class( $args['class'] ) : '';
1202
+
1203
+    $readonly = $args['readonly'] === true ? ' readonly="readonly"' : '';
1204
+    $size     = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1205
+    $html     = '<input type="text" class="' . sanitize_html_class( $size ) . '-text ' . $class . '" id="wpinv_settings[' . $sanitize_id . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '"' . $readonly . '/>';
1206
+    $html    .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1207
+
1208
+    echo $html;
1209 1209
 }
1210 1210
 
1211 1211
 function wpinv_number_callback( $args ) {
1212
-	global $wpinv_options;
1212
+    global $wpinv_options;
1213 1213
     
1214 1214
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1215 1215
 
1216
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1217
-		$value = $wpinv_options[ $args['id'] ];
1218
-	} else {
1219
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1220
-	}
1221
-
1222
-	if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1223
-		$args['readonly'] = true;
1224
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1225
-		$name  = '';
1226
-	} else {
1227
-		$name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
1228
-	}
1229
-
1230
-	$max  = isset( $args['max'] ) ? $args['max'] : 999999;
1231
-	$min  = isset( $args['min'] ) ? $args['min'] : 0;
1232
-	$step = isset( $args['step'] ) ? $args['step'] : 1;
1233
-	$class = !empty( $args['class'] ) ? sanitize_html_class( $args['class'] ) : '';
1234
-
1235
-	$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1236
-	$html = '<input type="number" step="' . esc_attr( $step ) . '" max="' . esc_attr( $max ) . '" min="' . esc_attr( $min ) . '" class="' . sanitize_html_class( $size ) . '-text ' . $class . '" id="wpinv_settings[' . $sanitize_id . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '"/>';
1237
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1238
-
1239
-	echo $html;
1216
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1217
+        $value = $wpinv_options[ $args['id'] ];
1218
+    } else {
1219
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1220
+    }
1221
+
1222
+    if ( isset( $args['faux'] ) && true === $args['faux'] ) {
1223
+        $args['readonly'] = true;
1224
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1225
+        $name  = '';
1226
+    } else {
1227
+        $name = 'name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"';
1228
+    }
1229
+
1230
+    $max  = isset( $args['max'] ) ? $args['max'] : 999999;
1231
+    $min  = isset( $args['min'] ) ? $args['min'] : 0;
1232
+    $step = isset( $args['step'] ) ? $args['step'] : 1;
1233
+    $class = !empty( $args['class'] ) ? sanitize_html_class( $args['class'] ) : '';
1234
+
1235
+    $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1236
+    $html = '<input type="number" step="' . esc_attr( $step ) . '" max="' . esc_attr( $max ) . '" min="' . esc_attr( $min ) . '" class="' . sanitize_html_class( $size ) . '-text ' . $class . '" id="wpinv_settings[' . $sanitize_id . ']" ' . $name . ' value="' . esc_attr( stripslashes( $value ) ) . '"/>';
1237
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1238
+
1239
+    echo $html;
1240 1240
 }
1241 1241
 
1242 1242
 function wpinv_textarea_callback( $args ) {
1243
-	global $wpinv_options;
1243
+    global $wpinv_options;
1244 1244
     
1245 1245
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1246 1246
 
1247
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1248
-		$value = $wpinv_options[ $args['id'] ];
1249
-	} else {
1250
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1251
-	}
1247
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1248
+        $value = $wpinv_options[ $args['id'] ];
1249
+    } else {
1250
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1251
+    }
1252 1252
     
1253 1253
     $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1254 1254
     $class = ( isset( $args['class'] ) && ! is_null( $args['class'] ) ) ? $args['class'] : 'large-text';
1255 1255
 
1256
-	$html = '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
1257
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1256
+    $html = '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
1257
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1258 1258
 
1259
-	echo $html;
1259
+    echo $html;
1260 1260
 }
1261 1261
 
1262 1262
 function wpinv_password_callback( $args ) {
1263
-	global $wpinv_options;
1263
+    global $wpinv_options;
1264 1264
     
1265 1265
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1266 1266
 
1267
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1268
-		$value = $wpinv_options[ $args['id'] ];
1269
-	} else {
1270
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1271
-	}
1267
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1268
+        $value = $wpinv_options[ $args['id'] ];
1269
+    } else {
1270
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1271
+    }
1272 1272
 
1273
-	$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1274
-	$html = '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>';
1275
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1273
+    $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1274
+    $html = '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>';
1275
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1276 1276
 
1277
-	echo $html;
1277
+    echo $html;
1278 1278
 }
1279 1279
 
1280 1280
 function wpinv_missing_callback($args) {
1281
-	printf(
1282
-		__( 'The callback function used for the %s setting is missing.', 'invoicing' ),
1283
-		'<strong>' . $args['id'] . '</strong>'
1284
-	);
1281
+    printf(
1282
+        __( 'The callback function used for the %s setting is missing.', 'invoicing' ),
1283
+        '<strong>' . $args['id'] . '</strong>'
1284
+    );
1285 1285
 }
1286 1286
 
1287 1287
 function wpinv_select_callback($args) {
1288
-	global $wpinv_options;
1288
+    global $wpinv_options;
1289 1289
     
1290 1290
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1291 1291
 
1292
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1293
-		$value = $wpinv_options[ $args['id'] ];
1294
-	} else {
1295
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1296
-	}
1292
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1293
+        $value = $wpinv_options[ $args['id'] ];
1294
+    } else {
1295
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1296
+    }
1297 1297
     
1298 1298
     if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) {
1299 1299
         $value = $args['selected'];
1300 1300
     }
1301 1301
 
1302
-	if ( isset( $args['placeholder'] ) ) {
1303
-		$placeholder = $args['placeholder'];
1304
-	} else {
1305
-		$placeholder = '';
1306
-	}
1302
+    if ( isset( $args['placeholder'] ) ) {
1303
+        $placeholder = $args['placeholder'];
1304
+    } else {
1305
+        $placeholder = '';
1306
+    }
1307 1307
     
1308 1308
     if( !empty( $args['onchange'] ) ) {
1309 1309
         $onchange = ' onchange="' . esc_attr( $args['onchange'] ) . '"';
@@ -1313,142 +1313,142 @@  discard block
 block discarded – undo
1313 1313
 
1314 1314
     $class = !empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
1315 1315
 
1316
-	$html = '<select id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'"  name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" data-placeholder="' . esc_html( $placeholder ) . '"' . $onchange . ' />';
1316
+    $html = '<select id="wpinv_settings[' . $sanitize_id . ']" class="'.$class.'"  name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" data-placeholder="' . esc_html( $placeholder ) . '"' . $onchange . ' />';
1317 1317
 
1318
-	foreach ( $args['options'] as $option => $name ) {
1319
-		$selected = selected( $option, $value, false );
1320
-		$html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
1321
-	}
1318
+    foreach ( $args['options'] as $option => $name ) {
1319
+        $selected = selected( $option, $value, false );
1320
+        $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
1321
+    }
1322 1322
 
1323
-	$html .= '</select>';
1324
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1323
+    $html .= '</select>';
1324
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1325 1325
 
1326
-	echo $html;
1326
+    echo $html;
1327 1327
 }
1328 1328
 
1329 1329
 function wpinv_color_select_callback( $args ) {
1330
-	global $wpinv_options;
1330
+    global $wpinv_options;
1331 1331
     
1332 1332
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1333 1333
 
1334
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1335
-		$value = $wpinv_options[ $args['id'] ];
1336
-	} else {
1337
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1338
-	}
1334
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1335
+        $value = $wpinv_options[ $args['id'] ];
1336
+    } else {
1337
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1338
+    }
1339 1339
 
1340
-	$html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>';
1340
+    $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>';
1341 1341
 
1342
-	foreach ( $args['options'] as $option => $color ) {
1343
-		$selected = selected( $option, $value, false );
1344
-		$html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $color['label'] ) . '</option>';
1345
-	}
1342
+    foreach ( $args['options'] as $option => $color ) {
1343
+        $selected = selected( $option, $value, false );
1344
+        $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $color['label'] ) . '</option>';
1345
+    }
1346 1346
 
1347
-	$html .= '</select>';
1348
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1347
+    $html .= '</select>';
1348
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1349 1349
 
1350
-	echo $html;
1350
+    echo $html;
1351 1351
 }
1352 1352
 
1353 1353
 function wpinv_rich_editor_callback( $args ) {
1354
-	global $wpinv_options, $wp_version;
1354
+    global $wpinv_options, $wp_version;
1355 1355
     
1356 1356
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1357 1357
 
1358
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1359
-		$value = $wpinv_options[ $args['id'] ];
1358
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1359
+        $value = $wpinv_options[ $args['id'] ];
1360 1360
 
1361
-		if( empty( $args['allow_blank'] ) && empty( $value ) ) {
1362
-			$value = isset( $args['std'] ) ? $args['std'] : '';
1363
-		}
1364
-	} else {
1365
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1366
-	}
1361
+        if( empty( $args['allow_blank'] ) && empty( $value ) ) {
1362
+            $value = isset( $args['std'] ) ? $args['std'] : '';
1363
+        }
1364
+    } else {
1365
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1366
+    }
1367 1367
 
1368
-	$rows = isset( $args['size'] ) ? $args['size'] : 20;
1368
+    $rows = isset( $args['size'] ) ? $args['size'] : 20;
1369 1369
 
1370
-	if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) {
1371
-		ob_start();
1372
-		wp_editor( stripslashes( $value ), 'wpinv_settings_' . esc_attr( $args['id'] ), array( 'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']', 'textarea_rows' => absint( $rows ), 'media_buttons' => false ) );
1373
-		$html = ob_get_clean();
1374
-	} else {
1375
-		$html = '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
1376
-	}
1370
+    if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) {
1371
+        ob_start();
1372
+        wp_editor( stripslashes( $value ), 'wpinv_settings_' . esc_attr( $args['id'] ), array( 'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']', 'textarea_rows' => absint( $rows ), 'media_buttons' => false ) );
1373
+        $html = ob_get_clean();
1374
+    } else {
1375
+        $html = '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
1376
+    }
1377 1377
 
1378
-	$html .= '<br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1378
+    $html .= '<br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1379 1379
 
1380
-	echo $html;
1380
+    echo $html;
1381 1381
 }
1382 1382
 
1383 1383
 function wpinv_upload_callback( $args ) {
1384
-	global $wpinv_options;
1384
+    global $wpinv_options;
1385 1385
     
1386 1386
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1387 1387
 
1388
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1389
-		$value = $wpinv_options[$args['id']];
1390
-	} else {
1391
-		$value = isset($args['std']) ? $args['std'] : '';
1392
-	}
1388
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1389
+        $value = $wpinv_options[$args['id']];
1390
+    } else {
1391
+        $value = isset($args['std']) ? $args['std'] : '';
1392
+    }
1393 1393
 
1394
-	$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1395
-	$html = '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
1396
-	$html .= '<span>&nbsp;<input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>';
1397
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1394
+    $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
1395
+    $html = '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
1396
+    $html .= '<span>&nbsp;<input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>';
1397
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
1398 1398
 
1399
-	echo $html;
1399
+    echo $html;
1400 1400
 }
1401 1401
 
1402 1402
 function wpinv_color_callback( $args ) {
1403
-	global $wpinv_options;
1403
+    global $wpinv_options;
1404 1404
     
1405 1405
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1406 1406
 
1407
-	if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1408
-		$value = $wpinv_options[ $args['id'] ];
1409
-	} else {
1410
-		$value = isset( $args['std'] ) ? $args['std'] : '';
1411
-	}
1407
+    if ( isset( $wpinv_options[ $args['id'] ] ) ) {
1408
+        $value = $wpinv_options[ $args['id'] ];
1409
+    } else {
1410
+        $value = isset( $args['std'] ) ? $args['std'] : '';
1411
+    }
1412 1412
 
1413
-	$default = isset( $args['std'] ) ? $args['std'] : '';
1413
+    $default = isset( $args['std'] ) ? $args['std'] : '';
1414 1414
 
1415
-	$html = '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $default ) . '" />';
1416
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1415
+    $html = '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $default ) . '" />';
1416
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1417 1417
 
1418
-	echo $html;
1418
+    echo $html;
1419 1419
 }
1420 1420
 
1421 1421
 function wpinv_country_states_callback($args) {
1422
-	global $wpinv_options;
1422
+    global $wpinv_options;
1423 1423
     
1424 1424
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
1425 1425
 
1426
-	if ( isset( $args['placeholder'] ) ) {
1427
-		$placeholder = $args['placeholder'];
1428
-	} else {
1429
-		$placeholder = '';
1430
-	}
1426
+    if ( isset( $args['placeholder'] ) ) {
1427
+        $placeholder = $args['placeholder'];
1428
+    } else {
1429
+        $placeholder = '';
1430
+    }
1431 1431
 
1432
-	$states = wpinv_get_country_states();
1432
+    $states = wpinv_get_country_states();
1433 1433
 
1434
-	$class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"';
1435
-	$html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>';
1434
+    $class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"';
1435
+    $html = '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>';
1436 1436
 
1437
-	foreach ( $states as $option => $name ) {
1438
-		$selected = isset( $wpinv_options[ $args['id'] ] ) ? selected( $option, $wpinv_options[$args['id']], false ) : '';
1439
-		$html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
1440
-	}
1437
+    foreach ( $states as $option => $name ) {
1438
+        $selected = isset( $wpinv_options[ $args['id'] ] ) ? selected( $option, $wpinv_options[$args['id']], false ) : '';
1439
+        $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
1440
+    }
1441 1441
 
1442
-	$html .= '</select>';
1443
-	$html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1442
+    $html .= '</select>';
1443
+    $html .= '<label for="wpinv_settings[' . $sanitize_id . ']"> '  . wp_kses_post( $args['desc'] ) . '</label>';
1444 1444
 
1445
-	echo $html;
1445
+    echo $html;
1446 1446
 }
1447 1447
 
1448 1448
 function wpinv_tax_rates_callback($args) {
1449
-	global $wpinv_options;
1450
-	$rates = wpinv_get_tax_rates();
1451
-	ob_start(); ?>
1449
+    global $wpinv_options;
1450
+    $rates = wpinv_get_tax_rates();
1451
+    ob_start(); ?>
1452 1452
     </td><tr>
1453 1453
     <td colspan="2" class="wpinv_tax_tdbox">
1454 1454
 	<p><?php echo $args['desc']; ?></p>
@@ -1472,40 +1472,40 @@  discard block
 block discarded – undo
1472 1472
 			<tr>
1473 1473
 				<td class="wpinv_tax_country">
1474 1474
 					<?php
1475
-					echo wpinv_html_select( array(
1476
-						'options'          => wpinv_get_country_list( true ),
1477
-						'name'             => 'tax_rates[' . $sanitized_key . '][country]',
1475
+                    echo wpinv_html_select( array(
1476
+                        'options'          => wpinv_get_country_list( true ),
1477
+                        'name'             => 'tax_rates[' . $sanitized_key . '][country]',
1478 1478
                         'id'               => 'tax_rates[' . $sanitized_key . '][country]',
1479
-						'selected'         => $rate['country'],
1480
-						'show_option_all'  => false,
1481
-						'show_option_none' => false,
1482
-						'class'            => 'wpinv-tax-country wpi_select2',
1483
-						'placeholder'      => __( 'Choose a country', 'invoicing' )
1484
-					) );
1485
-					?>
1479
+                        'selected'         => $rate['country'],
1480
+                        'show_option_all'  => false,
1481
+                        'show_option_none' => false,
1482
+                        'class'            => 'wpinv-tax-country wpi_select2',
1483
+                        'placeholder'      => __( 'Choose a country', 'invoicing' )
1484
+                    ) );
1485
+                    ?>
1486 1486
 				</td>
1487 1487
 				<td class="wpinv_tax_state">
1488 1488
 					<?php
1489
-					$states = wpinv_get_country_states( $rate['country'] );
1490
-					if( !empty( $states ) ) {
1491
-						echo wpinv_html_select( array(
1492
-							'options'          => array_merge( array( '' => '' ), $states ),
1493
-							'name'             => 'tax_rates[' . $sanitized_key . '][state]',
1489
+                    $states = wpinv_get_country_states( $rate['country'] );
1490
+                    if( !empty( $states ) ) {
1491
+                        echo wpinv_html_select( array(
1492
+                            'options'          => array_merge( array( '' => '' ), $states ),
1493
+                            'name'             => 'tax_rates[' . $sanitized_key . '][state]',
1494 1494
                             'id'               => 'tax_rates[' . $sanitized_key . '][state]',
1495
-							'selected'         => $rate['state'],
1496
-							'show_option_all'  => false,
1497
-							'show_option_none' => false,
1495
+                            'selected'         => $rate['state'],
1496
+                            'show_option_all'  => false,
1497
+                            'show_option_none' => false,
1498 1498
                             'class'            => 'wpi_select2',
1499
-							'placeholder'      => __( 'Choose a state', 'invoicing' )
1500
-						) );
1501
-					} else {
1502
-						echo wpinv_html_text( array(
1503
-							'name'  => 'tax_rates[' . $sanitized_key . '][state]', $rate['state'],
1504
-							'value' => ! empty( $rate['state'] ) ? $rate['state'] : '',
1499
+                            'placeholder'      => __( 'Choose a state', 'invoicing' )
1500
+                        ) );
1501
+                    } else {
1502
+                        echo wpinv_html_text( array(
1503
+                            'name'  => 'tax_rates[' . $sanitized_key . '][state]', $rate['state'],
1504
+                            'value' => ! empty( $rate['state'] ) ? $rate['state'] : '',
1505 1505
                             'id'    => 'tax_rates[' . $sanitized_key . '][state]',
1506
-						) );
1507
-					}
1508
-					?>
1506
+                        ) );
1507
+                    }
1508
+                    ?>
1509 1509
 				</td>
1510 1510
 				<td class="wpinv_tax_global">
1511 1511
 					<input type="checkbox" name="tax_rates[<?php echo $sanitized_key; ?>][global]" id="tax_rates[<?php echo $sanitized_key; ?>][global]" value="1"<?php checked( true, ! empty( $rate['global'] ) ); ?>/>
@@ -1520,19 +1520,19 @@  discard block
 block discarded – undo
1520 1520
 			<tr>
1521 1521
 				<td class="wpinv_tax_country">
1522 1522
 					<?php
1523
-					echo wpinv_html_select( array(
1524
-						'options'          => wpinv_get_country_list( true ),
1525
-						'name'             => 'tax_rates[0][country]',
1526
-						'show_option_all'  => false,
1527
-						'show_option_none' => false,
1528
-						'class'            => 'wpinv-tax-country wpi_select2',
1529
-						'placeholder'      => __( 'Choose a country', 'invoicing' )
1530
-					) ); ?>
1523
+                    echo wpinv_html_select( array(
1524
+                        'options'          => wpinv_get_country_list( true ),
1525
+                        'name'             => 'tax_rates[0][country]',
1526
+                        'show_option_all'  => false,
1527
+                        'show_option_none' => false,
1528
+                        'class'            => 'wpinv-tax-country wpi_select2',
1529
+                        'placeholder'      => __( 'Choose a country', 'invoicing' )
1530
+                    ) ); ?>
1531 1531
 				</td>
1532 1532
 				<td class="wpinv_tax_state">
1533 1533
 					<?php echo wpinv_html_text( array(
1534
-						'name' => 'tax_rates[0][state]'
1535
-					) ); ?>
1534
+                        'name' => 'tax_rates[0][state]'
1535
+                    ) ); ?>
1536 1536
 				</td>
1537 1537
 				<td class="wpinv_tax_global">
1538 1538
 					<input type="checkbox" name="tax_rates[0][global]" id="tax_rates[0][global]" value="1"/>
@@ -1547,7 +1547,7 @@  discard block
 block discarded – undo
1547 1547
         <tfoot><tr><td colspan="5"></td><td class="wpinv_tax_action"><span class="button-secondary" id="wpinv_add_tax_rate"><?php _e( 'Add Tax Rate', 'invoicing' ); ?></span></td></tr></tfoot>
1548 1548
 	</table>
1549 1549
 	<?php
1550
-	echo ob_get_clean();
1550
+    echo ob_get_clean();
1551 1551
 }
1552 1552
 
1553 1553
 function wpinv_tools_callback($args) {
@@ -1575,15 +1575,15 @@  discard block
 block discarded – undo
1575 1575
 }
1576 1576
 
1577 1577
 function wpinv_descriptive_text_callback( $args ) {
1578
-	echo wp_kses_post( $args['desc'] );
1578
+    echo wp_kses_post( $args['desc'] );
1579 1579
 }
1580 1580
 
1581 1581
 function wpinv_hook_callback( $args ) {
1582
-	do_action( 'wpinv_' . $args['id'], $args );
1582
+    do_action( 'wpinv_' . $args['id'], $args );
1583 1583
 }
1584 1584
 
1585 1585
 function wpinv_set_settings_cap() {
1586
-	return wpinv_get_capability();
1586
+    return wpinv_get_capability();
1587 1587
 }
1588 1588
 add_filter( 'option_page_capability_wpinv_settings', 'wpinv_set_settings_cap' );
1589 1589
 
Please login to merge, or discard this patch.
includes/admin/wpinv-admin-functions.php 1 patch
Indentation   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -101,9 +101,9 @@  discard block
 block discarded – undo
101 101
         case 'status' :
102 102
             $value   = $wpi_invoice->get_status( true ) . ( $wpi_invoice->is_recurring() && $wpi_invoice->is_parent() ? ' <span class="wpi-suffix">' . __( '(r)', 'invoicing' ) . '</span>' : '' );
103 103
             $is_viewed = wpinv_is_invoice_viewed( $wpi_invoice->ID );
104
-	        $gateway_title = wpinv_get_gateway_admin_label( $wpi_invoice->get_gateway() );
105
-	        $offline_gateways = apply_filters('wpinv_offline_payments', array('bank_transfer', 'cheque', 'cod'));
106
-	        $is_offline_payment = in_array($wpi_invoice->get_gateway(), $offline_gateways) ? true : false;
104
+            $gateway_title = wpinv_get_gateway_admin_label( $wpi_invoice->get_gateway() );
105
+            $offline_gateways = apply_filters('wpinv_offline_payments', array('bank_transfer', 'cheque', 'cod'));
106
+            $is_offline_payment = in_array($wpi_invoice->get_gateway(), $offline_gateways) ? true : false;
107 107
 
108 108
             if ( 1 == $is_viewed ) {
109 109
                 $value .= '&nbsp;&nbsp;<i class="fa fa-eye" title="'.__( 'Viewed by Customer', 'invoicing' ).'"></i>';
@@ -174,69 +174,69 @@  discard block
 block discarded – undo
174 174
 }
175 175
 
176 176
 function wpinv_admin_messages() {
177
-	global $wpinv_options, $pagenow, $post;
177
+    global $wpinv_options, $pagenow, $post;
178 178
 
179
-	if ( isset( $_GET['wpinv-message'] ) && 'discount_added' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
180
-		 add_settings_error( 'wpinv-notices', 'wpinv-discount-added', __( 'Discount code added.', 'invoicing' ), 'updated' );
181
-	}
179
+    if ( isset( $_GET['wpinv-message'] ) && 'discount_added' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
180
+            add_settings_error( 'wpinv-notices', 'wpinv-discount-added', __( 'Discount code added.', 'invoicing' ), 'updated' );
181
+    }
182 182
 
183
-	if ( isset( $_GET['wpinv-message'] ) && 'discount_add_failed' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
184
-		add_settings_error( 'wpinv-notices', 'wpinv-discount-add-fail', __( 'There was a problem adding your discount code, please try again.', 'invoicing' ), 'error' );
185
-	}
183
+    if ( isset( $_GET['wpinv-message'] ) && 'discount_add_failed' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
184
+        add_settings_error( 'wpinv-notices', 'wpinv-discount-add-fail', __( 'There was a problem adding your discount code, please try again.', 'invoicing' ), 'error' );
185
+    }
186 186
 
187
-	if ( isset( $_GET['wpinv-message'] ) && 'discount_exists' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
188
-		add_settings_error( 'wpinv-notices', 'wpinv-discount-exists', __( 'A discount with that code already exists, please use a different code.', 'invoicing' ), 'error' );
189
-	}
187
+    if ( isset( $_GET['wpinv-message'] ) && 'discount_exists' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
188
+        add_settings_error( 'wpinv-notices', 'wpinv-discount-exists', __( 'A discount with that code already exists, please use a different code.', 'invoicing' ), 'error' );
189
+    }
190 190
 
191
-	if ( isset( $_GET['wpinv-message'] ) && 'discount_updated' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
192
-		 add_settings_error( 'wpinv-notices', 'wpinv-discount-updated', __( 'Discount code updated.', 'invoicing' ), 'updated' );
193
-	}
191
+    if ( isset( $_GET['wpinv-message'] ) && 'discount_updated' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
192
+            add_settings_error( 'wpinv-notices', 'wpinv-discount-updated', __( 'Discount code updated.', 'invoicing' ), 'updated' );
193
+    }
194 194
 
195
-	if ( isset( $_GET['wpinv-message'] ) && 'discount_update_failed' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
196
-		add_settings_error( 'wpinv-notices', 'wpinv-discount-updated-fail', __( 'There was a problem updating your discount code, please try again.', 'invoicing' ), 'error' );
197
-	}
195
+    if ( isset( $_GET['wpinv-message'] ) && 'discount_update_failed' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
196
+        add_settings_error( 'wpinv-notices', 'wpinv-discount-updated-fail', __( 'There was a problem updating your discount code, please try again.', 'invoicing' ), 'error' );
197
+    }
198 198
 
199
-	if ( isset( $_GET['wpinv-message'] ) && 'invoice_deleted' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
200
-		add_settings_error( 'wpinv-notices', 'wpinv-deleted', __( 'The invoice has been deleted.', 'invoicing' ), 'updated' );
201
-	}
199
+    if ( isset( $_GET['wpinv-message'] ) && 'invoice_deleted' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
200
+        add_settings_error( 'wpinv-notices', 'wpinv-deleted', __( 'The invoice has been deleted.', 'invoicing' ), 'updated' );
201
+    }
202 202
 
203
-	if ( isset( $_GET['wpinv-message'] ) && 'email_disabled' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
204
-		add_settings_error( 'wpinv-notices', 'wpinv-sent-fail', __( 'Email notification is disabled. Please check settings.', 'invoicing' ), 'error' );
205
-	}
203
+    if ( isset( $_GET['wpinv-message'] ) && 'email_disabled' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
204
+        add_settings_error( 'wpinv-notices', 'wpinv-sent-fail', __( 'Email notification is disabled. Please check settings.', 'invoicing' ), 'error' );
205
+    }
206 206
 
207
-	if ( isset( $_GET['wpinv-message'] ) && 'email_sent' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
208
-		add_settings_error( 'wpinv-notices', 'wpinv-sent', __( 'The email has been sent to customer.', 'invoicing' ), 'updated' );
207
+    if ( isset( $_GET['wpinv-message'] ) && 'email_sent' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
208
+        add_settings_error( 'wpinv-notices', 'wpinv-sent', __( 'The email has been sent to customer.', 'invoicing' ), 'updated' );
209 209
     }
210 210
     
211 211
     if ( isset( $_GET['wpinv-message'] ) && 'email_fail' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
212
-		add_settings_error( 'wpinv-notices', 'wpinv-sent-fail', __( 'Fail to send email to the customer.', 'invoicing' ), 'error' );
212
+        add_settings_error( 'wpinv-notices', 'wpinv-sent-fail', __( 'Fail to send email to the customer.', 'invoicing' ), 'error' );
213 213
     }
214 214
 
215 215
     if ( isset( $_GET['wpinv-message'] ) && 'invoice-note-deleted' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
216 216
         add_settings_error( 'wpinv-notices', 'wpinv-note-deleted', __( 'The invoice note has been deleted.', 'invoicing' ), 'updated' );
217 217
     }
218 218
 
219
-	if ( isset( $_GET['wpinv-message'] ) && 'settings-imported' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
220
-		add_settings_error( 'wpinv-notices', 'wpinv-settings-imported', __( 'The settings have been imported.', 'invoicing' ), 'updated' );
221
-	}
219
+    if ( isset( $_GET['wpinv-message'] ) && 'settings-imported' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
220
+        add_settings_error( 'wpinv-notices', 'wpinv-settings-imported', __( 'The settings have been imported.', 'invoicing' ), 'updated' );
221
+    }
222 222
 
223
-	if ( isset( $_GET['wpinv-message'] ) && 'note-added' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
224
-		add_settings_error( 'wpinv-notices', 'wpinv-note-added', __( 'The invoice note has been added successfully.', 'invoicing' ), 'updated' );
225
-	}
223
+    if ( isset( $_GET['wpinv-message'] ) && 'note-added' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
224
+        add_settings_error( 'wpinv-notices', 'wpinv-note-added', __( 'The invoice note has been added successfully.', 'invoicing' ), 'updated' );
225
+    }
226 226
 
227
-	if ( isset( $_GET['wpinv-message'] ) && 'invoice-updated' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
228
-		add_settings_error( 'wpinv-notices', 'wpinv-updated', __( 'The invoice has been successfully updated.', 'invoicing' ), 'updated' );
229
-	}
227
+    if ( isset( $_GET['wpinv-message'] ) && 'invoice-updated' == $_GET['wpinv-message'] && wpinv_current_user_can_manage_invoicing() ) {
228
+        add_settings_error( 'wpinv-notices', 'wpinv-updated', __( 'The invoice has been successfully updated.', 'invoicing' ), 'updated' );
229
+    }
230 230
     
231
-	if ( $pagenow == 'post.php' && !empty( $post->post_type ) && $post->post_type == 'wpi_item' && !wpinv_item_is_editable( $post ) ) {
232
-		$message = apply_filters( 'wpinv_item_non_editable_message', __( 'This item in not editable.', 'invoicing' ), $post->ID );
231
+    if ( $pagenow == 'post.php' && !empty( $post->post_type ) && $post->post_type == 'wpi_item' && !wpinv_item_is_editable( $post ) ) {
232
+        $message = apply_filters( 'wpinv_item_non_editable_message', __( 'This item in not editable.', 'invoicing' ), $post->ID );
233 233
 
234
-		if ( !empty( $message ) ) {
235
-			add_settings_error( 'wpinv-notices', 'wpinv-edit-n', $message, 'updated' );
236
-		}
237
-	}
234
+        if ( !empty( $message ) ) {
235
+            add_settings_error( 'wpinv-notices', 'wpinv-edit-n', $message, 'updated' );
236
+        }
237
+    }
238 238
 
239
-	settings_errors( 'wpinv-notices' );
239
+    settings_errors( 'wpinv-notices' );
240 240
 }
241 241
 add_action( 'admin_notices', 'wpinv_admin_messages' );
242 242
 
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
         break;
327 327
         case 'id' :
328 328
            echo $post->ID;
329
-           echo '<div class="hidden" id="wpinv_inline-' . $post->ID . '">
329
+            echo '<div class="hidden" id="wpinv_inline-' . $post->ID . '">
330 330
                     <div class="price">' . wpinv_get_item_price( $post->ID ) . '</div>';
331 331
                     if ( $wpinv_euvat->allow_vat_rules() ) {
332 332
                         echo '<div class="vat_rule">' . $wpinv_euvat->get_item_rule( $post->ID ) . '</div>';
Please login to merge, or discard this patch.
includes/wpinv-user-functions.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -159,11 +159,11 @@
 block discarded – undo
159 159
  */
160 160
 function wpinv_get_capability( $capalibilty = 'manage_invoicing' ) {
161 161
 
162
-	if ( current_user_can( 'manage_options' ) ) {
163
-		return 'manage_options';
164
-	};
162
+    if ( current_user_can( 'manage_options' ) ) {
163
+        return 'manage_options';
164
+    };
165 165
 
166
-	return $capalibilty;
166
+    return $capalibilty;
167 167
 }
168 168
 
169 169
 /**
Please login to merge, or discard this patch.
includes/class-wpinv-api.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -52,14 +52,14 @@
 block discarded – undo
52 52
     }
53 53
 
54 54
 
55
-	/**
56
-	 * Registers routes
57
-	 *
55
+    /**
56
+     * Registers routes
57
+     *
58 58
      * @since 1.0.13
59
-	 */
60
-	public function register_rest_routes() {
59
+     */
60
+    public function register_rest_routes() {
61 61
 
62
-		// Invoices.
62
+        // Invoices.
63 63
         $this->invoices_controller->register_routes();
64 64
         
65 65
         // Items.
Please login to merge, or discard this patch.
includes/api/class-wpinv-rest-invoice-controller.php 1 patch
Indentation   +1114 added lines, -1114 removed lines patch added patch discarded remove patch
@@ -20,31 +20,31 @@  discard block
 block discarded – undo
20 20
 class WPInv_REST_Invoice_Controller extends WP_REST_Posts_Controller {
21 21
 
22 22
     /**
23
-	 * Post type.
24
-	 *
25
-	 * @var string
26
-	 */
27
-	protected $post_type = 'wpi_invoice';
23
+     * Post type.
24
+     *
25
+     * @var string
26
+     */
27
+    protected $post_type = 'wpi_invoice';
28 28
 	
29
-	/**
30
-	 * Cached results of get_item_schema.
31
-	 *
32
-	 * @since 1.0.13
33
-	 * @var array
34
-	 */
35
-	protected $schema;
29
+    /**
30
+     * Cached results of get_item_schema.
31
+     *
32
+     * @since 1.0.13
33
+     * @var array
34
+     */
35
+    protected $schema;
36 36
 
37 37
     /**
38
-	 * Constructor.
39
-	 *
40
-	 * @since 1.0.13
41
-	 *
42
-	 * @param string $namespace Api Namespace
43
-	 */
44
-	public function __construct( $namespace ) {
38
+     * Constructor.
39
+     *
40
+     * @since 1.0.13
41
+     *
42
+     * @param string $namespace Api Namespace
43
+     */
44
+    public function __construct( $namespace ) {
45 45
         
46 46
         // Set api namespace...
47
-		$this->namespace = $namespace;
47
+        $this->namespace = $namespace;
48 48
 
49 49
         // ... and the rest base
50 50
         $this->rest_base = 'invoices';
@@ -52,39 +52,39 @@  discard block
 block discarded – undo
52 52
     }
53 53
     
54 54
     /**
55
-	 * Checks if a given request has access to read invoices.
55
+     * Checks if a given request has access to read invoices.
56 56
      * 
57
-	 *
58
-	 * @since 1.0.13
59
-	 *
60
-	 * @param WP_REST_Request $request Full details about the request.
61
-	 * @return true|WP_Error True if the request has read access, WP_Error object otherwise.
62
-	 */
63
-	public function get_items_permissions_check( $request ) {
57
+     *
58
+     * @since 1.0.13
59
+     *
60
+     * @param WP_REST_Request $request Full details about the request.
61
+     * @return true|WP_Error True if the request has read access, WP_Error object otherwise.
62
+     */
63
+    public function get_items_permissions_check( $request ) {
64 64
 	
65 65
         $post_type = get_post_type_object( $this->post_type );
66 66
 
67
-		if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) {
68
-			return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit invoices.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
69
-		}
67
+        if ( 'edit' === $request['context'] && ! current_user_can( $post_type->cap->edit_posts ) ) {
68
+            return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit invoices.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
69
+        }
70 70
 
71
-		// Read checks will be evaluated on a per invoice basis
71
+        // Read checks will be evaluated on a per invoice basis
72 72
 
73
-		return true;
73
+        return true;
74 74
 
75 75
     }
76 76
     
77 77
     /**
78
-	 * Retrieves a collection of invoices.
79
-	 *
80
-	 * @since 1.0.13
81
-	 *
82
-	 * @param WP_REST_Request $request Full details about the request.
83
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
84
-	 */
85
-	public function get_items( $request ) {
78
+     * Retrieves a collection of invoices.
79
+     *
80
+     * @since 1.0.13
81
+     *
82
+     * @param WP_REST_Request $request Full details about the request.
83
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
84
+     */
85
+    public function get_items( $request ) {
86 86
 		
87
-		// Retrieve the list of registered invoice query parameters.
87
+        // Retrieve the list of registered invoice query parameters.
88 88
         $registered = $this->get_collection_params();
89 89
         
90 90
         $args       = array();
@@ -97,54 +97,54 @@  discard block
 block discarded – undo
97 97
 
98 98
         }
99 99
 
100
-		/**
101
-		 * Filters the wpinv_get_invoices arguments for invoices requests.
102
-		 *
103
-		 *
104
-		 * @since 1.0.13
105
-		 *
106
-		 *
107
-		 * @param array           $args    Key value array of query var to query value.
108
-		 * @param WP_REST_Request $request The request used.
109
-		 */
100
+        /**
101
+         * Filters the wpinv_get_invoices arguments for invoices requests.
102
+         *
103
+         *
104
+         * @since 1.0.13
105
+         *
106
+         *
107
+         * @param array           $args    Key value array of query var to query value.
108
+         * @param WP_REST_Request $request The request used.
109
+         */
110 110
         $args       = apply_filters( "wpinv_rest_get_invoices_arguments", $args, $request, $this );
111 111
 		
112
-		// Special args
113
-		$args[ 'return' ]   = 'objects';
114
-		$args[ 'paginate' ] = true;
112
+        // Special args
113
+        $args[ 'return' ]   = 'objects';
114
+        $args[ 'paginate' ] = true;
115 115
 
116 116
         // Run the query.
117
-		$query = wpinv_get_invoices( $args );
117
+        $query = wpinv_get_invoices( $args );
118 118
 		
119
-		// Prepare the retrieved invoices
120
-		$invoices = array();
121
-		foreach( $query->invoices as $invoice ) {
122
-
123
-			if ( ! $this->check_read_permission( $invoice ) ) {
124
-				continue;
125
-			}
126
-
127
-			$data       = $this->prepare_item_for_response( $invoice, $request );
128
-			$invoices[] = $this->prepare_response_for_collection( $data );
129
-
130
-		}
131
-
132
-		// Prepare the response.
133
-		$response = rest_ensure_response( $invoices );
134
-		$response->header( 'X-WP-Total', (int) $query->total );
135
-		$response->header( 'X-WP-TotalPages', (int) $query->max_num_pages );
136
-
137
-		/**
138
-		 * Filters the responses for invoices requests.
139
-		 *
140
-		 *
141
-		 * @since 1.0.13
142
-		 *
143
-		 *
144
-		 * @param arrWP_REST_Response $response    Response object.
145
-		 * @param WP_REST_Request     $request The request used.
119
+        // Prepare the retrieved invoices
120
+        $invoices = array();
121
+        foreach( $query->invoices as $invoice ) {
122
+
123
+            if ( ! $this->check_read_permission( $invoice ) ) {
124
+                continue;
125
+            }
126
+
127
+            $data       = $this->prepare_item_for_response( $invoice, $request );
128
+            $invoices[] = $this->prepare_response_for_collection( $data );
129
+
130
+        }
131
+
132
+        // Prepare the response.
133
+        $response = rest_ensure_response( $invoices );
134
+        $response->header( 'X-WP-Total', (int) $query->total );
135
+        $response->header( 'X-WP-TotalPages', (int) $query->max_num_pages );
136
+
137
+        /**
138
+         * Filters the responses for invoices requests.
139
+         *
140
+         *
141
+         * @since 1.0.13
142
+         *
143
+         *
144
+         * @param arrWP_REST_Response $response    Response object.
145
+         * @param WP_REST_Request     $request The request used.
146 146
          * @param array               $args Array of args used to retrieve the invoices
147
-		 */
147
+         */
148 148
         $response       = apply_filters( "wpinv_rest_invoices_response", $response, $request, $args );
149 149
 
150 150
         return rest_ensure_response( $response );
@@ -152,25 +152,25 @@  discard block
 block discarded – undo
152 152
     }
153 153
 
154 154
     /**
155
-	 * Get the post, if the ID is valid.
156
-	 *
157
-	 * @since 1.0.13
158
-	 *
159
-	 * @param int $invoice_id Supplied ID.
160
-	 * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise.
161
-	 */
162
-	protected function get_post( $invoice_id ) {
155
+     * Get the post, if the ID is valid.
156
+     *
157
+     * @since 1.0.13
158
+     *
159
+     * @param int $invoice_id Supplied ID.
160
+     * @return WPInv_Invoice|WP_Error Invoice object if ID is valid, WP_Error otherwise.
161
+     */
162
+    protected function get_post( $invoice_id ) {
163 163
 		
164
-		$error     = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid invoice ID.', 'invoicing' ), array( 'status' => 404 ) );
164
+        $error     = new WP_Error( 'rest_invoice_invalid_id', __( 'Invalid invoice ID.', 'invoicing' ), array( 'status' => 404 ) );
165 165
 
166 166
         // Ids start from 1
167 167
         if ( (int) $invoice_id <= 0 ) {
168
-			return $error;
169
-		}
168
+            return $error;
169
+        }
170 170
 
171
-		$invoice = wpinv_get_invoice( (int) $invoice_id );
172
-		if ( empty( $invoice ) ) {
173
-			return $error;
171
+        $invoice = wpinv_get_invoice( (int) $invoice_id );
172
+        if ( empty( $invoice ) ) {
173
+            return $error;
174 174
         }
175 175
 
176 176
         return $invoice;
@@ -178,77 +178,77 @@  discard block
 block discarded – undo
178 178
     }
179 179
 
180 180
     /**
181
-	 * Checks if a given request has access to read an invoice.
182
-	 *
183
-	 * @since 1.0.13
184
-	 *
185
-	 * @param WP_REST_Request $request Full details about the request.
186
-	 * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise.
187
-	 */
188
-	public function get_item_permissions_check( $request ) {
181
+     * Checks if a given request has access to read an invoice.
182
+     *
183
+     * @since 1.0.13
184
+     *
185
+     * @param WP_REST_Request $request Full details about the request.
186
+     * @return bool|WP_Error True if the request has read access for the invoice, WP_Error object otherwise.
187
+     */
188
+    public function get_item_permissions_check( $request ) {
189 189
 
190 190
         // Retrieve the invoice object.
191 191
         $invoice = $this->get_post( $request['id'] );
192 192
         
193 193
         // Ensure it is valid.
194
-		if ( is_wp_error( $invoice ) ) {
195
-			return $invoice;
196
-		}
194
+        if ( is_wp_error( $invoice ) ) {
195
+            return $invoice;
196
+        }
197 197
 
198
-		if ( $invoice ) {
199
-			return $this->check_read_permission( $invoice );
200
-		}
198
+        if ( $invoice ) {
199
+            return $this->check_read_permission( $invoice );
200
+        }
201 201
 
202
-		return true;
202
+        return true;
203 203
     }
204 204
     
205 205
     /**
206
-	 * Checks if an invoice can be read.
207
-	 * 
208
-	 * An invoice can be read by site admins and owners of the invoice
209
-	 *
210
-	 *
211
-	 * @since 1.0.13
212
-	 *
213
-	 * @param WPInv_Invoice $invoice WPInv_Invoice object.
214
-	 * @return bool Whether the post can be read.
215
-	 */
216
-	public function check_read_permission( $invoice ) {
217
-		return wpinv_user_can_view_invoice( $invoice->ID );
206
+     * Checks if an invoice can be read.
207
+     * 
208
+     * An invoice can be read by site admins and owners of the invoice
209
+     *
210
+     *
211
+     * @since 1.0.13
212
+     *
213
+     * @param WPInv_Invoice $invoice WPInv_Invoice object.
214
+     * @return bool Whether the post can be read.
215
+     */
216
+    public function check_read_permission( $invoice ) {
217
+        return wpinv_user_can_view_invoice( $invoice->ID );
218 218
     }
219 219
     
220 220
     /**
221
-	 * Retrieves a single invoice.
222
-	 *
223
-	 * @since 1.0.13
224
-	 *
225
-	 * @param WP_REST_Request $request Full details about the request.
226
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
227
-	 */
228
-	public function get_item( $request ) {
221
+     * Retrieves a single invoice.
222
+     *
223
+     * @since 1.0.13
224
+     *
225
+     * @param WP_REST_Request $request Full details about the request.
226
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
227
+     */
228
+    public function get_item( $request ) {
229 229
 
230 230
         // Fetch the invoice.
231 231
         $invoice = $this->get_post( $request['id'] );
232 232
         
233 233
         // Abort early if it does not exist
234
-		if ( is_wp_error( $invoice ) ) {
235
-			return $invoice;
236
-		}
237
-
238
-		// Prepare the response
239
-		$response = $this->prepare_item_for_response( $invoice, $request );
240
-		$response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) );
241
-
242
-		/**
243
-		 * Filters the responses for single invoice requests.
244
-		 *
245
-		 *
246
-		 * @since 1.0.13
247
-		 * @var WP_HTTP_Response
248
-		 *
249
-		 * @param WP_HTTP_Response $response Response.
250
-		 * @param WP_REST_Request  $request The request used.
251
-		 */
234
+        if ( is_wp_error( $invoice ) ) {
235
+            return $invoice;
236
+        }
237
+
238
+        // Prepare the response
239
+        $response = $this->prepare_item_for_response( $invoice, $request );
240
+        $response->link_header( 'alternate', esc_url( $invoice->get_view_url() ), array( 'type' => 'text/html' ) );
241
+
242
+        /**
243
+         * Filters the responses for single invoice requests.
244
+         *
245
+         *
246
+         * @since 1.0.13
247
+         * @var WP_HTTP_Response
248
+         *
249
+         * @param WP_HTTP_Response $response Response.
250
+         * @param WP_REST_Request  $request The request used.
251
+         */
252 252
         $response       = apply_filters( "wpinv_rest_get_invoice_response", $response, $request );
253 253
 
254 254
         return rest_ensure_response( $response );
@@ -256,23 +256,23 @@  discard block
 block discarded – undo
256 256
     }
257 257
     
258 258
     /**
259
-	 * Checks if a given request has access to create an invoice.
260
-	 *
261
-	 * @since 1.0.13
262
-	 *
263
-	 * @param WP_REST_Request $request Full details about the request.
264
-	 * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
265
-	 */
266
-	public function create_item_permissions_check( $request ) {
259
+     * Checks if a given request has access to create an invoice.
260
+     *
261
+     * @since 1.0.13
262
+     *
263
+     * @param WP_REST_Request $request Full details about the request.
264
+     * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
265
+     */
266
+    public function create_item_permissions_check( $request ) {
267 267
 	
268
-		if ( ! empty( $request['id'] ) ) {
269
-			return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing invoice.', 'invoicing' ), array( 'status' => 400 ) );
270
-		}
268
+        if ( ! empty( $request['id'] ) ) {
269
+            return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing invoice.', 'invoicing' ), array( 'status' => 400 ) );
270
+        }
271 271
 
272
-		$post_type = get_post_type_object( $this->post_type );
272
+        $post_type = get_post_type_object( $this->post_type );
273 273
 
274
-		if ( ! current_user_can( $post_type->cap->create_posts ) ) {
275
-			return new WP_Error( 
274
+        if ( ! current_user_can( $post_type->cap->create_posts ) ) {
275
+            return new WP_Error( 
276 276
                 'rest_cannot_create', 
277 277
                 __( 'Sorry, you are not allowed to create invoices as this user.', 'invoicing' ), 
278 278
                 array( 
@@ -281,88 +281,88 @@  discard block
 block discarded – undo
281 281
             );
282 282
         }
283 283
 
284
-		return true;
284
+        return true;
285 285
     }
286 286
     
287 287
     /**
288
-	 * Creates a single invoice.
289
-	 *
290
-	 * @since 1.0.13
291
-	 *
292
-	 * @param WP_REST_Request $request Full details about the request.
293
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
294
-	 */
295
-	public function create_item( $request ) {
296
-
297
-		if ( ! empty( $request['id'] ) ) {
298
-			return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing invoice.', 'invoicing' ), array( 'status' => 400 ) );
299
-		}
288
+     * Creates a single invoice.
289
+     *
290
+     * @since 1.0.13
291
+     *
292
+     * @param WP_REST_Request $request Full details about the request.
293
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
294
+     */
295
+    public function create_item( $request ) {
296
+
297
+        if ( ! empty( $request['id'] ) ) {
298
+            return new WP_Error( 'rest_invoice_exists', __( 'Cannot create existing invoice.', 'invoicing' ), array( 'status' => 400 ) );
299
+        }
300 300
 
301
-		$request->set_param( 'context', 'edit' );
301
+        $request->set_param( 'context', 'edit' );
302 302
 
303
-		// Prepare the updated data.
304
-		$invoice_data = $this->prepare_item_for_database( $request );
303
+        // Prepare the updated data.
304
+        $invoice_data = $this->prepare_item_for_database( $request );
305 305
 
306
-		if ( is_wp_error( $invoice_data ) ) {
307
-			return $invoice_data;
308
-		}
306
+        if ( is_wp_error( $invoice_data ) ) {
307
+            return $invoice_data;
308
+        }
309 309
 
310
-		// Try creating the invoice
310
+        // Try creating the invoice
311 311
         $invoice = wpinv_insert_invoice( $invoice_data, true );
312 312
 
313
-		if ( is_wp_error( $invoice ) ) {
313
+        if ( is_wp_error( $invoice ) ) {
314 314
             return $invoice;
315
-		}
316
-
317
-		// Prepare the response
318
-		$response = $this->prepare_item_for_response( $invoice, $request );
319
-
320
-		/**
321
-		 * Fires after a single invoice is created or updated via the REST API.
322
-		 *
323
-		 * @since 1.0.13
324
-		 *
325
-		 * @param WPinv_Invoice   $invoice  Inserted or updated invoice object.
326
-		 * @param WP_REST_Request $request  Request object.
327
-		 * @param bool            $creating True when creating a post, false when updating.
328
-		 */
329
-		do_action( "wpinv_rest_insert_invoice", $invoice, $request, true );
330
-
331
-		/**
332
-		 * Filters the responses for creating single invoice requests.
333
-		 *
334
-		 *
335
-		 * @since 1.0.13
336
-		 *
337
-		 *
338
-		 * @param array           $invoice_data Invoice properties.
339
-		 * @param WP_REST_Request $request The request used.
340
-		 */
315
+        }
316
+
317
+        // Prepare the response
318
+        $response = $this->prepare_item_for_response( $invoice, $request );
319
+
320
+        /**
321
+         * Fires after a single invoice is created or updated via the REST API.
322
+         *
323
+         * @since 1.0.13
324
+         *
325
+         * @param WPinv_Invoice   $invoice  Inserted or updated invoice object.
326
+         * @param WP_REST_Request $request  Request object.
327
+         * @param bool            $creating True when creating a post, false when updating.
328
+         */
329
+        do_action( "wpinv_rest_insert_invoice", $invoice, $request, true );
330
+
331
+        /**
332
+         * Filters the responses for creating single invoice requests.
333
+         *
334
+         *
335
+         * @since 1.0.13
336
+         *
337
+         *
338
+         * @param array           $invoice_data Invoice properties.
339
+         * @param WP_REST_Request $request The request used.
340
+         */
341 341
         $response       = apply_filters( "wpinv_rest_create_invoice_response", $response, $request );
342 342
 
343 343
         return rest_ensure_response( $response );
344
-	}
345
-
346
-	/**
347
-	 * Checks if a given request has access to update an invoice.
348
-	 *
349
-	 * @since 1.0.13
350
-	 *
351
-	 * @param WP_REST_Request $request Full details about the request.
352
-	 * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
353
-	 */
354
-	public function update_item_permissions_check( $request ) {
355
-
356
-		// Retrieve the invoice.
357
-		$invoice = $this->get_post( $request['id'] );
358
-		if ( is_wp_error( $invoice ) ) {
359
-			return $invoice;
360
-		}
361
-
362
-		$post_type = get_post_type_object( $this->post_type );
363
-
364
-		if ( ! current_user_can(  $post_type->cap->edit_post, $invoice->ID  ) ) {
365
-			return new WP_Error( 
344
+    }
345
+
346
+    /**
347
+     * Checks if a given request has access to update an invoice.
348
+     *
349
+     * @since 1.0.13
350
+     *
351
+     * @param WP_REST_Request $request Full details about the request.
352
+     * @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
353
+     */
354
+    public function update_item_permissions_check( $request ) {
355
+
356
+        // Retrieve the invoice.
357
+        $invoice = $this->get_post( $request['id'] );
358
+        if ( is_wp_error( $invoice ) ) {
359
+            return $invoice;
360
+        }
361
+
362
+        $post_type = get_post_type_object( $this->post_type );
363
+
364
+        if ( ! current_user_can(  $post_type->cap->edit_post, $invoice->ID  ) ) {
365
+            return new WP_Error( 
366 366
                 'rest_cannot_edit', 
367 367
                 __( 'Sorry, you are not allowed to update this invoice.', 'invoicing' ), 
368 368
                 array( 
@@ -371,162 +371,162 @@  discard block
 block discarded – undo
371 371
             );
372 372
         }
373 373
 
374
-		return true;
375
-	}
376
-
377
-	/**
378
-	 * Updates a single invoice.
379
-	 *
380
-	 * @since 1.0.13
381
-	 *
382
-	 * @param WP_REST_Request $request Full details about the request.
383
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
384
-	 */
385
-	public function update_item( $request ) {
374
+        return true;
375
+    }
376
+
377
+    /**
378
+     * Updates a single invoice.
379
+     *
380
+     * @since 1.0.13
381
+     *
382
+     * @param WP_REST_Request $request Full details about the request.
383
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
384
+     */
385
+    public function update_item( $request ) {
386 386
 		
387
-		// Ensure the invoice exists.
387
+        // Ensure the invoice exists.
388 388
         $valid_check = $this->get_post( $request['id'] );
389 389
         
390 390
         // Abort early if it does not exist
391
-		if ( is_wp_error( $valid_check ) ) {
392
-			return $valid_check;
393
-		}
391
+        if ( is_wp_error( $valid_check ) ) {
392
+            return $valid_check;
393
+        }
394 394
 
395
-		$request->set_param( 'context', 'edit' );
395
+        $request->set_param( 'context', 'edit' );
396 396
 
397
-		// Prepare the updated data.
398
-		$data_to_update = $this->prepare_item_for_database( $request );
397
+        // Prepare the updated data.
398
+        $data_to_update = $this->prepare_item_for_database( $request );
399 399
 
400
-		if ( is_wp_error( $data_to_update ) ) {
401
-			return $data_to_update;
402
-		}
400
+        if ( is_wp_error( $data_to_update ) ) {
401
+            return $data_to_update;
402
+        }
403 403
 
404
-		// Abort if no invoice data is provided
404
+        // Abort if no invoice data is provided
405 405
         if( empty( $data_to_update ) ) {
406 406
             return new WP_Error( 'missing_data', __( 'An update request cannot be empty.', 'invoicing' ) );
407 407
         }
408 408
 
409
-		// Include the invoice ID
410
-		$data_to_update['ID'] = $request['id'];
411
-
412
-		// Update the invoice
413
-		$updated_invoice = wpinv_update_invoice( $data_to_update, true );
414
-
415
-		// Incase the update operation failed...
416
-		if ( is_wp_error( $updated_invoice ) ) {
417
-			return $updated_invoice;
418
-		}
419
-
420
-		// Prepare the response
421
-		$response = $this->prepare_item_for_response( $updated_invoice, $request );
422
-
423
-		/** This action is documented in includes/class-wpinv-rest-invoice-controller.php */
424
-		do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false );
425
-
426
-		/**
427
-		 * Filters the responses for updating single invoice requests.
428
-		 *
429
-		 *
430
-		 * @since 1.0.13
431
-		 *
432
-		 *
433
-		 * @param array           $invoice_data Invoice properties.
434
-		 * @param WP_REST_Request $request The request used.
435
-		 */
409
+        // Include the invoice ID
410
+        $data_to_update['ID'] = $request['id'];
411
+
412
+        // Update the invoice
413
+        $updated_invoice = wpinv_update_invoice( $data_to_update, true );
414
+
415
+        // Incase the update operation failed...
416
+        if ( is_wp_error( $updated_invoice ) ) {
417
+            return $updated_invoice;
418
+        }
419
+
420
+        // Prepare the response
421
+        $response = $this->prepare_item_for_response( $updated_invoice, $request );
422
+
423
+        /** This action is documented in includes/class-wpinv-rest-invoice-controller.php */
424
+        do_action( "wpinv_rest_insert_invoice", $updated_invoice, $request, false );
425
+
426
+        /**
427
+         * Filters the responses for updating single invoice requests.
428
+         *
429
+         *
430
+         * @since 1.0.13
431
+         *
432
+         *
433
+         * @param array           $invoice_data Invoice properties.
434
+         * @param WP_REST_Request $request The request used.
435
+         */
436 436
         $response       = apply_filters( "wpinv_rest_update_invoice_response", $response, $request );
437 437
 
438 438
         return rest_ensure_response( $response );
439
-	}
440
-
441
-	/**
442
-	 * Checks if a given request has access to delete an invoice.
443
-	 *
444
-	 * @since 1.0.13
445
-	 *
446
-	 * @param WP_REST_Request $request Full details about the request.
447
-	 * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise.
448
-	 */
449
-	public function delete_item_permissions_check( $request ) {
450
-
451
-		// Retrieve the invoice.
452
-		$invoice = $this->get_post( $request['id'] );
453
-		if ( is_wp_error( $invoice ) ) {
454
-			return $invoice;
455
-		}
456
-
457
-		// Ensure the current user can delete invoices
458
-		if ( wpinv_current_user_can_manage_invoicing() ||  current_user_can( 'delete_invoices', $request['id'] ) ) {
459
-			return new WP_Error( 
439
+    }
440
+
441
+    /**
442
+     * Checks if a given request has access to delete an invoice.
443
+     *
444
+     * @since 1.0.13
445
+     *
446
+     * @param WP_REST_Request $request Full details about the request.
447
+     * @return true|WP_Error True if the request has access to delete the invoice, WP_Error object otherwise.
448
+     */
449
+    public function delete_item_permissions_check( $request ) {
450
+
451
+        // Retrieve the invoice.
452
+        $invoice = $this->get_post( $request['id'] );
453
+        if ( is_wp_error( $invoice ) ) {
454
+            return $invoice;
455
+        }
456
+
457
+        // Ensure the current user can delete invoices
458
+        if ( wpinv_current_user_can_manage_invoicing() ||  current_user_can( 'delete_invoices', $request['id'] ) ) {
459
+            return new WP_Error( 
460 460
                 'rest_cannot_delete', 
461 461
                 __( 'Sorry, you are not allowed to delete this invoice.', 'invoicing' ), 
462 462
                 array( 
463 463
                     'status' => rest_authorization_required_code(),
464 464
                 )
465 465
             );
466
-		}
467
-
468
-		return true;
469
-	}
470
-
471
-	/**
472
-	 * Deletes a single invoice.
473
-	 *
474
-	 * @since 1.0.13
475
-	 *
476
-	 * @param WP_REST_Request $request Full details about the request.
477
-	 * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
478
-	 */
479
-	public function delete_item( $request ) {
466
+        }
467
+
468
+        return true;
469
+    }
470
+
471
+    /**
472
+     * Deletes a single invoice.
473
+     *
474
+     * @since 1.0.13
475
+     *
476
+     * @param WP_REST_Request $request Full details about the request.
477
+     * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
478
+     */
479
+    public function delete_item( $request ) {
480 480
 		
481
-		// Retrieve the invoice.
482
-		$invoice = $this->get_post( $request['id'] );
483
-		if ( is_wp_error( $invoice ) ) {
484
-			return $invoice;
485
-		}
481
+        // Retrieve the invoice.
482
+        $invoice = $this->get_post( $request['id'] );
483
+        if ( is_wp_error( $invoice ) ) {
484
+            return $invoice;
485
+        }
486 486
 
487
-		$request->set_param( 'context', 'edit' );
487
+        $request->set_param( 'context', 'edit' );
488 488
 
489
-		// Prepare the invoice id
490
-		$id    = $invoice->ID;
489
+        // Prepare the invoice id
490
+        $id    = $invoice->ID;
491 491
 
492
-		// Prepare the response
493
-		$response = $this->prepare_item_for_response( $invoice, $request );
492
+        // Prepare the response
493
+        $response = $this->prepare_item_for_response( $invoice, $request );
494 494
 
495
-		// Check if the user wants to bypass the trash...
496
-		$force_delete = (bool) $request['force'];
495
+        // Check if the user wants to bypass the trash...
496
+        $force_delete = (bool) $request['force'];
497 497
 
498
-		// Try deleting the invoice.
499
-		$deleted = wp_delete_post( $id, $force_delete );
498
+        // Try deleting the invoice.
499
+        $deleted = wp_delete_post( $id, $force_delete );
500 500
 
501
-		// Abort early if we can't delete the invoice.
502
-		if ( ! $deleted ) {
503
-			return new WP_Error( 'rest_cannot_delete', __( 'The invoice cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) );
504
-		}
501
+        // Abort early if we can't delete the invoice.
502
+        if ( ! $deleted ) {
503
+            return new WP_Error( 'rest_cannot_delete', __( 'The invoice cannot be deleted.', 'invoicing' ), array( 'status' => 500 ) );
504
+        }
505 505
 
506
-		/**
507
-		 * Fires immediately after a single invoice is deleted or trashed via the REST API.
508
-		 *
509
-		 *
510
-		 * @since 1.0.13
511
-		 *
512
-		 * @param WPInv_Invoice    $invoice  The deleted or trashed invoice.
513
-		 * @param WP_REST_Request  $request  The request sent to the API.
514
-		 */
515
-		do_action( "wpinv_rest_delete_invoice", $invoice, $request );
506
+        /**
507
+         * Fires immediately after a single invoice is deleted or trashed via the REST API.
508
+         *
509
+         *
510
+         * @since 1.0.13
511
+         *
512
+         * @param WPInv_Invoice    $invoice  The deleted or trashed invoice.
513
+         * @param WP_REST_Request  $request  The request sent to the API.
514
+         */
515
+        do_action( "wpinv_rest_delete_invoice", $invoice, $request );
516 516
 
517
-		return $response;
517
+        return $response;
518 518
 
519
-	}
519
+    }
520 520
     
521 521
     
522 522
     /**
523
-	 * Retrieves the query params for the invoices collection.
524
-	 *
525
-	 * @since 1.0.13
526
-	 *
527
-	 * @return array Collection parameters.
528
-	 */
529
-	public function get_collection_params() {
523
+     * Retrieves the query params for the invoices collection.
524
+     *
525
+     * @since 1.0.13
526
+     *
527
+     * @return array Collection parameters.
528
+     */
529
+    public function get_collection_params() {
530 530
         
531 531
         $query_params               = array(
532 532
 
@@ -544,22 +544,22 @@  discard block
 block discarded – undo
544 544
 
545 545
             // User.
546 546
             'user'                  => array(
547
-				'description'       => __( 'Limit result set to invoices for a specif user.', 'invoicing' ),
548
-				'type'              => 'integer',
547
+                'description'       => __( 'Limit result set to invoices for a specif user.', 'invoicing' ),
548
+                'type'              => 'integer',
549 549
             ),
550 550
             
551 551
             // Number of results per page
552 552
             'limit'                 => array(
553
-				'description'       => __( 'Number of invoices to fetch.', 'invoicing' ),
554
-				'type'              => 'integer',
555
-				'default'           => (int) get_option( 'posts_per_page' ),
553
+                'description'       => __( 'Number of invoices to fetch.', 'invoicing' ),
554
+                'type'              => 'integer',
555
+                'default'           => (int) get_option( 'posts_per_page' ),
556 556
             ),
557 557
 
558 558
             // Pagination
559 559
             'page'     => array(
560
-				'description'       => __( 'Current page to fetch.', 'invoicing' ),
561
-				'type'              => 'integer',
562
-				'default'           => 1,
560
+                'description'       => __( 'Current page to fetch.', 'invoicing' ),
561
+                'type'              => 'integer',
562
+                'default'           => 1,
563 563
             ),
564 564
 
565 565
             // Exclude certain invoices
@@ -595,789 +595,789 @@  discard block
 block discarded – undo
595 595
             ),
596 596
         );
597 597
 
598
-		/**
599
-		 * Filter collection parameters for the invoices controller.
600
-		 *
601
-		 *
602
-		 * @since 1.0.13
603
-		 *
604
-		 * @param array        $query_params JSON Schema-formatted collection parameters.
605
-		 */
606
-		return apply_filters( "wpinv_rest_invoices_collection_params", $query_params );
598
+        /**
599
+         * Filter collection parameters for the invoices controller.
600
+         *
601
+         *
602
+         * @since 1.0.13
603
+         *
604
+         * @param array        $query_params JSON Schema-formatted collection parameters.
605
+         */
606
+        return apply_filters( "wpinv_rest_invoices_collection_params", $query_params );
607 607
     }
608 608
     
609 609
     /**
610
-	 * Checks if a given post type can be viewed or managed.
611
-	 *
612
-	 * @since 1.0.13
613
-	 *
614
-	 * @param object|string $post_type Post type name or object.
615
-	 * @return bool Whether the post type is allowed in REST.
616
-	 */
617
-	protected function check_is_post_type_allowed( $post_type ) {
618
-		return true;
619
-	}
620
-
621
-	/**
622
-	 * Prepares a single invoice for create or update.
623
-	 *
624
-	 * @since 1.0.13
625
-	 *
626
-	 * @param WP_REST_Request $request Request object.
627
-	 * @return array|WP_Error Invoice Properties or WP_Error.
628
-	 */
629
-	protected function prepare_item_for_database( $request ) {
630
-		$prepared_invoice = new stdClass();
631
-
632
-		// Post ID.
633
-		if ( isset( $request['id'] ) ) {
634
-			$existing_invoice = $this->get_post( $request['id'] );
635
-			if ( is_wp_error( $existing_invoice ) ) {
636
-				return $existing_invoice;
637
-			}
638
-
639
-			$prepared_invoice->ID 		  = $existing_invoice->ID;
640
-			$prepared_invoice->invoice_id = $existing_invoice->ID;
641
-		}
642
-
643
-		$schema = $this->get_item_schema();
644
-
645
-		// Invoice owner.
646
-		if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) {
647
-			$prepared_invoice->user_id = (int) $request['user_id'];
648
-		}
649
-
650
-		// Cart details.
651
-		if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) {
652
-			$prepared_invoice->cart_details = (array) $request['cart_details'];
653
-		}
654
-
655
-		// Invoice status.
656
-		if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) {
657
-
658
-			if ( in_array( $request['status'], array_keys( wpinv_get_invoice_statuses( true, true ) ), true ) ) {
659
-				$prepared_invoice->status = $request['status'];
660
-			}
661
-
662
-		}
663
-
664
-		// User info
665
-		if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) {
666
-			$prepared_invoice->user_info = array();
667
-			$user_info = (array) $request['user_info'];
668
-
669
-			foreach( $user_info as $prop => $value ) {
670
-
671
-				if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) {
672
-
673
-					$prepared_invoice->user_info[$prop] = $value;
610
+     * Checks if a given post type can be viewed or managed.
611
+     *
612
+     * @since 1.0.13
613
+     *
614
+     * @param object|string $post_type Post type name or object.
615
+     * @return bool Whether the post type is allowed in REST.
616
+     */
617
+    protected function check_is_post_type_allowed( $post_type ) {
618
+        return true;
619
+    }
620
+
621
+    /**
622
+     * Prepares a single invoice for create or update.
623
+     *
624
+     * @since 1.0.13
625
+     *
626
+     * @param WP_REST_Request $request Request object.
627
+     * @return array|WP_Error Invoice Properties or WP_Error.
628
+     */
629
+    protected function prepare_item_for_database( $request ) {
630
+        $prepared_invoice = new stdClass();
631
+
632
+        // Post ID.
633
+        if ( isset( $request['id'] ) ) {
634
+            $existing_invoice = $this->get_post( $request['id'] );
635
+            if ( is_wp_error( $existing_invoice ) ) {
636
+                return $existing_invoice;
637
+            }
638
+
639
+            $prepared_invoice->ID 		  = $existing_invoice->ID;
640
+            $prepared_invoice->invoice_id = $existing_invoice->ID;
641
+        }
642
+
643
+        $schema = $this->get_item_schema();
644
+
645
+        // Invoice owner.
646
+        if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) {
647
+            $prepared_invoice->user_id = (int) $request['user_id'];
648
+        }
649
+
650
+        // Cart details.
651
+        if ( ! empty( $schema['properties']['cart_details'] ) && isset( $request['cart_details'] ) ) {
652
+            $prepared_invoice->cart_details = (array) $request['cart_details'];
653
+        }
654
+
655
+        // Invoice status.
656
+        if ( ! empty( $schema['properties']['status'] ) && isset( $request['status'] ) ) {
657
+
658
+            if ( in_array( $request['status'], array_keys( wpinv_get_invoice_statuses( true, true ) ), true ) ) {
659
+                $prepared_invoice->status = $request['status'];
660
+            }
661
+
662
+        }
663
+
664
+        // User info
665
+        if ( ! empty( $schema['properties']['user_info'] ) && isset( $request['user_info'] ) ) {
666
+            $prepared_invoice->user_info = array();
667
+            $user_info = (array) $request['user_info'];
668
+
669
+            foreach( $user_info as $prop => $value ) {
670
+
671
+                if ( ! empty( $schema['properties']['user_info']['properties'][$prop] ) ) {
672
+
673
+                    $prepared_invoice->user_info[$prop] = $value;
674 674
 		
675
-				}
675
+                }
676 676
 
677
-			}
677
+            }
678 678
 
679
-		}
679
+        }
680 680
 
681
-		// IP
682
-		if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) {
683
-			$prepared_invoice->ip = $request['ip'];
684
-		}
681
+        // IP
682
+        if ( ! empty( $schema['properties']['ip'] ) && isset( $request['ip'] ) ) {
683
+            $prepared_invoice->ip = $request['ip'];
684
+        }
685 685
 
686
-		// Payment details
687
-		$prepared_invoice->payment_details = array();
686
+        // Payment details
687
+        $prepared_invoice->payment_details = array();
688 688
 
689
-		if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) {
690
-			$prepared_invoice->payment_details['gateway'] = $request['gateway'];
691
-		}
689
+        if ( ! empty( $schema['properties']['gateway'] ) && isset( $request['gateway'] ) ) {
690
+            $prepared_invoice->payment_details['gateway'] = $request['gateway'];
691
+        }
692 692
 
693
-		if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) {
694
-			$prepared_invoice->payment_details['gateway_title'] = $request['gateway_title'];
695
-		}
693
+        if ( ! empty( $schema['properties']['gateway_title'] ) && isset( $request['gateway_title'] ) ) {
694
+            $prepared_invoice->payment_details['gateway_title'] = $request['gateway_title'];
695
+        }
696 696
 
697
-		if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) {
698
-			$prepared_invoice->payment_details['currency'] = $request['currency'];
699
-		}
697
+        if ( ! empty( $schema['properties']['currency'] ) && isset( $request['currency'] ) ) {
698
+            $prepared_invoice->payment_details['currency'] = $request['currency'];
699
+        }
700 700
 
701
-		if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) {
702
-			$prepared_invoice->payment_details['transaction_id'] = $request['transaction_id'];
703
-		}
701
+        if ( ! empty( $schema['properties']['transaction_id'] ) && isset( $request['transaction_id'] ) ) {
702
+            $prepared_invoice->payment_details['transaction_id'] = $request['transaction_id'];
703
+        }
704 704
 
705
-		// Dates
706
-		if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) {
707
-			$post_date = rest_get_date_with_gmt( $request['date'] );
705
+        // Dates
706
+        if ( ! empty( $schema['properties']['date'] ) && isset( $request['date'] ) ) {
707
+            $post_date = rest_get_date_with_gmt( $request['date'] );
708 708
 
709
-			if ( ! empty( $post_date ) ) {
710
-				$prepared_invoice->post_date = $post_date[0];
711
-			}
709
+            if ( ! empty( $post_date ) ) {
710
+                $prepared_invoice->post_date = $post_date[0];
711
+            }
712 712
 			
713
-		}
713
+        }
714 714
 
715
-		if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) {
716
-			$due_date = rest_get_date_with_gmt( $request['due_date'] );
715
+        if ( ! empty( $schema['properties']['due_date'] ) && isset( $request['due_date'] ) ) {
716
+            $due_date = rest_get_date_with_gmt( $request['due_date'] );
717 717
 
718
-			if ( ! empty( $due_date ) ) {
719
-				$prepared_invoice->due_date = $due_date[0];
720
-			}
718
+            if ( ! empty( $due_date ) ) {
719
+                $prepared_invoice->due_date = $due_date[0];
720
+            }
721 721
 
722
-		}
722
+        }
723 723
 
724
-		$invoice_data = (array) wp_unslash( $prepared_invoice );
724
+        $invoice_data = (array) wp_unslash( $prepared_invoice );
725 725
 
726
-		/**
727
-		 * Filters an invoice before it is inserted via the REST API.
728
-		 *
729
-		 * @since 1.0.13
730
-		 *
731
-		 * @param array        $invoice_data An array of invoice data
732
-		 * @param WP_REST_Request $request       Request object.
733
-		 */
734
-		return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request );
726
+        /**
727
+         * Filters an invoice before it is inserted via the REST API.
728
+         *
729
+         * @since 1.0.13
730
+         *
731
+         * @param array        $invoice_data An array of invoice data
732
+         * @param WP_REST_Request $request       Request object.
733
+         */
734
+        return apply_filters( "wpinv_rest_pre_insert_invoice", $invoice_data, $request );
735 735
 
736
-	}
736
+    }
737
+
738
+    /**
739
+     * Prepares a single invoice output for response.
740
+     *
741
+     * @since 1.0.13
742
+     *
743
+     * @param WPInv_Invoice   $invoice    Invoice object.
744
+     * @param WP_REST_Request $request Request object.
745
+     * @return WP_REST_Response Response object.
746
+     */
747
+    public function prepare_item_for_response( $invoice, $request ) {
737 748
 
738
-	/**
739
-	 * Prepares a single invoice output for response.
740
-	 *
741
-	 * @since 1.0.13
742
-	 *
743
-	 * @param WPInv_Invoice   $invoice    Invoice object.
744
-	 * @param WP_REST_Request $request Request object.
745
-	 * @return WP_REST_Response Response object.
746
-	 */
747
-	public function prepare_item_for_response( $invoice, $request ) {
749
+        $GLOBALS['post'] = get_post( $invoice->ID );
748 750
 
749
-		$GLOBALS['post'] = get_post( $invoice->ID );
751
+        setup_postdata( $invoice->ID );
750 752
 
751
-		setup_postdata( $invoice->ID );
753
+        // Fetch the fields to include in this response.
754
+        $fields = $this->get_fields_for_response( $request );
752 755
 
753
-		// Fetch the fields to include in this response.
754
-		$fields = $this->get_fields_for_response( $request );
756
+        // Base fields for every invoice.
757
+        $data = array();
758
+
759
+        // Set up ID
760
+        if ( rest_is_field_included( 'id', $fields ) ) {
761
+            $data['id'] = $invoice->ID;
762
+        }
763
+
764
+
765
+        // Basic properties
766
+        $invoice_properties = array(
767
+            'title', 'email', 'ip', 
768
+            'key', 'number', 'transaction_id', 'mode',
769
+            'gateway', 'gateway_title',
770
+            'total', 'discount', 'discount_code', 
771
+            'tax', 'fees_total', 'subtotal', 'currency',
772
+            'status', 'status_nicename', 'post_type'
773
+        );
774
+
775
+        foreach( $invoice_properties as $property ) {
776
+
777
+            if ( rest_is_field_included( $property, $fields ) ) {
778
+                $data[$property] = $invoice->get( $property );
779
+            }
780
+
781
+        }
782
+
783
+        // Cart details
784
+        if ( rest_is_field_included( 'cart_details', $fields ) ) {
785
+            $data['cart_details'] = $invoice->get( 'cart_details' );
786
+        }
787
+
788
+        //Dates
789
+        $invoice_properties = array( 'date', 'due_date', 'completed_date' );
790
+
791
+        foreach( $invoice_properties as $property ) {
792
+
793
+            if ( rest_is_field_included( $property, $fields ) ) {
794
+                $data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) );
795
+            }
796
+
797
+        }
798
+
799
+        // User id
800
+        if ( rest_is_field_included( 'user_id', $fields ) ) {
801
+            $data['user_id'] = (int) $invoice->get( 'user_id' );
802
+        }
803
+
804
+        // User info
805
+        $user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' );
806
+
807
+        foreach( $user_info as $property ) {
808
+
809
+            if ( rest_is_field_included( "user_info.$property", $fields ) ) {
810
+                $data['user_info'][$property] = $invoice->get( $property );
811
+            }
812
+
813
+        }
814
+
815
+        // Slug
816
+        if ( rest_is_field_included( 'slug', $fields ) ) {
817
+            $data['slug'] = $invoice->get( 'post_name' );
818
+        }
819
+
820
+        // View invoice link
821
+        if ( rest_is_field_included( 'link', $fields ) ) {
822
+            $data['link'] = esc_url( $invoice->get_view_url() );
823
+        }
755 824
 
756
-		// Base fields for every invoice.
757
-		$data = array();
758 825
 
759
-		// Set up ID
760
-		if ( rest_is_field_included( 'id', $fields ) ) {
761
-			$data['id'] = $invoice->ID;
762
-		}
826
+        $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
827
+        $data    = $this->add_additional_fields_to_object( $data, $request );
828
+        $data    = $this->filter_response_by_context( $data, $context );
763 829
 
830
+        // Wrap the data in a response object.
831
+        $response = rest_ensure_response( $data );
764 832
 
765
-		// Basic properties
766
-		$invoice_properties = array(
767
-			'title', 'email', 'ip', 
768
-			'key', 'number', 'transaction_id', 'mode',
769
-			'gateway', 'gateway_title',
770
-			'total', 'discount', 'discount_code', 
771
-			'tax', 'fees_total', 'subtotal', 'currency',
772
-			'status', 'status_nicename', 'post_type'
773
-		);
774
-
775
-		foreach( $invoice_properties as $property ) {
776
-
777
-			if ( rest_is_field_included( $property, $fields ) ) {
778
-				$data[$property] = $invoice->get( $property );
779
-			}
780
-
781
-		}
782
-
783
-		// Cart details
784
-		if ( rest_is_field_included( 'cart_details', $fields ) ) {
785
-			$data['cart_details'] = $invoice->get( 'cart_details' );
786
-		}
787
-
788
-		//Dates
789
-		$invoice_properties = array( 'date', 'due_date', 'completed_date' );
790
-
791
-		foreach( $invoice_properties as $property ) {
792
-
793
-			if ( rest_is_field_included( $property, $fields ) ) {
794
-				$data[$property] = $this->prepare_date_response( '0000-00-00 00:00:00', $invoice->get( $property ) );
795
-			}
796
-
797
-		}
798
-
799
-		// User id
800
-		if ( rest_is_field_included( 'user_id', $fields ) ) {
801
-			$data['user_id'] = (int) $invoice->get( 'user_id' );
802
-		}
803
-
804
-		// User info
805
-		$user_info = array( 'first_name', 'last_name', 'company', 'vat_number', 'vat_rate', 'address', 'city', 'country', 'state', 'zip', 'phone' );
806
-
807
-		foreach( $user_info as $property ) {
808
-
809
-			if ( rest_is_field_included( "user_info.$property", $fields ) ) {
810
-				$data['user_info'][$property] = $invoice->get( $property );
811
-			}
812
-
813
-		}
814
-
815
-		// Slug
816
-		if ( rest_is_field_included( 'slug', $fields ) ) {
817
-			$data['slug'] = $invoice->get( 'post_name' );
818
-		}
819
-
820
-		// View invoice link
821
-		if ( rest_is_field_included( 'link', $fields ) ) {
822
-			$data['link'] = esc_url( $invoice->get_view_url() );
823
-		}
824
-
825
-
826
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
827
-		$data    = $this->add_additional_fields_to_object( $data, $request );
828
-		$data    = $this->filter_response_by_context( $data, $context );
829
-
830
-		// Wrap the data in a response object.
831
-		$response = rest_ensure_response( $data );
832
-
833
-		$links = $this->prepare_links( $invoice );
834
-		$response->add_links( $links );
835
-
836
-		if ( ! empty( $links['self']['href'] ) ) {
837
-			$actions = $this->get_available_actions( $invoice, $request );
838
-
839
-			$self = $links['self']['href'];
840
-
841
-			foreach ( $actions as $rel ) {
842
-				$response->add_link( $rel, $self );
843
-			}
844
-		}
845
-
846
-		/**
847
-		 * Filters the invoice data for a response.
848
-		 *
849
-		 * @since 1.0.13
850
-		 *
851
-		 * @param WP_REST_Response $response The response object.
852
-		 * @param WPInv_Invoice    $invoice  The invoice object.
853
-		 * @param WP_REST_Request  $request  Request object.
854
-		 */
855
-		return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request );
856
-	}
857
-
858
-	/**
859
-	 * Gets an array of fields to be included on the response.
860
-	 *
861
-	 * Included fields are based on item schema and `_fields=` request argument.
862
-	 *
863
-	 * @since 1.0.13
864
-	 *
865
-	 * @param WP_REST_Request $request Full details about the request.
866
-	 * @return array Fields to be included in the response.
867
-	 */
868
-	public function get_fields_for_response( $request ) {
869
-		$schema     = $this->get_item_schema();
870
-		$properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
871
-
872
-		$additional_fields = $this->get_additional_fields();
873
-		foreach ( $additional_fields as $field_name => $field_options ) {
874
-			// For back-compat, include any field with an empty schema
875
-			// because it won't be present in $this->get_item_schema().
876
-			if ( is_null( $field_options['schema'] ) ) {
877
-				$properties[ $field_name ] = $field_options;
878
-			}
879
-		}
880
-
881
-		// Exclude fields that specify a different context than the request context.
882
-		$context = $request['context'];
883
-		if ( $context ) {
884
-			foreach ( $properties as $name => $options ) {
885
-				if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
886
-					unset( $properties[ $name ] );
887
-				}
888
-			}
889
-		}
890
-
891
-		$fields = array_keys( $properties );
892
-
893
-		if ( ! isset( $request['_fields'] ) ) {
894
-			return $fields;
895
-		}
896
-		$requested_fields = wpinv_parse_list( $request['_fields'] );
897
-		if ( 0 === count( $requested_fields ) ) {
898
-			return $fields;
899
-		}
900
-		// Trim off outside whitespace from the comma delimited list.
901
-		$requested_fields = array_map( 'trim', $requested_fields );
902
-		// Always persist 'id', because it can be needed for add_additional_fields_to_object().
903
-		if ( in_array( 'id', $fields, true ) ) {
904
-			$requested_fields[] = 'id';
905
-		}
906
-		// Return the list of all requested fields which appear in the schema.
907
-		return array_reduce(
908
-			$requested_fields,
909
-			function( $response_fields, $field ) use ( $fields ) {
910
-				if ( in_array( $field, $fields, true ) ) {
911
-					$response_fields[] = $field;
912
-					return $response_fields;
913
-				}
914
-				// Check for nested fields if $field is not a direct match.
915
-				$nested_fields = explode( '.', $field );
916
-				// A nested field is included so long as its top-level property is
917
-				// present in the schema.
918
-				if ( in_array( $nested_fields[0], $fields, true ) ) {
919
-					$response_fields[] = $field;
920
-				}
921
-				return $response_fields;
922
-			},
923
-			array()
924
-		);
925
-	}
926
-
927
-	/**
928
-	 * Retrieves the invoice's schema, conforming to JSON Schema.
929
-	 *
930
-	 * @since 1.0.13
931
-	 *
932
-	 * @return array Invoice schema data.
933
-	 */
934
-	public function get_item_schema() {
935
-
936
-		// Maybe retrieve the schema from cache.
937
-		if ( $this->schema ) {
938
-			return $this->add_additional_fields_schema( $this->schema );
939
-		}
940
-
941
-		$schema = array(
942
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
943
-			'title'      => $this->post_type,
944
-			'type'       => 'object',
945
-
946
-			// Base properties for every Invoice.
947
-			'properties' 		  => array(
948
-
949
-				'title'			  => array(
950
-					'description' => __( 'The title for the invoice.', 'invoicing' ),
951
-					'type'        => 'string',
952
-					'context'     => array( 'view', 'edit', 'embed' ),
953
-					'readonly'    => true,
954
-				),
955
-
956
-				'user_id'		  => array(
957
-					'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ),
958
-					'type'        => 'integer',
959
-					'context'     => array( 'view', 'edit', 'embed' ),
960
-				),
961
-
962
-				'email'		  	  => array(
963
-					'description' => __( 'The email of the owner of the invoice.', 'invoicing' ),
964
-					'type'        => 'string',
965
-					'context'     => array( 'view', 'edit', 'embed' ),
966
-					'readonly'    => true,
967
-				),
968
-
969
-				'ip'			  => array(
970
-					'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ),
971
-					'type'        => 'string',
972
-					'context'     => array( 'view', 'edit', 'embed' ),
973
-				),
974
-
975
-				'user_info'       => array(
976
-					'description' => __( 'Information about the owner of the invoice.', 'invoicing' ),
977
-					'type'        => 'object',
978
-					'context'     => array( 'view', 'edit', 'embed' ),
979
-					'properties'  => array(
980
-
981
-						'first_name'      => array(
982
-							'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ),
983
-							'type'        => 'string',
984
-							'context'     => array( 'view', 'edit', 'embed' ),
985
-						),
986
-
987
-						'last_name'       => array(
988
-							'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ),
989
-							'type'        => 'string',
990
-							'context'     => array( 'view', 'edit', 'embed' ),
991
-						),
992
-
993
-						'company'         => array(
994
-							'description' => __( 'The company of the owner of the invoice.', 'invoicing' ),
995
-							'type'        => 'string',
996
-							'context'     => array( 'view', 'edit', 'embed' ),
997
-						),
998
-
999
-						'vat_number'      => array(
1000
-							'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ),
1001
-							'type'        => 'string',
1002
-							'context'     => array( 'view', 'edit', 'embed' ),
1003
-						),
1004
-
1005
-						'vat_rate'        => array(
1006
-							'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ),
1007
-							'type'        => 'string',
1008
-							'context'     => array( 'view', 'edit', 'embed' ),
1009
-						),
1010
-
1011
-						'address'        => array(
1012
-							'description' => __( 'The address of the invoice owner.', 'invoicing' ),
1013
-							'type'        => 'string',
1014
-							'context'     => array( 'view', 'edit', 'embed' ),
1015
-						),
1016
-
1017
-						'city'            => array(
1018
-							'description' => __( 'The city of the invoice owner.', 'invoicing' ),
1019
-							'type'        => 'string',
1020
-							'context'     => array( 'view', 'edit', 'embed' ),
1021
-						),
1022
-
1023
-						'country'         => array(
1024
-							'description' => __( 'The country of the invoice owner.', 'invoicing' ),
1025
-							'type'        => 'string',
1026
-							'context'     => array( 'view', 'edit', 'embed' ),
1027
-						),
1028
-
1029
-						'state'           => array(
1030
-							'description' => __( 'The state of the invoice owner.', 'invoicing' ),
1031
-							'type'        => 'string',
1032
-							'context'     => array( 'view', 'edit', 'embed' ),
1033
-						),
1034
-
1035
-						'zip'             => array(
1036
-							'description' => __( 'The zip code of the invoice owner.', 'invoicing' ),
1037
-							'type'        => 'string',
1038
-							'context'     => array( 'view', 'edit', 'embed' ),
1039
-						),
1040
-
1041
-						'phone'             => array(
1042
-							'description' => __( 'The phone number of the invoice owner.', 'invoicing' ),
1043
-							'type'        => 'string',
1044
-							'context'     => array( 'view', 'edit', 'embed' ),
1045
-						),
1046
-					),
1047
-				),
1048
-
1049
-				'id'           => array(
1050
-					'description' => __( 'Unique identifier for the invoice.', 'invoicing' ),
1051
-					'type'        => 'integer',
1052
-					'context'     => array( 'view', 'edit', 'embed' ),
1053
-					'readonly'    => true,
1054
-				),
1055
-
1056
-				'key'			  => array(
1057
-					'description' => __( 'A unique key for the invoice.', 'invoicing' ),
1058
-					'type'        => 'string',
1059
-					'context'     => array( 'view', 'edit', 'embed' ),
1060
-					'readonly'    => true,
1061
-				),
1062
-
1063
-				'number'		  => array(
1064
-					'description' => __( 'The invoice number.', 'invoicing' ),
1065
-					'type'        => 'string',
1066
-					'context'     => array( 'view', 'edit', 'embed' ),
1067
-					'readonly'    => true,
1068
-				),
1069
-
1070
-				'transaction_id'  => array(
1071
-					'description' => __( 'The transaction id of the invoice.', 'invoicing' ),
1072
-					'type'        => 'string',
1073
-					'context'     => array( 'view', 'edit', 'embed' ),
1074
-				),
1075
-
1076
-				'gateway'		  => array(
1077
-					'description' => __( 'The gateway used to process the invoice.', 'invoicing' ),
1078
-					'type'        => 'string',
1079
-					'context'     => array( 'view', 'edit', 'embed' ),
1080
-				),
1081
-
1082
-				'gateway_title'	  => array(
1083
-					'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ),
1084
-					'type'        => 'string',
1085
-					'context'     => array( 'view', 'edit', 'embed' ),
1086
-				),
1087
-
1088
-				'total'	  		  => array(
1089
-					'description' => __( 'The total amount of the invoice.', 'invoicing' ),
1090
-					'type'        => 'number',
1091
-					'context'     => array( 'view', 'edit', 'embed' ),
1092
-					'readonly'    => true,
1093
-				),
1094
-
1095
-				'discount'		  => array(
1096
-					'description' => __( 'The discount applied to the invoice.', 'invoicing' ),
1097
-					'type'        => 'number',
1098
-					'context'     => array( 'view', 'edit', 'embed' ),
1099
-					'readonly'    => true,
1100
-				),
1101
-
1102
-				'discount_code'	  => array(
1103
-					'description' => __( 'The discount code applied to the invoice.', 'invoicing' ),
1104
-					'type'        => 'string',
1105
-					'context'     => array( 'view', 'edit', 'embed' ),
1106
-					'readonly'    => true,
1107
-				),
1108
-
1109
-				'tax'	  		  => array(
1110
-					'description' => __( 'The tax applied to the invoice.', 'invoicing' ),
1111
-					'type'        => 'number',
1112
-					'context'     => array( 'view', 'edit', 'embed' ),
1113
-					'readonly'    => true,
1114
-				),
1115
-
1116
-				'fees_total'	  => array(
1117
-					'description' => __( 'The total fees applied to the invoice.', 'invoicing' ),
1118
-					'type'        => 'number',
1119
-					'context'     => array( 'view', 'edit', 'embed' ),
1120
-					'readonly'    => true,
1121
-				),
1122
-
1123
-				'subtotal'	  	  => array(
1124
-					'description' => __( 'The sub-total for the invoice.', 'invoicing' ),
1125
-					'type'        => 'number',
1126
-					'context'     => array( 'view', 'edit', 'embed' ),
1127
-					'readonly'    => true,
1128
-				),
1129
-
1130
-				'currency'	  	  => array(
1131
-					'description' => __( 'The currency used to process the invoice.', 'invoicing' ),
1132
-					'type'        => 'string',
1133
-					'context'     => array( 'view', 'edit', 'embed' ),
1134
-				),
1135
-
1136
-				'cart_details'	  => array(
1137
-					'description' => __( 'The cart details for invoice.', 'invoicing' ),
1138
-					'type'        => 'array',
1139
-					'context'     => array( 'view', 'edit', 'embed' ),
1140
-					'required'	  => true,
1141
-				),
1142
-
1143
-				'date'         => array(
1144
-					'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ),
1145
-					'type'        => array( 'string', 'null' ),
1146
-					'format'      => 'date-time',
1147
-					'context'     => array( 'view', 'edit', 'embed' ),
1148
-				),
1149
-
1150
-				'due_date'     => array(
1151
-					'description' => __( 'The due date for the invoice.', 'invoicing' ),
1152
-					'type'        => array( 'string', 'null' ),
1153
-					'format'      => 'date-time',
1154
-					'context'     => array( 'view', 'edit', 'embed' ),
1155
-				),
1156
-
1157
-				'completed_date'  => array(
1158
-					'description' => __( 'The completed date for the invoice.', 'invoicing' ),
1159
-					'type'        => array( 'string', 'null' ),
1160
-					'format'      => 'date-time',
1161
-					'context'     => array( 'view', 'edit', 'embed' ),
1162
-					'readonly'    => true,
1163
-				),
833
+        $links = $this->prepare_links( $invoice );
834
+        $response->add_links( $links );
835
+
836
+        if ( ! empty( $links['self']['href'] ) ) {
837
+            $actions = $this->get_available_actions( $invoice, $request );
838
+
839
+            $self = $links['self']['href'];
840
+
841
+            foreach ( $actions as $rel ) {
842
+                $response->add_link( $rel, $self );
843
+            }
844
+        }
845
+
846
+        /**
847
+         * Filters the invoice data for a response.
848
+         *
849
+         * @since 1.0.13
850
+         *
851
+         * @param WP_REST_Response $response The response object.
852
+         * @param WPInv_Invoice    $invoice  The invoice object.
853
+         * @param WP_REST_Request  $request  Request object.
854
+         */
855
+        return apply_filters( "wpinv_rest_prepare_invoice", $response, $invoice, $request );
856
+    }
857
+
858
+    /**
859
+     * Gets an array of fields to be included on the response.
860
+     *
861
+     * Included fields are based on item schema and `_fields=` request argument.
862
+     *
863
+     * @since 1.0.13
864
+     *
865
+     * @param WP_REST_Request $request Full details about the request.
866
+     * @return array Fields to be included in the response.
867
+     */
868
+    public function get_fields_for_response( $request ) {
869
+        $schema     = $this->get_item_schema();
870
+        $properties = isset( $schema['properties'] ) ? $schema['properties'] : array();
871
+
872
+        $additional_fields = $this->get_additional_fields();
873
+        foreach ( $additional_fields as $field_name => $field_options ) {
874
+            // For back-compat, include any field with an empty schema
875
+            // because it won't be present in $this->get_item_schema().
876
+            if ( is_null( $field_options['schema'] ) ) {
877
+                $properties[ $field_name ] = $field_options;
878
+            }
879
+        }
880
+
881
+        // Exclude fields that specify a different context than the request context.
882
+        $context = $request['context'];
883
+        if ( $context ) {
884
+            foreach ( $properties as $name => $options ) {
885
+                if ( ! empty( $options['context'] ) && ! in_array( $context, $options['context'], true ) ) {
886
+                    unset( $properties[ $name ] );
887
+                }
888
+            }
889
+        }
890
+
891
+        $fields = array_keys( $properties );
892
+
893
+        if ( ! isset( $request['_fields'] ) ) {
894
+            return $fields;
895
+        }
896
+        $requested_fields = wpinv_parse_list( $request['_fields'] );
897
+        if ( 0 === count( $requested_fields ) ) {
898
+            return $fields;
899
+        }
900
+        // Trim off outside whitespace from the comma delimited list.
901
+        $requested_fields = array_map( 'trim', $requested_fields );
902
+        // Always persist 'id', because it can be needed for add_additional_fields_to_object().
903
+        if ( in_array( 'id', $fields, true ) ) {
904
+            $requested_fields[] = 'id';
905
+        }
906
+        // Return the list of all requested fields which appear in the schema.
907
+        return array_reduce(
908
+            $requested_fields,
909
+            function( $response_fields, $field ) use ( $fields ) {
910
+                if ( in_array( $field, $fields, true ) ) {
911
+                    $response_fields[] = $field;
912
+                    return $response_fields;
913
+                }
914
+                // Check for nested fields if $field is not a direct match.
915
+                $nested_fields = explode( '.', $field );
916
+                // A nested field is included so long as its top-level property is
917
+                // present in the schema.
918
+                if ( in_array( $nested_fields[0], $fields, true ) ) {
919
+                    $response_fields[] = $field;
920
+                }
921
+                return $response_fields;
922
+            },
923
+            array()
924
+        );
925
+    }
926
+
927
+    /**
928
+     * Retrieves the invoice's schema, conforming to JSON Schema.
929
+     *
930
+     * @since 1.0.13
931
+     *
932
+     * @return array Invoice schema data.
933
+     */
934
+    public function get_item_schema() {
935
+
936
+        // Maybe retrieve the schema from cache.
937
+        if ( $this->schema ) {
938
+            return $this->add_additional_fields_schema( $this->schema );
939
+        }
940
+
941
+        $schema = array(
942
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
943
+            'title'      => $this->post_type,
944
+            'type'       => 'object',
945
+
946
+            // Base properties for every Invoice.
947
+            'properties' 		  => array(
948
+
949
+                'title'			  => array(
950
+                    'description' => __( 'The title for the invoice.', 'invoicing' ),
951
+                    'type'        => 'string',
952
+                    'context'     => array( 'view', 'edit', 'embed' ),
953
+                    'readonly'    => true,
954
+                ),
955
+
956
+                'user_id'		  => array(
957
+                    'description' => __( 'The ID of the owner of the invoice.', 'invoicing' ),
958
+                    'type'        => 'integer',
959
+                    'context'     => array( 'view', 'edit', 'embed' ),
960
+                ),
961
+
962
+                'email'		  	  => array(
963
+                    'description' => __( 'The email of the owner of the invoice.', 'invoicing' ),
964
+                    'type'        => 'string',
965
+                    'context'     => array( 'view', 'edit', 'embed' ),
966
+                    'readonly'    => true,
967
+                ),
968
+
969
+                'ip'			  => array(
970
+                    'description' => __( 'The IP of the owner of the invoice.', 'invoicing' ),
971
+                    'type'        => 'string',
972
+                    'context'     => array( 'view', 'edit', 'embed' ),
973
+                ),
974
+
975
+                'user_info'       => array(
976
+                    'description' => __( 'Information about the owner of the invoice.', 'invoicing' ),
977
+                    'type'        => 'object',
978
+                    'context'     => array( 'view', 'edit', 'embed' ),
979
+                    'properties'  => array(
980
+
981
+                        'first_name'      => array(
982
+                            'description' => __( 'The first name of the owner of the invoice.', 'invoicing' ),
983
+                            'type'        => 'string',
984
+                            'context'     => array( 'view', 'edit', 'embed' ),
985
+                        ),
986
+
987
+                        'last_name'       => array(
988
+                            'description' => __( 'The last name of the owner of the invoice.', 'invoicing' ),
989
+                            'type'        => 'string',
990
+                            'context'     => array( 'view', 'edit', 'embed' ),
991
+                        ),
992
+
993
+                        'company'         => array(
994
+                            'description' => __( 'The company of the owner of the invoice.', 'invoicing' ),
995
+                            'type'        => 'string',
996
+                            'context'     => array( 'view', 'edit', 'embed' ),
997
+                        ),
998
+
999
+                        'vat_number'      => array(
1000
+                            'description' => __( 'The VAT number of the owner of the invoice.', 'invoicing' ),
1001
+                            'type'        => 'string',
1002
+                            'context'     => array( 'view', 'edit', 'embed' ),
1003
+                        ),
1004
+
1005
+                        'vat_rate'        => array(
1006
+                            'description' => __( 'The VAT rate applied on the invoice.', 'invoicing' ),
1007
+                            'type'        => 'string',
1008
+                            'context'     => array( 'view', 'edit', 'embed' ),
1009
+                        ),
1010
+
1011
+                        'address'        => array(
1012
+                            'description' => __( 'The address of the invoice owner.', 'invoicing' ),
1013
+                            'type'        => 'string',
1014
+                            'context'     => array( 'view', 'edit', 'embed' ),
1015
+                        ),
1016
+
1017
+                        'city'            => array(
1018
+                            'description' => __( 'The city of the invoice owner.', 'invoicing' ),
1019
+                            'type'        => 'string',
1020
+                            'context'     => array( 'view', 'edit', 'embed' ),
1021
+                        ),
1022
+
1023
+                        'country'         => array(
1024
+                            'description' => __( 'The country of the invoice owner.', 'invoicing' ),
1025
+                            'type'        => 'string',
1026
+                            'context'     => array( 'view', 'edit', 'embed' ),
1027
+                        ),
1028
+
1029
+                        'state'           => array(
1030
+                            'description' => __( 'The state of the invoice owner.', 'invoicing' ),
1031
+                            'type'        => 'string',
1032
+                            'context'     => array( 'view', 'edit', 'embed' ),
1033
+                        ),
1034
+
1035
+                        'zip'             => array(
1036
+                            'description' => __( 'The zip code of the invoice owner.', 'invoicing' ),
1037
+                            'type'        => 'string',
1038
+                            'context'     => array( 'view', 'edit', 'embed' ),
1039
+                        ),
1040
+
1041
+                        'phone'             => array(
1042
+                            'description' => __( 'The phone number of the invoice owner.', 'invoicing' ),
1043
+                            'type'        => 'string',
1044
+                            'context'     => array( 'view', 'edit', 'embed' ),
1045
+                        ),
1046
+                    ),
1047
+                ),
1048
+
1049
+                'id'           => array(
1050
+                    'description' => __( 'Unique identifier for the invoice.', 'invoicing' ),
1051
+                    'type'        => 'integer',
1052
+                    'context'     => array( 'view', 'edit', 'embed' ),
1053
+                    'readonly'    => true,
1054
+                ),
1055
+
1056
+                'key'			  => array(
1057
+                    'description' => __( 'A unique key for the invoice.', 'invoicing' ),
1058
+                    'type'        => 'string',
1059
+                    'context'     => array( 'view', 'edit', 'embed' ),
1060
+                    'readonly'    => true,
1061
+                ),
1062
+
1063
+                'number'		  => array(
1064
+                    'description' => __( 'The invoice number.', 'invoicing' ),
1065
+                    'type'        => 'string',
1066
+                    'context'     => array( 'view', 'edit', 'embed' ),
1067
+                    'readonly'    => true,
1068
+                ),
1069
+
1070
+                'transaction_id'  => array(
1071
+                    'description' => __( 'The transaction id of the invoice.', 'invoicing' ),
1072
+                    'type'        => 'string',
1073
+                    'context'     => array( 'view', 'edit', 'embed' ),
1074
+                ),
1075
+
1076
+                'gateway'		  => array(
1077
+                    'description' => __( 'The gateway used to process the invoice.', 'invoicing' ),
1078
+                    'type'        => 'string',
1079
+                    'context'     => array( 'view', 'edit', 'embed' ),
1080
+                ),
1081
+
1082
+                'gateway_title'	  => array(
1083
+                    'description' => __( 'The title of the gateway used to process the invoice.', 'invoicing' ),
1084
+                    'type'        => 'string',
1085
+                    'context'     => array( 'view', 'edit', 'embed' ),
1086
+                ),
1087
+
1088
+                'total'	  		  => array(
1089
+                    'description' => __( 'The total amount of the invoice.', 'invoicing' ),
1090
+                    'type'        => 'number',
1091
+                    'context'     => array( 'view', 'edit', 'embed' ),
1092
+                    'readonly'    => true,
1093
+                ),
1094
+
1095
+                'discount'		  => array(
1096
+                    'description' => __( 'The discount applied to the invoice.', 'invoicing' ),
1097
+                    'type'        => 'number',
1098
+                    'context'     => array( 'view', 'edit', 'embed' ),
1099
+                    'readonly'    => true,
1100
+                ),
1101
+
1102
+                'discount_code'	  => array(
1103
+                    'description' => __( 'The discount code applied to the invoice.', 'invoicing' ),
1104
+                    'type'        => 'string',
1105
+                    'context'     => array( 'view', 'edit', 'embed' ),
1106
+                    'readonly'    => true,
1107
+                ),
1108
+
1109
+                'tax'	  		  => array(
1110
+                    'description' => __( 'The tax applied to the invoice.', 'invoicing' ),
1111
+                    'type'        => 'number',
1112
+                    'context'     => array( 'view', 'edit', 'embed' ),
1113
+                    'readonly'    => true,
1114
+                ),
1115
+
1116
+                'fees_total'	  => array(
1117
+                    'description' => __( 'The total fees applied to the invoice.', 'invoicing' ),
1118
+                    'type'        => 'number',
1119
+                    'context'     => array( 'view', 'edit', 'embed' ),
1120
+                    'readonly'    => true,
1121
+                ),
1122
+
1123
+                'subtotal'	  	  => array(
1124
+                    'description' => __( 'The sub-total for the invoice.', 'invoicing' ),
1125
+                    'type'        => 'number',
1126
+                    'context'     => array( 'view', 'edit', 'embed' ),
1127
+                    'readonly'    => true,
1128
+                ),
1129
+
1130
+                'currency'	  	  => array(
1131
+                    'description' => __( 'The currency used to process the invoice.', 'invoicing' ),
1132
+                    'type'        => 'string',
1133
+                    'context'     => array( 'view', 'edit', 'embed' ),
1134
+                ),
1135
+
1136
+                'cart_details'	  => array(
1137
+                    'description' => __( 'The cart details for invoice.', 'invoicing' ),
1138
+                    'type'        => 'array',
1139
+                    'context'     => array( 'view', 'edit', 'embed' ),
1140
+                    'required'	  => true,
1141
+                ),
1142
+
1143
+                'date'         => array(
1144
+                    'description' => __( "The date the invoice was published, in the site's timezone.", 'invoicing' ),
1145
+                    'type'        => array( 'string', 'null' ),
1146
+                    'format'      => 'date-time',
1147
+                    'context'     => array( 'view', 'edit', 'embed' ),
1148
+                ),
1149
+
1150
+                'due_date'     => array(
1151
+                    'description' => __( 'The due date for the invoice.', 'invoicing' ),
1152
+                    'type'        => array( 'string', 'null' ),
1153
+                    'format'      => 'date-time',
1154
+                    'context'     => array( 'view', 'edit', 'embed' ),
1155
+                ),
1156
+
1157
+                'completed_date'  => array(
1158
+                    'description' => __( 'The completed date for the invoice.', 'invoicing' ),
1159
+                    'type'        => array( 'string', 'null' ),
1160
+                    'format'      => 'date-time',
1161
+                    'context'     => array( 'view', 'edit', 'embed' ),
1162
+                    'readonly'    => true,
1163
+                ),
1164 1164
 				
1165
-				'link'         => array(
1166
-					'description' => __( 'URL to the invoice.', 'invoicing' ),
1167
-					'type'        => 'string',
1168
-					'format'      => 'uri',
1169
-					'context'     => array( 'view', 'edit', 'embed' ),
1170
-					'readonly'    => true,
1171
-				),
1172
-
1173
-				'mode'       	  => array(
1174
-					'description' => __( 'The mode used to process the invoice.', 'invoicing' ),
1175
-					'type'        => 'string',
1176
-					'enum'        => array( 'live', 'test' ),
1177
-					'context'     => array( 'view', 'edit', 'embed' ),
1178
-					'readonly'    => true,
1179
-				),
1180
-
1181
-				'slug'       	  => array(
1182
-					'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ),
1183
-					'type'        => 'string',
1184
-					'context'     => array( 'view', 'edit', 'embed' ),
1185
-					'arg_options' => array(
1186
-						'sanitize_callback' => array( $this, 'sanitize_slug' ),
1187
-					),
1188
-					'readonly'    => true,
1189
-				),
1190
-
1191
-				'status'       	  => array(
1192
-					'description' => __( 'A named status for the invoice.', 'invoicing' ),
1193
-					'type'        => 'string',
1194
-					'enum'        => array_keys( wpinv_get_invoice_statuses( true, true ) ),
1195
-					'context'     => array( 'view', 'edit' ),
1196
-					'default'	  => 'wpi-pending',
1197
-				),
1198
-
1199
-				'status_nicename' => array(
1200
-					'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ),
1201
-					'type'        => 'string',
1202
-					'context'     => array( 'view', 'embed' ),
1203
-					'readonly'    => true,
1204
-				),
1205
-
1206
-				'post_type'       => array(
1207
-					'description' => __( 'The post type for the invoice.', 'invoicing' ),
1208
-					'type'        => 'string',
1209
-					'context'     => array( 'view' ),
1210
-					'readonly'    => true,
1211
-				),
1212
-			),
1213
-		);
1214
-
1215
-		// Add helpful links to the invoice schem.
1216
-		$schema['links'] = $this->get_schema_links();
1217
-
1218
-		/**
1219
-		 * Filters the invoice schema for the REST API.
1220
-		 *
1221
-		 * Enables adding extra properties to invoices.
1222
-		 *
1223
-		 * @since 1.0.13
1224
-		 *
1225
-		 * @param array   $schema    The invoice schema.
1226
-		 */
1165
+                'link'         => array(
1166
+                    'description' => __( 'URL to the invoice.', 'invoicing' ),
1167
+                    'type'        => 'string',
1168
+                    'format'      => 'uri',
1169
+                    'context'     => array( 'view', 'edit', 'embed' ),
1170
+                    'readonly'    => true,
1171
+                ),
1172
+
1173
+                'mode'       	  => array(
1174
+                    'description' => __( 'The mode used to process the invoice.', 'invoicing' ),
1175
+                    'type'        => 'string',
1176
+                    'enum'        => array( 'live', 'test' ),
1177
+                    'context'     => array( 'view', 'edit', 'embed' ),
1178
+                    'readonly'    => true,
1179
+                ),
1180
+
1181
+                'slug'       	  => array(
1182
+                    'description' => __( 'An alphanumeric identifier for the invoice.', 'invoicing' ),
1183
+                    'type'        => 'string',
1184
+                    'context'     => array( 'view', 'edit', 'embed' ),
1185
+                    'arg_options' => array(
1186
+                        'sanitize_callback' => array( $this, 'sanitize_slug' ),
1187
+                    ),
1188
+                    'readonly'    => true,
1189
+                ),
1190
+
1191
+                'status'       	  => array(
1192
+                    'description' => __( 'A named status for the invoice.', 'invoicing' ),
1193
+                    'type'        => 'string',
1194
+                    'enum'        => array_keys( wpinv_get_invoice_statuses( true, true ) ),
1195
+                    'context'     => array( 'view', 'edit' ),
1196
+                    'default'	  => 'wpi-pending',
1197
+                ),
1198
+
1199
+                'status_nicename' => array(
1200
+                    'description' => __( 'A human-readable status name for the invoice.', 'invoicing' ),
1201
+                    'type'        => 'string',
1202
+                    'context'     => array( 'view', 'embed' ),
1203
+                    'readonly'    => true,
1204
+                ),
1205
+
1206
+                'post_type'       => array(
1207
+                    'description' => __( 'The post type for the invoice.', 'invoicing' ),
1208
+                    'type'        => 'string',
1209
+                    'context'     => array( 'view' ),
1210
+                    'readonly'    => true,
1211
+                ),
1212
+            ),
1213
+        );
1214
+
1215
+        // Add helpful links to the invoice schem.
1216
+        $schema['links'] = $this->get_schema_links();
1217
+
1218
+        /**
1219
+         * Filters the invoice schema for the REST API.
1220
+         *
1221
+         * Enables adding extra properties to invoices.
1222
+         *
1223
+         * @since 1.0.13
1224
+         *
1225
+         * @param array   $schema    The invoice schema.
1226
+         */
1227 1227
         $schema = apply_filters( "wpinv_rest_invoice_schema", $schema );
1228 1228
 
1229
-		// Cache the invoice schema.
1230
-		$this->schema = $schema;
1229
+        // Cache the invoice schema.
1230
+        $this->schema = $schema;
1231 1231
 		
1232
-		return $this->add_additional_fields_schema( $this->schema );
1233
-	}
1234
-
1235
-	/**
1236
-	 * Retrieve Link Description Objects that should be added to the Schema for the invoices collection.
1237
-	 *
1238
-	 * @since 1.0.13
1239
-	 *
1240
-	 * @return array
1241
-	 */
1242
-	protected function get_schema_links() {
1243
-
1244
-		$href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" );
1245
-
1246
-		$links = array();
1247
-
1248
-		$links[] = array(
1249
-			'rel'          => 'https://api.w.org/action-publish',
1250
-			'title'        => __( 'The current user can mark this invoice as completed.', 'invoicing' ),
1251
-			'href'         => $href,
1252
-			'targetSchema' => array(
1253
-				'type'       => 'object',
1254
-				'properties' => array(
1255
-					'status' => array(
1256
-						'type' => 'string',
1257
-						'enum' => array( 'publish', 'wpi-renewal' ),
1258
-					),
1259
-				),
1260
-			),
1261
-		);
1262
-
1263
-		$links[] = array(
1264
-			'rel'          => 'https://api.w.org/action-assign-author',
1265
-			'title'        => __( 'The current user can change the owner of this invoice.', 'invoicing' ),
1266
-			'href'         => $href,
1267
-			'targetSchema' => array(
1268
-				'type'       => 'object',
1269
-				'properties'   => array(
1270
-					'user_id'  => array(
1271
-						'type' => 'integer',
1272
-					),
1273
-				),
1274
-			),
1275
-		);
1276
-
1277
-		return $links;
1278
-	}
1279
-
1280
-	/**
1281
-	 * Prepares links for the request.
1282
-	 *
1283
-	 * @since 1.0.13
1284
-	 *
1285
-	 * @param WPInv_Invoice $invoice Invoice Object.
1286
-	 * @return array Links for the given invoice.
1287
-	 */
1288
-	protected function prepare_links( $invoice ) {
1289
-
1290
-		// Prepare the base REST API endpoint for invoices.
1291
-		$base = sprintf( '%s/%s', $this->namespace, $this->rest_base );
1292
-
1293
-		// Entity meta.
1294
-		$links = array(
1295
-			'self'       => array(
1296
-				'href' => rest_url( trailingslashit( $base ) . $invoice->ID ),
1297
-			),
1298
-			'collection' => array(
1299
-				'href' => rest_url( $base ),
1300
-			),
1301
-		);
1302
-
1303
-		if ( ! empty( $invoice->user_id ) ) {
1304
-			$links['user'] = array(
1305
-				'href'       => rest_url( 'wp/v2/users/' . $invoice->user_id ),
1306
-				'embeddable' => true,
1307
-			);
1308
-		}
1309
-
1310
-		/**
1311
-		 * Filters the returned invoice links for the REST API.
1312
-		 *
1313
-		 * Enables adding extra links to invoice API responses.
1314
-		 *
1315
-		 * @since 1.0.13
1316
-		 *
1317
-		 * @param array   $links    Rest links.
1318
-		 */
1319
-		return apply_filters( "wpinv_rest_invoice_links", $links );
1320
-
1321
-	}
1322
-
1323
-	/**
1324
-	 * Get the link relations available for the post and current user.
1325
-	 *
1326
-	 * @since 1.0.13
1327
-	 *
1328
-	 * @param WPInv_Invoice   $invoice    Invoice object.
1329
-	 * @param WP_REST_Request $request Request object.
1330
-	 * @return array List of link relations.
1331
-	 */
1332
-	protected function get_available_actions( $invoice, $request ) {
1333
-
1334
-		if ( 'edit' !== $request['context'] ) {
1335
-			return array();
1336
-		}
1337
-
1338
-		$rels = array();
1339
-
1340
-		// Retrieve the post type object.
1341
-		$post_type = get_post_type_object( $invoice->post_type );
1342
-
1343
-		// Mark invoice as completed.
1344
-		if ( current_user_can( $post_type->cap->publish_posts ) ) {
1345
-			$rels[] = 'https://api.w.org/action-publish';
1346
-		}
1347
-
1348
-		// Change the owner of the invoice.
1349
-		if ( current_user_can( $post_type->cap->edit_others_posts ) ) {
1350
-			$rels[] = 'https://api.w.org/action-assign-author';
1351
-		}
1352
-
1353
-		/**
1354
-		 * Filters the available invoice link relations for the REST API.
1355
-		 *
1356
-		 * Enables adding extra link relation for the current user and request to invoice responses.
1357
-		 *
1358
-		 * @since 1.0.13
1359
-		 *
1360
-		 * @param array   $rels    Available link relations.
1361
-		 */
1362
-		return apply_filters( "wpinv_rest_invoice_link_relations", $rels );
1363
-	}
1364
-
1365
-	/**
1366
-	 * Sanitizes and validates the list of post statuses.
1367
-	 *
1368
-	 * @since 1.0.13
1369
-	 *
1370
-	 * @param string|array    $statuses  One or more post statuses.
1371
-	 * @param WP_REST_Request $request   Full details about the request.
1372
-	 * @param string          $parameter Additional parameter to pass to validation.
1373
-	 * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
1374
-	 */
1375
-	public function sanitize_post_statuses( $statuses, $request, $parameter ) {
1376
-
1377
-		$statuses 	  = wp_parse_slug_list( $statuses );
1378
-		$valid_statuses = array_keys( wpinv_get_invoice_statuses( true, true ) );
1379
-		return array_intersect( $statuses, $valid_statuses );
1232
+        return $this->add_additional_fields_schema( $this->schema );
1233
+    }
1234
+
1235
+    /**
1236
+     * Retrieve Link Description Objects that should be added to the Schema for the invoices collection.
1237
+     *
1238
+     * @since 1.0.13
1239
+     *
1240
+     * @return array
1241
+     */
1242
+    protected function get_schema_links() {
1243
+
1244
+        $href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" );
1245
+
1246
+        $links = array();
1247
+
1248
+        $links[] = array(
1249
+            'rel'          => 'https://api.w.org/action-publish',
1250
+            'title'        => __( 'The current user can mark this invoice as completed.', 'invoicing' ),
1251
+            'href'         => $href,
1252
+            'targetSchema' => array(
1253
+                'type'       => 'object',
1254
+                'properties' => array(
1255
+                    'status' => array(
1256
+                        'type' => 'string',
1257
+                        'enum' => array( 'publish', 'wpi-renewal' ),
1258
+                    ),
1259
+                ),
1260
+            ),
1261
+        );
1262
+
1263
+        $links[] = array(
1264
+            'rel'          => 'https://api.w.org/action-assign-author',
1265
+            'title'        => __( 'The current user can change the owner of this invoice.', 'invoicing' ),
1266
+            'href'         => $href,
1267
+            'targetSchema' => array(
1268
+                'type'       => 'object',
1269
+                'properties'   => array(
1270
+                    'user_id'  => array(
1271
+                        'type' => 'integer',
1272
+                    ),
1273
+                ),
1274
+            ),
1275
+        );
1276
+
1277
+        return $links;
1278
+    }
1279
+
1280
+    /**
1281
+     * Prepares links for the request.
1282
+     *
1283
+     * @since 1.0.13
1284
+     *
1285
+     * @param WPInv_Invoice $invoice Invoice Object.
1286
+     * @return array Links for the given invoice.
1287
+     */
1288
+    protected function prepare_links( $invoice ) {
1289
+
1290
+        // Prepare the base REST API endpoint for invoices.
1291
+        $base = sprintf( '%s/%s', $this->namespace, $this->rest_base );
1292
+
1293
+        // Entity meta.
1294
+        $links = array(
1295
+            'self'       => array(
1296
+                'href' => rest_url( trailingslashit( $base ) . $invoice->ID ),
1297
+            ),
1298
+            'collection' => array(
1299
+                'href' => rest_url( $base ),
1300
+            ),
1301
+        );
1302
+
1303
+        if ( ! empty( $invoice->user_id ) ) {
1304
+            $links['user'] = array(
1305
+                'href'       => rest_url( 'wp/v2/users/' . $invoice->user_id ),
1306
+                'embeddable' => true,
1307
+            );
1308
+        }
1309
+
1310
+        /**
1311
+         * Filters the returned invoice links for the REST API.
1312
+         *
1313
+         * Enables adding extra links to invoice API responses.
1314
+         *
1315
+         * @since 1.0.13
1316
+         *
1317
+         * @param array   $links    Rest links.
1318
+         */
1319
+        return apply_filters( "wpinv_rest_invoice_links", $links );
1320
+
1321
+    }
1322
+
1323
+    /**
1324
+     * Get the link relations available for the post and current user.
1325
+     *
1326
+     * @since 1.0.13
1327
+     *
1328
+     * @param WPInv_Invoice   $invoice    Invoice object.
1329
+     * @param WP_REST_Request $request Request object.
1330
+     * @return array List of link relations.
1331
+     */
1332
+    protected function get_available_actions( $invoice, $request ) {
1333
+
1334
+        if ( 'edit' !== $request['context'] ) {
1335
+            return array();
1336
+        }
1337
+
1338
+        $rels = array();
1339
+
1340
+        // Retrieve the post type object.
1341
+        $post_type = get_post_type_object( $invoice->post_type );
1342
+
1343
+        // Mark invoice as completed.
1344
+        if ( current_user_can( $post_type->cap->publish_posts ) ) {
1345
+            $rels[] = 'https://api.w.org/action-publish';
1346
+        }
1347
+
1348
+        // Change the owner of the invoice.
1349
+        if ( current_user_can( $post_type->cap->edit_others_posts ) ) {
1350
+            $rels[] = 'https://api.w.org/action-assign-author';
1351
+        }
1352
+
1353
+        /**
1354
+         * Filters the available invoice link relations for the REST API.
1355
+         *
1356
+         * Enables adding extra link relation for the current user and request to invoice responses.
1357
+         *
1358
+         * @since 1.0.13
1359
+         *
1360
+         * @param array   $rels    Available link relations.
1361
+         */
1362
+        return apply_filters( "wpinv_rest_invoice_link_relations", $rels );
1363
+    }
1364
+
1365
+    /**
1366
+     * Sanitizes and validates the list of post statuses.
1367
+     *
1368
+     * @since 1.0.13
1369
+     *
1370
+     * @param string|array    $statuses  One or more post statuses.
1371
+     * @param WP_REST_Request $request   Full details about the request.
1372
+     * @param string          $parameter Additional parameter to pass to validation.
1373
+     * @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
1374
+     */
1375
+    public function sanitize_post_statuses( $statuses, $request, $parameter ) {
1376
+
1377
+        $statuses 	  = wp_parse_slug_list( $statuses );
1378
+        $valid_statuses = array_keys( wpinv_get_invoice_statuses( true, true ) );
1379
+        return array_intersect( $statuses, $valid_statuses );
1380 1380
 		
1381
-	}
1381
+    }
1382 1382
     
1383 1383
 }
1384 1384
\ No newline at end of file
Please login to merge, or discard this patch.