Upgraded phpmyadmin to 4.0.4 (All Languages) - No modifications yet
[openemr.git] / phpmyadmin / libraries / rte / rte_list.lib.php
blobd531cd86fbe0e0be45d82612d6cbc516c55dbe28
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * Common functions for generating lists of Routines, Triggers and Events.
6 * @package PhpMyAdmin
7 */
8 if (! defined('PHPMYADMIN')) {
9 exit;
12 /**
13 * Creates a list of items containing the relevant
14 * information and some action links.
16 * @param string $type One of ['routine'|'trigger'|'event']
17 * @param array $items An array of items
19 * @return string HTML code of the list of items
21 function PMA_RTE_getList($type, $items)
23 global $table;
25 /**
26 * Conditional classes switch the list on or off
28 $class1 = 'hide';
29 $class2 = '';
30 if (! $items) {
31 $class1 = '';
32 $class2 = ' hide';
34 /**
35 * Generate output
37 $retval = "<!-- LIST OF " . PMA_RTE_getWord('docu') . " START -->\n";
38 $retval .= "<fieldset>\n";
39 $retval .= " <legend>\n";
40 $retval .= " " . PMA_RTE_getWord('title') . "\n";
41 $retval .= " " . PMA_Util::showMySQLDocu('SQL-Syntax', PMA_RTE_getWord('docu')) . "\n";
42 $retval .= " </legend>\n";
43 $retval .= " <div class='$class1' id='nothing2display'>\n";
44 $retval .= " " . PMA_RTE_getWord('nothing') . "\n";
45 $retval .= " </div>\n";
46 $retval .= " <table class='data$class2'>\n";
47 $retval .= " <!-- TABLE HEADERS -->\n";
48 $retval .= " <tr>\n";
49 // th cells with a colspan need corresponding td cells, according to W3C
50 switch ($type) {
51 case 'routine':
52 $retval .= " <th>" . __('Name') . "</th>\n";
53 $retval .= " <th colspan='4'>" . __('Action') . "</th>\n";
54 $retval .= " <th>" . __('Type') . "</th>\n";
55 $retval .= " <th>" . __('Returns') . "</th>\n";
56 $retval .= " </tr>\n";
57 $retval .= " <tr style='display: none'>\n"; // see comment above
58 for ($i = 0; $i < 7; $i++) {
59 $retval .= " <td></td>\n";
61 break;
62 case 'trigger':
63 $retval .= " <th>" . __('Name') . "</th>\n";
64 if (empty($table)) {
65 $retval .= " <th>" . __('Table') . "</th>\n";
67 $retval .= " <th colspan='3'>" . __('Action') . "</th>\n";
68 $retval .= " <th>" . __('Time') . "</th>\n";
69 $retval .= " <th>" . __('Event') . "</th>\n";
70 $retval .= " </tr>\n";
71 $retval .= " <tr style='display: none'>\n"; // see comment above
72 for ($i = 0; $i < (empty($table) ? 7 : 6); $i++) {
73 $retval .= " <td></td>\n";
75 break;
76 case 'event':
77 $retval .= " <th>" . __('Name') . "</th>\n";
78 $retval .= " <th>" . __('Status') . "</th>\n";
79 $retval .= " <th colspan='3'>" . __('Action') . "</th>\n";
80 $retval .= " <th>" . __('Type') . "</th>\n";
81 $retval .= " </tr>\n";
82 $retval .= " <tr style='display: none'>\n"; // see comment above
83 for ($i = 0; $i < 6; $i++) {
84 $retval .= " <td></td>\n";
86 break;
87 default:
88 break;
90 $retval .= " </tr>\n";
91 $retval .= " <!-- TABLE DATA -->\n";
92 $ct = 0;
93 foreach ($items as $item) {
94 $rowclass = ($ct % 2 == 0) ? 'odd' : 'even';
95 if ($GLOBALS['is_ajax_request'] && empty($_REQUEST['ajax_page_request'])) {
96 $rowclass .= ' ajaxInsert hide';
98 // Get each row from the correct function
99 switch ($type) {
100 case 'routine':
101 $retval .= PMA_RTN_getRowForList($item, $rowclass);
102 break;
103 case 'trigger':
104 $retval .= PMA_TRI_getRowForList($item, $rowclass);
105 break;
106 case 'event':
107 $retval .= PMA_EVN_getRowForList($item, $rowclass);
108 break;
109 default:
110 break;
112 $ct++;
114 $retval .= " </table>\n";
115 $retval .= "</fieldset>\n";
116 $retval .= "<!-- LIST OF " . PMA_RTE_getWord('docu') . " END -->\n";
118 return $retval;
119 } // end PMA_RTE_getList()
122 * Creates the contents for a row in the list of routines
124 * @param array $routine An array of routine data
125 * @param string $rowclass Empty or one of ['even'|'odd']
127 * @return string HTML code of a row for the list of routines
129 function PMA_RTN_getRowForList($routine, $rowclass = '')
131 global $ajax_class, $url_query, $db, $titles;
133 $sql_drop = sprintf(
134 'DROP %s IF EXISTS %s',
135 $routine['ROUTINE_TYPE'],
136 PMA_Util::backquote($routine['SPECIFIC_NAME'])
138 $type_link = "item_type={$routine['ROUTINE_TYPE']}";
140 $retval = " <tr class='noclick $rowclass'>\n";
141 $retval .= " <td>\n";
142 $retval .= " <span class='drop_sql hide'>" . htmlspecialchars($sql_drop) . "</span>\n";
143 $retval .= " <strong>\n";
144 $retval .= " " . htmlspecialchars($routine['SPECIFIC_NAME']) . "\n";
145 $retval .= " </strong>\n";
146 $retval .= " </td>\n";
147 $retval .= " <td>\n";
148 if ($routine['ROUTINE_DEFINITION'] !== null
149 && PMA_Util::currentUserHasPrivilege('ALTER ROUTINE', $db)
150 && PMA_Util::currentUserHasPrivilege('CREATE ROUTINE', $db)
152 $retval .= ' <a ' . $ajax_class['edit']
153 . ' href="db_routines.php?'
154 . $url_query
155 . '&amp;edit_item=1'
156 . '&amp;item_name=' . urlencode($routine['SPECIFIC_NAME'])
157 . '&amp;' . $type_link
158 . '">' . $titles['Edit'] . "</a>\n";
159 } else {
160 $retval .= " {$titles['NoEdit']}\n";
162 $retval .= " </td>\n";
163 $retval .= " <td>\n";
164 if ($routine['ROUTINE_DEFINITION'] !== null
165 && PMA_Util::currentUserHasPrivilege('EXECUTE', $db)
167 // Check if he routine has any input parameters. If it does,
168 // we will show a dialog to get values for these parameters,
169 // otherwise we can execute it directly.
170 $routine_details = PMA_RTN_getDataFromName(
171 $routine['SPECIFIC_NAME'],
172 $routine['ROUTINE_TYPE'],
173 false
175 if ($routine !== false) {
176 $execute_action = 'execute_routine';
177 for ($i=0; $i<$routine_details['item_num_params']; $i++) {
178 if ($routine_details['item_type'] == 'PROCEDURE'
179 && $routine_details['item_param_dir'][$i] == 'OUT'
181 continue;
183 $execute_action = 'execute_dialog';
184 break;
186 $retval .= ' <a ' . $ajax_class['exec']
187 . ' href="db_routines.php?'
188 . $url_query
189 . '&amp;' . $execute_action . '=1'
190 . '&amp;item_name=' . urlencode($routine['SPECIFIC_NAME'])
191 . '&amp;' . $type_link
192 . '">' . $titles['Execute'] . "</a>\n";
194 } else {
195 $retval .= " {$titles['NoExecute']}\n";
197 $retval .= " </td>\n";
198 $retval .= " <td>\n";
199 $retval .= ' <a ' . $ajax_class['export']
200 . ' href="db_routines.php?'
201 . $url_query
202 . '&amp;export_item=1'
203 . '&amp;item_name=' . urlencode($routine['SPECIFIC_NAME'])
204 . '&amp;' . $type_link
205 . '">' . $titles['Export'] . "</a>\n";
206 $retval .= " </td>\n";
207 $retval .= " <td>\n";
208 if (PMA_Util::currentUserHasPrivilege('ALTER ROUTINE', $db)) {
209 $retval .= ' <a ' . $ajax_class['drop']
210 . ' href="sql.php?'
211 . $url_query
212 . '&amp;sql_query=' . urlencode($sql_drop)
213 . '&amp;goto=db_routines.php' . urlencode("?db={$db}")
214 . '" >' . $titles['Drop'] . "</a>\n";
215 } else {
216 $retval .= " {$titles['NoDrop']}\n";
218 $retval .= " </td>\n";
219 $retval .= " <td>\n";
220 $retval .= " {$routine['ROUTINE_TYPE']}\n";
221 $retval .= " </td>\n";
222 $retval .= " <td>\n";
223 $retval .= " " . htmlspecialchars($routine['DTD_IDENTIFIER']) . "\n";
224 $retval .= " </td>\n";
225 $retval .= " </tr>\n";
227 return $retval;
228 } // end PMA_RTN_getRowForList()
231 * Creates the contents for a row in the list of triggers
233 * @param array $trigger An array of routine data
234 * @param string $rowclass Empty or one of ['even'|'odd']
236 * @return string HTML code of a cell for the list of triggers
238 function PMA_TRI_getRowForList($trigger, $rowclass = '')
240 global $ajax_class, $url_query, $db, $table, $titles;
242 $retval = " <tr class='noclick $rowclass'>\n";
243 $retval .= " <td>\n";
244 $retval .= " <span class='drop_sql hide'>" . htmlspecialchars($trigger['drop']) . "</span>\n";
245 $retval .= " <strong>\n";
246 $retval .= " " . htmlspecialchars($trigger['name']) . "\n";
247 $retval .= " </strong>\n";
248 $retval .= " </td>\n";
249 if (empty($table)) {
250 $retval .= " <td>\n";
251 $retval .= " <a href='db_triggers.php?{$url_query}"
252 . "&amp;table={$trigger['table']}'>"
253 . $trigger['table'] . "</a>\n";
254 $retval .= " </td>\n";
256 $retval .= " <td>\n";
257 if (PMA_Util::currentUserHasPrivilege('TRIGGER', $db, $table)) {
258 $retval .= ' <a ' . $ajax_class['edit']
259 . ' href="db_triggers.php?'
260 . $url_query
261 . '&amp;edit_item=1'
262 . '&amp;item_name=' . urlencode($trigger['name'])
263 . '">' . $titles['Edit'] . "</a>\n";
264 } else {
265 $retval .= " {$titles['NoEdit']}\n";
267 $retval .= " </td>\n";
268 $retval .= " <td>\n";
269 $retval .= ' <a ' . $ajax_class['export']
270 . ' href="db_triggers.php?'
271 . $url_query
272 . '&amp;export_item=1'
273 . '&amp;item_name=' . urlencode($trigger['name'])
274 . '">' . $titles['Export'] . "</a>\n";
275 $retval .= " </td>\n";
276 $retval .= " <td>\n";
277 if (PMA_Util::currentUserHasPrivilege('TRIGGER', $db)) {
278 $retval .= ' <a ' . $ajax_class['drop']
279 . ' href="sql.php?'
280 . $url_query
281 . '&amp;sql_query=' . urlencode($trigger['drop'])
282 . '&amp;goto=db_triggers.php' . urlencode("?db={$db}")
283 . '" >' . $titles['Drop'] . "</a>\n";
284 } else {
285 $retval .= " {$titles['NoDrop']}\n";
287 $retval .= " </td>\n";
288 $retval .= " <td>\n";
289 $retval .= " {$trigger['action_timing']}\n";
290 $retval .= " </td>\n";
291 $retval .= " <td>\n";
292 $retval .= " {$trigger['event_manipulation']}\n";
293 $retval .= " </td>\n";
294 $retval .= " </tr>\n";
296 return $retval;
297 } // end PMA_TRI_getRowForList()
300 * Creates the contents for a row in the list of events
302 * @param array $event An array of routine data
303 * @param string $rowclass Empty or one of ['even'|'odd']
305 * @return string HTML code of a cell for the list of events
307 function PMA_EVN_getRowForList($event, $rowclass = '')
309 global $ajax_class, $url_query, $db, $titles;
311 $sql_drop = sprintf(
312 'DROP EVENT IF EXISTS %s',
313 PMA_Util::backquote($event['EVENT_NAME'])
316 $retval = " <tr class='noclick $rowclass'>\n";
317 $retval .= " <td>\n";
318 $retval .= " <span class='drop_sql hide'>" . htmlspecialchars($sql_drop) . "</span>\n";
319 $retval .= " <strong>\n";
320 $retval .= " " . htmlspecialchars($event['EVENT_NAME']) . "\n";
321 $retval .= " </strong>\n";
322 $retval .= " </td>\n";
323 $retval .= " <td>\n";
324 $retval .= " {$event['STATUS']}\n";
325 $retval .= " </td>\n";
326 $retval .= " <td>\n";
327 if (PMA_Util::currentUserHasPrivilege('EVENT', $db)) {
328 $retval .= ' <a ' . $ajax_class['edit']
329 . ' href="db_events.php?'
330 . $url_query
331 . '&amp;edit_item=1'
332 . '&amp;item_name=' . urlencode($event['EVENT_NAME'])
333 . '">' . $titles['Edit'] . "</a>\n";
334 } else {
335 $retval .= " {$titles['NoEdit']}\n";
337 $retval .= " </td>\n";
338 $retval .= " <td>\n";
339 $retval .= ' <a ' . $ajax_class['export']
340 . ' href="db_events.php?'
341 . $url_query
342 . '&amp;export_item=1'
343 . '&amp;item_name=' . urlencode($event['EVENT_NAME'])
344 . '">' . $titles['Export'] . "</a>\n";
345 $retval .= " </td>\n";
346 $retval .= " <td>\n";
347 if (PMA_Util::currentUserHasPrivilege('EVENT', $db)) {
348 $retval .= ' <a ' . $ajax_class['drop']
349 . ' href="sql.php?'
350 . $url_query
351 . '&amp;sql_query=' . urlencode($sql_drop)
352 . '&amp;goto=db_events.php' . urlencode("?db={$db}")
353 . '" >' . $titles['Drop'] . "</a>\n";
354 } else {
355 $retval .= " {$titles['NoDrop']}\n";
357 $retval .= " </td>\n";
358 $retval .= " <td>\n";
359 $retval .= " {$event['EVENT_TYPE']}\n";
360 $retval .= " </td>\n";
361 $retval .= " </tr>\n";
363 return $retval;
364 } // end PMA_EVN_getRowForList()