Passed
Push — master ( 53b7ea...e9a082 )
by Paul
04:04
created

glsr_array_column()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 6
nc 3
nop 2
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
defined( 'WPINC' ) || die;
3
4
/**
5
 * Alternate method of using the functions without having to use `function_exists()`
6
 * Example: apply_filters( 'glsr_get_reviews', [], ['assigned_to' => 'post_id'] );
7
 * @param mixed ...
8
 * @return mixed
9
 */
10
add_filter( 'all', function() {
11
	$args = func_get_args();
12
	$hook = array_shift( $args );
13
	$hooks = array(
14
		'glsr',
15
		'glsr_calculate_ratings',
16
		'glsr_create_review',
17
		'glsr_debug',
18
		'glsr_get_option', 'glsr_get_options',
19
		'glsr_get_review', 'glsr_get_reviews',
20
		'glsr_log',
21
	);
22
	if( !in_array( $hook, $hooks ) || !function_exists( $hook ))return;
23
	add_filter( $hook, function() use( $hook, $args ) {
24
		array_shift( $args ); // remove the fallback value
25
		return call_user_func_array( $hook, $args );
26
	});
27
});
28
29
/**
30
 * @return mixed
31
 */
32
function glsr( $alias = null ) {
33
	$app = \GeminiLabs\SiteReviews\Application::load();
34
	return !empty( $alias )
35
		? $app->make( $alias )
36
		: $app;
37
}
38
39
/**
40
 * array_column() alternative specifically for PHP v7.0.x
41
 * @param $column string
42
 * @return array
43
 */
44
function glsr_array_column( array $array, $column ) {
45
	$result = array();
46
	foreach( $array as $subarray ) {
47
		$subarray = (array)$subarray;
48
		if( !isset( $subarray[$column] ))continue;
49
		$result[] = $subarray[$column];
50
	}
51
	return $result;
52
}
53
54
/**
55
 * @return void
56
 */
57
function glsr_calculate_ratings() {
58
	glsr( 'Controllers\AdminController' )->routerCountReviews( false );
59
	glsr_log()->info( __( 'Recalculated rating counts.', 'site-reviews' ));
60
}
61
62
/**
63
 * @return null|\GeminiLabs\SiteReviews\Review
64
 */
65
function glsr_create_review( $reviewValues = array() ) {
66
	if( !is_array( $reviewValues )) {
67
		$reviewValues = array();
68
	}
69
	$review = new \GeminiLabs\SiteReviews\Commands\CreateReview( $reviewValues );
70
	$result = glsr( 'Database\ReviewManager' )->create( $review );
71
	return !empty( $result )
72
		? $result
73
		: null;
74
}
75
76
/**
77
 * @return \WP_Screen|object
78
 */
79
function glsr_current_screen() {
80
	if( function_exists( 'get_current_screen' )) {
81
		$screen = get_current_screen();
82
	}
83
	return empty( $screen )
84
		? (object)array_fill_keys( ['base', 'id', 'post_type'], null )
85
		: $screen;
86
}
87
88
/**
89
 * @param mixed ...$vars
90
 * @return void
91
 */
92
function glsr_debug( ...$vars ) {
93
	if( count( $vars ) == 1 ) {
94
		$value = htmlspecialchars( print_r( $vars[0], true ), ENT_QUOTES, 'UTF-8' );
95
		printf( '<div class="glsr-debug"><pre>%s</pre></div>', $value );
96
	}
97
	else {
98
		echo '<div class="glsr-debug-group">';
99
		foreach( $vars as $var ) {
100
			glsr_debug( $var );
101
		}
102
		echo '</div>';
103
	}
104
}
105
106
/**
107
 * @param string $path
108
 * @param mixed $fallback
109
 * @return string|array
110
 */
111
function glsr_get_option( $path = '', $fallback = '' ) {
112
	return is_string( $path )
113
		? glsr( 'Database\OptionManager' )->get( 'settings.'.$path, $fallback )
114
		: $fallback;
115
}
116
117
/**
118
 * @return array
119
 */
120
function glsr_get_options() {
121
	return glsr( 'Database\OptionManager' )->get( 'settings' );
122
}
123
124
/**
125
 * @param int $post_id
126
 * @return \GeminiLabs\SiteReviews\Review|void
127
 */
128
function glsr_get_review( $post_id ) {
129
	if( !is_numeric( $post_id ))return;
130
	$post = get_post( $post_id );
131
	if( $post instanceof WP_Post ) {
132
		return glsr( 'Database\ReviewManager' )->single( $post );
133
	}
134
}
135
136
/**
137
 * @return array
138
 * @todo document change of $reviews->reviews to $reviews->results
139
 */
140
function glsr_get_reviews( $args = array() ) {
141
	if( !is_array( $args )) {
142
		$args = [];
143
	}
144
	return glsr( 'Database\ReviewManager' )->get( $args );
145
}
146
147
/**
148
 * @return \GeminiLabs\SiteReviews\Modules\Console
149
 */
150
function glsr_log() {
151
	$args = func_get_args();
152
	$context = isset( $args[1] )
153
		? $args[1]
154
		: [];
155
	$console = glsr( 'Modules\Console' );
156
	return !empty( $args )
157
		? $console->log( 'debug', $args[0], $context )
158
		: $console;
159
}
160