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

CreateReview   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 30%

Importance

Changes 0
Metric Value
eloc 19
dl 0
loc 35
ccs 6
cts 20
cp 0.3
rs 10
c 0
b 0
f 0
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 13 3
A getReferer() 0 12 3
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Handlers;
4
5
use GeminiLabs\SiteReviews\Commands\CreateReview as Command;
6
use GeminiLabs\SiteReviews\Database\ReviewManager;
7
use GeminiLabs\SiteReviews\Modules\Notification;
8
use GeminiLabs\SiteReviews\Modules\Session;
9
10
class CreateReview
11
{
12
	/**
13
	 * @return void|string
14
	 */
15 1
	public function handle( Command $command )
16
	{
17 1
		$review = glsr( ReviewManager::class )->create( $command );
18 1
		if( !$review ) {
19
			glsr( Session::class )->set( $command->form_id.'errors', [] );
20
			glsr( Session::class )->set( $command->form_id.'message', __( 'Your review could not be submitted and the error has been logged. Please notify the site admin.', 'site-reviews' ));
21
			return;
22
		}
23 1
		glsr( Session::class )->set( $command->form_id.'message', __( 'Your review has been submitted!', 'site-reviews' ));
24 1
		glsr( Notification::class )->send( $review );
25 1
		if( $command->ajax_request )return;
26
		wp_safe_redirect( $this->getReferer( $command ));
27
		exit;
28
	}
29
30
	/**
31
	 * @return string
32
	 */
33
	protected function getReferer( Command $command )
34
	{
35
		$referer = trim( strval( get_post_meta( $command->post_id, 'redirect_to', true )));
36
		$referer = apply_filters( 'site-reviews/review/redirect', $referer, $command );
37
		if( empty( $referer )) {
38
			$referer = $command->referer;
39
		}
40
		if( empty( $referer )) {
41
			glsr_log()->warning( 'The form referer ($_SERVER[REQUEST_URI]) was empty.' )->info( $command );
42
			$referer = home_url();
43
		}
44
		return $referer;
45
	}
46
}
47