PluginProbe
The WP Remote WordPress Plugin / 4.73
The WP Remote WordPress Plugin v4.73
6.72 6.69 6.65 6.62 6.48 6.47 4.87 4.97 5.05 5.09 5.16 5.22 5.24 5.25 5.38 5.41 5.42 5.45 5.47 5.53 5.56 5.65 5.68 5.72 5.73 All 53 releases
wpremote / callback / wings / db.php

db.php in The WP Remote WordPress Plugin 4.73, at callback/wings/db.php

301 lines 9.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if (!defined('ABSPATH')) exit;
4 if (!class_exists('BVDBCallback')) :
5 require_once dirname( __FILE__ ) . '/../streams.php';
6
7 class BVDBCallback extends BVCallbackBase {
8 public $db;
9 public $stream;
10 public $account;
11
12 public static $bvTables = array("fw_requests", "lp_requests", "ip_store");
13
14 const DB_WING_VERSION = 1.0;
15
16 public function __construct($callback_handler) {
17 $this->db = $callback_handler->db;
18 $this->account = $callback_handler->account;
19 $this->siteinfo = $callback_handler->siteinfo;
20 }
21
22 public function getLastID($pkeys, $end_row) {
23 $last_ids = array();
24 foreach($pkeys as $pk) {
25 $last_ids[$pk] = $end_row[$pk];
26 }
27 return $last_ids;
28 }
29
30 public function getTableData($table, $tname, $rcount, $offset, $limit, $bsize, $filter, $pkeys, $include_rows = false) {
31 $tinfo = array();
32
33 $rows_count = $this->db->rowsCount($table);
34 $result = array('count' => $rows_count);
35 if ($limit == 0) {
36 $limit = $rows_count;
37 }
38 $srows = 1;
39 while (($limit > 0) && ($srows > 0)) {
40 if ($bsize > $limit)
41 $bsize = $limit;
42 $rows = $this->db->getTableContent($table, '*', $filter, $bsize, $offset);
43 $srows = sizeof($rows);
44 $data = array();
45 $data["table_name"] = $tname;
46 $data["offset"] = $offset;
47 $data["size"] = $srows;
48 $serialized_rows = serialize($rows);
49 $data['md5'] = md5($serialized_rows);
50 $data['length'] = strlen($serialized_rows);
51 array_push($tinfo, $data);
52 if (!empty($pkeys) && $srows > 0) {
53 $end_row = end($rows);
54 $last_ids = $this->getLastID($pkeys, $end_row);
55 $data['last_ids'] = $last_ids;
56 $result['last_ids'] = $last_ids;
57 }
58 if ($include_rows) {
59 $data["rows"] = $rows;
60 $str = serialize($data);
61 $this->stream->writeStream($str);
62 }
63 $offset += $srows;
64 $limit -= $srows;
65 }
66 $result['size'] = $offset;
67 $result['tinfo'] = $tinfo;
68 return $result;
69 }
70
71 public function getCreateTableQueries($tables) {
72 $resp = array();
73 foreach($tables as $table) {
74 $tname = urldecode($table);
75 $resp[$tname] = array("create" => $this->db->showTableCreate($table));
76 }
77 return $resp;
78 }
79
80 public function checkTables($tables, $type) {
81 $resp = array();
82 foreach($tables as $table) {
83 $tname = urldecode($table);
84 $resp[$tname] = array("status" => $this->db->checkTable($table, $type));
85 }
86 return $resp;
87 }
88
89 public function describeTables($tables) {
90 $resp = array();
91 foreach($tables as $table) {
92 $tname = urldecode($table);
93 $resp[$tname] = array("description" => $this->db->describeTable($table));
94 }
95 return $resp;
96 }
97
98 public function checkTablesExist($tables) {
99 $resp = array();
100 foreach($tables as $table) {
101 $tname = urldecode($table);
102 $resp[$tname] = array("tblexists" => $this->db->isTablePresent($table));
103 }
104 return $resp;
105 }
106
107 public function getTablesRowCount($tables) {
108 $resp = array();
109 foreach($tables as $table) {
110 $tname = urldecode($table);
111 $resp[$tname] = array("count" => $this->db->rowsCount($table));
112 }
113 return $resp;
114 }
115
116 public function getTablesKeys($tables) {
117 $resp = array();
118 foreach($tables as $table) {
119 $tname = urldecode($table);
120 $resp[$tname] = array("keys" => $this->db->tableKeys($table));
121 }
122 return $resp;
123 }
124
125 public function process($request) {
126 $db = $this->db;
127 $params = $request->params;
128 $stream_init_info = BVStream::startStream($this->account, $request);
129
130 if (array_key_exists('stream', $stream_init_info)) {
131 $this->stream = $stream_init_info['stream'];
132 switch ($request->method) {
133 case "gettbls":
134 $resp = array("tables" => $db->showTables());
135 break;
136 case "tblstatus":
137 $resp = array("statuses" => $db->showTableStatus());
138 break;
139 case "tablekeys":
140 $table = urldecode($params['table']);
141 $resp = array("table_keys" => $db->tableKeys($table));
142 break;
143 case "describetable":
144 $table = urldecode($params['table']);
145 $resp = array("table_description" => $db->describeTable($table));
146 break;
147 case "checktable":
148 $table = urldecode($params['table']);
149 $type = urldecode($params['type']);
150 $resp = array("status" => $db->checkTable($table, $type));
151 break;
152 case "repairtable":
153 $table = urldecode($params['table']);
154 $resp = array("status" => $db->repairTable($table));
155 break;
156 case "gettcrt":
157 $table = urldecode($params['table']);
158 $resp = array("create" => $db->showTableCreate($table));
159 break;
160 case "tblskys":
161 $tables = $params['tables'];
162 $resp = $this->getTablesKeys($tables);
163 break;
164 case "getmlticrt":
165 $tables = $params['tables'];
166 $resp = $this->getCreateTableQueries($tables);
167 break;
168 case "desctbls":
169 $tables = $params['tables'];
170 $resp = $this->describeTables($tables);
171 break;
172 case "mltirwscount":
173 $tables = $params['tables'];
174 $resp = $this->getTablesRowCount($tables);
175 break;
176 case "chktabls":
177 $tables = $params['tables'];
178 $type = urldecode($params['type']);
179 $resp = $this->checkTables($tables, $type);
180 break;
181 case "chktablsxist":
182 $tables = $params['tables'];
183 $resp = $this->checkTablesExist($tables);
184 break;
185 case "getrowscount":
186 $table = urldecode($params['table']);
187 $resp = array("count" => $db->rowsCount($table));
188 break;
189 case "gettablecontent":
190 $result = array();
191 $table = urldecode($params['table']);
192 $fields = urldecode($params['fields']);
193 $filter = (array_key_exists('filter', $params)) ? urldecode($params['filter']) : "";
194 $limit = intval(urldecode($params['limit']));
195 $offset = intval(urldecode($params['offset']));
196 $pkeys = (array_key_exists('pkeys', $params)) ? $params['pkeys'] : array();
197 $result['timestamp'] = time();
198 $result['tablename'] = $table;
199 $rows = $db->getTableContent($table, $fields, $filter, $limit, $offset);
200 $srows = sizeof($rows);
201 if (!empty($pkeys) && $srows > 0) {
202 $end_row = end($rows);
203 $result['last_ids'] = $this->getLastID($pkeys, $end_row);
204 }
205 $result["rows"] = $rows;
206 $resp = $result;
207 break;
208 case "multitablecontent":
209 $tableParams = $params['table_params'];
210 $resp = array();
211 foreach($tableParams as $tableParam) {
212 $result = array();
213 $identifier = $tableParam['identifier'];
214 $table = $tableParam['table'];
215 $tname = $tableParam['tname'];
216 $fields = $tableParam['fields'];
217 $filter = (array_key_exists('filter', $tableParam)) ? $tableParam['filter'] : "";
218 $limit = $tableParam['limit'];
219 $offset = $tableParam['offset'];
220 $pkeys = (array_key_exists('pkeys', $tableParam)) ? $tableParam['pkeys'] : array();
221 $result['timestamp'] = time();
222 $result['table_name'] = $tname;
223 $rows = $db->getTableContent($table, $fields, $filter, $limit, $offset);
224 $srows = sizeof($rows);
225 if (!empty($pkeys) && $srows > 0) {
226 $end_row = end($rows);
227 $result['last_ids'] = $this->getLastID($pkeys, $end_row);
228 }
229 $result["rows"] = $rows;
230 $result["size"] = $srows;
231 $resp[$identifier] = $result;
232 }
233 break;
234 case "tableinfo":
235 $table = urldecode($params['table']);
236 $offset = intval(urldecode($params['offset']));
237 $limit = intval(urldecode($params['limit']));
238 $bsize = intval(urldecode($params['bsize']));
239 $filter = (array_key_exists('filter', $params)) ? urldecode($params['filter']) : "";
240 $rcount = intval(urldecode($params['rcount']));
241 $tname = urldecode($params['tname']);
242 $pkeys = (array_key_exists('pkeys', $params)) ? $params['pkeys'] : array();
243 $resp = $this->getTableData($table, $tname, $rcount, $offset, $limit, $bsize, $filter, $pkeys, false);
244 break;
245 case "getmulttables":
246 $result = array();
247 $tableParams = $params['table_params'];
248 $resp = array();
249 foreach($tableParams as $tableParam) {
250 $table = urldecode($tableParam['table']);
251 $tname = urldecode($tableParam['tname']);
252 $rcount = intval(urldecode($tableParam['rcount']));
253 $filter = (array_key_exists('filter', $tableParam)) ? urldecode($tableParam['filter']) : "";
254 $limit = intval(urldecode($tableParam['limit']));
255 $offset = intval(urldecode($tableParam['offset']));
256 $bsize = intval(urldecode($tableParam['bsize']));
257 $pkeys = (array_key_exists('pkeys', $tableParam)) ? $tableParam['pkeys'] : array();
258 $resp[$tname] = $this->getTableData($table, $tname, $rcount, $offset, $limit, $bsize, $filter, $pkeys, true);
259 }
260 break;
261 case "uploadrows":
262 $table = urldecode($params['table']);
263 $offset = intval(urldecode($params['offset']));
264 $limit = intval(urldecode($params['limit']));
265 $bsize = intval(urldecode($params['bsize']));
266 $filter = (array_key_exists('filter', $params)) ? urldecode($params['filter']) : "";
267 $rcount = intval(urldecode($params['rcount']));
268 $tname = urldecode($params['tname']);
269 $pkeys = (array_key_exists('pkeys', $params)) ? $params['pkeys'] : array();
270 $resp = $this->getTableData($table, $tname, $rcount, $offset, $limit, $bsize, $filter, $pkeys, true);
271 break;
272 case "tblexists":
273 $resp = array("tblexists" => $db->isTablePresent($params['table']));
274 break;
275 case "crttbl":
276 $usedbdelta = array_key_exists('usedbdelta', $params);
277 $resp = array("crttbl" => $db->createTable($params['query'], $params['table'], $usedbdelta));
278 break;
279 case "drptbl":
280 $resp = array("drptbl" => $db->dropBVTable($params['table']));
281 break;
282 case "trttbl":
283 $resp = array("trttbl" => $db->truncateBVTable($params['table']));
284 break;
285 case "altrtbl":
286 $resp = array("altrtbl" => $db->alterBVTable($params['query'], $params['query']));
287 break;
288 default:
289 $resp = false;
290 }
291 $end_stream_info = $this->stream->endStream();
292 if (!empty($end_stream_info) && is_array($resp)) {
293 $resp = array_merge($resp, $end_stream_info);
294 }
295 } else {
296 $resp = $stream_init_info;
297 }
298 return $resp;
299 }
300 }
301 endif;