Export.php
4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Common functions for the export functionality for Routines, Triggers and Events.
*
* @package PhpMyAdmin
*/
namespace PhpMyAdmin\Rte;
use PhpMyAdmin\Message;
use PhpMyAdmin\Response;
use PhpMyAdmin\Rte\Words;
use PhpMyAdmin\Util;
/**
* PhpMyAdmin\Rte\Export class
*
* @package PhpMyAdmin
*/
class Export
{
/**
* This function is called from one of the other functions in this file
* and it completes the handling of the export functionality.
*
* @param string $export_data The SQL query to create the requested item
*
* @return void
*/
private static function handle($export_data)
{
global $db;
$response = Response::getInstance();
$item_name = htmlspecialchars(Util::backquote($_GET['item_name']));
if ($export_data !== false) {
$export_data = htmlspecialchars(trim($export_data));
$title = sprintf(Words::get('export'), $item_name);
if ($response->isAjax()) {
$response->addJSON('message', $export_data);
$response->addJSON('title', $title);
exit;
} else {
$export_data = '<textarea cols="40" rows="15" style="width: 100%;">'
. $export_data . '</textarea>';
echo "<fieldset>\n"
, "<legend>$title</legend>\n"
, $export_data
, "</fieldset>\n";
}
} else {
$_db = htmlspecialchars(Util::backquote($db));
$message = __('Error in processing request:') . ' '
. sprintf(Words::get('no_view'), $item_name, $_db);
$message = Message::error($message);
if ($response->isAjax()) {
$response->setRequestStatus(false);
$response->addJSON('message', $message);
exit;
} else {
$message->display();
}
}
} // end self::handle()
/**
* If necessary, prepares event information and passes
* it to self::handle() for the actual export.
*
* @return void
*/
public static function events()
{
global $_GET, $db;
if (! empty($_GET['export_item']) && ! empty($_GET['item_name'])) {
$item_name = $_GET['item_name'];
$export_data = $GLOBALS['dbi']->getDefinition($db, 'EVENT', $item_name);
if (! $export_data) {
$export_data = false;
}
self::handle($export_data);
}
} // end self::events()
/**
* If necessary, prepares routine information and passes
* it to self::handle() for the actual export.
*
* @return void
*/
public static function routines()
{
global $_GET, $db;
if (! empty($_GET['export_item'])
&& ! empty($_GET['item_name'])
&& ! empty($_GET['item_type'])
) {
if ($_GET['item_type'] == 'FUNCTION' || $_GET['item_type'] == 'PROCEDURE') {
$rtn_definition
= $GLOBALS['dbi']->getDefinition(
$db,
$_GET['item_type'],
$_GET['item_name']
);
if (! $rtn_definition) {
$export_data = false;
} else {
$export_data = "DELIMITER $$\n"
. $rtn_definition
. "$$\nDELIMITER ;\n";
}
self::handle($export_data);
}
}
} // end self::routines()
/**
* If necessary, prepares trigger information and passes
* it to self::handle() for the actual export.
*
* @return void
*/
public static function triggers()
{
global $_GET, $db, $table;
if (! empty($_GET['export_item']) && ! empty($_GET['item_name'])) {
$item_name = $_GET['item_name'];
$triggers = $GLOBALS['dbi']->getTriggers($db, $table, '');
$export_data = false;
foreach ($triggers as $trigger) {
if ($trigger['name'] === $item_name) {
$export_data = $trigger['create'];
break;
}
}
self::handle($export_data);
}
} // end self::triggers()
}