Completed
Push — develop ( 4d26b2...764757 )
by Daniel
07:05
created

image::get_image_html()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 10
cts 10
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 8
nc 4
nop 3
crap 3
1
<?php
2
/**
3
 *
4
 * @package sitemaker
5
 * @copyright (c) 2013 Daniel A. (blitze)
6
 * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
7
 *
8
 */
9
10
namespace blitze\content\services\form\field;
11
12
class image extends base
13
{
14
	/** @var \blitze\sitemaker\services\filemanager\setup */
15
	protected $filemanager;
16
17
	/** @var \blitze\sitemaker\services\util */
18
	protected $util;
19
20
	/** @var string */
21
	protected $phpbb_root_path;
22
23
	/** @var string */
24
	protected $php_ext;
25
26
	/**
27
	 * Constructor
28
	 *
29
	 * @param \phpbb\language\language                  	$language       	Language object
30
	 * @param \phpbb\request\request_interface				$request			Request object
31
	 * @param \blitze\sitemaker\services\template			$ptemplate			Sitemaker template object
32
	 * @param \blitze\sitemaker\services\filemanager\setup	$filemanager		Filemanager object
33
	 * @param \blitze\sitemaker\services\util				$util       		Sitemaker utility object
34
	 * @param string										$phpbb_root_path	phpBB root path
35
	 * @param string										$php_ext			php file extension
36
	 */
37 16
	public function __construct(\phpbb\language\language $language, \phpbb\request\request_interface $request, \blitze\sitemaker\services\template $ptemplate, \blitze\sitemaker\services\filemanager\setup $filemanager, \blitze\sitemaker\services\util $util, $phpbb_root_path, $php_ext)
38
	{
39 16
		parent::__construct($language, $request, $ptemplate);
40
41 16
		$this->filemanager = $filemanager;
42 16
		$this->util = $util;
43 16
		$this->phpbb_root_path = $phpbb_root_path;
44 16
		$this->php_ext = $php_ext;
45 16
	}
46
47
	/**
48
	 * @inheritdoc
49
	 */
50 3
	public function get_field_value(array $data)
51
	{
52 3
		$value = $this->request->variable($data['field_name'], $data['field_value']);
53 3
		$value = $this->get_image_src($value);
54
55 3
		return ($value) ? '[img]' . $value . '[/img]' : '';
56
	}
57
58
	/**
59
	 * @inheritdoc
60
	 */
61 3
	public function show_form_field($name, array &$data)
62
	{
63 3
		$bbcode_value = $this->get_field_value($data);
64
65 3
		$field = $this->get_name();
66 3
		$data['field_value'] = $this->get_image_src($bbcode_value);
67
68 3
		$this->util->add_assets(array(
69
			'js'	=> array(
70 3
				'@blitze_content/vendor/fancybox/dist/jquery.fancybox.min.js',
71 3
				100 => '@blitze_content/assets/fields/form.min.js',
72 3
			),
73
			'css'	=> array(
74 3
				'@blitze_content/vendor/fancybox/dist/jquery.fancybox.min.css',
75 3
			),
76 3
		));
77
78 3
		$this->set_filemanager($data);
79 3
		$this->ptemplate->assign_vars($data);
80 3
		$field = $this->ptemplate->render_view('blitze/content', "fields/image.html", $field . '_field');
81
82 3
		$data['field_value'] = $bbcode_value;
83
84 3
		return $field;
85
	}
86
87
	/**
88
	 * @inheritdoc
89
	 */
90 10
	public function display_field(array $data, $mode = '')
91
	{
92 10
		$image = '';
93 10
		if ($data['field_value'] || $data['field_props']['default'])
94 10
		{
95 6
			$image = $this->get_image_html($data['field_value'], $mode, $data['field_props']);
96 6
		}
97 10
		return $image;
98
	}
99
100
	/**
101
	 * @inheritdoc
102
	 */
103 14
	public function get_default_props()
104
	{
105
		return array(
106 14
			'default'		=> '',
107 14
			'detail_align'	=> '',
108 14
			'detail_size'	=> '',
109 14
			'summary_align'	=> '',
110 14
			'summary_size'	=> '',
111 14
		);
112
	}
113
114
	/**
115
	 * @inheritdoc
116
	 */
117 5
	public function get_name()
118
	{
119 5
		return 'image';
120
	}
121
122
	/**
123
	 * @param string $bbcode_string
124
	 * @return string
125
	 */
126 3
	private function get_image_src($bbcode_string)
127
	{
128 3
		return str_replace(array('[img]', '[/img]'), '', $bbcode_string);
129
	}
130
131
	/**
132
	 * @param string $image
133
	 * @param string $mode
134
	 * @param array $field_props
135
	 * @return string
136
	 */
137 6
	private function get_image_html($image, $mode, array $field_props)
138
	{
139 6
		$image = $image ?: '<img src="' . $field_props['default'] . '" class="postimage" alt="Image" />';
140
141 6
		$html = '<figure class="img-ui">' . $image . '</figure>';
142 6
		if ($mode !== 'block')
143 6
		{
144 6
			$view_props = array_fill_keys(array($mode . '_size', $mode . '_align'), '');
145 6
			$image_props = array_filter(array_intersect_key($field_props, $view_props));
146 6
			$html = '<div class="' . join(' ', $image_props) . '">' . $html . '</div>';
147 6
		}
148 6
		return $html;
149
	}
150
151
	/**
152
	 * @param array $data
153
	 * @return void
154
	 */
155 3
	protected function set_filemanager(array &$data)
156
	{
157 3
		if ($this->filemanager->is_enabled())
158 3
		{
159 1
			$data['filemanager_path'] = append_sid("{$this->phpbb_root_path}ResponsiveFilemanager/filemanager/dialog.$this->php_ext", array(
160 1
				'type'			=> 1,
161 1
				'field_id'		=> 'smc-' . $data['field_name'],
162 1
				'akey'			=> $this->filemanager->get_access_key(),
163 1
			));
164 1
		}
165 3
	}
166
}
167