PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.16
VikBooking Hotel Booking Engine & PMS v1.8.16
1.8.16 1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 All 37 releases
← All changes | libraries/layout/helper.php +185 -0 1.6.0 → 1.8.16 View file →
@@ -1,0 +1,185 @@
1 +<?php
2 +/**
3 + * @package VikBooking - Libraries
4 + * @subpackage layout
5 + * @author E4J s.r.l.
6 + * @copyright Copyright (C) 2018 E4J s.r.l. All Rights Reserved.
7 + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 + * @link https://vikwp.com
9 + */
10 +
11 +// No direct access
12 +defined('ABSPATH') or die('No script kiddies please!');
13 +
14 +/**
15 + * Factory class to render common parts of the plugin.
16 + *
17 + * @since 1.0
18 + */
19 +abstract class VikBookingLayoutHelper
20 +{
21 + /**
22 + * Renders the system messages.
23 + *
24 + * @param ?array $queue The messages queue.
25 + * @param boolean $echo True to echo the layout, false to return it.
26 + *
27 + * @return mixed True when the layout is echoed, otherwise the layout string.
28 + */
29 + public static function renderSystemMessages(?array $queue = null, $echo = true)
30 + {
31 + $app = JFactory::getApplication();
32 +
33 + if (is_null($queue))
34 + {
35 + // do not flush the messages queue if the
36 + // application is going to do a JS redirect
37 + if ($app->shouldRedirect())
38 + {
39 + $queue = array();
40 + }
41 + else
42 + {
43 + $queue = $app->getMessagesQueue();
44 + }
45 + }
46 +
47 + /**
48 + * Get setting from config to evaluate whether the messages should be grouped.
49 + * This setting is not installed by default and can be added on a second time to
50 + * turn off messages grouping.
51 + *
52 + * Here's the query to turn off this feature:
53 + * INSERT INTO `#__options` (`option_name`, `option_value`) VALUES
54 + * ('groupsysmessages', 0)
55 + */
56 + $should_be_grouped = get_option('groupsysmessages', 1);
57 +
58 + if ($should_be_grouped)
59 + {
60 + // manipulate queue to group contiguous messages that share the same type
61 + $tmp = array();
62 +
63 + for ($i = 0; $i < count($queue); $i++)
64 + {
65 + // make sure we have a valid message object
66 + if (isset($queue[$i]->type))
67 + {
68 + // extract last message from temporary list
69 + $last = end($tmp);
70 +
71 + // in case the list is empty or the type of the current
72 + // message doesn't match the previous one, push it
73 + // within the temporary list as new element
74 + if (empty($tmp) || $last->type != $queue[$i]->type)
75 + {
76 + $tmp[] = $queue[$i];
77 + }
78 + // otherwise append this message to the previous one
79 + else
80 + {
81 + $last->message = (array) $last->message;
82 + $last->message[] = $queue[$i]->message;
83 + }
84 + }
85 + }
86 +
87 + // overwrite standard queue
88 + $queue = $tmp;
89 + }
90 +
91 + $layout = new JLayoutFile('html.system.messages', null, array('component' => 'com_vikbooking'));
92 + $output = $layout->render(array('queue' => $queue));
93 +
94 + if ($echo)
95 + {
96 + echo $output;
97 + return true;
98 + }
99 +
100 + return $output;
101 + }
102 +
103 + /**
104 + * Renders the plugin toolbar.
105 + *
106 + * @param JToolbar $bar The toolbar to render.
107 + * @param boolean $echo True to echo the layout, false to return it.
108 + *
109 + * @return mixed True when the layout is echoed, otherwise the layout string.
110 + */
111 + public static function renderToolbar($bar = null, $echo = true)
112 + {
113 + if (is_null($bar) || !$bar instanceof JToolbar)
114 + {
115 + $bar = JToolbar::getInstance();
116 + }
117 +
118 + $output = '';
119 +
120 + // render toolbar only if it contains at least a button or the title is set
121 + if ($bar->hasButtons() || $bar->hasTitle())
122 + {
123 + // open toolbar
124 + $layout = new JLayoutFile('html.toolbar.open', null, array('component' => 'com_vikbooking'));
125 + $output .= $layout->render(array('bar' => $bar));
126 +
127 + // render contents
128 + foreach ($bar->getButtons() as $button)
129 + {
130 + $layoutId = $button->getLayoutId();
131 +
132 + if (!is_array($layoutId))
133 + {
134 + $layoutId = array($layoutId);
135 + }
136 +
137 + // specify base path (null)
138 + $layoutId[] = null;
139 + // force component
140 + $layoutId[] = array('component' => 'com_vikbooking');
141 +
142 + // use reflection to support multiple arguments
143 + $reflect = new ReflectionClass('JLayoutFile');
144 +
145 + // [0] layout id, [1] base path, [2] options
146 + $layout = $reflect->newInstanceArgs($layoutId);
147 + $output .= $layout->render($button->getDisplayData());
148 + }
149 +
150 + // close toolbar
151 + $layout = new JLayoutFile('html.toolbar.close', null, array('component' => 'com_vikbooking'));
152 + $output .= $layout->render();
153 + }
154 +
155 + if ($echo)
156 + {
157 + echo $output;
158 + return true;
159 + }
160 +
161 + return $output;
162 + }
163 +
164 + /**
165 + * Renders the current body page.
166 + *
167 + * @param string $html The HTML to print.
168 + * @param boolean $echo True to echo the layout, false to return it.
169 + *
170 + * @return mixed True when the layout is echoed, otherwise the layout string.
171 + */
172 + public static function renderBody($html, $echo = true)
173 + {
174 + $layout = new JLayoutFile('html.system.body', null, array('component' => 'com_vikbooking'));
175 + $output = $layout->render(array('html' => $html));
176 +
177 + if ($echo)
178 + {
179 + echo $output;
180 + return true;
181 + }
182 +
183 + return $output;
184 + }
185 +}