Passed
Push — hotfix/fix-counts ( b4ff8e...673622 )
by Paul
04:39
created

AjaxController::routerFetchPagedReviews()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 1
dl 0
loc 12
ccs 0
cts 8
cp 0
crap 2
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Controllers;
4
5
use GeminiLabs\SiteReviews\Commands\ChangeStatus;
6
use GeminiLabs\SiteReviews\Commands\TogglePinned;
7
use GeminiLabs\SiteReviews\Controllers\AdminController;
8
use GeminiLabs\SiteReviews\Controllers\Controller;
9
use GeminiLabs\SiteReviews\Controllers\PublicController;
10
use GeminiLabs\SiteReviews\Database;
11
use GeminiLabs\SiteReviews\Modules\Console;
12
use GeminiLabs\SiteReviews\Modules\Html;
13
use GeminiLabs\SiteReviews\Modules\Notice;
14
use GeminiLabs\SiteReviews\Modules\Session;
15
use GeminiLabs\SiteReviews\Modules\Translation;
16
use GeminiLabs\SiteReviews\Modules\Html\Partials\SiteReviews;
17
use WP_Query;
18
19
class AjaxController extends Controller
20
{
21
	/**
22
	 * @return void
23
	 */
24
	public function routerChangeStatus( array $request )
25
	{
26
		wp_send_json_success( $this->execute( new ChangeStatus( $request )));
27
	}
28
29
	/**
30
	 * @return void
31
	 */
32
	public function routerClearConsole()
33
	{
34
		glsr( AdminController::class )->routerClearConsole();
35
		wp_send_json_success([
36
			'console' => glsr( Console::class )->get(),
37
			'notices' => glsr( Notice::class )->get(),
38
		]);
39
	}
40
41
	/**
42
	 * @return void
43
	 */
44
	public function routerCountReviews()
45
	{
46
		glsr( AdminController::class )->routerCountReviews();
47
		wp_send_json_success([
48
			'notices' => glsr( Notice::class )->get(),
49
		]);
50
	}
51
52
	/**
53
	 * @return void
54
	 */
55
	public function routerMceShortcode( array $request )
56
	{
57
		$shortcode = $request['shortcode'];
58
		$response = false;
59
		if( array_key_exists( $shortcode, glsr()->mceShortcodes )) {
60
			$data = glsr()->mceShortcodes[$shortcode];
61
			if( !empty( $data['errors'] )) {
62
				$data['btn_okay'] = [esc_html__( 'Okay', 'site-reviews' )];
63
			}
64
			$response = [
65
				'body' => $data['fields'],
66
				'close' => $data['btn_close'],
67
				'ok' => $data['btn_okay'],
68
				'shortcode' => $shortcode,
69
				'title' => $data['title'],
70
			];
71
		}
72
		wp_send_json_success( $response );
73
	}
74
75
	/**
76
	 * @return void
77
	 */
78
	public function routerFetchConsole()
79
	{
80
		glsr( AdminController::class )->routerFetchConsole();
81
		wp_send_json_success([
82
			'console' => glsr( Console::class )->get(),
83
			'notices' => glsr( Notice::class )->get(),
84
		]);
85
	}
86
87
	/**
88
	 * @return void
89
	 */
90
	public function routerSearchPosts( array $request )
91
	{
92
		$results = glsr( Database::class )->searchPosts( $request['search'] );
93
		wp_send_json_success([
94
			'empty' => '<div>'.__( 'Nothing found.', 'site-reviews' ).'</div>',
95
			'items' => $results,
96
		]);
97
	}
98
99
	/**
100
	 * @return void
101
	 */
102
	public function routerSearchTranslations( array $request )
103
	{
104
		if( empty( $request['exclude'] )) {
105
			$request['exclude'] = [];
106
		}
107
		$results = glsr( Translation::class )
108
			->search( $request['search'] )
109
			->exclude()
110
			->exclude( $request['exclude'] )
111
			->renderResults();
112
		wp_send_json_success([
113
			'empty' => '<div>'.__( 'Nothing found.', 'site-reviews' ).'</div>',
114
			'items' => $results,
115
		]);
116
	}
117
118
	/**
119
	 * @return void
120
	 */
121 1
	public function routerSubmitReview( array $request )
122
	{
123 1
		$command = glsr( PublicController::class )->routerSubmitReview( $request );
124 1
		$redirect = trim( strval( get_post_meta( $command->post_id, 'redirect_to', true )));
125 1
		$redirect = apply_filters( 'site-reviews/review/redirect', $redirect, $command );
126
		$data = [
127 1
			'errors' => glsr( Session::class )->get( $command->form_id.'errors', false, true ),
128 1
			'message' => glsr( Session::class )->get( $command->form_id.'message', '', true ),
129 1
			'recaptcha' => glsr( Session::class )->get( $command->form_id.'recaptcha', false, true ),
130 1
			'redirect' => $redirect,
131
		];
132 1
		if( $data['errors'] === false ) {
133 1
			glsr( Session::class )->clear();
134 1
			wp_send_json_success( $data );
135
		}
136
		wp_send_json_error( $data );
137
	}
138
139
	/**
140
	 * @return void
141
	 */
142
	public function routerFetchPagedReviews( array $request )
143
	{
144
		$urlQuery = [];
145
		parse_str( parse_url( glsr_get( $request, 'url' ), PHP_URL_QUERY ), $urlQuery );
146
		$args = [
147
			'paged' => glsr_get( $urlQuery, glsr()->constant( 'PAGED_QUERY_VAR' ), 1 ),
148
			'pagedUrl' => home_url( parse_url( glsr_get( $request, 'url' ), PHP_URL_PATH )),
149
			'schema' => false,
150
		];
151
		$atts = (array) json_decode( glsr_get( $request, 'atts' ));
152
		return wp_send_json_success([
153
			'html' => (string) glsr( SiteReviews::class )->build( wp_parse_args( $args, $atts )),
154
		]);
155
	}
156
157
	/**
158
	 * @return void
159
	 */
160
	public function routerTogglePinned( array $request )
161
	{
162
		$isPinned = $this->execute( new TogglePinned( $request ));
163
		wp_send_json_success([
164
			'notices' => glsr( Notice::class )->get(),
165
			'pinned' => $isPinned,
166
		]);
167
	}
168
}
169