This commit is contained in:
root 2024-09-30 08:50:06 +05:00
parent 28c041a365
commit 4cc24b8f0f
14 changed files with 779 additions and 49 deletions

61
api/modules/act/ajax.php Executable file
View File

@ -0,0 +1,61 @@
<?php
//ini_set('display_errors', 1);
//print_r($_POST);
//echo 1;
switch(@$_POST['act']) {
case 'add_comment':
print_r($_POST);
if (!$_SESSION['user_id'] || !$_POST['txt'])die();
$_POST['t']=time();
$_POST['user_id']=$_SESSION['user_id'];
unset($_POST['act']);
$db->add ( 'pages_comments', $_POST );
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);
echo 1;
break;
//сохраняет настройки модуля
/* case 'save_settings_mod':
unset($a);
$a['mod']=$_POST['mod'];
$id_set=$db->get_val('settings', $a, 'id');
unset($_POST['act']);
unset( $_POST['mod'] );
$a['json']=serialize($_POST);
$db->update('settings', $id_set, $a);
echo 0;
//сделать проверку наличия в БД (это уже есть в модуле, но кто ж не ошибается)
break;
*/
// Сохранение настроек модуля
case 'save_settings_mod':
$res['mod']=$_POST['mod'];
unset ($_POST['mod']);
unset($_POST['act']);
$res['json']=serialize($_POST);
$db->free_sql2 ( 'UPDATE `settings` SET `json`="' . $res['json'] . '" WHERE `mod`="' . $res['mod'] . '"' );
break;
/* Отправляем письмо тавру */
case 'os_tavr':
//echo 'test';
\core::sendemail('1@yurecnt.ru', 'tema from site', 'text');
break;
default:
}
?>

110
api/modules/act/class.php Executable file
View File

@ -0,0 +1,110 @@
<?php
class main{
var $db; // Здесь объект для работы с MySQL
var $id;
private $settings;
public $user_info;/* Array: Информация о пользователе*/
public $keywords;
public $comments;
/* ------------------------------------------------------------------------------------------------------------------------- */
function __construct($smarty, $settings){
@mkdir (MYDIR . '/img/avatars', 0700);
$db=$this->db;
/* Создаем каталог под файлы раздела и определяемся с кэшем */
if( $settings['cachePage'] > 0 ){
if( !@$_SESSION['user_id'] ) { /* если не авторизован - кешируем на часок */
$smarty -> caching = true;
$smarty -> cache_lifetime = $settings['cachePage'];
}
}
$this -> settings = $settings;
}
/* ------------------------------------------------------------------------------------------------------------------------- */
private function user_info($id) { /* Получаем инормацию об авторе */
$db=$this->db;
$db -> or_by_desc = 0;
$a['id']=$id;
$this -> user_info = $db->get_massiv('users', $a, '', 1);
return $this -> user_info;
}
/* ------------------------------------------------------------------------------------------------------------------------- */
private function gen_keywords($txt){ /* Генератор ключевых слов */
include_once MYDIR . '/api/php/kwg.php';
$keywords=seokeywords($txt, 5, 10);
$this->keywords = explode(",", $keywords);
}
/* ------------------------------------------------------------------------------------------------------------------------- */
private function redirect($page){ /* Редиректы куда надо */
if ( @$page[0]['alias'] && ID != @$page[0]['alias'] && $page[0]['id'] != $this->settings['main_page'] ){
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: /' . $page[0]['alias'] . '.html' );
}
if (@$page[0]['rdir']){//редирект на новую страницу
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: ' . $page[0]['rdir'] );
}
}
/* ------------------------------------------------------------------------------------------------------------------------- */
private function set_viewers($id, $reyt){/* меняем количество просмотров */
if (!@$_SESSION['user_id']){
$db=$this->db;
$p['reyt']=$reyt+1;
$db->update('pages', $id, $p);
}
}
/* ------------------------------------------------------------------------------------------------------------------------- */
private function get_comments($id){
$db=$this->db;
$db -> or_by_desc = 1;
$tmp['page_id']=$id;
$tmp['public']=1;
$postrow = $db -> get_massiv ( 'pages_comments', $tmp, 'id' );
$num = count($postrow);
for($i = 0; $i < $num; $i++){
$user=$this->user_info($postrow[$i]['user_id']);
$postrow[$i]['fio'] = $user[0]['fio'];
$postrow[$i]['ava'] = $user[0]['ava'];
unset($user);
}
$this -> comments = $postrow;
}
/* ------------------------------------------------------------------------------------------------------------------------- */
function get_page($id){ // получение страницы
$db=$this->db;
$id != '' ? $tmp['alias'] = ID : $tmp['id'] = $settings['main_page'];
$postrow = $db -> get_massiv ( 'pages', $tmp, '', '1' );//Пробуем найти по алиасу
if ( !@$postrow[0]['id'] ){//Если не получилось - по ID
unset($tmp);
$tmp['id'] = $id;
$postrow = $db -> get_massiv ( 'pages', $tmp, '', '1' );
}
$this -> redirect ($postrow);
$this -> get_comments ($postrow[0]['id']);
$this -> user_info ($postrow[0]['user_id']);
$this -> gen_keywords ($postrow[0]['txt']);
$this -> set_viewers($postrow[0]['id'], $postrow[0]['reyt']);//отправляем на апргрейд ид страницы и текущий рейтинг
return $postrow;
}
/* ------------------------------------------------------------------------------------------------------------------------- */
function get_breadcrumb($id){
$db=$this->db;
$tmp['id']=$id;
$postrow = $db -> get_massiv ( 'pages_cat', $tmp, '', 1 );
$x=0;
$parent=$postrow[0]['parent'];
while ($parent != 0){
$x++;
unset($tmp);
$tmp['id']=$parent;
$postrow[$x] = $db -> get_massiv ( 'pages_cat', $tmp, '', 1 );
$parent=$postrow[$x]['parent'];
}
return $postrow;
}
/* ------------------------------------------------------------------------------------------------------------------------- */
}
?>

0
api/modules/act/index.html Executable file
View File

4
api/modules/act/index.php Executable file
View File

@ -0,0 +1,4 @@
<?php
ini_set('display_errors', 1 );
if (file_exists('api/modules/' . $_GET['id'] . '/ajax.php')) require_once 'api/modules/' . $_GET['id'] . '/ajax.php';
?>

476
api/modules/ajax/ajax.php Executable file
View File

@ -0,0 +1,476 @@
<?php
ini_set('display_errors', 0);
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']) {
/* ----------------------------------------------------------------------
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':
echo \DB::add("INSERT INTO `cart` (`kolvo`, `t`, `tovar_id`, `user_id`)VALUES(?, ?, ?, ?)", array($_POST['kolvo'], time(), $_POST['tovar_id'], \core::checkMe()));
break;
//сохраняет настройки модуля
/* case 'save_settings_mod':
unset($a);
$a['mod']=$_POST['mod'];
$id_set=$db->get_val('settings', $a, 'id');
unset($_POST['act']);
unset( $_POST['mod'] );
$a['json']=serialize($_POST);
$db->update('settings', $id_set, $a);
echo 0;
//сделать проверку наличия в БД (это уже есть в модуле, но кто ж не ошибается)
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':
//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;
default:
}
?>

0
api/modules/ajax/index.html Executable file
View File

10
api/modules/ajax/index.php Executable file
View File

@ -0,0 +1,10 @@
<?php
//include MYDIR . '/api/modules/' . ID . '/class.php';
//echo 1;
ini_set('display_errors', 0);
if (file_exists('api/modules/' . $_GET['id'] . '/ajax.php'))
include 'api/modules/' . $_GET['id'] . '/ajax.php';
//echo 2;
?>

10
api/modules/task/ajax.php Executable file
View File

@ -0,0 +1,10 @@
<?php
ini_set('display_errors', 1);
echo "123";
switch (@$_POST['act']) {
case 'start_task':
echo 1;
break;
default:
}
?>

5
api/modules/task/doc.txt Executable file
View File

@ -0,0 +1,5 @@
Статусы задач:
0 - завершена
1 - новая
2 - выполняется
3 - приостановлено выполнение

View File

@ -3,29 +3,57 @@
<h1>Задачи <button type="button" class="btn btn-secondary" data-bs-toggle="modal" data-bs-target="#exampleModal">+</button></h1>
<div class="col-md-6">
<h2>Мои задачи</h2>
{section name=customer loop=$mytask}
<div class="card mb-2">
<div class="card-header">
От: {$mytask[customer].avtor.fio}<br>
{$mytask[customer].d}<br>
Срок: {$mytask[customer].array.srok}<br>
{if $mytask[customer].status==1}<span style="color: #e74c3c;">Новая</span>{/if}
{if $mytask[customer].status==2}<span style="color: #27ae60;">Выполняется</span>{/if}
{if $mytask[customer].status==3}<span style="color: #95a5a6;">Завершена</span>{/if}
{if $mytask[customer].status==3}<span style="color: #0e4927;">Приостановлена</span>{/if}
{if $mytask[customer].status==0}<span style="color: #95a5a6;">Завершена</span>{/if}
| Приоритет: {if $mytask[customer].array.prioritet==0}<span style="color: #95a5a6;">Низкий</span>{/if}
{if $mytask[customer].array.prioritet==1}<span style="color: #27ae60;">Средний</span>{/if}
{if $mytask[customer].array.prioritet==2}<span style="color: #e74c3c;">Срочный</span>{/if}
</div>
<div class="card-body">
<p class="card-text">{$mytask[customer].txt|br}</p>
<a href="#" class="btn btn-primary">Перейти куда-нибудь</a>
<p class="card-text"><a href="/files/task/{$mytask[customer].array.doc}">{$mytask[customer].array.doc}</a></p>
<button type="button" class="btn btn-primary start_task" data-id="{$mytask[customer].id}">Начать выполнение</button>
<a href="#" class="btn btn-primary">Перенести срок</a>
<a href="#" class="btn btn-primary">Делегировать</a>
</div>
</div>
{/section}
</div>
<div class="col-md-6">
<h2>Поставленные мной</h2>
{section name=customer loop=$mytasksend}
<div class="card mb-2">
<div class="card-header">
От: {$mytasksend[customer].avtor.fio}<br>
{$mytasksend[customer].d}<br>
Срок: {$mytasksend[customer].array.srok}<br>
{if $mytasksend[customer].status==1}<span style="color: #e74c3c;">Новая</span>{/if}
{if $mytasksend[customer].status==2}<span style="color: #27ae60;">Выполняется</span>{/if}
{if $mytasksend[customer].status==3}<span style="color: #0e4927;">Приостановлена</span>{/if}
{if $mytasksend[customer].status==0}<span style="color: #95a5a6;">Завершена</span>{/if}
| Приоритет: {if $mytasksend[customer].array.prioritet==0}<span style="color: #95a5a6;">Низкий</span>{/if}
{if $mytasksend[customer].array.prioritet==1}<span style="color: #27ae60;">Средний</span>{/if}
{if $mytasksend[customer].array.prioritet==2}<span style="color: #e74c3c;">Срочный</span>{/if}
</div>
<div class="card-body">
<p class="card-text">{$mytasksend[customer].txt|br}</p>
<p class="card-text"><a href="/files/task/{$mytasksend[customer].array.doc}">{$mytasksend[customer].array.doc}</a></p>
<button type="button" class="btn btn-primary start_task" data-id="{$mytasksend[customer].id}">Начать выполнение</button>
<a href="#" class="btn btn-primary">Перенести срок</a>
<a href="#" class="btn btn-primary">Делегировать</a>
</div>
</div>
{/section}
</div>
</div>

View File

@ -2,7 +2,6 @@
//Получаем список пользователей
$users=DB::getAll("SELECT * FROM `users` WHERE `status`=?", 1);
$smarty -> assign( 'users', $users);
//Ставим задачу
if ($_POST){
if ($_FILES){
@ -19,7 +18,6 @@ if ($_POST){
DB::add("INSERT INTO `content` (`txt`, `json`, `content_type`, `t`, `user`) VALUES (?,?,?,?,?)", [$_POST['txt'], $j, 2, time(), $_SESSION['user_id']]);
header( 'Location: /task/' );
}
//Показываем мои задачи
$mytask=DB::getAll("SELECT * FROM `content` WHERE `content_type`=? AND `status`<>? AND `json` LIKE '%\"target_user\":\"" . $_SESSION['user_id'] . "\"%'", [2, 0]);
$c=count($mytask);
@ -29,4 +27,14 @@ for ($i=0; $i<$c; $i++){
$mytask[$i]['d']=date("d.m.Y", $mytask[$i]['t']);
}
$smarty -> assign( 'mytask', $mytask);
unset($mytask);
//Показываем задачи поставленные людям
$mytask=DB::getAll("SELECT * FROM `content` WHERE `content_type`=? AND `status`<>? AND `user`=?", [2, 0, $_SESSION['user_id']]);
$c=count($mytask);
for ($i=0; $i<$c; $i++){
$mytask[$i]['array']=core::j($mytask[$i]['json']);
$mytask[$i]['avtor']=DB::getRow("SELECT * FROM `users` WHERE `id`=?", $mytask[$i]['user']);
$mytask[$i]['d']=date("d.m.Y", $mytask[$i]['t']);
}
$smarty -> assign( 'mytasksend', $mytask);
?>

View File

@ -1,4 +1,18 @@
$( function() {
$( "#srok" ).datepicker({dateFormat: "dd.mm.yy"});
//Кнопка Начать выполнение
$( ".start_task" ).click(function(event) {
var id=$(this).data("id");
$.ajax({
type: "POST",
url: "/act/task",
data: "act=start_task&id=" + id,
success:function(data){ alert(data) }
})
})
})

View File

@ -18,5 +18,8 @@ require_once 'api/modules/' . $global_mod . '/index.php';
$smarty->assign('header', 'skin/header.html');
$smarty->assign('footer', 'skin/footer.html');
$smarty->assign('mod', $global_mod);
//Получаем количество новых задач
$global_taskCount=DB::getAll("SELECT COUNT(*) FROM `content` WHERE `content_type`=? AND `status`<>? AND `json` LIKE '%\"target_user\":\"" . $_SESSION['user_id'] . "\"%'", [2, 0])[0]['COUNT(*)'];
$smarty->assign('global_taskCount', $global_taskCount);
$smarty->display('api/modules/' . $global_mod . '/index.html', @$_GET['id']);
?>

View File

@ -1,45 +1,46 @@
<!DOCTYPE HTML>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="YurecSofware">
<title>Руш</title>
<link rel="stylesheet" href="https://static.yurecnt.ru/bootstrap/5.3.3/bootstrap.min.css">
<link rel="stylesheet" href="/skin/css/css.css">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="YurecSofware">
<title>Руш</title>
<link rel="stylesheet" href="https://static.yurecnt.ru/bootstrap/5.3.3/bootstrap.min.css">
<link rel="stylesheet" href="/skin/css/css.css">
</head>
<body class="container-fluid">
<header class="container">
<a href="/"><img src="/skin/img/logo.jpg"></a>
</header>
<nav class="navbar navbar-expand-lg bg-body-tertiary container">
<div class="container-fluid">
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Главная</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/task/">Задачи</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Справочники</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Документы</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Инструкции</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Поиск" aria-label="Поиск">
<button class="btn btn-outline-success" type="submit">Поиск</button>
</form>
</div>
</div>
</nav>
<section class="container">
<header class="container">
<a href="/"><img src="/skin/img/logo.jpg"></a>
</header>
<nav class="navbar navbar-expand-lg bg-body-tertiary container">
<div class="container-fluid">
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Главная</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/task/">Задачи {if ($global_taskCount)}<span
style="color: #e74c3c;">({$global_taskCount})</span>{/if}</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Справочники</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Документы</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/">Инструкции</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Поиск" aria-label="Поиск">
<button class="btn btn-outline-success" type="submit">Поиск</button>
</form>
</div>
</div>
</nav>
<section class="container">