Passed
Push — master ( 5d2154...beaeba )
by Brian
03:53
created

AUI::input()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 1
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 2
rs 10
1
<?php
2
3
if ( ! defined( 'ABSPATH' ) ) {
4
	exit; // Exit if accessed directly
5
}
6
7
/**
8
 * A singleton class to output AyeCode UI Components.
9
 *
10
 * @since 1.0.0
11
 */
12
class AUI {
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.32';
28
29
	public static $options = null;
30
31
	/**
32
	 * There can be only one.
33
	 *
34
	 * @since 1.0.0
35
	 * @return AUI|null
36
	 */
37
	public static function instance() {
38
		if ( self::$instance == null ) {
39
			self::$instance = new AUI();
0 ignored issues
show
Documentation Bug introduced by
It seems like new AUI() of type AUI is incompatible with the declared type null of property $instance.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
40
		}
41
42
		return self::$instance;
43
	}
44
45
	/**
46
	 * AUI constructor.
47
	 *
48
	 * @since 1.0.0
49
	 */
50
	private function __construct() {
51
		if ( function_exists( "__autoload" ) ) {
52
			spl_autoload_register( "__autoload" );
53
		}
54
		spl_autoload_register( array( $this, 'autoload' ) );
55
56
		// load options
57
		self::$options = get_option('aui_options');
58
	}
59
60
	/**
61
	 * Autoload any components on the fly.
62
	 *
63
	 * @since 1.0.0
64
	 *
65
	 * @param $classname
66
	 */
67
	private function autoload( $classname ) {
68
		$class     = str_replace( '_', '-', strtolower( $classname ) );
69
		$file_path = trailingslashit( dirname( __FILE__ ) ) . "components/class-" . $class . '.php';
70
		if ( $file_path && is_readable( $file_path ) ) {
71
			include_once( $file_path );
72
		}
73
	}
74
75
	/**
76
	 * Get the AUI options.
77
	 *
78
	 * @param $option
79
	 *
80
	 * @return string|void
81
	 */
82
	public function get_option( $option ){
83
		$result = isset(self::$options[$option]) ? esc_attr(self::$options[$option]) : '';
84
85
		if ( ! $result && $option) {
86
			if( $option == 'color_primary' ){
87
				$result = AUI_PRIMARY_COLOR;
88
			}elseif( $option == 'color_secondary' ){
89
				$result = AUI_SECONDARY_COLOR;
90
			}
91
		}
92
		return $result;
93
	}
94
95
	public function render( $items = array() ) {
96
		$output = '';
97
98
		if ( ! empty( $items ) ) {
99
			foreach ( $items as $args ) {
100
				$render = isset( $args['render'] ) ? $args['render'] : '';
101
				if ( $render && method_exists( __CLASS__, $render ) ) {
102
					$output .= $this->$render( $args );
103
				}
104
			}
105
		}
106
107
		return $output;
108
	}
109
110
	/**
111
	 * Render and return a bootstrap alert component.
112
	 *
113
	 * @since 1.0.0
114
	 *
115
	 * @param array $args
116
	 *
117
	 * @return string The rendered component.
118
	 */
119
	public function alert( $args = array() ) {
120
		return AUI_Component_Alert::get( $args );
121
	}
122
123
	/**
124
	 * Render and return a bootstrap input component.
125
	 *
126
	 * @since 1.0.0
127
	 *
128
	 * @param array $args
129
	 *
130
	 * @return string The rendered component.
131
	 */
132
	public function input( $args = array() ) {
133
		return AUI_Component_Input::input( $args );
134
	}
135
136
	/**
137
	 * Render and return a bootstrap textarea component.
138
	 *
139
	 * @since 1.0.0
140
	 *
141
	 * @param array $args
142
	 *
143
	 * @return string The rendered component.
144
	 */
145
	public function textarea( $args = array() ) {
146
		return AUI_Component_Input::textarea( $args );
147
	}
148
149
	/**
150
	 * Render and return a bootstrap button component.
151
	 *
152
	 * @since 1.0.0
153
	 *
154
	 * @param array $args
155
	 *
156
	 * @return string The rendered component.
157
	 */
158
	public function button( $args = array() ) {
159
		return AUI_Component_Button::get( $args );
160
	}
161
162
	/**
163
	 * Render and return a bootstrap button component.
164
	 *
165
	 * @since 1.0.0
166
	 *
167
	 * @param array $args
168
	 *
169
	 * @return string The rendered component.
170
	 */
171
	public function badge( $args = array() ) {
172
		$defaults = array(
173
			'class' => 'badge badge-primary align-middle',
174
		);
175
176
		// maybe set type
177
		if ( empty( $args['href'] ) ) {
178
			$defaults['type'] = 'badge';
179
		}
180
181
		/**
182
		 * Parse incoming $args into an array and merge it with $defaults
183
		 */
184
		$args = wp_parse_args( $args, $defaults );
185
186
		return AUI_Component_Button::get( $args );
187
	}
188
189
	/**
190
	 * Render and return a bootstrap dropdown component.
191
	 *
192
	 * @since 1.0.0
193
	 *
194
	 * @param array $args
195
	 *
196
	 * @return string The rendered component.
197
	 */
198
	public function dropdown( $args = array() ) {
199
		return AUI_Component_Dropdown::get( $args );
200
	}
201
202
	/**
203
	 * Render and return a bootstrap select component.
204
	 *
205
	 * @since 1.0.0
206
	 *
207
	 * @param array $args
208
	 *
209
	 * @return string The rendered component.
210
	 */
211
	public function select( $args = array() ) {
212
		return AUI_Component_Input::select( $args );
213
	}
214
215
	/**
216
	 * Render and return a bootstrap radio component.
217
	 *
218
	 * @since 1.0.0
219
	 *
220
	 * @param array $args
221
	 *
222
	 * @return string The rendered component.
223
	 */
224
	public function radio( $args = array() ) {
225
		return AUI_Component_Input::radio( $args );
226
	}
227
228
	/**
229
	 * Render and return a bootstrap pagination component.
230
	 *
231
	 * @since 1.0.0
232
	 *
233
	 * @param array $args
234
	 *
235
	 * @return string The rendered component.
236
	 */
237
	public function pagination( $args = array() ) {
238
		return AUI_Component_Pagination::get( $args );
239
	}
240
241
}