Completed
Push — develop ( a823de...d972ca )
by David
23:35
created

image::get_preview()   B

Complexity

Conditions 5
Paths 6

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 5.3906

Importance

Changes 0
Metric Value
cc 5
eloc 10
nc 6
nop 1
dl 0
loc 14
ccs 3
cts 4
cp 0.75
crap 5.3906
rs 8.8571
c 0
b 0
f 0
1
<?php
2
/**
3
 * UIX Image Control
4
 *
5
 * @package   controls
6
 * @author    David Cramer
7
 * @license   GPL-2.0+
8
 * @link
9
 * @copyright 2016 David Cramer
10
 */
11
12
namespace uix\ui\control;
13
14
/**
15
 * Image picker field
16
 *
17
 * @since 3.0.0
18
 */
19
class image extends \uix\ui\control {
20
21
	/**
22
	 * The type of object
23
	 *
24
	 * @since       1.0.0
25
	 * @access      public
26
	 * @var         string
27
	 */
28
	public $type = 'image';
29
30
	/**
31
	 * Checks if the current control is active.
32
	 *
33
	 * @since  1.0.0
34
	 * @access public
35
	 */
36
	public function is_active() {
37
		$active = parent::is_active();
38
39
		if ( true === $active ) {
40
			wp_enqueue_media();
41
		}
42
43
		return $active;
44
	}
45
46
	/**
47
	 * Define core UIX scripts - override to register core ( common scripts for
48
	 * uix type )
49
	 *
50
	 * @since  1.0.0
51
	 * @access public
52
	 */
53 1
	public function set_assets() {
54
55 1
		$this->assets['style']['image-control']  = $this->url . 'assets/controls/image/css/image' . UIX_ASSET_DEBUG . '.css';
56 1
		$this->assets['script']['image-control'] = [
57 1
			'src'       => $this->url . 'assets/controls/image/js/image' . UIX_ASSET_DEBUG . '.js',
58
			'in_footer' => true,
59
		];
60 1
		parent::set_assets();
61 1
	}
62
63
	/**
64
	 * Returns the main input field for rendering
65
	 *
66
	 * @since  1.0.0
67
	 * @see    \uix\ui\uix
68
	 * @access public
69
	 * @return string Input field HTML string
70
	 */
71 1
	public function input() {
72
73 1
		$output       = '<input type="hidden" value="' . esc_attr( $this->get_value() ) . '" ' . $this->build_attributes() . '>';
74 1
		$button_text  = isset( $this->struct['add_label'] ) ? $this->struct['add_label'] : __( 'Select Image', 'uix' );
75 1
		$preview_size = isset( $this->struct['preview_size'] ) ? $this->struct['preview_size'] : 'medium';
76 1
		$type         = isset( $this->struct['type'] ) ? $this->struct['type'] : 'id';
77 1
		$size         = isset( $this->struct['size'] ) ? $this->struct['size'] : 'full';
78 1
		$output       .= '<div class="uix-image-control-wrapper" id="' . esc_attr( $this->id() ) . '-wrap">';
79
		if ( null !== $this->get_value() ) {
80 1
			$output .= $this->get_preview( $preview_size );
81 1
		}
82
		$output .= '</div>';
83 1
		$output .= '<button type="button" data-size="' . esc_attr( $size ) . '" data-type="' . esc_attr( $type ) . '" data-preview-size="' . esc_attr( $preview_size ) . '" data-target="' . esc_attr( $this->id() ) . '" class="button button-small uix-image-control-button">' . esc_html( $button_text ) . '</button>';
84
85
		return $output;
86
	}
87
88
	/**
89
	 * Render the Control preview.
90
	 *
91
	 * @since  1.0.0
92
	 * @access public
93
	 *
94
	 * @param string $preview_size The size of the preview.
95
	 *
96 1
	 * @return string HTML of rendered preview
97 1
	 */
98 1
	private function get_preview( $preview_size ) {
99 1
		if ( isset( $this->struct['return_type'] ) && 'url' === $this->struct['return_type'] ) {
100
			$url = $this->get_value();
101
		} else {
102
			$data = wp_get_attachment_image_src( $this->get_value(), $preview_size );
103 1
			if ( ! empty( $data ) ) {
104
				$url = $data[0];
105
			}
106
		}
107
		$return = null;
0 ignored issues
show
Unused Code introduced by
$return is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
108
		if ( ! empty( $url ) ) {
109
			$return = '<img src="' . esc_attr( $url ) . '" class="uix-image-control-preview"><a href="#" class="uix-image-control-remove" data-target="' . $this->id() . '"><span class="dashicons dashicons-no"></span></a>';
0 ignored issues
show
Unused Code introduced by
$return is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
110
		}
111
	}
112
}
113