Passed
Push — master ( cb56ad...f2f23d )
by Paul
04:37
created

AjaxController::routerSubmitReview()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 16
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 2.0023

Importance

Changes 0
Metric Value
cc 2
eloc 12
nc 2
nop 1
dl 0
loc 16
ccs 11
cts 12
cp 0.9167
crap 2.0023
rs 9.8666
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 WP_Query;
17
18
class AjaxController extends Controller
19
{
20
	/**
21
	 * @return void
22
	 */
23
	public function routerChangeStatus( array $request )
24
	{
25
		wp_send_json_success( $this->execute( new ChangeStatus( $request )));
26
	}
27
28
	/**
29
	 * @return void
30
	 */
31
	public function routerClearConsole()
32
	{
33
		glsr( AdminController::class )->routerClearConsole();
34
		wp_send_json_success([
35
			'console' => glsr( Console::class )->get(),
36
			'notices' => glsr( Notice::class )->get(),
37
		]);
38
	}
39
40
	/**
41
	 * @return void
42
	 */
43
	public function routerCountReviews()
44
	{
45
		glsr( AdminController::class )->routerCountReviews();
46
		wp_send_json_success([
47
			'notices' => glsr( Notice::class )->get(),
48
		]);
49
	}
50
51
	/**
52
	 * @return void
53
	 */
54
	public function routerMceShortcode( array $request )
55
	{
56
		$shortcode = $request['shortcode'];
57
		$response = false;
58
		if( array_key_exists( $shortcode, glsr()->mceShortcodes )) {
59
			$data = glsr()->mceShortcodes[$shortcode];
60
			if( !empty( $data['errors'] )) {
61
				$data['btn_okay'] = [esc_html__( 'Okay', 'site-reviews' )];
62
			}
63
			$response = [
64
				'body' => $data['fields'],
65
				'close' => $data['btn_close'],
66
				'ok' => $data['btn_okay'],
67
				'shortcode' => $shortcode,
68
				'title' => $data['title'],
69
			];
70
		}
71
		wp_send_json_success( $response );
72
	}
73
74
	/**
75
	 * @return void
76
	 */
77
	public function routerFetchConsole()
78
	{
79
		glsr( AdminController::class )->routerFetchConsole();
80
		wp_send_json_success([
81
			'console' => glsr( Console::class )->get(),
82
			'notices' => glsr( Notice::class )->get(),
83
		]);
84
	}
85
86
	/**
87
	 * @return void
88
	 */
89
	public function routerSearchPosts( array $request )
90
	{
91
		$results = glsr( Database::class )->searchPosts( $request['search'] );
92
		wp_send_json_success([
93
			'empty' => '<div>'.__( 'Nothing found.', 'site-reviews' ).'</div>',
94
			'items' => $results,
95
		]);
96
	}
97
98
	/**
99
	 * @return void
100
	 */
101
	public function routerSearchTranslations( array $request )
102
	{
103
		if( empty( $request['exclude'] )) {
104
			$request['exclude'] = [];
105
		}
106
		$results = glsr( Translation::class )
107
			->search( $request['search'] )
108
			->exclude()
109
			->exclude( $request['exclude'] )
110
			->renderResults();
111
		wp_send_json_success([
112
			'empty' => '<div>'.__( 'Nothing found.', 'site-reviews' ).'</div>',
113
			'items' => $results,
114
		]);
115
	}
116
117
	/**
118
	 * @return void
119
	 */
120 1
	public function routerSubmitReview( array $request )
121
	{
122 1
		$command = glsr( PublicController::class )->routerSubmitReview( $request );
123 1
		$redirect = trim( strval( get_post_meta( $command->post_id, 'redirect_to', true )));
124 1
		$redirect = apply_filters( 'site-reviews/review/redirect', $redirect, $command );
125
		$data = [
126 1
			'errors' => glsr( Session::class )->get( $command->form_id.'errors', false, true ),
127 1
			'message' => glsr( Session::class )->get( $command->form_id.'message', '', true ),
128 1
			'recaptcha' => glsr( Session::class )->get( $command->form_id.'recaptcha', false, true ),
129 1
			'redirect' => $redirect,
130
		];
131 1
		if( $data['errors'] === false ) {
132 1
			glsr( Session::class )->clear();
133 1
			wp_send_json_success( $data );
134
		}
135
		wp_send_json_error( $data );
136
	}
137
138
	/**
139
	 * @return void
140
	 */
141
	public function routerTogglePinned( array $request )
142
	{
143
		$isPinned = $this->execute( new TogglePinned( $request ));
144
		wp_send_json_success([
145
			'notices' => glsr( Notice::class )->get(),
146
			'pinned' => $isPinned,
147
		]);
148
	}
149
}
150