Passed
Push — master ( 2b7281...cc2547 )
by Brian
04:00
created
wp-ayecode-ui/includes/components/class-aui-component-pagination.php 1 patch
Indentation   +73 added lines, -73 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
4
+    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -11,77 +11,77 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class AUI_Component_Pagination {
13 13
 
14
-	/**
15
-	 * Build the component.
16
-	 *
17
-	 * @param array $args
18
-	 *
19
-	 * @return string The rendered component.
20
-	 */
21
-	public static function get( $args = array() ) {
22
-		global $wp_query;
23
-
24
-		$defaults = array(
25
-			'class'              => '',
26
-			'mid_size'           => 2,
27
-			'prev_text'          => '<i class="fas fa-chevron-left"></i>',
28
-			'next_text'          => '<i class="fas fa-chevron-right"></i>',
29
-			'screen_reader_text' => __( 'Posts navigation' ),
30
-			'before_paging' => '',
31
-			'after_paging'  => '',
32
-			'type'               => 'array',
33
-			'total'              => isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1,
34
-			'links'              => array() // an array of links if using custom links, this includes the a tag.
35
-		);
36
-
37
-		/**
38
-		 * Parse incoming $args into an array and merge it with $defaults
39
-		 */
40
-		$args = wp_parse_args( $args, $defaults );
41
-
42
-		$output = '';
43
-
44
-		// Don't print empty markup if there's only one page.
45
-		if ( $args['total'] > 1 ) {
46
-
47
-			// Set up paginated links.
48
-			$links = !empty(  $args['links'] ) ? $args['links'] :  paginate_links( $args );
49
-
50
-			$class = !empty($args['class']) ? $args['class'] : '';
51
-
52
-			// make the output bootstrap ready
53
-			$links_html = "<ul class='pagination m-0 p-0 $class'>";
54
-			if ( ! empty( $links ) ) {
55
-				foreach ( $links as $link ) {
56
-					$active = strpos( $link, 'current' ) !== false ? 'active' : '';
57
-					$links_html .= "<li class='page-item $active'>";
58
-					$links_html .= str_replace( "page-numbers", "page-link", $link );
59
-					$links_html .= "</li>";
60
-				}
61
-			}
62
-			$links_html .= "</ul>";
63
-
64
-			if ( $links ) {
65
-				$output .= '<section class="px-0 py-2 w-100">';
66
-				$output .= _navigation_markup( $links_html, 'aui-pagination', $args['screen_reader_text'] );
67
-				$output .= '</section>';
68
-			}
69
-
70
-			$output = str_replace( "screen-reader-text", "screen-reader-text sr-only", $output );
71
-			$output = str_replace( "nav-links", "aui-nav-links", $output );
72
-		}
73
-
74
-		if ( $output ) {
75
-			if ( ! empty( $args['before_paging'] ) ) {
76
-				$output = $args['before_paging'] . $output;
77
-			}
78
-
79
-			if ( ! empty( $args['after_paging'] ) ) {
80
-				$output = $output . $args['after_paging'];
81
-			}
82
-		}
83
-
84
-		return $output;
85
-	}
14
+    /**
15
+     * Build the component.
16
+     *
17
+     * @param array $args
18
+     *
19
+     * @return string The rendered component.
20
+     */
21
+    public static function get( $args = array() ) {
22
+        global $wp_query;
23
+
24
+        $defaults = array(
25
+            'class'              => '',
26
+            'mid_size'           => 2,
27
+            'prev_text'          => '<i class="fas fa-chevron-left"></i>',
28
+            'next_text'          => '<i class="fas fa-chevron-right"></i>',
29
+            'screen_reader_text' => __( 'Posts navigation' ),
30
+            'before_paging' => '',
31
+            'after_paging'  => '',
32
+            'type'               => 'array',
33
+            'total'              => isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1,
34
+            'links'              => array() // an array of links if using custom links, this includes the a tag.
35
+        );
36
+
37
+        /**
38
+         * Parse incoming $args into an array and merge it with $defaults
39
+         */
40
+        $args = wp_parse_args( $args, $defaults );
41
+
42
+        $output = '';
43
+
44
+        // Don't print empty markup if there's only one page.
45
+        if ( $args['total'] > 1 ) {
46
+
47
+            // Set up paginated links.
48
+            $links = !empty(  $args['links'] ) ? $args['links'] :  paginate_links( $args );
49
+
50
+            $class = !empty($args['class']) ? $args['class'] : '';
51
+
52
+            // make the output bootstrap ready
53
+            $links_html = "<ul class='pagination m-0 p-0 $class'>";
54
+            if ( ! empty( $links ) ) {
55
+                foreach ( $links as $link ) {
56
+                    $active = strpos( $link, 'current' ) !== false ? 'active' : '';
57
+                    $links_html .= "<li class='page-item $active'>";
58
+                    $links_html .= str_replace( "page-numbers", "page-link", $link );
59
+                    $links_html .= "</li>";
60
+                }
61
+            }
62
+            $links_html .= "</ul>";
63
+
64
+            if ( $links ) {
65
+                $output .= '<section class="px-0 py-2 w-100">';
66
+                $output .= _navigation_markup( $links_html, 'aui-pagination', $args['screen_reader_text'] );
67
+                $output .= '</section>';
68
+            }
69
+
70
+            $output = str_replace( "screen-reader-text", "screen-reader-text sr-only", $output );
71
+            $output = str_replace( "nav-links", "aui-nav-links", $output );
72
+        }
73
+
74
+        if ( $output ) {
75
+            if ( ! empty( $args['before_paging'] ) ) {
76
+                $output = $args['before_paging'] . $output;
77
+            }
78
+
79
+            if ( ! empty( $args['after_paging'] ) ) {
80
+                $output = $output . $args['after_paging'];
81
+            }
82
+        }
83
+
84
+        return $output;
85
+    }
86 86
 
87 87
 }
88 88
\ No newline at end of file
Please login to merge, or discard this patch.
ayecode/wp-ayecode-ui/includes/components/class-aui-component-helper.php 1 patch
Indentation   +245 added lines, -245 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
4
+    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -11,249 +11,249 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class AUI_Component_Helper {
13 13
 
14
-	/**
15
-	 * A component helper for generating a input name.
16
-	 *
17
-	 * @param $text
18
-	 *
19
-	 * @return string
20
-	 */
21
-	public static function name($text,$multiple = false){
22
-		$output = '';
23
-
24
-		if($text){
25
-			$is_multiple = strpos($text, '[]') !== false ? '[]' : '';
26
-			$output = ' name="'.sanitize_html_class($text).$is_multiple.'" ';
27
-		}
28
-
29
-		return $output;
30
-	}
31
-
32
-	/**
33
-	 * A component helper for generating a item id.
34
-	 *
35
-	 * @param $text string The text to be used as the value.
36
-	 *
37
-	 * @return string The sanitized item.
38
-	 */
39
-	public static function id($text){
40
-		$output = '';
41
-
42
-		if($text){
43
-			$output = ' id="'.sanitize_html_class($text).'" ';
44
-		}
45
-
46
-		return $output;
47
-	}
48
-
49
-	/**
50
-	 * A component helper for generating a item title.
51
-	 *
52
-	 * @param $text string The text to be used as the value.
53
-	 *
54
-	 * @return string The sanitized item.
55
-	 */
56
-	public static function title($text){
57
-		$output = '';
58
-
59
-		if($text){
60
-			$output = ' title="'.esc_attr($text).'" ';
61
-		}
62
-
63
-		return $output;
64
-	}
65
-
66
-	/**
67
-	 * A component helper for generating a item value.
68
-	 *
69
-	 * @param $text string The text to be used as the value.
70
-	 *
71
-	 * @return string The sanitized item.
72
-	 */
73
-	public static function value($text){
74
-		$output = '';
75
-
76
-		if($text){
77
-			$output = ' value="'.sanitize_text_field($text).'" ';
78
-		}
79
-
80
-		return $output;
81
-	}
82
-
83
-	/**
84
-	 * A component helper for generating a item class attribute.
85
-	 *
86
-	 * @param $text string The text to be used as the value.
87
-	 *
88
-	 * @return string The sanitized item.
89
-	 */
90
-	public static function class_attr($text){
91
-		$output = '';
92
-
93
-		if($text){
94
-			$classes = self::esc_classes($text);
95
-			if(!empty($classes)){
96
-				$output = ' class="'.$classes.'" ';
97
-			}
98
-		}
99
-
100
-		return $output;
101
-	}
102
-
103
-	/**
104
-	 * Escape a string of classes.
105
-	 *
106
-	 * @param $text
107
-	 *
108
-	 * @return string
109
-	 */
110
-	public static function esc_classes($text){
111
-		$output = '';
112
-
113
-		if($text){
114
-			$classes = explode(" ",$text);
115
-			$classes = array_map("trim",$classes);
116
-			$classes = array_map("sanitize_html_class",$classes);
117
-			if(!empty($classes)){
118
-				$output = implode(" ",$classes);
119
-			}
120
-		}
121
-
122
-		return $output;
123
-
124
-	}
125
-
126
-	/**
127
-	 * @param $args
128
-	 *
129
-	 * @return string
130
-	 */
131
-	public static function data_attributes($args){
132
-		$output = '';
133
-
134
-		if(!empty($args)){
135
-
136
-			foreach($args as $key => $val){
137
-				if(substr( $key, 0, 5 ) === "data-"){
138
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
139
-				}
140
-			}
141
-		}
142
-
143
-		return $output;
144
-	}
145
-
146
-	/**
147
-	 * @param $args
148
-	 *
149
-	 * @return string
150
-	 */
151
-	public static function aria_attributes($args){
152
-		$output = '';
153
-
154
-		if(!empty($args)){
155
-
156
-			foreach($args as $key => $val){
157
-				if(substr( $key, 0, 5 ) === "aria-"){
158
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
159
-				}
160
-			}
161
-		}
162
-
163
-		return $output;
164
-	}
165
-
166
-	/**
167
-	 * Build a font awesome icon from a class.
168
-	 *
169
-	 * @param $class
170
-	 * @param bool $space_after
171
-	 * @param array $extra_attributes An array of extra attributes.
172
-	 *
173
-	 * @return string
174
-	 */
175
-	public static function icon($class,$space_after = false, $extra_attributes = array()){
176
-		$output = '';
177
-
178
-		if($class){
179
-			$classes = self::esc_classes($class);
180
-			if(!empty($classes)){
181
-				$output = '<i class="'.$classes.'" ';
182
-				// extra attributes
183
-				if(!empty($extra_attributes)){
184
-					$output .= AUI_Component_Helper::extra_attributes($extra_attributes);
185
-				}
186
-				$output .= '></i>';
187
-				if($space_after){
188
-					$output .= " ";
189
-				}
190
-			}
191
-		}
192
-
193
-		return $output;
194
-	}
195
-
196
-	/**
197
-	 * @param $args
198
-	 *
199
-	 * @return string
200
-	 */
201
-	public static function extra_attributes($args){
202
-		$output = '';
203
-
204
-		if(!empty($args)){
205
-
206
-			if( is_array($args) ){
207
-				foreach($args as $key => $val){
208
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
209
-				}
210
-			}else{
211
-				$output .= ' '.$args.' ';
212
-			}
213
-
214
-		}
215
-
216
-		return $output;
217
-	}
218
-
219
-	/**
220
-	 * @param $args
221
-	 *
222
-	 * @return string
223
-	 */
224
-	public static function help_text($text){
225
-		$output = '';
226
-
227
-		if($text){
228
-			$output .= '<small class="form-text text-muted">'.wp_kses_post($text).'</small>';
229
-		}
230
-
231
-
232
-		return $output;
233
-	}
234
-
235
-	/**
236
-	 * Replace element require context with JS.
237
-	 *
238
-	 * @param $input
239
-	 *
240
-	 * @return string|void
241
-	 */
242
-	public static function element_require( $input ) {
243
-
244
-		$input = str_replace( "'", '"', $input );// we only want double quotes
245
-
246
-		$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
247
-			"jQuery(form).find('[data-argument=\"",
248
-			"\"]').find('input,select,textarea').val()",
249
-			"\"]').find('input:checked').val()",
250
-		), $input ) );
251
-
252
-		if($output){
253
-			$output = ' data-element-require="'.$output.'" ';
254
-		}
255
-
256
-		return $output;
257
-	}
14
+    /**
15
+     * A component helper for generating a input name.
16
+     *
17
+     * @param $text
18
+     *
19
+     * @return string
20
+     */
21
+    public static function name($text,$multiple = false){
22
+        $output = '';
23
+
24
+        if($text){
25
+            $is_multiple = strpos($text, '[]') !== false ? '[]' : '';
26
+            $output = ' name="'.sanitize_html_class($text).$is_multiple.'" ';
27
+        }
28
+
29
+        return $output;
30
+    }
31
+
32
+    /**
33
+     * A component helper for generating a item id.
34
+     *
35
+     * @param $text string The text to be used as the value.
36
+     *
37
+     * @return string The sanitized item.
38
+     */
39
+    public static function id($text){
40
+        $output = '';
41
+
42
+        if($text){
43
+            $output = ' id="'.sanitize_html_class($text).'" ';
44
+        }
45
+
46
+        return $output;
47
+    }
48
+
49
+    /**
50
+     * A component helper for generating a item title.
51
+     *
52
+     * @param $text string The text to be used as the value.
53
+     *
54
+     * @return string The sanitized item.
55
+     */
56
+    public static function title($text){
57
+        $output = '';
58
+
59
+        if($text){
60
+            $output = ' title="'.esc_attr($text).'" ';
61
+        }
62
+
63
+        return $output;
64
+    }
65
+
66
+    /**
67
+     * A component helper for generating a item value.
68
+     *
69
+     * @param $text string The text to be used as the value.
70
+     *
71
+     * @return string The sanitized item.
72
+     */
73
+    public static function value($text){
74
+        $output = '';
75
+
76
+        if($text){
77
+            $output = ' value="'.sanitize_text_field($text).'" ';
78
+        }
79
+
80
+        return $output;
81
+    }
82
+
83
+    /**
84
+     * A component helper for generating a item class attribute.
85
+     *
86
+     * @param $text string The text to be used as the value.
87
+     *
88
+     * @return string The sanitized item.
89
+     */
90
+    public static function class_attr($text){
91
+        $output = '';
92
+
93
+        if($text){
94
+            $classes = self::esc_classes($text);
95
+            if(!empty($classes)){
96
+                $output = ' class="'.$classes.'" ';
97
+            }
98
+        }
99
+
100
+        return $output;
101
+    }
102
+
103
+    /**
104
+     * Escape a string of classes.
105
+     *
106
+     * @param $text
107
+     *
108
+     * @return string
109
+     */
110
+    public static function esc_classes($text){
111
+        $output = '';
112
+
113
+        if($text){
114
+            $classes = explode(" ",$text);
115
+            $classes = array_map("trim",$classes);
116
+            $classes = array_map("sanitize_html_class",$classes);
117
+            if(!empty($classes)){
118
+                $output = implode(" ",$classes);
119
+            }
120
+        }
121
+
122
+        return $output;
123
+
124
+    }
125
+
126
+    /**
127
+     * @param $args
128
+     *
129
+     * @return string
130
+     */
131
+    public static function data_attributes($args){
132
+        $output = '';
133
+
134
+        if(!empty($args)){
135
+
136
+            foreach($args as $key => $val){
137
+                if(substr( $key, 0, 5 ) === "data-"){
138
+                    $output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
139
+                }
140
+            }
141
+        }
142
+
143
+        return $output;
144
+    }
145
+
146
+    /**
147
+     * @param $args
148
+     *
149
+     * @return string
150
+     */
151
+    public static function aria_attributes($args){
152
+        $output = '';
153
+
154
+        if(!empty($args)){
155
+
156
+            foreach($args as $key => $val){
157
+                if(substr( $key, 0, 5 ) === "aria-"){
158
+                    $output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
159
+                }
160
+            }
161
+        }
162
+
163
+        return $output;
164
+    }
165
+
166
+    /**
167
+     * Build a font awesome icon from a class.
168
+     *
169
+     * @param $class
170
+     * @param bool $space_after
171
+     * @param array $extra_attributes An array of extra attributes.
172
+     *
173
+     * @return string
174
+     */
175
+    public static function icon($class,$space_after = false, $extra_attributes = array()){
176
+        $output = '';
177
+
178
+        if($class){
179
+            $classes = self::esc_classes($class);
180
+            if(!empty($classes)){
181
+                $output = '<i class="'.$classes.'" ';
182
+                // extra attributes
183
+                if(!empty($extra_attributes)){
184
+                    $output .= AUI_Component_Helper::extra_attributes($extra_attributes);
185
+                }
186
+                $output .= '></i>';
187
+                if($space_after){
188
+                    $output .= " ";
189
+                }
190
+            }
191
+        }
192
+
193
+        return $output;
194
+    }
195
+
196
+    /**
197
+     * @param $args
198
+     *
199
+     * @return string
200
+     */
201
+    public static function extra_attributes($args){
202
+        $output = '';
203
+
204
+        if(!empty($args)){
205
+
206
+            if( is_array($args) ){
207
+                foreach($args as $key => $val){
208
+                    $output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
209
+                }
210
+            }else{
211
+                $output .= ' '.$args.' ';
212
+            }
213
+
214
+        }
215
+
216
+        return $output;
217
+    }
218
+
219
+    /**
220
+     * @param $args
221
+     *
222
+     * @return string
223
+     */
224
+    public static function help_text($text){
225
+        $output = '';
226
+
227
+        if($text){
228
+            $output .= '<small class="form-text text-muted">'.wp_kses_post($text).'</small>';
229
+        }
230
+
231
+
232
+        return $output;
233
+    }
234
+
235
+    /**
236
+     * Replace element require context with JS.
237
+     *
238
+     * @param $input
239
+     *
240
+     * @return string|void
241
+     */
242
+    public static function element_require( $input ) {
243
+
244
+        $input = str_replace( "'", '"', $input );// we only want double quotes
245
+
246
+        $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
247
+            "jQuery(form).find('[data-argument=\"",
248
+            "\"]').find('input,select,textarea').val()",
249
+            "\"]').find('input:checked').val()",
250
+        ), $input ) );
251
+
252
+        if($output){
253
+            $output = ' data-element-require="'.$output.'" ';
254
+        }
255
+
256
+        return $output;
257
+    }
258 258
 
259 259
 }
260 260
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/includes/class-aui.php 1 patch
Indentation   +202 added lines, -202 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
4
+    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -11,206 +11,206 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class AUI {
13 13
 
14
-	/**
15
-	 * Holds the class instance.
16
-	 *
17
-	 * @since 1.0.0
18
-	 * @var null
19
-	 */
20
-	private static $instance = null;
21
-
22
-	/**
23
-	 * Holds the current AUI version number.
24
-	 *
25
-	 * @var string $ver The current version number.
26
-	 */
27
-	public static $ver = '0.1.24';
28
-
29
-	/**
30
-	 * There can be only one.
31
-	 *
32
-	 * @since 1.0.0
33
-	 * @return AUI|null
34
-	 */
35
-	public static function instance() {
36
-		if ( self::$instance == null ) {
37
-			self::$instance = new AUI();
38
-		}
39
-
40
-		return self::$instance;
41
-	}
42
-
43
-	/**
44
-	 * AUI constructor.
45
-	 *
46
-	 * @since 1.0.0
47
-	 */
48
-	private function __construct() {
49
-		if ( function_exists( "__autoload" ) ) {
50
-			spl_autoload_register( "__autoload" );
51
-		}
52
-		spl_autoload_register( array( $this, 'autoload' ) );
53
-	}
54
-
55
-	/**
56
-	 * Autoload any components on the fly.
57
-	 *
58
-	 * @since 1.0.0
59
-	 *
60
-	 * @param $classname
61
-	 */
62
-	private function autoload( $classname ) {
63
-		$class     = str_replace( '_', '-', strtolower( $classname ) );
64
-		$file_path = trailingslashit( dirname( __FILE__ ) ) . "components/class-" . $class . '.php';
65
-		if ( $file_path && is_readable( $file_path ) ) {
66
-			include_once( $file_path );
67
-		}
68
-	}
69
-
70
-	public function render( $items = array() ) {
71
-		$output = '';
72
-
73
-		if ( ! empty( $items ) ) {
74
-			foreach ( $items as $args ) {
75
-				$render = isset( $args['render'] ) ? $args['render'] : '';
76
-				if ( $render && method_exists( __CLASS__, $render ) ) {
77
-					$output .= $this->$render( $args );
78
-				}
79
-			}
80
-		}
81
-
82
-		return $output;
83
-	}
84
-
85
-	/**
86
-	 * Render and return a bootstrap alert component.
87
-	 *
88
-	 * @since 1.0.0
89
-	 *
90
-	 * @param array $args
91
-	 *
92
-	 * @return string The rendered component.
93
-	 */
94
-	public function alert( $args = array() ) {
95
-		return AUI_Component_Alert::get( $args );
96
-	}
97
-
98
-	/**
99
-	 * Render and return a bootstrap input component.
100
-	 *
101
-	 * @since 1.0.0
102
-	 *
103
-	 * @param array $args
104
-	 *
105
-	 * @return string The rendered component.
106
-	 */
107
-	public function input( $args = array() ) {
108
-		return AUI_Component_Input::input( $args );
109
-	}
110
-
111
-	/**
112
-	 * Render and return a bootstrap textarea component.
113
-	 *
114
-	 * @since 1.0.0
115
-	 *
116
-	 * @param array $args
117
-	 *
118
-	 * @return string The rendered component.
119
-	 */
120
-	public function textarea( $args = array() ) {
121
-		return AUI_Component_Input::textarea( $args );
122
-	}
123
-
124
-	/**
125
-	 * Render and return a bootstrap button component.
126
-	 *
127
-	 * @since 1.0.0
128
-	 *
129
-	 * @param array $args
130
-	 *
131
-	 * @return string The rendered component.
132
-	 */
133
-	public function button( $args = array() ) {
134
-		return AUI_Component_Button::get( $args );
135
-	}
136
-
137
-	/**
138
-	 * Render and return a bootstrap button component.
139
-	 *
140
-	 * @since 1.0.0
141
-	 *
142
-	 * @param array $args
143
-	 *
144
-	 * @return string The rendered component.
145
-	 */
146
-	public function badge( $args = array() ) {
147
-		$defaults = array(
148
-			'class' => 'badge badge-primary align-middle',
149
-		);
150
-
151
-		// maybe set type
152
-		if ( empty( $args['href'] ) ) {
153
-			$defaults['type'] = 'badge';
154
-		}
155
-
156
-		/**
157
-		 * Parse incoming $args into an array and merge it with $defaults
158
-		 */
159
-		$args = wp_parse_args( $args, $defaults );
160
-
161
-		return AUI_Component_Button::get( $args );
162
-	}
163
-
164
-	/**
165
-	 * Render and return a bootstrap dropdown component.
166
-	 *
167
-	 * @since 1.0.0
168
-	 *
169
-	 * @param array $args
170
-	 *
171
-	 * @return string The rendered component.
172
-	 */
173
-	public function dropdown( $args = array() ) {
174
-		return AUI_Component_Dropdown::get( $args );
175
-	}
176
-
177
-	/**
178
-	 * Render and return a bootstrap select component.
179
-	 *
180
-	 * @since 1.0.0
181
-	 *
182
-	 * @param array $args
183
-	 *
184
-	 * @return string The rendered component.
185
-	 */
186
-	public function select( $args = array() ) {
187
-		return AUI_Component_Input::select( $args );
188
-	}
189
-
190
-	/**
191
-	 * Render and return a bootstrap radio component.
192
-	 *
193
-	 * @since 1.0.0
194
-	 *
195
-	 * @param array $args
196
-	 *
197
-	 * @return string The rendered component.
198
-	 */
199
-	public function radio( $args = array() ) {
200
-		return AUI_Component_Input::radio( $args );
201
-	}
202
-
203
-	/**
204
-	 * Render and return a bootstrap pagination component.
205
-	 *
206
-	 * @since 1.0.0
207
-	 *
208
-	 * @param array $args
209
-	 *
210
-	 * @return string The rendered component.
211
-	 */
212
-	public function pagination( $args = array() ) {
213
-		return AUI_Component_Pagination::get( $args );
214
-	}
14
+    /**
15
+     * Holds the class instance.
16
+     *
17
+     * @since 1.0.0
18
+     * @var null
19
+     */
20
+    private static $instance = null;
21
+
22
+    /**
23
+     * Holds the current AUI version number.
24
+     *
25
+     * @var string $ver The current version number.
26
+     */
27
+    public static $ver = '0.1.24';
28
+
29
+    /**
30
+     * There can be only one.
31
+     *
32
+     * @since 1.0.0
33
+     * @return AUI|null
34
+     */
35
+    public static function instance() {
36
+        if ( self::$instance == null ) {
37
+            self::$instance = new AUI();
38
+        }
39
+
40
+        return self::$instance;
41
+    }
42
+
43
+    /**
44
+     * AUI constructor.
45
+     *
46
+     * @since 1.0.0
47
+     */
48
+    private function __construct() {
49
+        if ( function_exists( "__autoload" ) ) {
50
+            spl_autoload_register( "__autoload" );
51
+        }
52
+        spl_autoload_register( array( $this, 'autoload' ) );
53
+    }
54
+
55
+    /**
56
+     * Autoload any components on the fly.
57
+     *
58
+     * @since 1.0.0
59
+     *
60
+     * @param $classname
61
+     */
62
+    private function autoload( $classname ) {
63
+        $class     = str_replace( '_', '-', strtolower( $classname ) );
64
+        $file_path = trailingslashit( dirname( __FILE__ ) ) . "components/class-" . $class . '.php';
65
+        if ( $file_path && is_readable( $file_path ) ) {
66
+            include_once( $file_path );
67
+        }
68
+    }
69
+
70
+    public function render( $items = array() ) {
71
+        $output = '';
72
+
73
+        if ( ! empty( $items ) ) {
74
+            foreach ( $items as $args ) {
75
+                $render = isset( $args['render'] ) ? $args['render'] : '';
76
+                if ( $render && method_exists( __CLASS__, $render ) ) {
77
+                    $output .= $this->$render( $args );
78
+                }
79
+            }
80
+        }
81
+
82
+        return $output;
83
+    }
84
+
85
+    /**
86
+     * Render and return a bootstrap alert component.
87
+     *
88
+     * @since 1.0.0
89
+     *
90
+     * @param array $args
91
+     *
92
+     * @return string The rendered component.
93
+     */
94
+    public function alert( $args = array() ) {
95
+        return AUI_Component_Alert::get( $args );
96
+    }
97
+
98
+    /**
99
+     * Render and return a bootstrap input component.
100
+     *
101
+     * @since 1.0.0
102
+     *
103
+     * @param array $args
104
+     *
105
+     * @return string The rendered component.
106
+     */
107
+    public function input( $args = array() ) {
108
+        return AUI_Component_Input::input( $args );
109
+    }
110
+
111
+    /**
112
+     * Render and return a bootstrap textarea component.
113
+     *
114
+     * @since 1.0.0
115
+     *
116
+     * @param array $args
117
+     *
118
+     * @return string The rendered component.
119
+     */
120
+    public function textarea( $args = array() ) {
121
+        return AUI_Component_Input::textarea( $args );
122
+    }
123
+
124
+    /**
125
+     * Render and return a bootstrap button component.
126
+     *
127
+     * @since 1.0.0
128
+     *
129
+     * @param array $args
130
+     *
131
+     * @return string The rendered component.
132
+     */
133
+    public function button( $args = array() ) {
134
+        return AUI_Component_Button::get( $args );
135
+    }
136
+
137
+    /**
138
+     * Render and return a bootstrap button component.
139
+     *
140
+     * @since 1.0.0
141
+     *
142
+     * @param array $args
143
+     *
144
+     * @return string The rendered component.
145
+     */
146
+    public function badge( $args = array() ) {
147
+        $defaults = array(
148
+            'class' => 'badge badge-primary align-middle',
149
+        );
150
+
151
+        // maybe set type
152
+        if ( empty( $args['href'] ) ) {
153
+            $defaults['type'] = 'badge';
154
+        }
155
+
156
+        /**
157
+         * Parse incoming $args into an array and merge it with $defaults
158
+         */
159
+        $args = wp_parse_args( $args, $defaults );
160
+
161
+        return AUI_Component_Button::get( $args );
162
+    }
163
+
164
+    /**
165
+     * Render and return a bootstrap dropdown component.
166
+     *
167
+     * @since 1.0.0
168
+     *
169
+     * @param array $args
170
+     *
171
+     * @return string The rendered component.
172
+     */
173
+    public function dropdown( $args = array() ) {
174
+        return AUI_Component_Dropdown::get( $args );
175
+    }
176
+
177
+    /**
178
+     * Render and return a bootstrap select component.
179
+     *
180
+     * @since 1.0.0
181
+     *
182
+     * @param array $args
183
+     *
184
+     * @return string The rendered component.
185
+     */
186
+    public function select( $args = array() ) {
187
+        return AUI_Component_Input::select( $args );
188
+    }
189
+
190
+    /**
191
+     * Render and return a bootstrap radio component.
192
+     *
193
+     * @since 1.0.0
194
+     *
195
+     * @param array $args
196
+     *
197
+     * @return string The rendered component.
198
+     */
199
+    public function radio( $args = array() ) {
200
+        return AUI_Component_Input::radio( $args );
201
+    }
202
+
203
+    /**
204
+     * Render and return a bootstrap pagination component.
205
+     *
206
+     * @since 1.0.0
207
+     *
208
+     * @param array $args
209
+     *
210
+     * @return string The rendered component.
211
+     */
212
+    public function pagination( $args = array() ) {
213
+        return AUI_Component_Pagination::get( $args );
214
+    }
215 215
 
216 216
 }
217 217
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php 1 patch
Indentation   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -7,40 +7,40 @@
 block discarded – undo
7 7
  * Bail if we are not in WP.
8 8
  */
9 9
 if ( ! defined( 'ABSPATH' ) ) {
10
-	exit;
10
+    exit;
11 11
 }
12 12
 
13 13
 /**
14 14
  * Set the version only if its the current newest while loading.
15 15
  */
16 16
 add_action('after_setup_theme', function () {
17
-	global $ayecode_ui_version,$ayecode_ui_file_key;
18
-	$this_version = "0.1.24";
19
-	if(version_compare($this_version , $ayecode_ui_version, '>')){
20
-		$ayecode_ui_version = $this_version ;
21
-		$ayecode_ui_file_key = wp_hash( __FILE__ );
22
-	}
17
+    global $ayecode_ui_version,$ayecode_ui_file_key;
18
+    $this_version = "0.1.24";
19
+    if(version_compare($this_version , $ayecode_ui_version, '>')){
20
+        $ayecode_ui_version = $this_version ;
21
+        $ayecode_ui_file_key = wp_hash( __FILE__ );
22
+    }
23 23
 },0);
24 24
 
25 25
 /**
26 26
  * Load this version of WP Bootstrap Settings only if the file hash is the current one.
27 27
  */
28 28
 add_action('after_setup_theme', function () {
29
-	global $ayecode_ui_file_key;
30
-	if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
-		include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
-		include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
-	}
29
+    global $ayecode_ui_file_key;
30
+    if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
+        include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
+        include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
+    }
34 34
 },1);
35 35
 
36 36
 /**
37 37
  * Add the function that calls the class.
38 38
  */
39 39
 if(!function_exists('aui')){
40
-	function aui(){
41
-		if(!class_exists("AUI",false)){
42
-			return false;
43
-		}
44
-		return AUI::instance();
45
-	}
40
+    function aui(){
41
+        if(!class_exists("AUI",false)){
42
+            return false;
43
+        }
44
+        return AUI::instance();
45
+    }
46 46
 }
47 47
\ No newline at end of file
Please login to merge, or discard this patch.
includes/admin/class-getpaid-metaboxes.php 1 patch
Indentation   +157 added lines, -157 removed lines patch added patch discarded remove patch
@@ -12,186 +12,186 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Metaboxes {
14 14
 
15
-	/**
16
-	 * Only save metaboxes once.
17
-	 *
18
-	 * @var boolean
19
-	 */
20
-	private static $saved_meta_boxes = false;
15
+    /**
16
+     * Only save metaboxes once.
17
+     *
18
+     * @var boolean
19
+     */
20
+    private static $saved_meta_boxes = false;
21 21
 
22 22
     /**
23
-	 * Hook in methods.
24
-	 */
25
-	public static function init() {
26
-
27
-		// Register metaboxes.
28
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::add_meta_boxes', 5, 2 );
29
-
30
-		// Remove metaboxes.
31
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::remove_meta_boxes', 30 );
32
-
33
-		// Rename metaboxes.
34
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::rename_meta_boxes', 45 );
35
-
36
-		// Save metaboxes.
37
-		add_action( 'save_post', 'GetPaid_Metaboxes::save_meta_boxes', 1, 2 );
38
-	}
39
-
40
-	/**
41
-	 * Register core metaboxes.
42
-	 */
43
-	public static function add_meta_boxes( $post_type, $post ) {
44
-		global $wpinv_euvat;
45
-
46
-		// For invoices...
47
-		if ( $post_type == 'wpi_invoice' ) {
48
-			$invoice = new WPInv_Invoice( $post );
49
-
50
-			// Resend invoice.
51
-			if ( ! $invoice->is_draft() && ! $invoice->is_paid() ) {
52
-				add_meta_box( 'wpinv-mb-resend-invoice', __( 'Resend Invoice', 'invoicing' ), 'GetPaid_Meta_Box_Resend_Invoice::output', 'wpi_invoice', 'side', 'low' );
53
-			}
54
-
55
-			// Subscriptions.
56
-			$subscription = getpaid_get_invoice_subscription( $invoice );
57
-			if ( ! empty( $subscription ) ) {
58
-				add_meta_box( 'wpinv-mb-subscriptions', __( 'Subscription Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output', 'wpi_invoice', 'advanced' );
59
-				add_meta_box( 'wpinv-mb-subscription-invoices', __( 'Related Payments', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_invoices', 'wpi_invoice', 'advanced' );
60
-			}
61
-
62
-			// Invoice details.
63
-			add_meta_box( 'wpinv-details', __( 'Invoice Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Details::output', 'wpi_invoice', 'side', 'default' );
23
+     * Hook in methods.
24
+     */
25
+    public static function init() {
26
+
27
+        // Register metaboxes.
28
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::add_meta_boxes', 5, 2 );
29
+
30
+        // Remove metaboxes.
31
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::remove_meta_boxes', 30 );
32
+
33
+        // Rename metaboxes.
34
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::rename_meta_boxes', 45 );
35
+
36
+        // Save metaboxes.
37
+        add_action( 'save_post', 'GetPaid_Metaboxes::save_meta_boxes', 1, 2 );
38
+    }
39
+
40
+    /**
41
+     * Register core metaboxes.
42
+     */
43
+    public static function add_meta_boxes( $post_type, $post ) {
44
+        global $wpinv_euvat;
45
+
46
+        // For invoices...
47
+        if ( $post_type == 'wpi_invoice' ) {
48
+            $invoice = new WPInv_Invoice( $post );
49
+
50
+            // Resend invoice.
51
+            if ( ! $invoice->is_draft() && ! $invoice->is_paid() ) {
52
+                add_meta_box( 'wpinv-mb-resend-invoice', __( 'Resend Invoice', 'invoicing' ), 'GetPaid_Meta_Box_Resend_Invoice::output', 'wpi_invoice', 'side', 'low' );
53
+            }
54
+
55
+            // Subscriptions.
56
+            $subscription = getpaid_get_invoice_subscription( $invoice );
57
+            if ( ! empty( $subscription ) ) {
58
+                add_meta_box( 'wpinv-mb-subscriptions', __( 'Subscription Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output', 'wpi_invoice', 'advanced' );
59
+                add_meta_box( 'wpinv-mb-subscription-invoices', __( 'Related Payments', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_invoices', 'wpi_invoice', 'advanced' );
60
+            }
61
+
62
+            // Invoice details.
63
+            add_meta_box( 'wpinv-details', __( 'Invoice Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Details::output', 'wpi_invoice', 'side', 'default' );
64 64
 			
65
-			// Payment details.
66
-			if ( ! $invoice->is_draft() ) {
67
-				add_meta_box( 'wpinv-payment-meta', __( 'Payment Meta', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Payment_Meta::output', 'wpi_invoice', 'side', 'default' );
68
-			}
65
+            // Payment details.
66
+            if ( ! $invoice->is_draft() ) {
67
+                add_meta_box( 'wpinv-payment-meta', __( 'Payment Meta', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Payment_Meta::output', 'wpi_invoice', 'side', 'default' );
68
+            }
69 69
 
70
-			// Billing details.
71
-			add_meta_box( 'wpinv-address', __( 'Billing Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Address::output', 'wpi_invoice', 'normal', 'high' );
70
+            // Billing details.
71
+            add_meta_box( 'wpinv-address', __( 'Billing Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Address::output', 'wpi_invoice', 'normal', 'high' );
72 72
 			
73
-			// Invoice items.
74
-			add_meta_box( 'wpinv-items', __( 'Invoice Items', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Items::output', 'wpi_invoice', 'normal', 'high' );
73
+            // Invoice items.
74
+            add_meta_box( 'wpinv-items', __( 'Invoice Items', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Items::output', 'wpi_invoice', 'normal', 'high' );
75 75
 			
76
-			// Invoice notes.
77
-			add_meta_box( 'wpinv-notes', __( 'Invoice Notes', 'invoicing' ), 'WPInv_Meta_Box_Notes::output', 'wpi_invoice', 'side', 'low' );
76
+            // Invoice notes.
77
+            add_meta_box( 'wpinv-notes', __( 'Invoice Notes', 'invoicing' ), 'WPInv_Meta_Box_Notes::output', 'wpi_invoice', 'side', 'low' );
78 78
 
79
-			// Payment form information.
80
-			if ( ! empty( $post->ID ) && get_post_meta( $post->ID, 'payment_form_data', true ) ) {
81
-				add_meta_box( 'wpinv-invoice-payment-form-details', __( 'Payment Form Details', 'invoicing' ), 'WPInv_Meta_Box_Payment_Form::output_details', 'wpi_invoice', 'side', 'high' );
82
-			}
83
-		}
79
+            // Payment form information.
80
+            if ( ! empty( $post->ID ) && get_post_meta( $post->ID, 'payment_form_data', true ) ) {
81
+                add_meta_box( 'wpinv-invoice-payment-form-details', __( 'Payment Form Details', 'invoicing' ), 'WPInv_Meta_Box_Payment_Form::output_details', 'wpi_invoice', 'side', 'high' );
82
+            }
83
+        }
84 84
 
85
-		// For payment forms.
86
-		if ( $post_type == 'wpi_payment_form' ) {
85
+        // For payment forms.
86
+        if ( $post_type == 'wpi_payment_form' ) {
87 87
 
88
-			// Design payment form.
89
-			add_meta_box( 'wpinv-payment-form-design', __( 'Payment Form', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form::output', 'wpi_payment_form', 'normal' );
88
+            // Design payment form.
89
+            add_meta_box( 'wpinv-payment-form-design', __( 'Payment Form', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form::output', 'wpi_payment_form', 'normal' );
90 90
 
91
-			// Payment form information.
92
-			add_meta_box( 'wpinv-payment-form-info', __( 'Details', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form_Info::output', 'wpi_payment_form', 'side' );
91
+            // Payment form information.
92
+            add_meta_box( 'wpinv-payment-form-info', __( 'Details', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form_Info::output', 'wpi_payment_form', 'side' );
93 93
 
94
-		}
94
+        }
95 95
 
96
-		// For invoice items.
97
-		if ( $post_type == 'wpi_item' ) {
96
+        // For invoice items.
97
+        if ( $post_type == 'wpi_item' ) {
98 98
 
99
-			// Item details.
100
-			add_meta_box( 'wpinv_item_details', __( 'Item Details', 'invoicing' ), 'GetPaid_Meta_Box_Item_Details::output', 'wpi_item', 'normal', 'high' );
99
+            // Item details.
100
+            add_meta_box( 'wpinv_item_details', __( 'Item Details', 'invoicing' ), 'GetPaid_Meta_Box_Item_Details::output', 'wpi_item', 'normal', 'high' );
101 101
 
102
-			// If taxes are enabled, register the tax metabox.
103
-			if ( $wpinv_euvat->allow_vat_rules() || $wpinv_euvat->allow_vat_classes() ) {
104
-				add_meta_box( 'wpinv_item_vat', __( 'VAT / Tax', 'invoicing' ), 'GetPaid_Meta_Box_Item_VAT::output', 'wpi_item', 'normal', 'high' );
105
-			}
102
+            // If taxes are enabled, register the tax metabox.
103
+            if ( $wpinv_euvat->allow_vat_rules() || $wpinv_euvat->allow_vat_classes() ) {
104
+                add_meta_box( 'wpinv_item_vat', __( 'VAT / Tax', 'invoicing' ), 'GetPaid_Meta_Box_Item_VAT::output', 'wpi_item', 'normal', 'high' );
105
+            }
106 106
 
107
-			// Item info.
108
-			add_meta_box( 'wpinv_field_item_info', __( 'Item info', 'invoicing' ), 'GetPaid_Meta_Box_Item_Info::output', 'wpi_item', 'side', 'core' );
107
+            // Item info.
108
+            add_meta_box( 'wpinv_field_item_info', __( 'Item info', 'invoicing' ), 'GetPaid_Meta_Box_Item_Info::output', 'wpi_item', 'side', 'core' );
109 109
 
110
-		}
110
+        }
111 111
 
112
-		// For invoice discounts.
113
-		if ( $post_type == 'wpi_discount' ) {
114
-			add_meta_box( 'wpinv_discount_details', __( 'Discount Details', 'invoicing' ), 'GetPaid_Meta_Box_Discount_Details::output', 'wpi_discount', 'normal', 'high' );
115
-		}
112
+        // For invoice discounts.
113
+        if ( $post_type == 'wpi_discount' ) {
114
+            add_meta_box( 'wpinv_discount_details', __( 'Discount Details', 'invoicing' ), 'GetPaid_Meta_Box_Discount_Details::output', 'wpi_discount', 'normal', 'high' );
115
+        }
116 116
 		
117 117
 
118
-	}
118
+    }
119 119
 
120
-	/**
121
-	 * Remove some metaboxes.
122
-	 */
123
-	public static function remove_meta_boxes() {
124
-		remove_meta_box( 'wpseo_meta', 'wpi_invoice', 'normal' );
125
-	}
120
+    /**
121
+     * Remove some metaboxes.
122
+     */
123
+    public static function remove_meta_boxes() {
124
+        remove_meta_box( 'wpseo_meta', 'wpi_invoice', 'normal' );
125
+    }
126 126
 
127
-	/**
128
-	 * Rename other metaboxes.
129
-	 */
130
-	public static function rename_meta_boxes() {
127
+    /**
128
+     * Rename other metaboxes.
129
+     */
130
+    public static function rename_meta_boxes() {
131 131
 		
132
-	}
133
-
134
-	/**
135
-	 * Check if we're saving, then trigger an action based on the post type.
136
-	 *
137
-	 * @param  int    $post_id Post ID.
138
-	 * @param  object $post Post object.
139
-	 */
140
-	public static function save_meta_boxes( $post_id, $post ) {
141
-		$post_id = absint( $post_id );
142
-		$data    = wp_unslash( $_POST );
143
-
144
-		// Do not save for ajax requests.
145
-		if ( ( defined( 'DOING_AJAX') && DOING_AJAX ) || isset( $_REQUEST['bulk_edit'] ) ) {
146
-			return;
147
-		}
148
-
149
-		// $post_id and $post are required
150
-		if ( empty( $post_id ) || empty( $post ) || self::$saved_meta_boxes ) {
151
-			return;
152
-		}
153
-
154
-		// Dont' save meta boxes for revisions or autosaves.
155
-		if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) {
156
-			return;
157
-		}
158
-
159
-		// Check the nonce.
160
-		if ( empty( $data['getpaid_meta_nonce'] ) || ! wp_verify_nonce( $data['getpaid_meta_nonce'], 'getpaid_meta_nonce' ) ) {
161
-			return;
162
-		}
163
-
164
-		// Check the post being saved == the $post_id to prevent triggering this call for other save_post events.
165
-		if ( empty( $data['post_ID'] ) || absint( $data['post_ID'] ) !== $post_id ) {
166
-			return;
167
-		}
168
-
169
-		// Check user has permission to edit.
170
-		if ( ! current_user_can( 'edit_post', $post_id ) ) {
171
-			return;
172
-		}
173
-
174
-		// Ensure this is our post type.
175
-		$post_types_map = array(
176
-			'wpi_invoice'      => 'GetPaid_Meta_Box_Invoice_Address',
177
-			'wpi_quote'        => 'GetPaid_Meta_Box_Invoice_Address',
178
-			'wpi_item'         => 'GetPaid_Meta_Box_Item_Details',
179
-			'wpi_payment_form' => 'GetPaid_Meta_Box_Payment_Form',
180
-			'wpi_discount'     => 'GetPaid_Meta_Box_Discount_Details',
181
-		);
182
-
183
-		// Is this our post type?
184
-		if ( empty( $post->post_type ) || ! isset( $post_types_map[ $post->post_type ] ) ) {
185
-			return;
186
-		}
187
-
188
-		// We need this save event to run once to avoid potential endless loops.
189
-		self::$saved_meta_boxes = true;
132
+    }
133
+
134
+    /**
135
+     * Check if we're saving, then trigger an action based on the post type.
136
+     *
137
+     * @param  int    $post_id Post ID.
138
+     * @param  object $post Post object.
139
+     */
140
+    public static function save_meta_boxes( $post_id, $post ) {
141
+        $post_id = absint( $post_id );
142
+        $data    = wp_unslash( $_POST );
143
+
144
+        // Do not save for ajax requests.
145
+        if ( ( defined( 'DOING_AJAX') && DOING_AJAX ) || isset( $_REQUEST['bulk_edit'] ) ) {
146
+            return;
147
+        }
148
+
149
+        // $post_id and $post are required
150
+        if ( empty( $post_id ) || empty( $post ) || self::$saved_meta_boxes ) {
151
+            return;
152
+        }
153
+
154
+        // Dont' save meta boxes for revisions or autosaves.
155
+        if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) {
156
+            return;
157
+        }
158
+
159
+        // Check the nonce.
160
+        if ( empty( $data['getpaid_meta_nonce'] ) || ! wp_verify_nonce( $data['getpaid_meta_nonce'], 'getpaid_meta_nonce' ) ) {
161
+            return;
162
+        }
163
+
164
+        // Check the post being saved == the $post_id to prevent triggering this call for other save_post events.
165
+        if ( empty( $data['post_ID'] ) || absint( $data['post_ID'] ) !== $post_id ) {
166
+            return;
167
+        }
168
+
169
+        // Check user has permission to edit.
170
+        if ( ! current_user_can( 'edit_post', $post_id ) ) {
171
+            return;
172
+        }
173
+
174
+        // Ensure this is our post type.
175
+        $post_types_map = array(
176
+            'wpi_invoice'      => 'GetPaid_Meta_Box_Invoice_Address',
177
+            'wpi_quote'        => 'GetPaid_Meta_Box_Invoice_Address',
178
+            'wpi_item'         => 'GetPaid_Meta_Box_Item_Details',
179
+            'wpi_payment_form' => 'GetPaid_Meta_Box_Payment_Form',
180
+            'wpi_discount'     => 'GetPaid_Meta_Box_Discount_Details',
181
+        );
182
+
183
+        // Is this our post type?
184
+        if ( empty( $post->post_type ) || ! isset( $post_types_map[ $post->post_type ] ) ) {
185
+            return;
186
+        }
187
+
188
+        // We need this save event to run once to avoid potential endless loops.
189
+        self::$saved_meta_boxes = true;
190 190
 		
191
-		// Save the post.
192
-		$class = $post_types_map[ $post->post_type ];
193
-		$class::save( $post_id, $_POST, $post );
191
+        // Save the post.
192
+        $class = $post_types_map[ $post->post_type ];
193
+        $class::save( $post_id, $_POST, $post );
194 194
 
195
-	}
195
+    }
196 196
 
197 197
 }
Please login to merge, or discard this patch.
includes/subscription-functions.php 1 patch
Indentation   +146 added lines, -146 removed lines patch added patch discarded remove patch
@@ -17,28 +17,28 @@  discard block
 block discarded – undo
17 17
  */
18 18
 function getpaid_get_subscriptions( $args = array(), $return = 'results' ) {
19 19
 
20
-	// Do not retrieve all fields if we just want the count.
21
-	if ( 'count' == $return ) {
22
-		$args['fields'] = 'id';
23
-		$args['number'] = 1;
24
-	}
20
+    // Do not retrieve all fields if we just want the count.
21
+    if ( 'count' == $return ) {
22
+        $args['fields'] = 'id';
23
+        $args['number'] = 1;
24
+    }
25 25
 
26
-	// Do not count all matches if we just want the results.
27
-	if ( 'results' == $return ) {
28
-		$args['count_total'] = false;
29
-	}
26
+    // Do not count all matches if we just want the results.
27
+    if ( 'results' == $return ) {
28
+        $args['count_total'] = false;
29
+    }
30 30
 
31
-	$query = new GetPaid_Subscriptions_Query( $args );
31
+    $query = new GetPaid_Subscriptions_Query( $args );
32 32
 
33
-	if ( 'results' == $return ) {
34
-		return $query->get_results();
35
-	}
33
+    if ( 'results' == $return ) {
34
+        return $query->get_results();
35
+    }
36 36
 
37
-	if ( 'count' == $return ) {
38
-		return $query->get_total();
39
-	}
37
+    if ( 'count' == $return ) {
38
+        return $query->get_total();
39
+    }
40 40
 
41
-	return $query;
41
+    return $query;
42 42
 }
43 43
 
44 44
 /**
@@ -48,18 +48,18 @@  discard block
 block discarded – undo
48 48
  */
49 49
 function getpaid_get_subscription_statuses() {
50 50
 
51
-	return apply_filters(
52
-		'getpaid_get_subscription_statuses',
53
-		array(
54
-			'pending'    => __( 'Pending', 'invoicing' ),
55
-			'trialling'  => __( 'Trialing', 'invoicing' ),
56
-			'active'     => __( 'Active', 'invoicing' ),
57
-			'failing'    => __( 'Failing', 'invoicing' ),
58
-			'expired'    => __( 'Expired', 'invoicing' ),
59
-			'completed'  => __( 'Complete', 'invoicing' ),
60
-			'cancelled'  => __( 'Cancelled', 'invoicing' ),
61
-		)
62
-	);
51
+    return apply_filters(
52
+        'getpaid_get_subscription_statuses',
53
+        array(
54
+            'pending'    => __( 'Pending', 'invoicing' ),
55
+            'trialling'  => __( 'Trialing', 'invoicing' ),
56
+            'active'     => __( 'Active', 'invoicing' ),
57
+            'failing'    => __( 'Failing', 'invoicing' ),
58
+            'expired'    => __( 'Expired', 'invoicing' ),
59
+            'completed'  => __( 'Complete', 'invoicing' ),
60
+            'cancelled'  => __( 'Cancelled', 'invoicing' ),
61
+        )
62
+    );
63 63
 
64 64
 }
65 65
 
@@ -69,8 +69,8 @@  discard block
 block discarded – undo
69 69
  * @return string
70 70
  */
71 71
 function getpaid_get_subscription_status_label( $status ) {
72
-	$statuses = getpaid_get_subscription_statuses();
73
-	return isset( $statuses[ $status ] ) ? $statuses[ $status ] : ucfirst( sanitize_text_field( $status ) );
72
+    $statuses = getpaid_get_subscription_statuses();
73
+    return isset( $statuses[ $status ] ) ? $statuses[ $status ] : ucfirst( sanitize_text_field( $status ) );
74 74
 }
75 75
 
76 76
 /**
@@ -80,18 +80,18 @@  discard block
 block discarded – undo
80 80
  */
81 81
 function getpaid_get_subscription_status_classes() {
82 82
 
83
-	return apply_filters(
84
-		'getpaid_get_subscription_status_classes',
85
-		array(
86
-			'pending'    => 'getpaid-item-status-pending',
87
-			'trialling'  => 'getpaid-item-status-trial',
88
-			'active'     => 'getpaid-item-status-info',
89
-			'failing'    => 'getpaid-item-status-failing',
90
-			'expired'    => 'getpaid-item-status-expired',
91
-			'completed'  => 'getpaid-item-status-success',
92
-			'cancelled'  => 'getpaid-item-status-canceled',
93
-		)
94
-	);
83
+    return apply_filters(
84
+        'getpaid_get_subscription_status_classes',
85
+        array(
86
+            'pending'    => 'getpaid-item-status-pending',
87
+            'trialling'  => 'getpaid-item-status-trial',
88
+            'active'     => 'getpaid-item-status-info',
89
+            'failing'    => 'getpaid-item-status-failing',
90
+            'expired'    => 'getpaid-item-status-expired',
91
+            'completed'  => 'getpaid-item-status-success',
92
+            'cancelled'  => 'getpaid-item-status-canceled',
93
+        )
94
+    );
95 95
 
96 96
 }
97 97
 
@@ -102,15 +102,15 @@  discard block
 block discarded – undo
102 102
  */
103 103
 function getpaid_get_subscription_status_counts( $args = array() ) {
104 104
 
105
-	$statuses = array_keys( getpaid_get_subscription_statuses() );
106
-	$counts   = array();
105
+    $statuses = array_keys( getpaid_get_subscription_statuses() );
106
+    $counts   = array();
107 107
 
108
-	foreach ( $statuses as $status ) {
109
-		$_args             = wp_parse_args( "status=$status", $args );
110
-		$counts[ $status ] = getpaid_get_subscriptions( $_args, 'count' );
111
-	}
108
+    foreach ( $statuses as $status ) {
109
+        $_args             = wp_parse_args( "status=$status", $args );
110
+        $counts[ $status ] = getpaid_get_subscriptions( $_args, 'count' );
111
+    }
112 112
 
113
-	return $counts;
113
+    return $counts;
114 114
 
115 115
 }
116 116
 
@@ -121,32 +121,32 @@  discard block
 block discarded – undo
121 121
  */
122 122
 function getpaid_get_subscription_periods() {
123 123
 
124
-	return apply_filters(
125
-		'getpaid_get_subscription_periods',
126
-		array(
124
+    return apply_filters(
125
+        'getpaid_get_subscription_periods',
126
+        array(
127 127
 
128
-			'day'   => array(
129
-				'singular' => __( '%s day', 'invoicing' ),
130
-				'plural'   => __( '%d days', 'invoicing' ),
131
-			),
128
+            'day'   => array(
129
+                'singular' => __( '%s day', 'invoicing' ),
130
+                'plural'   => __( '%d days', 'invoicing' ),
131
+            ),
132 132
 
133
-			'week'   => array(
134
-				'singular' => __( '%s week', 'invoicing' ),
135
-				'plural'   => __( '%d weeks', 'invoicing' ),
136
-			),
133
+            'week'   => array(
134
+                'singular' => __( '%s week', 'invoicing' ),
135
+                'plural'   => __( '%d weeks', 'invoicing' ),
136
+            ),
137 137
 
138
-			'month'   => array(
139
-				'singular' => __( '%s month', 'invoicing' ),
140
-				'plural'   => __( '%d months', 'invoicing' ),
141
-			),
138
+            'month'   => array(
139
+                'singular' => __( '%s month', 'invoicing' ),
140
+                'plural'   => __( '%d months', 'invoicing' ),
141
+            ),
142 142
 
143
-			'year'   => array(
144
-				'singular' => __( '%s year', 'invoicing' ),
145
-				'plural'   => __( '%d years', 'invoicing' ),
146
-			),
143
+            'year'   => array(
144
+                'singular' => __( '%s year', 'invoicing' ),
145
+                'plural'   => __( '%d years', 'invoicing' ),
146
+            ),
147 147
 
148
-		)
149
-	);
148
+        )
149
+    );
150 150
 
151 151
 }
152 152
 
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
  * @return int
158 158
  */
159 159
 function getpaid_get_subscription_trial_period_interval( $trial_period ) {
160
-	return (int) preg_replace( '/[^0-9]/', '', $trial_period );
160
+    return (int) preg_replace( '/[^0-9]/', '', $trial_period );
161 161
 }
162 162
 
163 163
 /**
@@ -167,7 +167,7 @@  discard block
 block discarded – undo
167 167
  * @return string
168 168
  */
169 169
 function getpaid_get_subscription_trial_period_period( $trial_period ) {
170
-	return preg_replace( '/[^a-z]/', '', strtolower( $trial_period ) );
170
+    return preg_replace( '/[^a-z]/', '', strtolower( $trial_period ) );
171 171
 }
172 172
 
173 173
 /**
@@ -178,8 +178,8 @@  discard block
 block discarded – undo
178 178
  * @return string
179 179
  */
180 180
 function getpaid_get_subscription_period_label( $period, $interval = 1, $singular_prefix = '1' ) {
181
-	$label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label(  $period, $interval ) : getpaid_get_singular_subscription_period_label( $period, $singular_prefix );
182
-	return strtolower( sanitize_text_field( $label ) );
181
+    $label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label(  $period, $interval ) : getpaid_get_singular_subscription_period_label( $period, $singular_prefix );
182
+    return strtolower( sanitize_text_field( $label ) );
183 183
 }
184 184
 
185 185
 /**
@@ -190,22 +190,22 @@  discard block
 block discarded – undo
190 190
  */
191 191
 function getpaid_get_singular_subscription_period_label( $period, $singular_prefix = '1' ) {
192 192
 
193
-	$periods = getpaid_get_subscription_periods();
194
-	$period  = strtolower( $period );
193
+    $periods = getpaid_get_subscription_periods();
194
+    $period  = strtolower( $period );
195 195
 
196
-	if ( isset( $periods[ $period ] ) ) {
197
-		return sprintf( $periods[ $period ]['singular'], $singular_prefix );
198
-	}
196
+    if ( isset( $periods[ $period ] ) ) {
197
+        return sprintf( $periods[ $period ]['singular'], $singular_prefix );
198
+    }
199 199
 
200
-	// Backwards compatibility.
201
-	foreach ( $periods as $key => $data ) {
202
-		if ( strpos( $key, $period ) === 0 ) {
203
-			return sprintf( $data['singular'], $singular_prefix );
204
-		}
205
-	}
200
+    // Backwards compatibility.
201
+    foreach ( $periods as $key => $data ) {
202
+        if ( strpos( $key, $period ) === 0 ) {
203
+            return sprintf( $data['singular'], $singular_prefix );
204
+        }
205
+    }
206 206
 
207
-	// Invalid string.
208
-	return '';
207
+    // Invalid string.
208
+    return '';
209 209
 }
210 210
 
211 211
 /**
@@ -217,22 +217,22 @@  discard block
 block discarded – undo
217 217
  */
218 218
 function getpaid_get_plural_subscription_period_label( $period, $interval ) {
219 219
 
220
-	$periods = getpaid_get_subscription_periods();
221
-	$period  = strtolower( $period );
220
+    $periods = getpaid_get_subscription_periods();
221
+    $period  = strtolower( $period );
222 222
 
223
-	if ( isset( $periods[ $period ] ) ) {
224
-		return sprintf( $periods[ $period ]['plural'], $interval );
225
-	}
223
+    if ( isset( $periods[ $period ] ) ) {
224
+        return sprintf( $periods[ $period ]['plural'], $interval );
225
+    }
226 226
 
227
-	// Backwards compatibility.
228
-	foreach ( $periods as $key => $data ) {
229
-		if ( strpos( $key, $period ) === 0 ) {
230
-			return sprintf( $data['plural'], $interval );
231
-		}
232
-	}
227
+    // Backwards compatibility.
228
+    foreach ( $periods as $key => $data ) {
229
+        if ( strpos( $key, $period ) === 0 ) {
230
+            return sprintf( $data['plural'], $interval );
231
+        }
232
+    }
233 233
 
234
-	// Invalid string.
235
-	return '';
234
+    // Invalid string.
235
+    return '';
236 236
 }
237 237
 
238 238
 /**
@@ -243,50 +243,50 @@  discard block
 block discarded – undo
243 243
  */
244 244
 function getpaid_get_formatted_subscription_amount( $subscription ) {
245 245
 
246
-	$initial   = wpinv_price( wpinv_format_amount( $subscription->get_initial_amount() ), $subscription->get_parent_payment()->get_currency() );
247
-	$recurring = wpinv_price( wpinv_format_amount( $subscription->get_recurring_amount() ), $subscription->get_parent_payment()->get_currency() );
248
-	$period    = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' );
246
+    $initial   = wpinv_price( wpinv_format_amount( $subscription->get_initial_amount() ), $subscription->get_parent_payment()->get_currency() );
247
+    $recurring = wpinv_price( wpinv_format_amount( $subscription->get_recurring_amount() ), $subscription->get_parent_payment()->get_currency() );
248
+    $period    = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' );
249 249
 
250
-	// Trial periods.
251
-	if ( $subscription->has_trial_period() ) {
250
+    // Trial periods.
251
+    if ( $subscription->has_trial_period() ) {
252 252
 
253
-		$trial_period   = getpaid_get_subscription_trial_period_period( $subscription->get_trial_period() );
254
-		$trial_interval = getpaid_get_subscription_trial_period_interval( $subscription->get_trial_period() );
255
-		return sprintf(
253
+        $trial_period   = getpaid_get_subscription_trial_period_period( $subscription->get_trial_period() );
254
+        $trial_interval = getpaid_get_subscription_trial_period_interval( $subscription->get_trial_period() );
255
+        return sprintf(
256 256
 
257
-			// translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period
258
-			_x( '%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing' ),
259
-			$initial,
260
-			getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
261
-			$recurring,
262
-			$period
257
+            // translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period
258
+            _x( '%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing' ),
259
+            $initial,
260
+            getpaid_get_subscription_period_label( $trial_period, $trial_interval ),
261
+            $recurring,
262
+            $period
263 263
 
264
-		);
264
+        );
265 265
 
266
-	}
266
+    }
267 267
 
268
-	if ( $initial != $recurring ) {
268
+    if ( $initial != $recurring ) {
269 269
 
270
-		return sprintf(
270
+        return sprintf(
271 271
 
272
-			// translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period
273
-			_x( 'Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing' ),
274
-			$initial,
275
-			$recurring,
276
-			$period
272
+            // translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period
273
+            _x( 'Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing' ),
274
+            $initial,
275
+            $recurring,
276
+            $period
277 277
 
278
-		);
278
+        );
279 279
 
280
-	}
280
+    }
281 281
 
282
-	return sprintf(
282
+    return sprintf(
283 283
 
284
-		// translators: $1: is the recurring amount, $2: is the recurring period
285
-		_x( '%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing' ),
286
-		$initial,
287
-		$period
284
+        // translators: $1: is the recurring amount, $2: is the recurring period
285
+        _x( '%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing' ),
286
+        $initial,
287
+        $period
288 288
 
289
-	);
289
+    );
290 290
 
291 291
 }
292 292
 
@@ -297,7 +297,7 @@  discard block
 block discarded – undo
297 297
  * @return WPInv_Subscription|bool
298 298
  */
299 299
 function getpaid_get_invoice_subscription( $invoice ) {
300
-	return getpaid_subscriptions()->get_invoice_subscription( $invoice );
300
+    return getpaid_subscriptions()->get_invoice_subscription( $invoice );
301 301
 }
302 302
 
303 303
 /**
@@ -306,10 +306,10 @@  discard block
 block discarded – undo
306 306
  * @param WPInv_Invoice $invoice
307 307
  */
308 308
 function getpaid_activate_invoice_subscription( $invoice ) {
309
-	$subscription = getpaid_get_invoice_subscription( $invoice );
310
-	if ( is_a( $subscription, 'WPInv_Subscription' ) ) {
311
-		$subscription->activate();
312
-	}
309
+    $subscription = getpaid_get_invoice_subscription( $invoice );
310
+    if ( is_a( $subscription, 'WPInv_Subscription' ) ) {
311
+        $subscription->activate();
312
+    }
313 313
 }
314 314
 
315 315
 /**
@@ -318,7 +318,7 @@  discard block
 block discarded – undo
318 318
  * @return WPInv_Subscriptions
319 319
  */
320 320
 function getpaid_subscriptions() {
321
-	return getpaid()->get( 'subscriptions' );
321
+    return getpaid()->get( 'subscriptions' );
322 322
 }
323 323
 
324 324
 /**
@@ -336,14 +336,14 @@  discard block
 block discarded – undo
336 336
         return false;
337 337
     }
338 338
 
339
-	// Fetch the invoiec subscription.
340
-	$subscription = getpaid_get_subscriptions(
341
-		array(
342
-			'invoice_in' => $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id(),
343
-			'number'     => 1,
344
-		)
345
-	);
339
+    // Fetch the invoiec subscription.
340
+    $subscription = getpaid_get_subscriptions(
341
+        array(
342
+            'invoice_in' => $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id(),
343
+            'number'     => 1,
344
+        )
345
+    );
346 346
 
347
-	return empty( $subscription ) ? false : $subscription[0];
347
+    return empty( $subscription ) ? false : $subscription[0];
348 348
 
349 349
 }
Please login to merge, or discard this patch.
includes/class-getpaid-invoice-notification-emails.php 1 patch
Indentation   +386 added lines, -386 removed lines patch added patch discarded remove patch
@@ -12,438 +12,438 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Invoice_Notification_Emails {
14 14
 
15
-	/**
16
-	 * The array of invoice email actions.
17
-	 *
18
-	 * @param array
19
-	 */
20
-	public $invoice_actions;
21
-
22
-	/**
23
-	 * Class constructor
24
-	 *
25
-	 */
26
-	public function __construct() {
27
-
28
-		$this->invoice_actions = apply_filters(
29
-			'getpaid_notification_email_invoice_triggers',
30
-			array(
31
-				'getpaid_new_invoice'                   => array( 'new_invoice', 'user_invoice' ),
32
-				'getpaid_invoice_status_wpi-cancelled'  => 'cancelled_invoice',
33
-				'getpaid_invoice_status_wpi-failed'     => 'failed_invoice',
34
-				'getpaid_invoice_status_wpi-onhold'     => 'onhold_invoice',
35
-				'getpaid_invoice_status_wpi-processing' => 'processing_invoice',
36
-				'getpaid_invoice_status_publish'        => 'completed_invoice',
37
-				'getpaid_invoice_status_wpi-renewal'    => 'completed_invoice',
38
-				'getpaid_invoice_status_wpi-refunded'   => 'refunded_invoice',
39
-				'getpaid_new_customer_note'             => 'user_note',
40
-				'getpaid_daily_maintenance'             => 'overdue',
41
-			)
42
-		);
43
-
44
-		$this->init_hooks();
45
-
46
-	}
47
-
48
-	/**
49
-	 * Registers email hooks.
50
-	 */
51
-	public function init_hooks() {
52
-
53
-		add_filter( 'getpaid_get_email_merge_tags', array( $this, 'invoice_merge_tags' ), 10, 2 );
54
-		add_filter( 'getpaid_invoice_email_recipients', array( $this, 'filter_email_recipients' ), 10, 2 );
55
-
56
-		foreach ( $this->invoice_actions as $hook => $email_type ) {
57
-			$this->init_email_type_hook( $hook, $email_type );
58
-		}
59
-	}
60
-
61
-	/**
62
-	 * Registers an email hook for an invoice action.
63
-	 * 
64
-	 * @param string $hook
65
-	 * @param string|array $email_type
66
-	 */
67
-	public function init_email_type_hook( $hook, $email_type ) {
68
-
69
-		$email_type = wpinv_parse_list( $email_type );
70
-
71
-		foreach ( $email_type as $type ) {
72
-
73
-			$email = new GetPaid_Notification_Email( $type );
74
-
75
-			// Abort if it is not active.
76
-			if ( ! $email->is_active() ) {
77
-				continue;
78
-			}
79
-
80
-			if ( method_exists( $this, $type ) ) {
81
-				add_action( $hook, array( $this, $type ), 100, 2 );
82
-				continue;
83
-			}
84
-
85
-			do_action( 'getpaid_invoice_init_email_type_hook', $type );
86
-		}
87
-
88
-	}
89
-
90
-	/**
91
-	 * Filters invoice merge tags.
92
-	 *
93
-	 * @param array $merge_tags
94
-	 * @param mixed|WPInv_Invoice|WPInv_Subscription $object
95
-	 */
96
-	public function invoice_merge_tags( $merge_tags, $object ) {
97
-
98
-		if ( is_a( $object, 'WPInv_Invoice' ) ) {
99
-			return array_merge(
100
-				$merge_tags,
101
-				$this->get_invoice_merge_tags( $object )
102
-			);
103
-		}
104
-
105
-		if ( is_a( $object, 'WPInv_Subscription' ) ) {
106
-			return array_merge(
107
-				$merge_tags,
108
-				$this->get_invoice_merge_tags( $object->get_parent_payment() )
109
-			);
110
-		}
111
-
112
-		return $merge_tags;
113
-
114
-	}
115
-
116
-	/**
117
-	 * Generates invoice merge tags.
118
-	 *
119
-	 * @param WPInv_Invoice $invoice
120
-	 * @return array
121
-	 */
122
-	public function get_invoice_merge_tags( $invoice ) {
123
-
124
-		// Abort if it does not exist.
125
-		if ( ! $invoice->get_id() ) {
126
-			return array();
127
-		}
128
-
129
-		return array(
130
-			'{name}'                => sanitize_text_field( $invoice->get_user_full_name() ),
131
-			'{full_name}'           => sanitize_text_field( $invoice->get_user_full_name() ),
132
-			'{first_name}'          => sanitize_text_field( $invoice->get_first_name() ),
133
-			'{last_name}'           => sanitize_text_field( $invoice->get_last_name() ),
134
-			'{email}'               => sanitize_email( $invoice->get_email() ),
135
-			'{invoice_number}'      => sanitize_text_field( $invoice->get_number() ),
136
-			'{invoice_currency}'    => sanitize_text_field( $invoice->get_currency() ),
137
-			'{invoice_total}'       => wpinv_price( wpinv_format_amount( $invoice->get_total() ) ),
138
-			'{invoice_link}'        => esc_url( $invoice->get_view_url() ),
139
-			'{invoice_pay_link}'    => esc_url( $invoice->get_checkout_payment_url() ),
140
-			'{invoice_receipt_link}'=> esc_url( $invoice->get_receipt_url() ),
141
-			'{invoice_date}'        => getpaid_format_date_value( $invoice->get_date_created() ),
142
-			'{invoice_due_date}'    => getpaid_format_date_value( $invoice->get_due_date(), __( 'on receipt', 'invoicing' ) ),
143
-			'{invoice_quote}'       => sanitize_text_field( $invoice->get_type() ),
144
-			'{invoice_label}'       => sanitize_text_field( ucfirst( $invoice->get_type() ) ),
145
-			'{invoice_description}' => wp_kses_post( $invoice->get_description() ),
146
-			'{subscription_name}'   => wp_kses_post( $invoice->get_subscription_name() ),
147
-			'{is_was}'              => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
148
-		);
149
-
150
-	}
151
-
152
-	/**
153
-	 * Helper function to send an email.
154
-	 *
155
-	 * @param WPInv_Invoice $invoice
156
-	 * @param GetPaid_Notification_Email $email
157
-	 * @param string $type
158
-	 * @param string|array $recipients
159
-	 * @param array $extra_args Extra template args.
160
-	 */
161
-	public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
162
-
163
-		do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
164
-
165
-		$mailer     = new GetPaid_Notification_Email_Sender();
166
-		$merge_tags = $email->get_merge_tags();
167
-
168
-		$result = $mailer->send(
169
-			apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
170
-			$email->add_merge_tags( $email->get_subject(), $merge_tags ),
171
-			$email->get_content( $merge_tags, $extra_args ),
172
-			$email->get_attachments()
173
-		);
174
-
175
-		// Maybe send a copy to the admin.
176
-		if ( $email->include_admin_bcc() ) {
177
-			$mailer->send(
178
-				wpinv_get_admin_email(),
179
-				$email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
180
-				$email->get_content( $merge_tags ),
181
-				$email->get_attachments()
182
-			);
183
-		}
184
-
185
-		if ( ! $result ) {
186
-			$invoice->add_note( sprintf( __( 'Failed sending %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );
187
-		}
188
-
189
-		do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
190
-
191
-		return $result;
192
-	}
193
-
194
-	/**
195
-	 * Also send emails to any cc users.
196
-	 *
197
-	 * @param array $recipients
198
-	 * @param GetPaid_Notification_Email $email
199
-	 */
200
-	public function filter_email_recipients( $recipients, $email ) {
201
-
202
-		if ( ! $email->is_admin_email() ) {
203
-			$cc = $email->object->get_email_cc();
204
-
205
-			if ( ! empty( $cc ) ) {
206
-				$cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
207
-				$recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
208
-			}
209
-
210
-		}
211
-
212
-		return $recipients;
213
-
214
-	}
215
-
216
-	/**
217
-	 * Sends a new invoice notification.
218
-	 *
219
-	 * @param WPInv_Invoice $invoice
220
-	 */
221
-	public function new_invoice( $invoice ) {
222
-
223
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
224
-		$recipient = wpinv_get_admin_email();
225
-
226
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
227
-
228
-	}
229
-
230
-	/**
231
-	 * Sends a cancelled invoice notification.
232
-	 *
233
-	 * @param WPInv_Invoice $invoice
234
-	 */
235
-	public function cancelled_invoice( $invoice ) {
236
-
237
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
238
-		$recipient = wpinv_get_admin_email();
15
+    /**
16
+     * The array of invoice email actions.
17
+     *
18
+     * @param array
19
+     */
20
+    public $invoice_actions;
21
+
22
+    /**
23
+     * Class constructor
24
+     *
25
+     */
26
+    public function __construct() {
27
+
28
+        $this->invoice_actions = apply_filters(
29
+            'getpaid_notification_email_invoice_triggers',
30
+            array(
31
+                'getpaid_new_invoice'                   => array( 'new_invoice', 'user_invoice' ),
32
+                'getpaid_invoice_status_wpi-cancelled'  => 'cancelled_invoice',
33
+                'getpaid_invoice_status_wpi-failed'     => 'failed_invoice',
34
+                'getpaid_invoice_status_wpi-onhold'     => 'onhold_invoice',
35
+                'getpaid_invoice_status_wpi-processing' => 'processing_invoice',
36
+                'getpaid_invoice_status_publish'        => 'completed_invoice',
37
+                'getpaid_invoice_status_wpi-renewal'    => 'completed_invoice',
38
+                'getpaid_invoice_status_wpi-refunded'   => 'refunded_invoice',
39
+                'getpaid_new_customer_note'             => 'user_note',
40
+                'getpaid_daily_maintenance'             => 'overdue',
41
+            )
42
+        );
43
+
44
+        $this->init_hooks();
45
+
46
+    }
47
+
48
+    /**
49
+     * Registers email hooks.
50
+     */
51
+    public function init_hooks() {
52
+
53
+        add_filter( 'getpaid_get_email_merge_tags', array( $this, 'invoice_merge_tags' ), 10, 2 );
54
+        add_filter( 'getpaid_invoice_email_recipients', array( $this, 'filter_email_recipients' ), 10, 2 );
55
+
56
+        foreach ( $this->invoice_actions as $hook => $email_type ) {
57
+            $this->init_email_type_hook( $hook, $email_type );
58
+        }
59
+    }
60
+
61
+    /**
62
+     * Registers an email hook for an invoice action.
63
+     * 
64
+     * @param string $hook
65
+     * @param string|array $email_type
66
+     */
67
+    public function init_email_type_hook( $hook, $email_type ) {
68
+
69
+        $email_type = wpinv_parse_list( $email_type );
70
+
71
+        foreach ( $email_type as $type ) {
72
+
73
+            $email = new GetPaid_Notification_Email( $type );
74
+
75
+            // Abort if it is not active.
76
+            if ( ! $email->is_active() ) {
77
+                continue;
78
+            }
79
+
80
+            if ( method_exists( $this, $type ) ) {
81
+                add_action( $hook, array( $this, $type ), 100, 2 );
82
+                continue;
83
+            }
84
+
85
+            do_action( 'getpaid_invoice_init_email_type_hook', $type );
86
+        }
87
+
88
+    }
89
+
90
+    /**
91
+     * Filters invoice merge tags.
92
+     *
93
+     * @param array $merge_tags
94
+     * @param mixed|WPInv_Invoice|WPInv_Subscription $object
95
+     */
96
+    public function invoice_merge_tags( $merge_tags, $object ) {
97
+
98
+        if ( is_a( $object, 'WPInv_Invoice' ) ) {
99
+            return array_merge(
100
+                $merge_tags,
101
+                $this->get_invoice_merge_tags( $object )
102
+            );
103
+        }
104
+
105
+        if ( is_a( $object, 'WPInv_Subscription' ) ) {
106
+            return array_merge(
107
+                $merge_tags,
108
+                $this->get_invoice_merge_tags( $object->get_parent_payment() )
109
+            );
110
+        }
111
+
112
+        return $merge_tags;
113
+
114
+    }
115
+
116
+    /**
117
+     * Generates invoice merge tags.
118
+     *
119
+     * @param WPInv_Invoice $invoice
120
+     * @return array
121
+     */
122
+    public function get_invoice_merge_tags( $invoice ) {
123
+
124
+        // Abort if it does not exist.
125
+        if ( ! $invoice->get_id() ) {
126
+            return array();
127
+        }
128
+
129
+        return array(
130
+            '{name}'                => sanitize_text_field( $invoice->get_user_full_name() ),
131
+            '{full_name}'           => sanitize_text_field( $invoice->get_user_full_name() ),
132
+            '{first_name}'          => sanitize_text_field( $invoice->get_first_name() ),
133
+            '{last_name}'           => sanitize_text_field( $invoice->get_last_name() ),
134
+            '{email}'               => sanitize_email( $invoice->get_email() ),
135
+            '{invoice_number}'      => sanitize_text_field( $invoice->get_number() ),
136
+            '{invoice_currency}'    => sanitize_text_field( $invoice->get_currency() ),
137
+            '{invoice_total}'       => wpinv_price( wpinv_format_amount( $invoice->get_total() ) ),
138
+            '{invoice_link}'        => esc_url( $invoice->get_view_url() ),
139
+            '{invoice_pay_link}'    => esc_url( $invoice->get_checkout_payment_url() ),
140
+            '{invoice_receipt_link}'=> esc_url( $invoice->get_receipt_url() ),
141
+            '{invoice_date}'        => getpaid_format_date_value( $invoice->get_date_created() ),
142
+            '{invoice_due_date}'    => getpaid_format_date_value( $invoice->get_due_date(), __( 'on receipt', 'invoicing' ) ),
143
+            '{invoice_quote}'       => sanitize_text_field( $invoice->get_type() ),
144
+            '{invoice_label}'       => sanitize_text_field( ucfirst( $invoice->get_type() ) ),
145
+            '{invoice_description}' => wp_kses_post( $invoice->get_description() ),
146
+            '{subscription_name}'   => wp_kses_post( $invoice->get_subscription_name() ),
147
+            '{is_was}'              => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
148
+        );
149
+
150
+    }
151
+
152
+    /**
153
+     * Helper function to send an email.
154
+     *
155
+     * @param WPInv_Invoice $invoice
156
+     * @param GetPaid_Notification_Email $email
157
+     * @param string $type
158
+     * @param string|array $recipients
159
+     * @param array $extra_args Extra template args.
160
+     */
161
+    public function send_email( $invoice, $email, $type, $recipients, $extra_args = array() ) {
162
+
163
+        do_action( 'getpaid_before_send_invoice_notification', $type, $invoice, $email );
164
+
165
+        $mailer     = new GetPaid_Notification_Email_Sender();
166
+        $merge_tags = $email->get_merge_tags();
167
+
168
+        $result = $mailer->send(
169
+            apply_filters( 'getpaid_invoice_email_recipients', wpinv_parse_list( $recipients ), $email ),
170
+            $email->add_merge_tags( $email->get_subject(), $merge_tags ),
171
+            $email->get_content( $merge_tags, $extra_args ),
172
+            $email->get_attachments()
173
+        );
174
+
175
+        // Maybe send a copy to the admin.
176
+        if ( $email->include_admin_bcc() ) {
177
+            $mailer->send(
178
+                wpinv_get_admin_email(),
179
+                $email->add_merge_tags( $email->get_subject() . __( ' - ADMIN BCC COPY', 'invoicing' ), $merge_tags ),
180
+                $email->get_content( $merge_tags ),
181
+                $email->get_attachments()
182
+            );
183
+        }
184
+
185
+        if ( ! $result ) {
186
+            $invoice->add_note( sprintf( __( 'Failed sending %s notification email.', 'invoicing' ), sanitize_key( $type ) ), false, false, true );
187
+        }
188
+
189
+        do_action( 'getpaid_after_send_invoice_notification', $type, $invoice, $email );
190
+
191
+        return $result;
192
+    }
193
+
194
+    /**
195
+     * Also send emails to any cc users.
196
+     *
197
+     * @param array $recipients
198
+     * @param GetPaid_Notification_Email $email
199
+     */
200
+    public function filter_email_recipients( $recipients, $email ) {
201
+
202
+        if ( ! $email->is_admin_email() ) {
203
+            $cc = $email->object->get_email_cc();
204
+
205
+            if ( ! empty( $cc ) ) {
206
+                $cc = array_map( 'sanitize_email', wpinv_parse_list( $cc ) );
207
+                $recipients = array_filter( array_unique( array_merge( $recipients, $cc ) ) );
208
+            }
209
+
210
+        }
211
+
212
+        return $recipients;
213
+
214
+    }
215
+
216
+    /**
217
+     * Sends a new invoice notification.
218
+     *
219
+     * @param WPInv_Invoice $invoice
220
+     */
221
+    public function new_invoice( $invoice ) {
222
+
223
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
224
+        $recipient = wpinv_get_admin_email();
225
+
226
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
227
+
228
+    }
229
+
230
+    /**
231
+     * Sends a cancelled invoice notification.
232
+     *
233
+     * @param WPInv_Invoice $invoice
234
+     */
235
+    public function cancelled_invoice( $invoice ) {
236
+
237
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
238
+        $recipient = wpinv_get_admin_email();
239 239
 
240
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
240
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
241 241
 
242
-	}
242
+    }
243 243
 
244
-	/**
245
-	 * Sends a failed invoice notification.
246
-	 *
247
-	 * @param WPInv_Invoice $invoice
248
-	 */
249
-	public function failed_invoice( $invoice ) {
244
+    /**
245
+     * Sends a failed invoice notification.
246
+     *
247
+     * @param WPInv_Invoice $invoice
248
+     */
249
+    public function failed_invoice( $invoice ) {
250 250
 
251
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
252
-		$recipient = wpinv_get_admin_email();
253
-
254
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
251
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
252
+        $recipient = wpinv_get_admin_email();
253
+
254
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
255 255
 
256
-	}
256
+    }
257 257
 
258
-	/**
259
-	 * Sends a notification whenever an invoice is put on hold.
260
-	 *
261
-	 * @param WPInv_Invoice $invoice
262
-	 */
263
-	public function onhold_invoice( $invoice ) {
258
+    /**
259
+     * Sends a notification whenever an invoice is put on hold.
260
+     *
261
+     * @param WPInv_Invoice $invoice
262
+     */
263
+    public function onhold_invoice( $invoice ) {
264 264
 
265
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
266
-		$recipient = $invoice->get_email();
265
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
266
+        $recipient = $invoice->get_email();
267 267
 
268
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
268
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
269 269
 
270
-	}
270
+    }
271 271
 
272
-	/**
273
-	 * Sends a notification whenever an invoice is marked as processing payment.
274
-	 *
275
-	 * @param WPInv_Invoice $invoice
276
-	 */
277
-	public function processing_invoice( $invoice ) {
272
+    /**
273
+     * Sends a notification whenever an invoice is marked as processing payment.
274
+     *
275
+     * @param WPInv_Invoice $invoice
276
+     */
277
+    public function processing_invoice( $invoice ) {
278 278
 
279
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
280
-		$recipient = $invoice->get_email();
279
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
280
+        $recipient = $invoice->get_email();
281 281
 
282
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
282
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
283 283
 
284
-	}
284
+    }
285 285
 
286
-	/**
287
-	 * Sends a notification whenever an invoice is paid.
288
-	 *
289
-	 * @param WPInv_Invoice $invoice
290
-	 */
291
-	public function completed_invoice( $invoice ) {
286
+    /**
287
+     * Sends a notification whenever an invoice is paid.
288
+     *
289
+     * @param WPInv_Invoice $invoice
290
+     */
291
+    public function completed_invoice( $invoice ) {
292 292
 
293
-		// (Maybe) abort if it is a renewal invoice.
294
-		if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
295
-			return;
296
-		}
293
+        // (Maybe) abort if it is a renewal invoice.
294
+        if ( $invoice->is_renewal() && ! wpinv_get_option( 'email_completed_invoice_renewal_active', false ) ) {
295
+            return;
296
+        }
297 297
 
298
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
299
-		$recipient = $invoice->get_email();
298
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
299
+        $recipient = $invoice->get_email();
300 300
 
301
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
301
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
302 302
 
303
-	}
303
+    }
304 304
 
305
-	/**
306
-	 * Sends a notification whenever an invoice is refunded.
307
-	 *
308
-	 * @param WPInv_Invoice $invoice
309
-	 */
310
-	public function refunded_invoice( $invoice ) {
305
+    /**
306
+     * Sends a notification whenever an invoice is refunded.
307
+     *
308
+     * @param WPInv_Invoice $invoice
309
+     */
310
+    public function refunded_invoice( $invoice ) {
311 311
 
312
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
313
-		$recipient = $invoice->get_email();
312
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
313
+        $recipient = $invoice->get_email();
314 314
 
315
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
315
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
316 316
 
317
-	}
317
+    }
318 318
 
319
-	/**
320
-	 * Notifies a user about new invoices
321
-	 *
322
-	 * @param WPInv_Invoice $invoice
323
-	 */
324
-	public function user_invoice( $invoice ) {
319
+    /**
320
+     * Notifies a user about new invoices
321
+     *
322
+     * @param WPInv_Invoice $invoice
323
+     */
324
+    public function user_invoice( $invoice ) {
325 325
 
326
-		// Only send this email for invoices created via the admin page.
327
-		if ( $this->is_payment_form_invoice( $invoice->get_id() ) ) {
328
-			return;
329
-		}
326
+        // Only send this email for invoices created via the admin page.
327
+        if ( $this->is_payment_form_invoice( $invoice->get_id() ) ) {
328
+            return;
329
+        }
330 330
 
331
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
332
-		$recipient = $invoice->get_email();
331
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
332
+        $recipient = $invoice->get_email();
333 333
 
334
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
334
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient );
335 335
 
336
-	}
336
+    }
337 337
 
338
-	/**
339
-	 * Checks if an invoice is a payment form invoice.
340
-	 *
341
-	 * @param int $invoice
342
-	 * @return bool
343
-	 */
344
-	public function is_payment_form_invoice( $invoice ) {
345
-		return empty( $_GET['getpaid-admin-action'] ) && 'payment_form' == get_post_meta( $invoice, 'wpinv_created_via', true );
346
-	}
338
+    /**
339
+     * Checks if an invoice is a payment form invoice.
340
+     *
341
+     * @param int $invoice
342
+     * @return bool
343
+     */
344
+    public function is_payment_form_invoice( $invoice ) {
345
+        return empty( $_GET['getpaid-admin-action'] ) && 'payment_form' == get_post_meta( $invoice, 'wpinv_created_via', true );
346
+    }
347 347
 
348
-	/**
349
-	 * Notifies admin about new invoice notes
350
-	 *
351
-	 * @param WPInv_Invoice $invoice
352
-	 * @param string $note
353
-	 */
354
-	public function user_note( $invoice, $note ) {
348
+    /**
349
+     * Notifies admin about new invoice notes
350
+     *
351
+     * @param WPInv_Invoice $invoice
352
+     * @param string $note
353
+     */
354
+    public function user_note( $invoice, $note ) {
355 355
 
356
-		$email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
357
-		$recipient = $invoice->get_email();
358
-
359
-		return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
360
-
361
-	}
356
+        $email     = new GetPaid_Notification_Email( __FUNCTION__, $invoice );
357
+        $recipient = $invoice->get_email();
358
+
359
+        return $this->send_email( $invoice, $email, __FUNCTION__, $recipient, array( 'customer_note' => $note ) );
360
+
361
+    }
362 362
 
363
-	/**
364
-	 * (Force) Sends overdue notices.
365
-	 *
366
-	 * @param WPInv_Invoice $invoice
367
-	 */
368
-	public function force_send_overdue_notice( $invoice ) {
369
-		$email = new GetPaid_Notification_Email( 'overdue', $invoice );
370
-		return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
371
-	}
372
-
373
-	/**
374
-	 * Sends overdue notices.
375
-	 *
376
-	 * @TODO: Create an invoices query class.
377
-	 */
378
-	public function overdue() {
379
-		global $wpdb;
380
-
381
-		$email = new GetPaid_Notification_Email( __FUNCTION__ );
382
-
383
-		// Fetch reminder days.
384
-		$reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
385
-
386
-		// Abort if non is set.
387
-		if ( empty( $reminder_days ) ) {
388
-			return;
389
-		}
390
-
391
-		// Retrieve date query.
392
-		$date_query = $this->get_date_query( $reminder_days );
393
-
394
-		// Invoices table.
395
-		$table = $wpdb->prefix . 'getpaid_invoices';
396
-
397
-		// Fetch invoices.
398
-		$invoices  = $wpdb->get_col(
399
-			"SELECT posts.ID FROM $wpdb->posts as posts
363
+    /**
364
+     * (Force) Sends overdue notices.
365
+     *
366
+     * @param WPInv_Invoice $invoice
367
+     */
368
+    public function force_send_overdue_notice( $invoice ) {
369
+        $email = new GetPaid_Notification_Email( 'overdue', $invoice );
370
+        return $this->send_email( $invoice, $email, 'overdue', $invoice->get_email() );
371
+    }
372
+
373
+    /**
374
+     * Sends overdue notices.
375
+     *
376
+     * @TODO: Create an invoices query class.
377
+     */
378
+    public function overdue() {
379
+        global $wpdb;
380
+
381
+        $email = new GetPaid_Notification_Email( __FUNCTION__ );
382
+
383
+        // Fetch reminder days.
384
+        $reminder_days = array_unique( wp_parse_id_list( $email->get_option( 'days' ) ) );
385
+
386
+        // Abort if non is set.
387
+        if ( empty( $reminder_days ) ) {
388
+            return;
389
+        }
390
+
391
+        // Retrieve date query.
392
+        $date_query = $this->get_date_query( $reminder_days );
393
+
394
+        // Invoices table.
395
+        $table = $wpdb->prefix . 'getpaid_invoices';
396
+
397
+        // Fetch invoices.
398
+        $invoices  = $wpdb->get_col(
399
+            "SELECT posts.ID FROM $wpdb->posts as posts
400 400
 			LEFT JOIN $table as invoices ON invoices.post_id = posts.ID
401 401
 			WHERE posts.post_type = 'wpi_invoice' AND posts.post_status = 'wpi-pending' $date_query");
402 402
 
403
-		foreach ( $invoices as $invoice ) {
403
+        foreach ( $invoices as $invoice ) {
404 404
 
405
-			// Only send this email for invoices created via the admin page.
406
-			if ( ! $this->is_payment_form_invoice( $invoice ) ) {
407
-				$invoice       = new WPInv_Invoice( $invoice );
408
-				$email->object = $invoice;
405
+            // Only send this email for invoices created via the admin page.
406
+            if ( ! $this->is_payment_form_invoice( $invoice ) ) {
407
+                $invoice       = new WPInv_Invoice( $invoice );
408
+                $email->object = $invoice;
409 409
 
410
-				if ( $invoice->needs_payment() ) {
411
-					$this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
412
-				}
410
+                if ( $invoice->needs_payment() ) {
411
+                    $this->send_email( $invoice, $email, __FUNCTION__, $invoice->get_email() );
412
+                }
413 413
 
414
-			}
414
+            }
415 415
 
416
-		}
416
+        }
417 417
 
418
-	}
418
+    }
419 419
 
420
-	/**
421
-	 * Calculates the date query for an invoices query
422
-	 *
423
-	 * @param array $reminder_days
424
-	 * @return string
425
-	 */
426
-	public function get_date_query( $reminder_days ) {
420
+    /**
421
+     * Calculates the date query for an invoices query
422
+     *
423
+     * @param array $reminder_days
424
+     * @return string
425
+     */
426
+    public function get_date_query( $reminder_days ) {
427 427
 
428
-		$date_query = array(
429
-			'relation'  => 'OR'
430
-		);
428
+        $date_query = array(
429
+            'relation'  => 'OR'
430
+        );
431 431
 
432
-		foreach ( $reminder_days as $days ) {
433
-			$date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
432
+        foreach ( $reminder_days as $days ) {
433
+            $date = date_parse( date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) ) );
434 434
 
435
-			$date_query[] = array(
436
-				'year'  => $date['year'],
437
-				'month' => $date['month'],
438
-				'day'   => $date['day'],
439
-			);
435
+            $date_query[] = array(
436
+                'year'  => $date['year'],
437
+                'month' => $date['month'],
438
+                'day'   => $date['day'],
439
+            );
440 440
 
441
-		}
441
+        }
442 442
 
443
-		$date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
443
+        $date_query = new WP_Date_Query( $date_query, 'invoices.due_date' );
444 444
 
445
-		return $date_query->get_sql();
445
+        return $date_query->get_sql();
446 446
 
447
-	}
447
+    }
448 448
 
449 449
 }
Please login to merge, or discard this patch.
includes/gateways/class-getpaid-manual-gateway.php 1 patch
Indentation   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -13,30 +13,30 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Manual_Gateway extends GetPaid_Payment_Gateway {
14 14
 
15 15
     /**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id = 'manual';
21 21
 
22 22
     /**
23
-	 * An array of features that this gateway supports.
24
-	 *
25
-	 * @var array
26
-	 */
23
+     * An array of features that this gateway supports.
24
+     *
25
+     * @var array
26
+     */
27 27
     protected $supports = array( 'subscription' );
28 28
 
29 29
     /**
30
-	 * Payment method order.
31
-	 *
32
-	 * @var int
33
-	 */
34
-	public $order = 11;
30
+     * Payment method order.
31
+     *
32
+     * @var int
33
+     */
34
+    public $order = 11;
35 35
     
36 36
     /**
37
-	 * Class constructor.
38
-	 */
39
-	public function __construct() {
37
+     * Class constructor.
38
+     */
39
+    public function __construct() {
40 40
         parent::__construct();
41 41
 
42 42
         $this->title        = __( 'Manual Payment', 'invoicing' );
@@ -46,15 +46,15 @@  discard block
 block discarded – undo
46 46
     }
47 47
 
48 48
     /**
49
-	 * Process Payment.
50
-	 *
51
-	 *
52
-	 * @param WPInv_Invoice $invoice Invoice.
53
-	 * @param array $submission_data Posted checkout fields.
54
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
55
-	 * @return array
56
-	 */
57
-	public function process_payment( $invoice, $submission_data, $submission ) {
49
+     * Process Payment.
50
+     *
51
+     *
52
+     * @param WPInv_Invoice $invoice Invoice.
53
+     * @param array $submission_data Posted checkout fields.
54
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
55
+     * @return array
56
+     */
57
+    public function process_payment( $invoice, $submission_data, $submission ) {
58 58
 
59 59
         // Mark it as paid.
60 60
         $invoice->mark_paid();
@@ -68,13 +68,13 @@  discard block
 block discarded – undo
68 68
     }
69 69
 
70 70
     /**
71
-	 * (Maybe) renews a manual subscription profile.
72
-	 *
73
-	 *
74
-	 * @param bool $should_expire
71
+     * (Maybe) renews a manual subscription profile.
72
+     *
73
+     *
74
+     * @param bool $should_expire
75 75
      * @param WPInv_Subscription $subscription
76
-	 */
77
-	public function maybe_renew_subscription( $should_expire, $subscription ) {
76
+     */
77
+    public function maybe_renew_subscription( $should_expire, $subscription ) {
78 78
 
79 79
         // Ensure its our subscription && it's active.
80 80
         if ( 'manual' != $subscription->get_gateway() || ! $subscription->has_status( 'active trialling' ) ) {
Please login to merge, or discard this patch.
includes/class-getpaid-notification-email.php 1 patch
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -13,36 +13,36 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Notification_Email {
14 14
 
15 15
     /**
16
-	 * Contains the type of this notification email.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Contains the type of this notification email.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id;
21 21
 
22 22
     /**
23
-	 * Contains any object to use in filters.
24
-	 *
25
-	 * @var false|WPInv_Invoice|WPInv_Item|WPInv_Subscription
26
-	 */
23
+     * Contains any object to use in filters.
24
+     *
25
+     * @var false|WPInv_Invoice|WPInv_Item|WPInv_Subscription
26
+     */
27 27
     public $object;
28 28
 
29 29
     /**
30
-	 * Class constructor.
31
-	 *
30
+     * Class constructor.
31
+     *
32 32
      * @param string $id Email Type.
33 33
      * @param mixed $object Optional. Associated object.
34
-	 */
35
-	public function __construct( $id, $object = false ) {
34
+     */
35
+    public function __construct( $id, $object = false ) {
36 36
         $this->id     = $id;
37 37
         $this->object = $object;
38 38
     }
39 39
 
40 40
     /**
41
-	 * Retrieves an option
42
-	 *
41
+     * Retrieves an option
42
+     *
43 43
      * @return mixed
44
-	 */
45
-	public function get_option( $key ) {
44
+     */
45
+    public function get_option( $key ) {
46 46
 
47 47
         $key   = "email_{$this->id}_$key";
48 48
         $value = wpinv_get_option( $key, null );
@@ -60,80 +60,80 @@  discard block
 block discarded – undo
60 60
     }
61 61
 
62 62
     /**
63
-	 * Retrieves the email body.
64
-	 *
63
+     * Retrieves the email body.
64
+     *
65 65
      * @return string
66
-	 */
67
-	public function get_body() {
66
+     */
67
+    public function get_body() {
68 68
         $body = $this->get_option( 'body' );
69 69
         return apply_filters( 'getpaid_get_email_body', $body, $this->id, $this->object );
70 70
     }
71 71
 
72 72
     /**
73
-	 * Retrieves the email subject.
74
-	 *
73
+     * Retrieves the email subject.
74
+     *
75 75
      * @return string
76
-	 */
77
-	public function get_subject() {
76
+     */
77
+    public function get_subject() {
78 78
         $subject = $this->get_option( 'subject' );
79 79
         return apply_filters( 'getpaid_get_email_subject', $subject, $this->id, $this->object );
80 80
     }
81 81
 
82 82
     /**
83
-	 * Retrieves the email heading.
84
-	 *
83
+     * Retrieves the email heading.
84
+     *
85 85
      * @return string
86
-	 */
87
-	public function get_heading() {
86
+     */
87
+    public function get_heading() {
88 88
         $heading = $this->get_option( 'heading' );
89 89
         return apply_filters( 'getpaid_get_email_heading', $heading, $this->id, $this->object );
90 90
     }
91 91
 
92 92
     /**
93
-	 * Checks if an email is active.
94
-	 *
93
+     * Checks if an email is active.
94
+     *
95 95
      * @return bool
96
-	 */
97
-	public function is_active() {
96
+     */
97
+    public function is_active() {
98 98
         $is_active = ! empty( $this->get_option( 'active' ) );
99 99
         return apply_filters( 'getpaid_email_type_is_active', $is_active, $this->id, $this->object );
100 100
     }
101 101
 
102 102
     /**
103
-	 * Checks if the site's admin should receive email notifications.
104
-	 *
103
+     * Checks if the site's admin should receive email notifications.
104
+     *
105 105
      * @return bool
106
-	 */
107
-	public function include_admin_bcc() {
106
+     */
107
+    public function include_admin_bcc() {
108 108
         $include_admin_bcc = ! empty( $this->get_option( 'admin_bcc' ) );
109 109
         return apply_filters( 'getpaid_email_type_include_admin_bcc', $include_admin_bcc, $this->id, $this->object );
110 110
     }
111 111
 
112 112
     /**
113
-	 * Checks whether this email should be sent to the customer or admin.
114
-	 *
113
+     * Checks whether this email should be sent to the customer or admin.
114
+     *
115 115
      * @return bool
116
-	 */
117
-	public function is_admin_email() {
116
+     */
117
+    public function is_admin_email() {
118 118
         $is_admin_email = in_array( $this->id, array( 'new_invoice', 'cancelled_invoice', 'failed_invoice' ) );
119 119
         return apply_filters( 'getpaid_email_type_is_admin_email', $is_admin_email, $this->id, $this->object );
120 120
     }
121 121
 
122 122
     /**
123
-	 * Returns email attachments.
124
-	 *
123
+     * Returns email attachments.
124
+     *
125 125
      * @return array
126
-	 */
127
-	public function get_attachments() {
126
+     */
127
+    public function get_attachments() {
128 128
         return apply_filters( 'getpaid_get_email_attachments', array(), $this->id, $this->object );
129 129
     }
130 130
 
131 131
     /**
132
-	 * Returns an array of merge tags.
133
-	 *
132
+     * Returns an array of merge tags.
133
+     *
134 134
      * @return array
135
-	 */
136
-	public function get_merge_tags() {
135
+     */
136
+    public function get_merge_tags() {
137 137
 
138 138
         $merge_tags = array(
139 139
             '{site_title}' => wpinv_get_blogname(),
@@ -144,13 +144,13 @@  discard block
 block discarded – undo
144 144
     }
145 145
 
146 146
     /**
147
-	 * Adds merge tags to a text.
148
-	 *
147
+     * Adds merge tags to a text.
148
+     *
149 149
      * @param string string $text
150 150
      * @param array $merge_tags
151 151
      * @return string
152
-	 */
153
-	public function add_merge_tags( $text, $merge_tags = array() ) {
152
+     */
153
+    public function add_merge_tags( $text, $merge_tags = array() ) {
154 154
 
155 155
         foreach ( $merge_tags as $key => $value ) {
156 156
             $text = str_replace( $key, $value, $text );
@@ -160,13 +160,13 @@  discard block
 block discarded – undo
160 160
     }
161 161
 
162 162
     /**
163
-	 * Returns the email content
164
-	 *
163
+     * Returns the email content
164
+     *
165 165
      * @param array $merge_tags
166 166
      * @param array $extra_args Extra template args
167 167
      * @return string
168
-	 */
169
-	public function get_content( $merge_tags = array(), $extra_args = array() ) {
168
+     */
169
+    public function get_content( $merge_tags = array(), $extra_args = array() ) {
170 170
 
171 171
         $content = wpinv_get_template_html(
172 172
             "emails/wpinv-email-{$this->id}.php",
Please login to merge, or discard this patch.