prokat/api/modules/ajax/ajax.php
2025-06-16 18:28:08 +05:00

530 lines
20 KiB
PHP
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
ini_set('display_errors', 1);
function translit($value)
{
$converter = array(
'а' => 'a',
'б' => 'b',
'в' => 'v',
'г' => 'g',
'д' => 'd',
'е' => 'e',
'ё' => 'e',
'ж' => 'zh',
'з' => 'z',
'и' => 'i',
'й' => 'y',
'к' => 'k',
'л' => 'l',
'м' => 'm',
'н' => 'n',
'о' => 'o',
'п' => 'p',
'р' => 'r',
'с' => 's',
'т' => 't',
'у' => 'u',
'ф' => 'f',
'х' => 'h',
'ц' => 'c',
'ч' => 'ch',
'ш' => 'sh',
'щ' => 'sch',
'ь' => '',
'ы' => 'y',
'ъ' => '',
'э' => 'e',
'ю' => 'yu',
'я' => 'ya',
'А' => 'A',
'Б' => 'B',
'В' => 'V',
'Г' => 'G',
'Д' => 'D',
'Е' => 'E',
'Ё' => 'E',
'Ж' => 'Zh',
'З' => 'Z',
'И' => 'I',
'Й' => 'Y',
'К' => 'K',
'Л' => 'L',
'М' => 'M',
'Н' => 'N',
'О' => 'O',
'П' => 'P',
'Р' => 'R',
'С' => 'S',
'Т' => 'T',
'У' => 'U',
'Ф' => 'F',
'Х' => 'H',
'Ц' => 'C',
'Ч' => 'Ch',
'Ш' => 'Sh',
'Щ' => 'Sch',
'Ь' => '',
'Ы' => 'Y',
'Ъ' => '',
'Э' => 'E',
'Ю' => 'Yu',
'Я' => 'Ya',
' ' => '_'
);
$value = strtr($value, $converter);
return $value;
}
switch (@$_POST['act']) {
/* ----------------------------------------------------------------------
02.06.2025
Создаем сессию для модуля поиска
---------------------------------------------------------------------- */
case 'addFindTxt':
$_SESSION['find_txt']=$_POST['txt'];
echo 1;
break;
/* ----------------------------------------------------------------------
22.03.2025
Вызываем подменю меню
---------------------------------------------------------------------- */
case 'getSubMenu':
//@mkdir('/tmp/' . $_SERVER['SERVER_NAME'], 0700);
$cache='/tmp/cache/' . $_SERVER['SERVER_NAME'] . '/menu-'. $_POST['id'] . '.json';
if (file_exists($cache)){
$text = file_get_contents($cache);
$j=\core::unzip($text);
//Чистим кеш через пять дней
$r=time()-filemtime($cache);
if ($r>432000)unlink($cache);
}else{
$mainmnu_g=\DBmysql::getAll("SELECT `id`, `title` FROM `ctovar` WHERE `cat`=? ORDER BY `sort`, `title`", $_POST['id']);
$c=count($mainmnu_g);
for ($i=0; $i<$c; $i++) $mainmnu_g[$i]['submnu']=\DBmysql::getAll("SELECT `id`, `title` FROM `ctovar` WHERE `cat`=? AND `status`=1 ORDER BY `sort`, `title` LIMIT 20", $mainmnu_g[$i]['id']);
$j=\core::j($mainmnu_g);
file_put_contents($cache, \core::zip($j));
}
echo $j;
break;
/* ----------------------------------------------------------------------
22.03.2025
Вызываем главное меню
---------------------------------------------------------------------- */
case 'getRootMenu':
$menu=\DBmysql::getAll("SELECT `id`, `title` FROM `ctovar` WHERE `status`=? AND `cat`=? ORDER BY `sort`",[1, 0]);
$json=\core::j($menu);
echo $json;
break;
/* ----------------------------------------------------------------------
11.06.2024
Дозагрузка контента
---------------------------------------------------------------------- */
case 'contentDown':
$limit = $_POST['limit'];
$page = intval(@$_POST['page']);
$page = (empty($page)) ? 1 : $page;
$start = ($page != 1) ? $page * $limit - $limit : 0;
if (class_exists('DBmysql')) {
$list = \DBmysql::getAll("SELECT `id`, `title`, `cena`, `artikul`, `code` FROM `" . $_POST['content_type'] . "` WHERE `category`=? AND `site`=? AND `status`=1 LIMIT $start, $limit", [$_POST['category'], $_SERVER['SERVER_NAME']]);
} else {
$list = \DB::getAll("SELECT `id`, `title`, `cena`, `artikul`, `code` FROM `" . $_POST['content_type'] . "` WHERE `category`=? AND `site`=? AND `status`=1 LIMIT $start, $limit", [$_POST['category'], $_SERVER['SERVER_NAME']]);
}
$count = count($list);
for ($i = 0; $i < $count; $i++) {
if (class_exists('DBmysql')) {
$filename = \DBmysql::getValue("SELECT `filename` FROM `img` WHERE `content_id`=? AND `site`=? AND `content_type`=? LIMIT 1", array(
$list[$i]['id'],
$_SERVER['SERVER_NAME'],
$_POST['content_type']
));
} else {
$filename = \DB::getValue("SELECT `filename` FROM `img` WHERE `content_id`=? AND `site`=? AND `content_type`=? LIMIT 1", array(
$list[$i]['id'],
$_SERVER['SERVER_NAME'],
$_POST['content_type']
));
}
if (!$filename) {
$img = 'https://static.yurecnt.ru/img/nofoto/no_skin.png';
} else {
$f = 'cache/img/' . $filename . '-' . IMG_PRV_W . '-' . IMG_PRV_H . '.webp';
if (file_exists($f))
$img = '/' . $f;
else
$img = '/img/' . $filename . '-' . IMG_PRV_W . '-' . IMG_PRV_H;
}
$a = ($list[$i]['artikul']) ? $list[$i]['artikul'] : $list[$i]['code'];
$res .= '
<div style="width:300px; padding-bottom: 10px;">
<div class="card" style="width: 280px;">
<div style="height: 280px;">
<a href="/tovar_show/' . $list[$i]['id'] . '"><img
src="' . $img . '" class="card-img-top" alt="..." style="width: 280px"></a>
</div>
<div class="card-body" style="text-align: center;">
<div style="height: 100px; margin-bottom: 10px;">
<h5 class="card-title" style="font-size: 12pt; font-weight: 100;"><a href="/tovar_show/' . $list[$i]['id'] . '">' . mb_substr($list[$i]['title'], 0, 50) . '</a>
</h5>
</div>
<small
style="background-color: lightblue; padding: 5px; width: 100%; margin-bottom: 10px; margin-top: 10px;">Актикул: ' .
$a . '</small>
<!--p class="card-text">Небольшой пример текста, который должен основываться на названии карточки и составлять основную часть содержимого карты.</p-->
<a href="/tovar_show/' . $list[$i]['id'] . '" class="btn btn-primary" style="width: 100%;"><i
class="fa-solid fa-cart-shopping"></i>' . $list[$i]['cena'] . ' р.</a>
</div>
</div>
</div>';
}
echo $res;
break;
/* ----------------------------------------------------------------------
02.02.2024
Добавляем товар и сообщаем ИД
---------------------------------------------------------------------- */
case 'api_addtovar_v1':
//print_r($_POST);
$key = $_POST['key'];
$massiv = \core::j($_POST['j']);
//проверяем статус ключа api:
$status = \DB::getValue("SELECT `status` FROM `api` WHERE `api`=? AND `site`=? LIMIT 1", array($key, $massiv['site']));
if ($status == 1) {
//Проверяем существование товара:
$id = \DB::getValue("SELECT `id` FROM `tovar` WHERE `title`=? AND `site`=? LIMIT 1", array($massiv['title'], $massiv['site']));
if (!$id)
$id = \DB::add("INSERT INTO `tovar` (`title`, `artikul`, `status`, `site`, `category`, `alias`) VALUES (?, ?, ?, ?, ?, ?)", array(
$massiv['title'],
$massiv['artikul'],
1,
$massiv['site'],
0,
translit($massiv['title'])
));
echo $id;
}
break;
/* ----------------------------------------------------------------------
02.02.2024
Обновляем цены на товары
---------------------------------------------------------------------- */
case 'api_upd_price_v1':
print_r($_POST);
$key = $_POST['key'];
$massiv = \core::j($_POST['j']);
//проверяем статус ключа api:
$status = \DB::getValue("SELECT `status` FROM `api` WHERE `api`=? AND `site`=? LIMIT 1", array($key, $massiv['site']));
if ($status == 1) {
$massiv['cena'] = str_replace(" ", "", $massiv['cena']);
if ($massiv['har']) {
//смотрим, есть ли уже цена, если есть - обновляем, иначе добавляем
$id = \DB::getValue(
"SELECT `id` FROM `price_hars` WHERE `tovar_id`=? AND `har`=? AND `site`=? LIMIT 1",
array(
$massiv['tovar_id'],
$massiv['har'],
$massiv['site']
)
);
if ($id) { //Обновляем
\DB::set("UPDATE `price_hars` SET `cena`=? WHERE `id`=?", array($massiv['cena'], $id));
} else { //Добавляем
$id = \DB::add(
"INSERT INTO `price_hars` (`tovar_id`, `har`, `cena`, `site`) VALUES (?,?,?,?)",
array(
$massiv['tovar_id'],
$massiv['har'],
$massiv['cena'],
$massiv['site']
)
);
}
} else {
\DB::set("UPDATE `tovar` SET `cena`=? WHERE `id`=?", array($massiv['cena'], $massiv['tovar_id']));
}
} else {
die("bad api key");
}
break;
/* ----------------------------------------------------------------------
28.01.2024
Скрывем инфу о куках
---------------------------------------------------------------------- */
case 'hide-info-cookie':
setcookie('hideinfocookie', 1, $tri_mes, '/', $_SERVER['SERVER_NAME']);
break;
/* ----------------------------------------------------------------------
09.04.2023
Получаем суб-меню
---------------------------------------------------------------------- */
case 'getSubMenu':
$submenu = \DB::getAll("SELECT `id`, `title` FROM `tovar_category` WHERE `category`=? AND `status`=1", $_POST['id']);
echo \json::to_j($submenu);
break;
/* ----------------------------------------------------------------------
05.03.2023
Удаляем из корзины
---------------------------------------------------------------------- */
case 'delFromCart':
\DB::set("DELETE FROM `cart` WHERE `id`=? AND `user_id`=?", array($_POST['id'], \core::checkMe()));
echo \core::getCart()['summ'];
break;
/* ----------------------------------------------------------------------
27.02.2023
Добавляем в корзину
Берем три параметра ID товара, ИД пользователя, Количество
---------------------------------------------------------------------- */
case 'addToCart2_0': //Инсталл
$me = \core::checkMe();
//Проверяем, есть ли товар в корзине, если есть - плюсуем, если нет - добавляем запись
$kolvo = \DB::getValue("SELECT `kolvo` FROM `cart` WHERE `tovar_id`=? AND `user_id`=? AND `order` IS NULL LIMIT 1", array($_POST['tovar_id'], $me));
if ($kolvo)
\DB::set("UPDATE `cart` SET `kolvo`=? WHERE `tovar_id`=? AND `user_id`=? AND `order` IS NULL LIMIT 1", array($kolvo + 1, $_POST['tovar_id'], $me));
else
\DB::add("INSERT INTO `cart` (`kolvo`, `t`, `tovar_id`, `user_id`, `har`)VALUES(?, ?, ?, ?, ?)", array(1, time(), $_POST['tovar_id'], $me, $_POST['har']));
break;
case 'addToCart':
$user=core::checkMe();
$cart=DBmysql::getRow("SELECT `id`, `kolvo` FROM `cart` WHERE `tovar_id`=? AND `user_id`=? AND `order` IS NULL LIMIT 1", [$_POST['tovar_id'], $user]);
$kolvo=($cart['kolvo'])?$cart['kolvo']+1:1;
if ($cart['id'])
DBmysql::set("UPDATE `cart` SET `kolvo`=? WHERE `id`=?", array($kolvo, $cart['id']));
else
echo DBmysql::add("INSERT INTO `cart` (`kolvo`, `t`, `tovar_id`, `user_id`)VALUES(?, ?, ?, ?)", array($kolvo, time(), $_POST['tovar_id'], $user));
break;
// Сохранение настроек модуля
case 'save_settings_mod':
$res['mod'] = $_POST['mod'];
unset($_POST['mod']);
unset($_POST['act']);
$res['json'] = json_encode($_POST, JSON_UNESCAPED_UNICODE);
$db->free_sql2("UPDATE `settings` SET `json`='" . $res['json'] . "' WHERE `mod`='" . $res['mod'] . "'");
break;
/* ----------------------------------------------------------------------
12.02.2023
Повышаем рейтинг
---------------------------------------------------------------------- */
case 'up_reyt';
$user_id = \core::checkMe();
//узнаем, лайкали ли уже это
$like_id = \DB::getValue("SELECT `id` FROM `likes` WHERE `user_id`=? AND `content_id`=? AND `content_type`=?", array($user_id, $_POST['id'], $_POST['tip']));
$reyt = \DB::getValue("SELECT `reyt` FROM `" . $_POST['tip'] . "` WHERE `id`=? LIMIT 1", $_POST['id']);
if ($like_id) { //уже лайкали - разлайкиваем
$reyt--;
\DB::set("DELETE FROM `likes` WHERE `user_id`=? AND `content_id`=? AND `content_type`=? LIMIT 1", array($user_id, $_POST['id'], $_POST['tip']));
} else {
$reyt++;
\DB::add("INSERT INTO `likes` (`user_id`, `content_id`, `content_type`) VALUES (?, ?, ?)", array($user_id, $_POST['id'], $_POST['tip']));
}
\DB::set("UPDATE `" . $_POST['tip'] . "` SET `reyt`=? WHERE `id`=? LIMIT 1", array($reyt, $_POST['id']));
echo $reyt;
break;
case 'up_reyt1';
$tip = $_POST['tip'];
$user_id = ($_SESSION['user_id']) ? $_SESSION['user_id'] : session_id();
if ($tip == 'user_reyt') { //обновляем рейтинг пользователя
//проверяем что еще не лайкали
$id = \DB::getValue("SELECT `id` FROM `likes` WHERE `user_id`=? AND `tip`=? AND `content_id`=? LIMIT 1", array($user_id, $tip, $_POST['id']));
if ($id) { //Убавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `reyt` FROM `users` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt--;
//обновляем рейтинг
\DB::set("UPDATE `users` SET `reyt`=? WHERE `id`=?", array($reyt, $_POST['id']));
\DB::add("DELETE FROM `likes` WHERE `id`=?", $id);
echo $reyt;
} else { //прибавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `reyt` FROM `users` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt++;
//обновляем рейтинг
\DB::set("UPDATE `users` SET `reyt`=? WHERE `id`=?", array($reyt, $_POST['id']));
//пишем в базу что уже это лайкнули
\DB::add("INSERT INTO `likes` (`user_id`, `tip`, `content_id`) VALUES(?, ?, ?)", array($user_id, $tip, $_POST['id']));
echo $reyt;
}
}
if ($tip == 'user_spasibo') { //обновляем рейтинг пользователя
//проверяем что еще не лайкали
$id = \DB::getValue("SELECT `id` FROM `likes` WHERE `user_id`=? AND `tip`=? AND `content_id`=? LIMIT 1", array($user_id, $tip, $_POST['id']));
if ($id) { //Убавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `spasibo` FROM `users` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt--;
//обновляем рейтинг
\DB::set("UPDATE `users` SET `spasibo`=? WHERE `id`=?", array($reyt, $_POST['id']));
\DB::add("DELETE FROM `likes` WHERE `id`=?", $id);
echo $reyt;
} else { //прибавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `spasibo` FROM `users` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt++;
//обновляем рейтинг
\DB::set("UPDATE `users` SET `spasibo`=? WHERE `id`=?", array($reyt, $_POST['id']));
//пишем в базу что уже это лайкнули
\DB::add("INSERT INTO `likes` (`user_id`, `tip`, `content_id`) VALUES(?, ?, ?)", array($user_id, $tip, $_POST['id']));
echo $reyt;
}
}
if ($tip == 'page_reyt') { //обновляем рейтинг пользователя
//проверяем что еще не лайкали
$id = \DB::getValue("SELECT `id` FROM `likes` WHERE `user_id`=? AND `tip`=? AND `content_id`=? LIMIT 1", array($user_id, $tip, $_POST['id']));
if ($id) { //Убавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `reyt` FROM `pages` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt--;
//обновляем рейтинг
\DB::set("UPDATE `pages` SET `reyt`=? WHERE `id`=?", array($reyt, $_POST['id']));
\DB::add("DELETE FROM `likes` WHERE `id`=?", $id);
echo $reyt;
} else { //прибавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `reyt` FROM `pages` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt++;
//обновляем рейтинг
\DB::set("UPDATE `pages` SET `reyt`=? WHERE `id`=?", array($reyt, $_POST['id']));
//пишем в базу что уже это лайкнули
\DB::add("INSERT INTO `likes` (`user_id`, `tip`, `content_id`) VALUES(?, ?, ?)", array($user_id, $tip, $_POST['id']));
echo $reyt;
}
}
if ($tip == 'comment_reyt') { //обновляем рейтинг пользователя
//проверяем что еще не лайкали
$id = \DB::getValue("SELECT `id` FROM `likes` WHERE `user_id`=? AND `tip`=? AND `content_id`=? LIMIT 1", array($user_id, $tip, $_POST['id']));
if ($id) { //Убавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `reyt` FROM `pages_comments` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt--;
//обновляем рейтинг
\DB::set("UPDATE `pages_comments` SET `reyt`=? WHERE `id`=?", array($reyt, $_POST['id']));
\DB::add("DELETE FROM `likes` WHERE `id`=?", $id);
echo $reyt;
} else { //прибавляем
//Получаем текущий рейтинг из БД
$reyt = \DB::getValue("SELECT `reyt` FROM `pages_comments` WHERE `id`=? LIMIT 1", $_POST['id']);
$reyt++;
//обновляем рейтинг
\DB::set("UPDATE `pages_comments` SET `reyt`=? WHERE `id`=?", array($reyt, $_POST['id']));
//пишем в базу что уже это лайкнули
\DB::add("INSERT INTO `likes` (`user_id`, `tip`, `content_id`) VALUES(?, ?, ?)", array($user_id, $tip, $_POST['id']));
echo $reyt;
}
}
break;
/* Отправляем письмо тавру */
case 'os_tavr':
if ($_SESSION['capcha']==md5($_POST['capcha'])){
//echo 'test';
$tema = 'Заявка на обратный звонок с сайта ' . $_SERVER['SERVER_NAME'];
$txt = '<table>
<tr>
<td>Организация</td><td>' . $_POST['org'] . '</td>
</tr>
<tr>
<td>ФИО</td><td>' . $_POST['fio'] . '</td>
</tr>
<tr>
<td>Телефон</td><td>' . $_POST['tel'] . '</td>
</tr></table>';
\core::sendemail('E_ADMIN_EMAIL', $tema, $txt);
\core::sendemail('1@yurecnt.ru', $tema, $txt);
if ($_SERVER['SERVER_NAME'] == 'tavrnt.ru')
\core::sendemail('tavr96@yandex.ru', $tema, $txt);
}
break;
/* Отправляем просто номер */
case 'sendNumber':
//echo 'test';
$tema = 'Заявка на обратный звонок с сайта ' . $_SERVER['SERVER_NAME'];
$txt = '<table>
<td>Телефон</td><td>' . $_POST['numberVal'] . '</td>
</tr></table>';
\core::sendemail(E_ADMIN_EMAIL, $tema, $txt);
\core::sendemail('1@yurecnt.ru', $tema, $txt);
//\core::sendemail('tavr96@yandex.ru', $tema, $txt);
break;
case 'qfind':
$list=\DBmysql::getAll("SELECT `id`, `title` FROM `ctovar` WHERE `title` LIKE '%" . $_POST['txt'] . "%' AND `status`=1 ORDER BY `title`");
$c=count($list);
for ($i=0; $i<$c; $i++)$res.="<li><a href='/ctovar/". $list[$i]['id'] . "'>" . $list[$i]['title'] ."</a></li>";
echo $res;
break;
default:
}
?>