Init
This commit is contained in:
commit
158f310683
29
.htaccess
Normal file
29
.htaccess
Normal file
@ -0,0 +1,29 @@
|
||||
php_flag register_globals off
|
||||
|
||||
AddDefaultCharset UTF-8
|
||||
|
||||
Options -Indexes
|
||||
|
||||
ErrorDocument 404 /404.html
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
|
||||
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
|
||||
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
|
||||
|
||||
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
|
||||
RewriteRule ^index\.php$ https://joywork.ru/ [R=301,L]
|
||||
|
||||
RewriteCond %{THE_REQUEST} //
|
||||
RewriteRule .* /$0 [R=301,L]
|
||||
|
||||
# Slug-роутинг для статей: если физического файла нет — отдаём article.php
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^([a-z0-9-]+)\.php$ /article.php?slug=$1 [L,QSA]
|
||||
|
||||
</IfModule>
|
||||
|
||||
Redirect 301 /15-best-crm-real-estate.php https://joywork.ru/
|
||||
|
||||
1592
15-best-crm-real-estate.php
Normal file
1592
15-best-crm-real-estate.php
Normal file
File diff suppressed because it is too large
Load Diff
1253
2018_price.csv
Normal file
1253
2018_price.csv
Normal file
File diff suppressed because it is too large
Load Diff
1253
2018_price_.csv
Normal file
1253
2018_price_.csv
Normal file
File diff suppressed because it is too large
Load Diff
4479
2018_quantity.csv
Normal file
4479
2018_quantity.csv
Normal file
File diff suppressed because it is too large
Load Diff
1253
2019_price.csv
Normal file
1253
2019_price.csv
Normal file
File diff suppressed because it is too large
Load Diff
3486
2019_quantity.csv
Normal file
3486
2019_quantity.csv
Normal file
File diff suppressed because it is too large
Load Diff
32
404.html
Normal file
32
404.html
Normal file
@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>404</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="./assets/normalize.css">
|
||||
<link rel="stylesheet" href="./assets/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header class="main-header">
|
||||
<div class="lw-container">
|
||||
<a href="/index.php">
|
||||
<img src="./assets/img/logo.svg" alt="Логотип" width="182" height="42">
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
<section class="section-404">
|
||||
<div class="lw-container section-404__container">
|
||||
<img src="./assets/img/404.svg" alt="404" width="600" height="360">
|
||||
|
||||
<h1 class="section-404__title">404</h1>
|
||||
|
||||
<p>Вы ищете страницу, которая была удалена.</p>
|
||||
<p>Пожалуйста, перейдите на главную страницу сайта.</p>
|
||||
|
||||
<a href="/index.php">Перейти на главную страницу</a>
|
||||
</div>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
||||
BIN
Favicon.ico
Normal file
BIN
Favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
288
README.md
Normal file
288
README.md
Normal file
@ -0,0 +1,288 @@
|
||||
# Руководство по настройке проекта
|
||||
|
||||
Этот документ описывает процесс настройки и развертывания окружения проекта с использованием Docker.
|
||||
В нем содержатся инструкции по установке, запуску контейнеров, настройке базы данных и устранению возможных ошибок.
|
||||
|
||||
## Предварительные требования
|
||||
|
||||
Убедитесь, что на вашем локальном компьютере установлены следующие компоненты:
|
||||
|
||||
- **Docker** (для контейнеризации)
|
||||
- **Docker Compose** (для управления многоконтейнерными приложениями Docker)
|
||||
- **Git** (для контроля версий и управления репозиториями)
|
||||
|
||||
## Шаги
|
||||
|
||||
### 1. Клонирование репозитория
|
||||
|
||||
Если репозиторий проекта размещен на Git, клонируйте его с помощью следующей команды:
|
||||
|
||||
```sh
|
||||
git clone https://gt.joywork.ru/JW/joywork.dev.git
|
||||
cd joywork.dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Переход в каталог Docker
|
||||
|
||||
Перейдите в каталог, где находятся файлы конфигурации Docker (`docker-compose.yml` и другие):
|
||||
|
||||
```sh
|
||||
cd ./docker
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. Сборка и запуск контейнеров Docker
|
||||
|
||||
Выполните следующие команды для сборки и запуска контейнеров с помощью Docker Compose:
|
||||
|
||||
```sh
|
||||
docker-compose build
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
- Первая команда собирает образы Docker в соответствии с конфигурацией.
|
||||
- Вторая команда запускает контейнеры в фоновом режиме (`-d`).
|
||||
|
||||
---
|
||||
|
||||
### 4. Установите права доступа для файла `my.cnf`
|
||||
|
||||
Чтобы установить права доступа `chmod 644` для файла `my.cnf`, выполните следующую команду:
|
||||
|
||||
**Linux**
|
||||
```sh
|
||||
sudo chmod 644 ./mysql/my.cnf
|
||||
```
|
||||
|
||||
**Windows**
|
||||
|
||||
Команды надо запускать в терминале Powershell
|
||||
|
||||
```powershell
|
||||
icacls "./mysql/my.cnf" /grant "Everyone:(R)"
|
||||
```
|
||||
|
||||
Эта команда задаст права на файл следующим образом:
|
||||
- Владелец может читать и изменять файл.
|
||||
- Все остальные пользователи могут только читать файл.
|
||||
|
||||
---
|
||||
|
||||
### 5. Ожидание завершения импорта базы данных
|
||||
|
||||
Перед открытием проекта убедитесь, что импорт базы данных завершен.
|
||||
Используйте следующую команду, чтобы отслеживать статус импорта:
|
||||
|
||||
**Linux**
|
||||
```sh
|
||||
watch -n 2 "docker exec -i DataBase mysql -u root -p'root' -e 'SHOW PROCESSLIST;'"
|
||||
```
|
||||
|
||||
**Windows**
|
||||
|
||||
Команды надо запускать в терминале Powershell
|
||||
|
||||
```powershell
|
||||
while ($true) {
|
||||
docker exec -i DataBase mysql -u root -p'root' -e "SHOW PROCESSLIST;"
|
||||
Start-Sleep -Seconds 2
|
||||
}
|
||||
```
|
||||
|
||||
Когда процесс импорта завершится, можно продолжить настройку.
|
||||
|
||||
---
|
||||
|
||||
### 6. Важное изменение в файле `templates/new-header.php`
|
||||
|
||||
Для корректной работы проекта **необходимо закомментировать строки 587-591** в файле `templates/new-header.php`.
|
||||
|
||||
Найдите и измените код:
|
||||
|
||||
```php
|
||||
<?php
|
||||
$chat = new ChatsCianAvito();
|
||||
$can_chat_cian = $chat->can_chat($user, 2);
|
||||
$can_chat_avito = $chat->can_chat($user, 1);
|
||||
?>
|
||||
```
|
||||
|
||||
**Закомментируйте эти строки, добавив `//` перед каждой строкой:**
|
||||
|
||||
```php
|
||||
<?php
|
||||
// $chat = new ChatsCianAvito();
|
||||
// $can_chat_cian = $chat->can_chat($user, 2);
|
||||
// $can_chat_avito = $chat->can_chat($user, 1);
|
||||
?>
|
||||
```
|
||||
|
||||
Без этого изменения проект может не запуститься или работать некорректно.
|
||||
|
||||
---
|
||||
|
||||
### 7. Открытие проекта в браузере
|
||||
|
||||
После завершения настройки вы можете открыть проект в браузере по следующему адресу:
|
||||
|
||||
```
|
||||
http://localhost
|
||||
```
|
||||
|
||||
- **Логин:** `+79650964640`
|
||||
- **Пароль:** `12345`
|
||||
|
||||
Этот URL будет служить для доступа к проекту, работающему внутри контейнера Docker.
|
||||
|
||||
---
|
||||
|
||||
## 8. Полная очистка данных перед запуском (MySQL и Sphinx) (Если прежне уже был устоновлен JW)
|
||||
|
||||
Если требуется сбросить все данные MySQL и Sphinx перед запуском контейнеров, выполните следующие шаги:
|
||||
|
||||
### **8.1. Остановите все контейнеры Docker**
|
||||
|
||||
```sh
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### **8.2. Полностью очистите данные MySQL**
|
||||
|
||||
Удалите данные MySQL, чтобы сбросить базу:
|
||||
|
||||
**Linux**
|
||||
```sh
|
||||
sudo rm -rf ./mysql/data
|
||||
mkdir -p ./mysql/data
|
||||
sudo chown -R 999:999 ./mysql/data
|
||||
```
|
||||
|
||||
**Windows**
|
||||
|
||||
Команды надо запускать в терминале Powershell
|
||||
|
||||
```powershell
|
||||
Remove-Item -Recurse -Force .\mysql\data
|
||||
New-Item -Path .\mysql\data -ItemType Directory
|
||||
icacls .\mysql\data /grant "Users:(OI)(CI)F"
|
||||
```
|
||||
|
||||
### **8.3. Полностью очистите данные Sphinx**
|
||||
|
||||
Удалите старые индексы и логи:
|
||||
|
||||
**Linux**
|
||||
```sh
|
||||
sudo rm -rf sphinx/index/
|
||||
sudo rm -rf sphinx/binlog/
|
||||
sudo mkdir -p sphinx/index/
|
||||
sudo mkdir -p sphinx/binlog/
|
||||
|
||||
sudo rm -rf sphinx2/index/
|
||||
sudo rm -rf sphinx2/binlog/
|
||||
sudo mkdir -p sphinx2/index/
|
||||
sudo mkdir -p sphinx2/binlog/
|
||||
```
|
||||
|
||||
**Windows**
|
||||
|
||||
Команды надо запускать в терминале Powershell
|
||||
|
||||
```powershell
|
||||
Remove-Item -Recurse -Force .\sphinx\index\
|
||||
Remove-Item -Recurse -Force .\sphinx\binlog\
|
||||
New-Item -Path .\sphinx\index -ItemType Directory
|
||||
New-Item -Path .\sphinx\binlog -ItemType Directory
|
||||
|
||||
Remove-Item -Recurse -Force .\sphinx2\index\
|
||||
Remove-Item -Recurse -Force .\sphinx2\binlog\
|
||||
New-Item -Path .\sphinx2\index -ItemType Directory
|
||||
New-Item -Path .\sphinx2\binlog -ItemType Directory
|
||||
```
|
||||
|
||||
### **8.4. Установите правильные права доступа**
|
||||
|
||||
Чтобы контейнеры могли записывать в папки, установите соответствующие права:
|
||||
|
||||
**Linux**
|
||||
```sh
|
||||
sudo chown -R 999:999 ./sphinx/index
|
||||
sudo chown -R 999:999 ./sphinx/binlog
|
||||
sudo chown -R 999:999 ./sphinx2/index
|
||||
sudo chown -R 999:999 ./sphinx2/binlog
|
||||
|
||||
sudo chmod -R 777 ./sphinx/index
|
||||
sudo chmod -R 777 ./sphinx/binlog
|
||||
sudo chmod -R 777 ./sphinx2/index
|
||||
sudo chmod -R 777 ./sphinx2/binlog
|
||||
```
|
||||
|
||||
**Windows**
|
||||
|
||||
Команды надо запускать в терминале Powershell
|
||||
|
||||
```powershell
|
||||
icacls .\sphinx\index /grant "Users:(OI)(CI)F" /T
|
||||
icacls .\sphinx\binlog /grant "Users:(OI)(CI)F" /T
|
||||
icacls .\sphinx2\index /grant "Users:(OI)(CI)F" /T
|
||||
icacls .\sphinx2\binlog /grant "Users:(OI)(CI)F" /T
|
||||
```
|
||||
|
||||
### **8.5. Перезапустите контейнеры**
|
||||
|
||||
После очистки данных снова запустите контейнеры:
|
||||
|
||||
```sh
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### **8.6. Проверьте состояние контейнеров**
|
||||
|
||||
Убедитесь, что все контейнеры успешно запущены:
|
||||
|
||||
```sh
|
||||
docker ps
|
||||
```
|
||||
|
||||
Если возникли ошибки, проверьте логи:
|
||||
|
||||
```sh
|
||||
docker-compose logs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Заключение
|
||||
|
||||
После выполнения этих шагов:
|
||||
|
||||
- Контейнеры Docker будут запущены и работать.
|
||||
- База данных MySQL будет восстановлена из файла `/docker/dump/schema.sql`.
|
||||
- Вы сможете проверить структуру и данные базы данных.
|
||||
- Проект будет доступен по адресу `http://localhost`.
|
||||
- MySQL будет доступен через phpMyAdmin по адресу `http://localhost:8085`.
|
||||
|
||||
---
|
||||
|
||||
## Устранение неполадок
|
||||
|
||||
Если во время настройки возникли ошибки:
|
||||
|
||||
- Проверьте логи с помощью команды:
|
||||
|
||||
```sh
|
||||
docker-compose logs
|
||||
```
|
||||
|
||||
- Перезапустите контейнеры при необходимости:
|
||||
|
||||
```sh
|
||||
docker-compose down && docker-compose up -d
|
||||
```
|
||||
|
||||
- Проверьте логи ошибок MySQL для диагностики проблем.
|
||||
|
||||
За дополнительной информацией обратитесь к документации проекта или свяжитесь с командой поддержки.
|
||||
7290
add-object-test.php
Normal file
7290
add-object-test.php
Normal file
File diff suppressed because it is too large
Load Diff
7931
add-object.php
Normal file
7931
add-object.php
Normal file
File diff suppressed because it is too large
Load Diff
42
admin/ajax/addBlockBenefit.php
Normal file
42
admin/ajax/addBlockBenefit.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "INSERT INTO block_benefits (block_id, benefit_icon, benefit_name, benefit_description) VALUES (" . $post['block_id'] . ", '" . $post['benefit_icon'] ."', '" . $post['benefit_name'] ."', '" . $post['benefit_description'] ."')";
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
|
||||
$sql = "SELECT * FROM block_benefits WHERE block_id='" . $post['block_id'] . "'";
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="benefit_item" benefit_id="'.$obj["id"].'">'.
|
||||
'<div class="benefit_item_prop benefit_item_ico">'.
|
||||
'<img src="../images/benefits/'.$obj["benefit_icon"].'">'.
|
||||
'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_name">'.$obj["benefit_name"].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_description">'.$obj['benefit_description'].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_edit">'.
|
||||
'<div class="benefit_edit benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Редактировать</div>'.
|
||||
'<div class="benefit_del benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Удалить</div>'.
|
||||
'</div>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>';
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
28
admin/ajax/addBlockPlusMinus.php
Normal file
28
admin/ajax/addBlockPlusMinus.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "INSERT INTO block_plus_minus (block_id, `text`, plus_minus) VALUES ('" . $post['block_id'] . "', '" . $post['text'] ."', '" .$post['plus_minus']. "')";
|
||||
try {
|
||||
mysql_query($sql);
|
||||
$id = mysql_insert_id();
|
||||
// $sql = "SELECT * FROM block_reviews WHERE block_id=".$post['block_id'];
|
||||
$sql = "SELECT * FROM block_plus_minus WHERE id=".$id;
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$obj['date_create'] = date("d.m.Y H:i");
|
||||
echo json_encode($obj); exit;
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
15
admin/ajax/addBlockRealImageDate.php
Normal file
15
admin/ajax/addBlockRealImageDate.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "UPDATE block_images SET (img_date='".$post['date']."') WHERE id=".$post['id'];
|
||||
try {
|
||||
mysql_query($sql);
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
27
admin/ajax/addBlockReview.php
Normal file
27
admin/ajax/addBlockReview.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "INSERT INTO block_reviews (block_id, review, name) VALUES ('" . $post['block_id'] . "', '" . $post['review'] ."', '" .$post['name']. "')";
|
||||
try {
|
||||
mysql_query($sql);
|
||||
$id = mysql_insert_id();
|
||||
// $sql = "SELECT * FROM block_reviews WHERE block_id=".$post['block_id'];
|
||||
$sql = "SELECT * FROM block_reviews WHERE id=".$id;
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
echo json_encode($obj); exit;
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
51
admin/ajax/addBlockVideo.php
Normal file
51
admin/ajax/addBlockVideo.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "INSERT INTO block_videos (block_id, url) VALUES (" . $post['block_id'] . ", '" . $post['url'] ."')";
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
|
||||
$sql = "SELECT * FROM block_videos WHERE block_id='" . $post['block_id'] . "'";
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="block_video_wrap">'.
|
||||
'<span class="block_video_url">'.$obj["url"].'</span>'.
|
||||
'<span class="block_video_del" block_id="'.$obj["block_id"].'" video_id="'.$obj["id"].'">Удалить</span>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>
|
||||
<div>
|
||||
<div class="add_month_img">Добавить изображение:</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<form method="post" enctype="multipart/form-data" id="block-video-images-form_'.$obj["id"].'" style="display: inline;">
|
||||
<div class="block-video-images-container" id="block-video-images-container_'.$obj["id"].'" class="">
|
||||
<input type="hidden" name="video_id" value="'.$obj["id"].'">
|
||||
<input data-id="'.$obj["id"].'" type="file" name="blockVideoPhoto[]" accept="image/jpg,image/jpeg" multiple="">
|
||||
</div>
|
||||
</form>
|
||||
<div id="image-block-video-result_'.$obj["id"].'">
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>'
|
||||
;
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
35
admin/ajax/addBlockWizardData.php
Normal file
35
admin/ajax/addBlockWizardData.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$obj = [];
|
||||
$sql = "SELECT * FROM block_features WHERE block_id='" . $post['block_id'] . "'";
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$obj = mysql_fetch_assoc($result);
|
||||
if (isset($post['set_data'])) {
|
||||
$sql = "UPDATE block_features
|
||||
SET facade='".$post['facade']."', storerooms=".$post['storerooms'].", prams=".$post['prams'].", apartments_count=".$post['apartments_count'].", living_space=".$post['living_space'].", planned_residents_count=".$post['planned_residents_count'].", furniture=".$post['furniture'].", smart_house=".$post['smart_house'].", glass='".$post['glass']."', parking_count=".$post['parking_count'].", paid_parking_count=".$post['paid_parking_count'].", parking_cost=".$post['parking_cost'].", paid_parking_type_on=".$post['paid_parking_type_on'].", paid_parking_type_under=".$post['paid_parking_type_under'].", yard_traffic=".$post['yard_traffic'].", yard_kindergarten=".$post['yard_kindergarten'].", yard_school=".$post['yard_school'].", children_objects=".$post['children_objects'].", playground=".$post['playground'].", trade_service=".$post['trade_service'].", medical=".$post['medical'].", walk_place=".$post['walk_place'].", yard_close=".$post['yard_close'].", security=".$post['security'].", without_cars=".$post['without_cars'].", video=".$post['video'].", dispatcher=".$post['dispatcher'].", school=".$post['school'].", kindergarten=".$post['kindergarten'].", clinic=".$post['clinic'].", drugstore=".$post['drugstore'].", supermarket=".$post['supermarket'].", fitness=".$post['fitness'].", analysis_children=".$post['analysis_children'].", analysis_infrastructure=".$post['analysis_infrastructure'].", analysis_area=".$post['analysis_area'].", analysis_security=".$post['analysis_security'].", analysis_transport=".$post['analysis_transport'].", analysis_apartment=".$post['analysis_apartment']."
|
||||
WHERE block_id=".$post['block_id'];
|
||||
}
|
||||
} else {
|
||||
$sql = "INSERT INTO block_features (block_id) VALUES ('" . $post['block_id'] . "')";
|
||||
}
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_errno() == 0) {
|
||||
echo json_encode($obj);exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
|
||||
28
admin/ajax/addBuilderReview.php
Normal file
28
admin/ajax/addBuilderReview.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "INSERT INTO builder_reviews (builder_id, review, name) VALUES ('" . $post['builder_id'] . "', '" . $post['review'] ."', '" .$post['name']. "')";
|
||||
try {
|
||||
mysql_query($sql);
|
||||
$id = mysql_insert_id();
|
||||
// $sql = "SELECT * FROM block_reviews WHERE block_id=".$post['block_id'];
|
||||
$sql = "SELECT * FROM builder_reviews WHERE id=".$id;
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$obj['date'] = date("d.m.Y H:i");
|
||||
echo json_encode($obj); exit;
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
25
admin/ajax/addClientCall.php
Normal file
25
admin/ajax/addClientCall.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && $_POST['schedule_date'] && $_POST['client_id'] && is_numeric($_POST['client_id'])) {
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$scheduleDate = DateTime::createFromFormat('d.m.Y H:i', $post['schedule_date']);
|
||||
$scheduleDate = "'".date("Y-m-d H:i:s", $scheduleDate->getTimestamp())."'";
|
||||
|
||||
$sql="SELECT * FROM clients_jw WHERE id=$post[client_id]";
|
||||
$rez=mysql_query($sql);
|
||||
$client = mysql_fetch_assoc($rez);
|
||||
|
||||
$idUser = $_SESSION['id'];
|
||||
if ($client['who_work'] > 0) {
|
||||
// тому событие, чей клиент
|
||||
$idUser = $client['who_work'];
|
||||
}
|
||||
$from_id = $_SESSION['id'];
|
||||
|
||||
$sql = "INSERT INTO user_client_jw_events(user_id, client_id, type, comment, schedule_date, from_id) ";
|
||||
$sql .= " VALUES($idUser, $post[client_id], 'call', '$post[comment]',$scheduleDate, $from_id)";
|
||||
mysql_query($sql);
|
||||
}
|
||||
22
admin/ajax/addClientComment.php
Normal file
22
admin/ajax/addClientComment.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
|
||||
if($_SESSION['id'] && $_POST['comment'] && $_POST['client_id'] && is_numeric($_POST['client_id'])) {
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql="SELECT * FROM clients_jw WHERE id=$post[client_id]";
|
||||
$rez=mysql_query($sql);
|
||||
$client = mysql_fetch_assoc($rez);
|
||||
|
||||
$idUser = $_SESSION['id'];
|
||||
if ($client['who_work'] > 0) {
|
||||
// тому событие, чей клиент
|
||||
$idUser = $client['who_work'];
|
||||
}
|
||||
|
||||
$from_id = $_SESSION['id'];
|
||||
$sql = "INSERT INTO user_client_jw_events(user_id, client_id, type, comment, from_id) ";
|
||||
$sql .= " VALUES($idUser, $post[client_id], 'comment', '$post[comment]', $from_id)";
|
||||
mysql_query($sql);
|
||||
}
|
||||
24
admin/ajax/addClientDeal.php
Normal file
24
admin/ajax/addClientDeal.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && $_POST['schedule_date'] && $_POST['client_id'] && is_numeric($_POST['client_id'])) {
|
||||
$post = clearInputData($_POST);
|
||||
$scheduleDate = DateTime::createFromFormat('d.m.Y H:i', $post['schedule_date']);
|
||||
$scheduleDate = "'".date("Y-m-d H:i:s", $scheduleDate->getTimestamp())."'";
|
||||
|
||||
$sql="SELECT * FROM clients_jw WHERE id=$post[client_id]";
|
||||
$rez=mysql_query($sql);
|
||||
$client = mysql_fetch_assoc($rez);
|
||||
|
||||
$idUser = $_SESSION['id'];
|
||||
if ($client['who_work'] > 0) {
|
||||
// тому событие, чей клиент
|
||||
$idUser = $client['who_work'];
|
||||
}
|
||||
|
||||
$from_id = $_SESSION['id'];
|
||||
$sql = "INSERT INTO user_client_jw_events(user_id, client_id, type, comment, sum, schedule_date, from_id) ";
|
||||
$sql .= " VALUES($idUser, $post[client_id], 'deal', '$post[comment]', '$post[sum]', $scheduleDate, $from_id)";
|
||||
mysql_query($sql);
|
||||
}
|
||||
25
admin/ajax/addClientMeet.php
Normal file
25
admin/ajax/addClientMeet.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && $_POST['schedule_date'] && $_POST['client_id'] && is_numeric($_POST['client_id'])) {
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$scheduleDate = DateTime::createFromFormat('d.m.Y H:i', $post['schedule_date']);
|
||||
$scheduleDate = "'".date("Y-m-d H:i:s", $scheduleDate->getTimestamp())."'";
|
||||
|
||||
$sql="SELECT * FROM clients_jw WHERE id=$post[client_id]";
|
||||
$rez=mysql_query($sql);
|
||||
$client = mysql_fetch_assoc($rez);
|
||||
|
||||
$idUser = $_SESSION['id'];
|
||||
if ($client['who_work'] > 0) {
|
||||
// тому событие, чей клиент
|
||||
$idUser = $client['who_work'];
|
||||
}
|
||||
|
||||
$from_id = $_SESSION['id'];
|
||||
$sql = "INSERT INTO user_client_jw_events(user_id, client_id, type, comment, address, schedule_date, from_id) ";
|
||||
$sql .= " VALUES($idUser, $post[client_id], 'meet', '$post[comment]', '$post[address]', $scheduleDate, $from_id)";
|
||||
mysql_query($sql);
|
||||
}
|
||||
25
admin/ajax/addClientShow.php
Normal file
25
admin/ajax/addClientShow.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && $_POST['schedule_date'] && $_POST['client_id'] && is_numeric($_POST['client_id'])) {
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$scheduleDate = DateTime::createFromFormat('d.m.Y H:i', $post['schedule_date']);
|
||||
$scheduleDate = "'".date("Y-m-d H:i:s", $scheduleDate->getTimestamp())."'";
|
||||
|
||||
$sql="SELECT * FROM clients_jw WHERE id=$post[client_id]";
|
||||
$rez=mysql_query($sql);
|
||||
$client = mysql_fetch_assoc($rez);
|
||||
|
||||
$idUser = $_SESSION['id'];
|
||||
if ($client['who_work'] > 0) {
|
||||
// тому событие, чей клиент
|
||||
$idUser = $client['who_work'];
|
||||
}
|
||||
|
||||
$from_id = $_SESSION['id'];
|
||||
$sql = "INSERT INTO user_client_jw_events(user_id, client_id, type, comment, address, schedule_date, from_id) ";
|
||||
$sql .= " VALUES($idUser, $post[client_id], 'show', '$post[comment]', '$post[address]', $scheduleDate, $from_id)";
|
||||
mysql_query($sql);
|
||||
}
|
||||
37
admin/ajax/addEditClient.php
Normal file
37
admin/ajax/addEditClient.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
if(isset($_POST['add_edit_client'])){
|
||||
$post = clearInputData($_POST);
|
||||
$error_add = Clients_jw::addEdit($post);
|
||||
if(!$error_add){
|
||||
echo 1;
|
||||
} else {
|
||||
echo $error_add;
|
||||
}
|
||||
}
|
||||
if(isset($_POST['stage_edit'])){
|
||||
$stage = (int)$_POST['stage_edit'];
|
||||
$id = (int)$_POST['id'];
|
||||
$sql = "UPDATE `clients_jw` SET `stage` = '{$stage}', `deleted` = 0 WHERE `id` = {$id}";
|
||||
//echo $sql;
|
||||
mysql_query($sql);
|
||||
if(isset($_POST['turn'])){
|
||||
$set_turns = json_decode(html_entity_decode($_POST['turn']), ENT_QUOTES);
|
||||
$time = time();
|
||||
foreach($set_turns as $key => $turn){
|
||||
$sql = "UPDATE `clients_jw` SET `turntime` = ".$time.", `turn` = ".$turn." WHERE `id` = {$key}";
|
||||
// echo $sql;
|
||||
mysql_query($sql);
|
||||
}
|
||||
}
|
||||
echo 1;
|
||||
}
|
||||
|
||||
if(isset($_POST['done_event'])){
|
||||
$event_id = (int)$_POST['done_event'];
|
||||
$done = (int)$_POST['done'];
|
||||
$sql = "UPDATE `user_client_jw_events` SET `calendar_view` = {$done} WHERE `id` = {$event_id}";
|
||||
|
||||
mysql_query($sql);
|
||||
}
|
||||
|
||||
936
admin/ajax/ajax_vue_funnel.php
Normal file
936
admin/ajax/ajax_vue_funnel.php
Normal file
@ -0,0 +1,936 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/ajax/vue_php_function.php");
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
$pdo = new MysqlPdo(hst, ndb, user, pass);
|
||||
|
||||
$sql = "SET NAMES 'utf8'";
|
||||
|
||||
$pdo->query($sql);
|
||||
|
||||
$request = $data->request;
|
||||
|
||||
if($request == 'get_type'){
|
||||
foreach ($WORK_TYPES as $key => $val){
|
||||
if($key > 0){
|
||||
$clientstype = array('code'=>$key, 'name'=>$val);
|
||||
$response[] = $clientstype;
|
||||
}
|
||||
}
|
||||
echo json_encode($response);
|
||||
exit;
|
||||
}
|
||||
|
||||
if($request == 'get_role'){
|
||||
foreach($ROLES_CLIENTS as $key => $val){
|
||||
if($key > 0){
|
||||
$clientsrole = array('code'=>$key, 'name'=>$val);
|
||||
$response[] = $clientsrole;
|
||||
}
|
||||
}
|
||||
echo json_encode($response);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Add record
|
||||
if($request == 'addFunnel'){
|
||||
$response = [];
|
||||
$name = clearInputElement($data->name);
|
||||
$client_type = clearInputElement($data->client_type);
|
||||
$role = clearInputElement($data->role);
|
||||
$user_id = clearInputElement($data->user_id);
|
||||
$agency_id = clearInputElement($data->agency_id);
|
||||
$is_req = (int)$data->is_req;
|
||||
$is_client = (int)$data->is_client;
|
||||
$order_number = (int)$data->order_number;
|
||||
$is_agent = (int)$data->is_agent;
|
||||
$is_agency = (int)$data->is_agency;
|
||||
$is_dev = (int)$data->is_dev;
|
||||
|
||||
$users_no_see = $data->users_no_see;
|
||||
|
||||
if(empty($users_no_see)){
|
||||
$users_no_see = '';
|
||||
} else {
|
||||
$users_no_see = json_encode($users_no_see);
|
||||
}
|
||||
|
||||
$funnelData = $pdo->query("SELECT id FROM funnel_admin WHERE deleted=0 and name='".$name."' and agency_id='".$agency_id."'");
|
||||
if($pdo->num_rows($funnelData) == 0){
|
||||
if($pdo->query("INSERT INTO funnel_admin (name,client_type,role,user_id,agency_id,is_req,is_client, order_number, users_no_see, is_agent, is_agency, is_dev)
|
||||
VALUES ('".$name."','".$client_type."','".$role."', '".$user_id."', '".$agency_id."', {$is_req}, {$is_client}, {$order_number}, '{$users_no_see}', '{$is_agent}', '{$is_agency}', '{$is_dev}')"))
|
||||
$response['done'] = 'done';
|
||||
else
|
||||
$response['error'] = $pdo->errorInfo();
|
||||
}else{
|
||||
$response['error'] = "Воронка с таким наименованием уже есть в вашем агенстве";
|
||||
}
|
||||
echo json_encode($response);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//All funnels agency
|
||||
if($request == 'get_all_funnel'){
|
||||
$agency_id = $data->agency_id;
|
||||
$funnelsData = mysql_query("select * from funnel_admin WHERE agency_id = {$agency_id} and deleted = 0 order by id");
|
||||
|
||||
$response = array();
|
||||
//Нулевая воронка
|
||||
/* $sql_d = "SELECT * FROM funnel_default WHERE agency_id = {$agency_id}";
|
||||
$q_d = $pdo->query($sql_d);
|
||||
if($pdo->num_rows($q_d) == 0){
|
||||
$response[] = array('id' => 0, 'name' => 'Обычные', 'is_client' => 1, 'is_req' => 1, 'is_stage' => 1, 'is_show_funnels' => 1, 'order_number' => 0);
|
||||
} else {
|
||||
$r_d = $pdo->fetch_assoc($q_d);
|
||||
$name = 'Обычные';
|
||||
if(!empty($r_d['name'])) $name = $r_d['name'];
|
||||
$response[] = array('id' => 0, 'name' => $name, 'is_client' => $r_d['is_client'], 'is_req' => $r_d['is_req'], 'is_stage' => $r_d['is_stage'], 'is_show_funnels' => $r_d['is_show_funnels'], 'order_number' => $r_d['order_number']);
|
||||
}*/
|
||||
|
||||
while($row = mysql_fetch_assoc($funnelsData)){
|
||||
$row['date'] = date('d.m.Y H:i:s', strtotime($row['date_create']));
|
||||
$row['role'] = htmlspecialchars_decode($row['role']);
|
||||
$row['client_type'] = htmlspecialchars_decode($row['client_type']);
|
||||
$row['mainstep'] = '';
|
||||
$tempUserNo = null;
|
||||
if(!empty($row['users_no_see'])){
|
||||
$tempUserNo = json_decode($row['users_no_see'], true);
|
||||
}
|
||||
$row['user_no_see'] = $tempUserNo;
|
||||
//Этапы
|
||||
$steps = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$row['id']." and deleted=0 order by main desc");
|
||||
while($step = mysql_fetch_assoc($steps)){
|
||||
$step['name_number'] = $step['name'];
|
||||
if($step['main'] == 1){
|
||||
$step['name_number'] = '1. '.$step['name'];
|
||||
} else if($step['order_number'] > 0){
|
||||
$step['name_number'] = $step['order_number'].'. '.$step['name'];
|
||||
}
|
||||
|
||||
$row['branchs'][$step['branch']][$step['id']] = deClearInputElements($step);
|
||||
$row['steps'][$step['id']] = deClearInputElements($step);
|
||||
if(!empty($row['steps'][$step['id']]['users_mes'])){
|
||||
//var_dump($step['users_mes']);
|
||||
$row['steps'][$step['id']]['users_mes'] = json_decode($row['steps'][$step['id']]['users_mes'], true);
|
||||
}
|
||||
if(!empty($row['steps'][$step['id']]['tasks_move'])){
|
||||
$row['steps'][$step['id']]['tasks_move'] = json_decode($row['steps'][$step['id']]['tasks_move'], true);
|
||||
}
|
||||
$sql_file = "SELECT * FROM funnel_files WHERE etap_id = '".$step['id']."' AND funnel_id = ".$row['id'];
|
||||
$q_file = mysql_query($sql_file);
|
||||
$files = array();
|
||||
while($file_r = mysql_fetch_assoc($q_file)){
|
||||
$path = "https://uf.joywork.ru/upload/funnels/".$row['id']."/".$file_r['guid'].".".$file_r['type'];
|
||||
|
||||
$files[] = array('guid' => $file_r['guid'],'isUpload' => true, 'uploads' => false, 'name' => $file_r['name']);
|
||||
}
|
||||
$row['steps'][$step['id']]['files'] = $files;
|
||||
|
||||
$prev_files = array();
|
||||
if(!empty($step['pole_prev'])){
|
||||
$pole_prev = json_decode($row['steps'][$step['id']]['pole_prev'], true);
|
||||
|
||||
if(!empty($pole_prev['files_attach'])){
|
||||
foreach($pole_prev['files_attach'] as $file){
|
||||
|
||||
$sql_file_prev = "SELECT * FROM files_steps_funnel_prev WHERE id = {$file['id']}";
|
||||
$q_file_prev = mysql_query($sql_file_prev);
|
||||
|
||||
while($file_r = mysql_fetch_assoc($q_file_prev)){
|
||||
$path = "https://uf.joywork.ru/upload/funnels/prev_steps/".$row['id']."/".$file_r['guid'].".".$file_r['type'];
|
||||
|
||||
$prev_files[] = array('guid' => $file_r['guid'],'isUpload' => true, 'uploads' => false, 'name' => $file_r['name']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$row['steps'][$step['id']]['prev_files'] = $prev_files;
|
||||
|
||||
/* if(!empty($step['pole_dop'])){
|
||||
|
||||
}*/
|
||||
|
||||
|
||||
$row['mainsteps'][] = array('id'=>$step['id'], 'name'=>$step['name']);
|
||||
|
||||
if($step['main'] == 1){
|
||||
$row['mainstep'] = array('id'=>$step['id'], 'name'=>$step['name']);
|
||||
}
|
||||
|
||||
}
|
||||
$response[] = $row;
|
||||
}
|
||||
|
||||
echo json_encode($response);
|
||||
exit;
|
||||
}
|
||||
|
||||
if($request == 'get_users_see'){
|
||||
$result = array();
|
||||
$user_id = (int)$data->user_id;
|
||||
$agency_id = (int)$data->agency_id;
|
||||
if($user_id > 0 && $agency_id > 0){
|
||||
$name_file_emp = $_SERVER['DOCUMENT_ROOT'] . '/server/emp/'.$agency_id .'/'.$user_id.'/emp.json';
|
||||
//echo $name_file_emp."\n";
|
||||
if(!file_exists($name_file_emp)){
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/templates/filter_emp.php");
|
||||
}
|
||||
$users = [];
|
||||
$usersIds = [];
|
||||
$usersIds[] = $agency_id;
|
||||
$sql_users = "SELECT id FROM users WHERE id in (select id from users where id=$agency_id or id_manager=$agency_id or id_manager in
|
||||
(select id from users where id_manager=$agency_id or id_manager in
|
||||
(select id from users where id_manager=$agency_id)))";
|
||||
$q_users = mysql_query($sql_users);
|
||||
while($r_users = mysql_fetch_assoc($q_users)){
|
||||
$usersIds[] = (int)$r_users['id'];
|
||||
}
|
||||
|
||||
|
||||
$sql_d = "SELECT d.name as dep_name, r.name as role_name, r.role, r.department_id, r.id FROM departments as d left join roles as r on d.id = r.department_id WHERE d.agency_id = ".$agency_id;
|
||||
$q_d = mysql_query($sql_d);
|
||||
$departments = array();
|
||||
while($r_d = mysql_fetch_assoc($q_d)){
|
||||
$departments[$r_d['id']] = $r_d;
|
||||
}
|
||||
|
||||
$sql_u = "SELECT * FROM users WHERE id in (".implode(',',$usersIds).")";
|
||||
$q_u = mysql_query($sql_u);
|
||||
while($row = mysql_fetch_assoc($q_u)){
|
||||
$users[$row['id']] = $row;
|
||||
}
|
||||
|
||||
$json_str = file_get_contents($name_file_emp);
|
||||
$json = json_decode($json_str, true);
|
||||
//var_dump($json);
|
||||
$ids = array();
|
||||
if(isset($json['agency']['id'])){
|
||||
$result[] = array('code'=>(int)$json['agency']['id'], 'type'=>'agency', 'name'=>'Руководитель агентства');
|
||||
}
|
||||
|
||||
if(isset($json['agency']['managers']['ids'])){
|
||||
foreach($json['agency']['managers']['ids'] as $id_menager){
|
||||
if(isset($users[$id_menager])){
|
||||
$name = '';
|
||||
if($users[$id_menager]['role_id'] > 0){
|
||||
$name .= $departments[$users[$id_menager]['role_id']]['dep_name'];
|
||||
} else {
|
||||
$name .= "Группа менеджера ";
|
||||
}
|
||||
$result[] = array('code'=>'all_'.(int)$id_menager, 'type'=>'otdel', 'name'=>$name);
|
||||
|
||||
$name='';
|
||||
$name .= '-'.trim($users[$id_menager]['last_name'] . ' ' . $users[$id_menager]['first_name'] . ' ' . $users[$id_menager]['middle_name']);
|
||||
if($users[$id_menager]['role_id'] > 0){
|
||||
$name .= " (".$departments[$users[$id_menager]['role_id']]['role_name'].")";
|
||||
} else {
|
||||
$name .= " (Менеджер)";
|
||||
}
|
||||
$result[] = array('code'=>(int)$id_menager, 'type'=>'manager', 'name'=>$name);
|
||||
}
|
||||
|
||||
if(isset($json['agency']['managers'][$id_menager]['agents'])){
|
||||
foreach($json['agency']['managers'][$id_menager]['agents'] as $id_agent){
|
||||
if(isset($users[$id_agent])){
|
||||
$name = '-';
|
||||
|
||||
$name .= trim($users[$id_agent]['last_name'] . ' ' . $users[$id_agent]['first_name'] . ' ' . $users[$id_agent]['middle_name']);
|
||||
if($users[$id_agent]['role_id'] > 0){
|
||||
$name .= " (".$departments[$users[$id_agent]['role_id']]['role_name'].")";
|
||||
} else {
|
||||
$name .= " (Агент)";
|
||||
}
|
||||
$result[] = array('code'=>(int)$id_agent, 'type'=>'agent', 'name'=>$name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
if(isset($json['agency']['agents'])){
|
||||
foreach($json['agency']['agents'] as $id_agent){
|
||||
if(isset($users[$id_agent])){
|
||||
$name = '';
|
||||
|
||||
$name .= trim($users[$id_agent]['last_name'] . ' ' . $users[$id_agent]['first_name'] . ' ' . $users[$id_agent]['middle_name']);
|
||||
if($users[$id_agent]['role_id'] > 0){
|
||||
$name .= " (".$departments[$users[$id_agent]['role_id']]['role_name'].")";
|
||||
} else {
|
||||
$name .= " (Агент)";
|
||||
}
|
||||
$result[] = array('code'=>(int)$id_agent, 'type'=>'agent', 'name'=>$name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($result, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
//get list steps
|
||||
if($request == 'get_steps'){
|
||||
$funnelId = (int)$data->funnel_id;
|
||||
$row = array();
|
||||
if($steps = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$funnelId." and deleted=0")){
|
||||
while($step = mysql_fetch_assoc($steps)){
|
||||
$row[$step['id']] = deClearInputElements($step);
|
||||
}
|
||||
|
||||
} else {
|
||||
echo mysql_error();
|
||||
}
|
||||
|
||||
echo json_encode($row, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
//get list steps
|
||||
if($request == 'get_steps_order'){
|
||||
$funnelId = (int)$data->funnel_id;
|
||||
$row = array();
|
||||
if($steps = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$funnelId." and deleted=0 order by branch")){
|
||||
while($step = mysql_fetch_assoc($steps)){
|
||||
$step['isHide'] = true;
|
||||
$row['step_'.$step['id']] = deClearInputElements($step);
|
||||
}
|
||||
|
||||
} else {
|
||||
echo mysql_error();
|
||||
}
|
||||
|
||||
echo json_encode($row, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
//Update funnel_admin on id
|
||||
if($request == 'updateFunnel'){
|
||||
//error_reporting(E_ALL | E_STRICT);
|
||||
//ini_set('display_errors', 1);
|
||||
$id = $data->id;
|
||||
$agency_id = $data->agency_id;
|
||||
$name = clearInputElement($data->name);
|
||||
if(isset($data->client_type)){
|
||||
$client_type = clearInputElement($data->client_type);
|
||||
}
|
||||
if(isset($data->role)){
|
||||
$role = clearInputElement($data->role);
|
||||
}
|
||||
$is_req = (int)$data->is_req;
|
||||
$is_client = (int)$data->is_client;
|
||||
$is_stage = (int)$data->is_stage;
|
||||
$is_show_funnels = (int)$data->is_show_funnels;
|
||||
$order_number = (int)$data->order_number;
|
||||
$is_no_see = (int)$data->is_no_see;
|
||||
$users_no_see = $data->users_no_see;
|
||||
$is_agent = (int)$data->is_agent;
|
||||
$is_agency = (int)$data->is_agency;
|
||||
$is_dev = (int)$data->is_dev;
|
||||
|
||||
if(empty($users_no_see)){
|
||||
$users_no_see = '';
|
||||
} else {
|
||||
$users_no_see = json_encode($users_no_see);
|
||||
}
|
||||
|
||||
if($id == 0){
|
||||
$cl = new Clients();
|
||||
$usersIds = $cl -> getUsersFilter([], $_SESSION['id'], true);
|
||||
}
|
||||
|
||||
if($is_client != 1){
|
||||
$sql_cl = "SELECT COUNT(*) as total FROM clients WHERE funnel_id = {$id}";
|
||||
if($id == 0){
|
||||
$sql_cl .= " AND (who_work in (".implode(',',$usersIds).") OR id_agent in (".implode(',',$usersIds)."))";
|
||||
}
|
||||
|
||||
$q_cl = $pdo->query($sql_cl);
|
||||
$res = $pdo->result($q_cl);
|
||||
if($res > 0){
|
||||
echo json_encode(array('result'=>'error',
|
||||
'mes'=>'<p>В воронке есть клиенты ('.$res.' шт.).</p><p>Необходимо перенести их в другую воронку.</p>',
|
||||
'error_close'=>$res, 'type_error'=>'client'),
|
||||
JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($is_req != 1) {
|
||||
$sql_r = "SELECT COUNT(*) as total FROM requisitions WHERE funnel_id = {$id} AND cancel = 0";
|
||||
if($id == 0){
|
||||
$sql_r .= " AND (who_work in (".implode(',',$usersIds).") OR user_id in (".implode(',',$usersIds)."))";
|
||||
}
|
||||
//echo $sql_r;
|
||||
$q_r = $pdo->query($sql_r);
|
||||
$res = $pdo->result($q_r);
|
||||
if($res > 0){
|
||||
echo json_encode(array('result'=>'error',
|
||||
'mes'=>'<p>В воронке заявки ('.$res.' шт.).</p><p>Необходимо перенести их в другую воронку</p>',
|
||||
'error_close'=>$res, 'type_error'=>'req'),
|
||||
JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
$sql_up ="UPDATE funnel_admin SET name = '{$name}', role='{$role}', client_type='{$client_type}', is_req={$is_req}, is_client={$is_client}, order_number={$order_number}, users_no_see = '{$users_no_see}', is_no_see={$is_no_see},
|
||||
is_agent = {$is_agent}, is_agency = {$is_agency}, is_dev = {$is_dev} WHERE id = {$id}";
|
||||
if($id == 0){
|
||||
$sql_d = "SELECT id FROM funnel_default WHERE agency_id = {$agency_id}";
|
||||
$q_d = $pdo->query($sql_d);
|
||||
if($pdo->num_rows($q_d) == 0){
|
||||
$sql_up = "INSERT INTO funnel_default SET agency_id = {$agency_id}, name='{$name}', is_req={$is_req}, is_client={$is_client}, is_stage={$is_stage}, is_show_funnels={$is_show_funnels}, order_number={$order_number}";
|
||||
} else {
|
||||
$sql_up = "UPDATE funnel_default SET is_req={$is_req}, is_client={$is_client}, name='{$name}', is_stage={$is_stage}, is_show_funnels={$is_show_funnels}, order_number={$order_number} WHERE agency_id = {$agency_id}";
|
||||
}
|
||||
}
|
||||
|
||||
if(!$pdo->query($sql_up)){
|
||||
echo json_encode(array('result'=>'error', 'mes'=>$pdo->errorInfo()), JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
echo json_encode(array('result'=>'done'), JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
//Delete funnel_admin
|
||||
if($request == 'delete_funnel'){
|
||||
$res['result'] = 'done';
|
||||
$id = $data->id;
|
||||
//Есть ли не закрытые клиенты
|
||||
$sql = "SELECT id FROM clients WHERE funnel_id=".$id;
|
||||
|
||||
$q = mysql_query($sql);
|
||||
$rows = mysql_num_rows($q);
|
||||
if($rows > 0){
|
||||
$res['result'] = 'error';
|
||||
//$res['mes'] = "Воронку нельзя удалить. Не закрытых клиентов: ".$rows;
|
||||
$res['error_close'] = $rows;
|
||||
$res['type_error'] = 'client';
|
||||
echo json_encode($res, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
//Есть ли не закрытые клиенты
|
||||
$sql = "SELECT id FROM requisitions WHERE funnel_id=".$id;
|
||||
|
||||
$q = mysql_query($sql);
|
||||
$rows = mysql_num_rows($q);
|
||||
if($rows > 0){
|
||||
$res['result'] = 'error';
|
||||
//$res['mes'] = "Воронку нельзя удалить. Не закрытых клиентов: ".$rows;
|
||||
$res['error_close'] = $rows;
|
||||
$res['type_error'] = 'req';
|
||||
echo json_encode($res, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
if(!mysql_query("UPDATE funnel_admin set deleted = 1 WHERE id = {$id}")){
|
||||
$res['result'] = 'error';
|
||||
$res['mes'] = mysql_error();
|
||||
|
||||
}
|
||||
echo json_encode($res, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
//Delete file
|
||||
if($request == 'deleteFile'){
|
||||
$funnel_id = $data->funnelId;
|
||||
$guid = $data->guid;
|
||||
$type = $data->type_file;
|
||||
$path = $_SERVER['DOCUMENT_ROOT']."/upload/funnels/".$funnel_id."/".$guid.".".$type;
|
||||
|
||||
unlink($path);
|
||||
|
||||
mysql_query("DELETE FROM funnel_files WHERE guid = '".$guid."' and funnel_id = '{$funnel_id}'");
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
//Delete file
|
||||
if($request == 'deleteFilePrev'){
|
||||
$funnel_id = $data->funnelId;
|
||||
$guid = $data->guid;
|
||||
$type = $data->type_file;
|
||||
$path = $_SERVER['DOCUMENT_ROOT']."/upload/funnels/prev_steps/".$funnel_id."/".$guid.".".$type;
|
||||
|
||||
unlink($path);
|
||||
|
||||
mysql_query("DELETE FROM files_steps_funnel_prev WHERE guid = '".$guid."' and funnel_id = '{$funnel_id}'");
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
if($request == 'get_doers'){
|
||||
|
||||
$agency_id = clearInputElement($data->agency_id);
|
||||
|
||||
//Определение отделов
|
||||
$sql_d = "SELECT d.name as dep_name, r.name as role_name, r.role, r.department_id, r.id FROM departments as d left join roles as r on d.id = r.department_id WHERE d.agency_id = ".$agency_id;
|
||||
|
||||
$q_d = mysql_query($sql_d);
|
||||
$departments = array();
|
||||
while($r_d = mysql_fetch_assoc($q_d)){
|
||||
$departments[$r_d['id']] = $r_d;
|
||||
}
|
||||
$sql = "SELECT id, id_manager, agency, manager, first_name, last_name, middle_name, role_id, department_id FROM users WHERE id={$agency_id} or id_manager = {$agency_id}";
|
||||
$q = mysql_query($sql);
|
||||
$res = array();
|
||||
$res_a = array();
|
||||
$res_ag = array();
|
||||
while($r = mysql_fetch_assoc($q)){
|
||||
$res_ag[$r['id']] = array();
|
||||
if($r['agency'] > 0){
|
||||
// if(!isset($res_a)) $res_a = array();
|
||||
|
||||
$res_a[$r['id']]['manager'] = array('id' => $r['id'], 'fio' => htmlspecialchars_decode(trim($r['last_name'] . ' ' . $r['first_name'] . ' ' . $r['middle_name'])), 'department' => 'Агенство', 'role' => 'Руководитель');
|
||||
$res_a[$r['id']]['isSee'] = false;
|
||||
} else if ($r['manager'] > 0){
|
||||
//if(!isset($res_m)) $res_m = array();
|
||||
$department = 'Агенство';
|
||||
$role = 'Менеджер';
|
||||
if($r['role_id'] > 0){
|
||||
$department = $departments[$r['role_id']]['dep_name'];
|
||||
$role = $departments[$r['role_id']]['role_name'];
|
||||
}
|
||||
$res_a[$r['id']]['manager']= array('id' => $r['id'], 'fio' => htmlspecialchars_decode(trim($r['last_name'] . ' ' . $r['first_name'] . ' ' . $r['middle_name'])), 'department' =>$department, 'role' => $role);
|
||||
$res_a[$r['id']]['isSee'] = false;
|
||||
$sql_m = "SELECT id, id_manager, agency, manager, first_name, last_name, middle_name, role_id, department_id FROM users WHERE id_manager = ".$r['id']. " order by department_id";
|
||||
$q_m = mysql_query($sql_m);
|
||||
while($r_m = mysql_fetch_assoc($q_m)){
|
||||
$department = 'Агенство';
|
||||
$role = 'Агент';
|
||||
if($r_m['role_id'] > 0){
|
||||
$department = $departments[$r_m['role_id']]['dep_name'];
|
||||
$role = $departments[$r_m['role_id']]['role_name'];
|
||||
}
|
||||
//if(!isset($res_ag)) $res_ag = array();
|
||||
$res_a[$r['id']]['agents'][] = array('id' => $r_m['id'], 'fio' => htmlspecialchars_decode(trim($r_m['last_name'] . ' ' . $r_m['first_name'] . ' ' . $r_m['middle_name'])), 'department' =>$department, 'role' =>$role);
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
$department = 'Агенство';
|
||||
$role = 'Агент';
|
||||
if($r['role_id'] > 0){
|
||||
$department = $departments[$r['role_id']]['dep_name'];
|
||||
$role = $departments[$r['role_id']]['role_name'];
|
||||
}
|
||||
$res_a[$agency_id]['agents'][] = array('id' => $r['id'], 'fio' => htmlspecialchars_decode(trim($r['last_name'] . ' ' . $r['first_name'] . ' ' . $r['middle_name'])), 'department' => $department, 'role' => $role);
|
||||
}
|
||||
//$res_a[[$r['id']]['agents']] = $res_ag[$r['id']];
|
||||
}
|
||||
|
||||
echo json_encode($res_a, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
if($request == 'get_users'){
|
||||
//Список сотрудников
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
$agency_id = (int)$data->agency_id;
|
||||
/*error_reporting(E_ALL | E_STRICT);
|
||||
ini_set('display_errors', 1);*/
|
||||
$depClass = new Department();
|
||||
$departments = $depClass->getDepartments();
|
||||
$result = array();
|
||||
$usersArr = array();
|
||||
$user = new User;
|
||||
$user->get($agency_id);
|
||||
$usersArr[] = $agency_id;
|
||||
|
||||
$result['emp'][] = array('code'=>0, 'date_employe'=>'Ответственный');
|
||||
$result['emp'][] = array('code'=>'manager', 'date_employe'=>'Менеджер ответственного');
|
||||
$sql = "SELECT * FROM users WHERE id=$agency_id AND blocked=0";
|
||||
$rez = mysql_query($sql);
|
||||
$agency = mysql_fetch_assoc($rez);
|
||||
$result['emp'][] = array('code' => $agency_id, 'date_employe' => htmlspecialchars_decode(trim($agency['last_name'] . ' ' . $agency['first_name'] . ' ' . $agency['middle_name']).' (руководитель)'));
|
||||
|
||||
if($user->agency){
|
||||
|
||||
$agentsOfAgency = User::getAllAgents($user->agencyId);
|
||||
$agentsOfManager = User::getAllManagers($user->agencyId);
|
||||
} else if ($user->manager){
|
||||
$agentsOfAgency = User::getAllAgents($userId);
|
||||
} else if ($user->id_manager) {
|
||||
$agentsOfAgency = User::getAllAgents($user->id_manager);
|
||||
$sql = "SELECT * FROM users WHERE manager=1 AND id=$user->id_manager AND blocked=0";
|
||||
$agentsOfManager = array();
|
||||
$rez = mysql_query($sql);
|
||||
while($manager = mysql_fetch_assoc($rez)) $agentsOfManager[] = $manager;
|
||||
//$agentsOfManager = User::getMyManagers();
|
||||
}
|
||||
|
||||
|
||||
if($agentsOfManager) {
|
||||
|
||||
foreach($agentsOfManager as $mngr)
|
||||
{
|
||||
if(!in_array($mngr['id'], $usersArr)){
|
||||
$usersArr[] = $mngr['id'];
|
||||
if($mngr['role_id'] > 0){
|
||||
$result['emp'][] = array('code' => (int)$mngr['id'], 'date_employe' => htmlspecialchars_decode(trim($mngr['last_name'] . ' ' . $mngr['first_name'] . ' ' . $mngr['middle_name']).' ('.$departments[$mngr['role_id']]['role_name'].' '.$departments[$mngr['role_id']]['dep_name'].')'));
|
||||
} else {
|
||||
$result['emp'][] = array('code' => (int)$mngr['id'], 'date_employe' => htmlspecialchars_decode(trim($mngr['last_name'] . ' ' . $mngr['first_name'] . ' ' . $mngr['middle_name']).' (менеджер)'));
|
||||
}
|
||||
}
|
||||
|
||||
if((int)$mngr['role_id'] > 0 && (int)$mngr['department_id'] > 0){
|
||||
$role_user = $depClass->getRole((int)$mngr['role_id']);
|
||||
if($role_user['role'] == 'admin_department'){
|
||||
$menagerDep = User::getDepManagers($role_user['department_id']);
|
||||
|
||||
foreach($menagerDep as $md){
|
||||
if(!in_array($md['id'], $usersArr)){
|
||||
$usersArr[] = $md['id'];
|
||||
$result['emp'][] = array('code' => (int)$md['id'], 'date_employe' => htmlspecialchars_decode(trim($md['last_name'] . ' ' . $md['first_name'] . ' ' . $md['middle_name']).' ('.$departments[$md['role_id']]['role_name'].' '.$departments[$md['role_id']]['dep_name'].')'));
|
||||
}
|
||||
$thisAgents = User::getAgentsOfAgency($md['id'], true);
|
||||
|
||||
foreach($thisAgents as $da){
|
||||
if (!in_array($da['id'], $usersArr)) {
|
||||
$usersArr[] = $da['id'];
|
||||
$result['emp'][] = array('code' => (int)$da['id'], 'date_employe' => htmlspecialchars_decode(trim($da['last_name'] . ' ' . $da['first_name'] . ' ' . $da['middle_name']).' ('.$departments[$da['role_id']]['role_name'].' '.$departments[$da['role_id']]['dep_name'].')'));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($agentsOfAgency) {
|
||||
|
||||
foreach($agentsOfAgency as $agent)
|
||||
{
|
||||
if (!in_array($agent['id'], $usersArr)){
|
||||
$usersArr[] = $agent['id'];
|
||||
if($agent['role_id'] > 0){
|
||||
$result['emp'][] = array('code' => (int)$agent['id'], 'date_employe' => htmlspecialchars_decode(trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']).' ('.$departments[$agent['role_id']]['role_name'].' '.$departments[$agent['role_id']]['dep_name'].')'));
|
||||
|
||||
} else {
|
||||
$result['emp'][] = array('code' => (int)$agent['id'], 'date_employe' => htmlspecialchars_decode(trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']).' (агент)'));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
echo json_encode($result, JSON_UNESCAPED_UNICODE);
|
||||
|
||||
}
|
||||
|
||||
//save etap
|
||||
if($request == 'save_step'){
|
||||
$stepId = (int)$data->step_id;
|
||||
$funnel_id = (int)$data->funnel_id;
|
||||
$name = clearInputElement($data->name_step);
|
||||
if(!empty($data->order_number)){
|
||||
$order_number = (int)$data->order_number;
|
||||
}
|
||||
$days_step = clearInputElement($data->days_step);
|
||||
$is_move_end_srok = (int)$data->is_move_end_srok;
|
||||
$tasks_move = json_encode($data->tasks_move);
|
||||
$color_step = clearInputElement($data->color_step);
|
||||
$start_parallel = clearInputElement($data->start_parallel);
|
||||
$stage = clearInputElement($data->stage);
|
||||
$files = $data->files;
|
||||
$doers = clearInputElement($data->doers);
|
||||
$pole_end_list = clearInputElement($data->poleEndlist);
|
||||
$tasks_list = clearInputElement($data->tasksList);
|
||||
$name_step_task = clearInputElement($data->name_step_task);
|
||||
$docs_step_task = clearInputElement($data->docs_step_task);
|
||||
$next_step_change = clearInputElement($data->nextStepChange);
|
||||
$next_step = clearInputElement($data->nextStep);
|
||||
$is_mes = (int)$data->is_mes;
|
||||
$users_mes = json_encode($data->users_mes);
|
||||
$pole_prev = clearInputElement($data->pole_prev);
|
||||
$temp_pole_prev = json_decode($data->pole_prev, true);
|
||||
$pole_dop = clearInputElement($data->pole_dop);
|
||||
$is_select_room = (int)$data->is_select_room;
|
||||
$complex_status_id = (int)$data->complex_status_id > 0 ? (int)$data->complex_status_id : 'NULL';
|
||||
|
||||
//Определение первого этапа
|
||||
|
||||
$main = 1;
|
||||
$sql_m = "SELECT id FROM `funnel_steps` WHERE `funnel_id` = {$funnel_id} and main = 1";
|
||||
|
||||
$q_m = mysql_query($sql_m);
|
||||
|
||||
if(mysql_num_rows($q_m) > 0){
|
||||
$main = 0;
|
||||
}
|
||||
|
||||
$set = "SET `funnel_id` = {$funnel_id}, "
|
||||
. "`name` = '{$name}', "
|
||||
. "`days_step` = '{$days_step}', "
|
||||
. "`is_move_end_srok` = '{$is_move_end_srok}', "
|
||||
. "`tasks_move` = '{$tasks_move}', "
|
||||
. "`color_step` = '{$color_step}', "
|
||||
. "`start_parallel` = '{$start_parallel}', "
|
||||
. "`stage` = '{$stage}', "
|
||||
. "`doers` = '{$doers}', "
|
||||
. "`pole_end_list` = '{$pole_end_list}', "
|
||||
. "`tasks_list` = '{$tasks_list}', "
|
||||
. "`name_step_task` = '{$name_step_task}', "
|
||||
. "`next_step_change` = '{$next_step_change}', "
|
||||
. "`next_step` = '{$next_step}', "
|
||||
. "`is_mes` = {$is_mes}, "
|
||||
. "`users_mes` = '{$users_mes}', "
|
||||
. "`pole_prev` = '{$pole_prev}', "
|
||||
. "`pole_dop` = '{$pole_dop}', "
|
||||
. "`is_select_room` = $is_select_room, "
|
||||
. "`complex_status_id` = $complex_status_id"
|
||||
;
|
||||
|
||||
if($main == 1) {
|
||||
$set .= ", `main` = 1";
|
||||
$order_number = 1;
|
||||
}
|
||||
|
||||
if(isset($order_number)){
|
||||
$set .= ", order_number=$order_number";
|
||||
}
|
||||
|
||||
if($data->arr_next_steps){
|
||||
$arr_next_steps = clearInputElement($data->arr_next_steps);
|
||||
$set .= ", arr_next_steps = '".$arr_next_steps."'";
|
||||
}
|
||||
|
||||
if($stepId <= 0){
|
||||
$sql = "INSERT INTO `funnel_steps` ".$set;
|
||||
$stepId = mysql_insert_id();
|
||||
} else {
|
||||
$sql = "UPDATE `funnel_steps` ".$set." WHERE `id` = ".$stepId;
|
||||
}
|
||||
|
||||
if(!mysql_query($sql)){
|
||||
echo mysql_error();
|
||||
} else {
|
||||
foreach($files as $file){
|
||||
mysql_query("UPDATE funnel_files SET etap_id = {$stepId} WHERE guid = '".$file->guid."' and funnel_id = {$funnel_id}");
|
||||
}
|
||||
mysql_query("DELETE FROM funnel_files WHERE etap_id = 'temp' AND funnel_id = {$funnel_id}");
|
||||
|
||||
if(!empty($temp_pole_prev['files_attach'])){
|
||||
foreach($temp_pole_prev['files_attach'] as $files_temp){
|
||||
mysql_query("UPDATE files_steps_funnel_prev SET step_id = {$stepId} WHERE id={$files_temp['id']}");
|
||||
}
|
||||
}
|
||||
mysql_query("DELETE FROM files_steps_funnel_prev WHERE step_id is null AND funnel_id = {$funnel_id}");
|
||||
}
|
||||
|
||||
|
||||
getBranch($funnel_id);
|
||||
exit;
|
||||
}
|
||||
|
||||
if($request == 'delete_step'){
|
||||
$stepId = (int)$data->step_id;
|
||||
$res['result'] = 'done';
|
||||
/*if(!mysql_query("DELETE FROM funnel_steps WHERE id=".$stepId)){
|
||||
echo mysql_error();
|
||||
}*/
|
||||
$sql = "SELECT id FROM clients WHERE step_id = ".$stepId." and deleted = 0";
|
||||
$q = mysql_query($sql);
|
||||
$rows = mysql_num_rows($q);
|
||||
if($rows > 0){
|
||||
$res['result'] = 'isClients';
|
||||
$res['mes'] = $rows;
|
||||
echo json_encode($res, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!mysql_query("UPDATE funnel_steps SET deleted=1 WHERE id=".$stepId)){
|
||||
$res['result'] = 'error';
|
||||
$res['mes'] = mysql_error();
|
||||
}
|
||||
|
||||
echo json_encode($res, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
if($request == 'update_clients_step'){
|
||||
$stepId = (int)$data->step_id;
|
||||
$userId = (int)$data->user_id;
|
||||
$sql = "SELECT id FROM clients WHERE step_id = ".$stepId." and deleted = 0";
|
||||
$q = mysql_query($sql);
|
||||
while($r = mysql_fetch_assoc($q)){
|
||||
$sql_s = "SELECT cfs.*, fs.name, fs.stage, fs.funnel_id FROM `clients_funnel_step` as `cfs` LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id WHERE cfs.client_id = ".$r['id'];
|
||||
$q_s = mysql_query($sql_s);
|
||||
if(mysql_num_rows($q_s) > 0){
|
||||
$r_s = mysql_fetch_assoc($q_s);
|
||||
$idCfs = $r_s['id'];
|
||||
$nameCfs = $r_s['name'];
|
||||
$funnelId = $r_s['funnel_id'];
|
||||
$prev_id = 0;
|
||||
$prev_next_id = 0;
|
||||
$clientId = $r['id'];
|
||||
|
||||
if(!empty($r_s['values'])){
|
||||
$valarr = json_decode($r_s['values'],true);
|
||||
$arr = deClearInputElements($valarr);
|
||||
$stepArr = json_decode($arr[$r_s['step_id']], true);
|
||||
|
||||
if(isset($stepArr['prev_id'])){
|
||||
$prev_id = (int)$stepArr['prev_id'];
|
||||
$prev_next_id = (int)$stepArr['prev_next_id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($prev_id > 0){
|
||||
$isStep = mysql_num_rows(mysql_query("SELECT `id` FROM funnel_steps WHERE id = ".$prev_id));
|
||||
if($isStep == 0){
|
||||
$prev_id = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if($prev_id == 0){
|
||||
$main_prev = mysql_fetch_assoc(mysql_query("SELECT `id`, `next_step` FROM funnel_steps WHERE funnel_id = ".$funnelId." and main=1"));
|
||||
$prev_id = (int)$main_prev['id'];
|
||||
$prev_next_id = (int)json_decode(htmlspecialchars_decode($main_prev['next_step']))[0];
|
||||
}
|
||||
|
||||
$sql_s = "UPDATE clients_funnel_step SET step_id = ".$prev_id.", next_id = '".$prev_next_id."' WHERE id = ".$idCfs;
|
||||
mysql_query($sql_s);
|
||||
// echo "SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = ".$prev_id;
|
||||
$sqlname = mysql_query("SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = ".$prev_id);
|
||||
$prev = mysql_fetch_assoc($sqlname);
|
||||
|
||||
$prev_etap = $stepId;
|
||||
$sqlname = mysql_query("SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = {$prev_etap}");
|
||||
$prevName = mysql_fetch_assoc($sqlname);
|
||||
|
||||
|
||||
$dop_text = 'c «'.$prevName['name'].'» на «'.$nameCfs.'» (Перенесен при удалении этапа «'.$prevName['name'].'»)';
|
||||
//echo "INSERT INTO `events_clients` SET user_id = {$userId}, client_id = {$clientId}, event='stageedit', read=1, dop_text='{$dop_text}'";
|
||||
mysql_query("INSERT INTO `events_clients` SET user_id = {$userId}, client_id = {$clientId}, event='stageedit', `read`=1, from_id = 0, dop_text='{$dop_text}'");
|
||||
//$res = get_class_etap($clientId, $funnelId);
|
||||
// echo json_encode($res);
|
||||
|
||||
|
||||
|
||||
$res = get_class_etap($clientId, $funnelId);
|
||||
if(!mysql_query("UPDATE funnel_steps SET deleted=1 WHERE id=".$stepId)){
|
||||
echo mysql_error();
|
||||
}
|
||||
//echo json_encode($res);
|
||||
|
||||
exit();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($request == 'save_first_step'){
|
||||
$stepId = (int)$data->step_id;
|
||||
$sql = "SELECT funnel_id FROM funnel_steps WHERE id=".$stepId;
|
||||
$q = mysql_query($sql);
|
||||
$r=mysql_fetch_assoc($q);
|
||||
$funnel_id = $r['funnel_id'];
|
||||
if(!mysql_query("UPDATE funnel_steps set main = 0 WHERE funnel_id=".$funnel_id)){
|
||||
echo mysql_error();
|
||||
}
|
||||
if(!mysql_query("UPDATE funnel_steps set main = 1, order_number = 1 WHERE id=".$stepId)){
|
||||
echo mysql_error();
|
||||
}
|
||||
getBranch($funnel_id);
|
||||
exit;
|
||||
}
|
||||
|
||||
if($request == 'transmite_funnel'){
|
||||
//error_reporting(E_ALL | E_STRICT);
|
||||
//ini_set('display_errors', 1);
|
||||
$type = $data->type;
|
||||
$funnel_old = (int)$data->funnel_old;
|
||||
$funnel_old_name = $data->funnel_old_name;
|
||||
$funnel_new = (int)$data->funnel_new;
|
||||
|
||||
|
||||
if($type == 'client'){
|
||||
$cl = new Clients();
|
||||
if($funnel_old == 0){
|
||||
|
||||
$usersIds = $cl -> getUsersFilter([], $_SESSION['id'], true);
|
||||
}
|
||||
$sql_cl = "SELECT id FROM clients WHERE funnel_id = {$funnel_old}";
|
||||
if($funnel_old == 0){
|
||||
$sql_cl .= " AND (who_work in (".implode(',',$usersIds).") OR id_agent in (".implode(',',$usersIds)."))";
|
||||
}
|
||||
$q_cl = $pdo->query($sql_cl);
|
||||
$sql = "UPDATE clients SET funnel_id = '$funnel_new' WHERE funnel_id = {$funnel_old}";
|
||||
if($funnel_old == 0){
|
||||
$sql .= " AND (who_work in (".implode(',',$usersIds).") OR id_agent in (".implode(',',$usersIds)."))";
|
||||
}
|
||||
|
||||
$pdo->query($sql);
|
||||
while ($r_cl = $pdo->fetch_assoc($q_cl)){
|
||||
$funnelName = "Обычные";
|
||||
|
||||
if ($funnel_new > 0) {
|
||||
$sqlFunnel = "SELECT name FROM funnel_admin WHERE id = $funnel_new";
|
||||
$resFunnel = $pdo->query($sqlFunnel);
|
||||
$phRow = $pdo->fetch_assoc($resFunnel);
|
||||
$funnelName = $phRow['name'];
|
||||
}
|
||||
$sqlDeleteOldFunnel = "delete from clients_funnel_step where client_id = {$r_cl['id']}";
|
||||
$pdo->query($sqlDeleteOldFunnel);
|
||||
|
||||
$cl->get_class_etap($r_cl['id'], $funnel_new);
|
||||
|
||||
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`)
|
||||
VALUES (".$_SESSION['id'].", ".$r_cl['id'].", '0', 'update', 'Передан в воронку «".$funnelName."» при закрытии воронки «".$funnel_old_name."»', '1')";
|
||||
$pdo->query($sql_conf);
|
||||
}
|
||||
} else if ($type == 'req'){
|
||||
$req = new Requisitions($pdo);
|
||||
|
||||
if($funnel_old == 0){
|
||||
$cl = new Clients();
|
||||
$usersIds = $cl -> getUsersFilter([], $_SESSION['id'], true);
|
||||
}
|
||||
$sql_cl = "SELECT id FROM requisitions WHERE funnel_id = {$funnel_old}";
|
||||
if($funnel_old == 0){
|
||||
$sql_cl .= " AND (who_work in (".implode(',',$usersIds).") OR user_id in (".implode(',',$usersIds)."))";
|
||||
}
|
||||
$q_cl = $pdo->query($sql_cl);
|
||||
$sql = "UPDATE requisitions SET funnel_id = '$funnel_new' WHERE funnel_id = {$funnel_old}";
|
||||
if($funnel_old == 0){
|
||||
$sql .= " AND (who_work in (".implode(',',$usersIds).") OR user_id in (".implode(',',$usersIds)."))";
|
||||
}
|
||||
$pdo->query($sql);
|
||||
while ($r_cl = $pdo->fetch_assoc($q_cl)){
|
||||
$funnelName = "Обычные";
|
||||
|
||||
if ($funnel_new > 0) {
|
||||
$sqlFunnel = "SELECT name FROM funnel_admin WHERE id = $funnel_new";
|
||||
$resFunnel = $pdo->query($sqlFunnel);
|
||||
$phRow = $pdo->fetch_assoc($resFunnel);
|
||||
$funnelName = $phRow['name'];
|
||||
}
|
||||
$sqlDeleteOldFunnel = "delete from clients_funnel_step where req_id = {$r_cl['id']}";
|
||||
$pdo->query($sqlDeleteOldFunnel);
|
||||
|
||||
$req->get_class_etap($r_cl['id'], $funnel_new);
|
||||
|
||||
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `dop_text`, `read`)
|
||||
VALUES (".$_SESSION['id'].", ".$r_cl['id'].", '0', 'update', 'Передана в воронку «".$funnelName."» при закрытии воронки «".$funnel_old_name."»', '1')";
|
||||
$pdo->query($sql_conf);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
27
admin/ajax/block_meta_save.php
Normal file
27
admin/ajax/block_meta_save.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "SELECT id FROM block_meta WHERE block_id = " . $post['block_meta_id'];
|
||||
$q = mysql_query($sql);
|
||||
if(mysql_num_rows($q) == 0){
|
||||
$sql_up = "INSERT INTO block_meta SET block_id = " . $post['block_meta_id'] . ", title = '" . $post['title'] ."', description = '" . $post['description'] ."', keywords = '" . $post['keywords'] ."'";
|
||||
|
||||
} else {
|
||||
$sql_up = "UPDATE block_meta SET title = '" . $post['title'] ."', description = '" . $post['description'] ."', keywords = '" . $post['keywords'] ."' WHERE block_id = " . $post['block_meta_id'];
|
||||
|
||||
}
|
||||
try {
|
||||
mysql_query($sql_up);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
|
||||
echo 1;
|
||||
|
||||
?>
|
||||
74
admin/ajax/build-assets.php
Normal file
74
admin/ajax/build-assets.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
session_start();
|
||||
|
||||
$response = [
|
||||
'success' => false,
|
||||
'message' => '',
|
||||
'timestamp' => date('Y-m-d H:i:s')
|
||||
];
|
||||
|
||||
// Проверка: только для админа или валидного секрета
|
||||
$validSecret = 'Afrqtf';
|
||||
$providedSecret = isset($_GET['secret']) ? $_GET['secret'] : '';
|
||||
|
||||
if (
|
||||
(!isset($_SESSION['id']) || !in_array($_SESSION['id'], [4, 6635, 12253])) &&
|
||||
$providedSecret !== $validSecret
|
||||
) {
|
||||
die('Доступ запрещён');
|
||||
}
|
||||
|
||||
$files = [
|
||||
// CSS
|
||||
'/css/base.css',
|
||||
'/css/crm.css',
|
||||
'/css/style.css',
|
||||
'/css/viewer.css',
|
||||
'/css/fastselect.css',
|
||||
'/css/funnel.css',
|
||||
'/css/all.min.css',
|
||||
'/css/chat/style.min.css',
|
||||
'/css/analytics/local.css',
|
||||
'/css/analytics/styles.min.css',
|
||||
|
||||
// JS
|
||||
'/js/main.js',
|
||||
'/js/charts.js',
|
||||
'/js/f_main.js',
|
||||
'/js/jquery.overscroll.js',
|
||||
'/js/crm.js',
|
||||
'/js/fastselect.standalone.js',
|
||||
'/js/viewer.min.js',
|
||||
'js/core.js',
|
||||
'js/crm_jw.js',
|
||||
'js/callevents.js',
|
||||
];
|
||||
|
||||
$cacheDir = $_SERVER['DOCUMENT_ROOT'] . '/engine/cache';
|
||||
$cacheFile = $cacheDir . '/assets.php';
|
||||
|
||||
if (!is_dir($cacheDir)) {
|
||||
if (!mkdir($cacheDir, 0755, true)) {
|
||||
$response['message'] = 'Не удалось создать папку: ' . $cacheDir;
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
$manifest = [];
|
||||
foreach ($files as $file) {
|
||||
$fullPath = $_SERVER['DOCUMENT_ROOT'] . $file;
|
||||
$manifest[$file] = file_exists($fullPath) ? filemtime($fullPath) : time();
|
||||
}
|
||||
|
||||
$content = '<?php return ' . var_export($manifest, true) . ';';
|
||||
if (file_put_contents($cacheFile, $content) === false) {
|
||||
$response['message'] = 'Не удалось записать файл: ' . $cacheFile;
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
$response['success'] = true;
|
||||
$response['message'] = 'Кэш обновлён. Файлов: ' . count($manifest);
|
||||
echo json_encode($response, JSON_UNESCAPED_UNICODE);
|
||||
35
admin/ajax/confirmRequestPay.php
Normal file
35
admin/ajax/confirmRequestPay.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && $_GET['id'] && isset($_SESSION['superadmin'])) {
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
$sqlRequest = "SELECT * from discharge_user_request where id = $get[id]";
|
||||
$rezRequest = mysql_query($sqlRequest);
|
||||
|
||||
$request = mysql_fetch_assoc($rezRequest);
|
||||
|
||||
if ($request) {
|
||||
|
||||
$sqlUser = new User();
|
||||
|
||||
$sqlUser->get($request['user_id']);
|
||||
|
||||
$sql = "UPDATE discharge_user_request SET paid = 1 where id = $request[id]";
|
||||
mysql_query($sql);
|
||||
|
||||
$newRequestsCount = 0;
|
||||
|
||||
if ($sqlUser->egrn_request_count) {
|
||||
$newRequestsCount = $sqlUser->egrn_request_count;
|
||||
}
|
||||
|
||||
$newRequestsCount = $newRequestsCount + $request['count'];
|
||||
|
||||
$sql = "UPDATE users SET egrn_request_count = $newRequestsCount where id = $request[user_id]";
|
||||
mysql_query($sql);
|
||||
} else {
|
||||
echo "Не найден запрос на оплату в БД.";
|
||||
}
|
||||
}
|
||||
80
admin/ajax/copyDataFromFlatshop.php
Normal file
80
admin/ajax/copyDataFromFlatshop.php
Normal file
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockImage.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockProgressImageFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/DocNotFoundException.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/TargetNotFoundException.php';
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin'])) {
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
if (isset($post['blockId'])) {
|
||||
|
||||
if (!$flatShopDb = mysql_connect("185.76.145.152", "pubcrm", "pubcrmmysqlpass")) {
|
||||
echo mysql_error();
|
||||
die("No connect database FlatShop 185.76.145.152...");
|
||||
}
|
||||
if (!mysql_select_db("pub_crm", $flatShopDb)) {
|
||||
die("No selected database pub_crm...");
|
||||
}
|
||||
$sql = "SET NAMES 'utf8'";
|
||||
mysql_query($sql, $flatShopDb);
|
||||
|
||||
$block = Block::findOne($post['blockId']);
|
||||
|
||||
$sql = "SELECT additional FROM blocks where id = '" . $block->id . "'";
|
||||
$rez = mysql_query($sql, $flatShopDb);
|
||||
|
||||
if (mysql_num_rows($rez) > 0) {
|
||||
$dbObject = mysql_fetch_assoc($rez);
|
||||
|
||||
$sql = "UPDATE blocks SET additional = '" . $dbObject['additional'] . "' WHERE id = '" . $block->id . "'";
|
||||
mysql_query($sql, $mdb);
|
||||
}
|
||||
|
||||
$sql = "SELECT * FROM documents where target_type = '" . Document::TYPE_BLOCK . "' AND target_id = '" . $block->id . "' ORDER BY created_at";
|
||||
$rez = mysql_query($sql, $flatShopDb);
|
||||
|
||||
$ids_array = array();
|
||||
|
||||
if (mysql_num_rows($rez) > 0) {
|
||||
|
||||
$sql = "DELETE FROM documents where target_type = '" . Document::TYPE_BLOCK . "' AND target_id = '" . $block->id . "'";
|
||||
mysql_query($sql, $mdb);
|
||||
|
||||
while ($dbObject = mysql_fetch_assoc($rez)) {
|
||||
$parent = 0;
|
||||
if ($dbObject['parent'] > 0) {
|
||||
$parent = $ids_array[$dbObject['parent']];
|
||||
}
|
||||
$sql = "INSERT INTO documents (name, created_at, target_id, target_type, parent, file) VALUES ('" . $dbObject['name'] .
|
||||
"', NOW(), '" . $block->id . "', '" . $dbObject['target_type'] . "', '" . $parent . "', '" . $dbObject['file'] . "')";
|
||||
mysql_query($sql, $mdb);
|
||||
$err = mysql_errno($mdb);
|
||||
if ($err > 0) {
|
||||
echo mysql_error($mdb);
|
||||
continue;
|
||||
}
|
||||
|
||||
$ids_array[$dbObject['id']] = mysql_insert_id($mdb);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
38
admin/ajax/createFolder.php
Normal file
38
admin/ajax/createFolder.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin'])) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockProgressImageFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockPlusFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/TargetFactory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/DocNotFoundException.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/TargetNotFoundException.php';
|
||||
|
||||
|
||||
$targetId = $_POST['target_id'];
|
||||
$targetType = $_POST['target_type'];
|
||||
$dirId = $_POST['dir_id'];
|
||||
$name = $_POST['name'];
|
||||
|
||||
$manager = new DocumentManager((new TargetFactory())->getTarget($targetId, $targetType));
|
||||
$manager->createDir((int)$dirId, $name);
|
||||
|
||||
$dirObject = $manager->getDir($dirId);
|
||||
$path = $manager->getParents($dirObject->getId());
|
||||
$collection = $manager->getChildren($dirObject->getId());
|
||||
|
||||
include($_SERVER['DOCUMENT_ROOT']."/admin/documentsWidget.php");
|
||||
}
|
||||
29
admin/ajax/delClient.php
Normal file
29
admin/ajax/delClient.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
$get = clearInputData($_GET);
|
||||
if(is_numeric($get['id']))
|
||||
{
|
||||
$client = new Clients_jw;
|
||||
$client->del($get['id']);
|
||||
}
|
||||
if(is_numeric($get['restore']))
|
||||
{
|
||||
$client = new Clients_jw;
|
||||
$client->restore($get['restore']);
|
||||
}
|
||||
|
||||
/*if(is_numeric($get['reason']))
|
||||
{
|
||||
$client = new Clients();
|
||||
$get['id_del_client'] = $get['reason'];
|
||||
$client->delReason($get);
|
||||
}*/
|
||||
|
||||
if($_POST['id_del_client'])
|
||||
{
|
||||
$post = clearInputData($_POST);
|
||||
$client = new Clients_jw;
|
||||
$client->delReason($post);
|
||||
|
||||
}
|
||||
?>
|
||||
20
admin/ajax/deleteArticle.php
Normal file
20
admin/ajax/deleteArticle.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
if (!$_SESSION['superadmin']) {
|
||||
echo json_encode(['success' => false, 'error' => 'Доступ запрещён']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$id = isset($_POST['id']) ? (int)$_POST['id'] : 0;
|
||||
|
||||
if (!$id) {
|
||||
echo json_encode(['success' => false, 'error' => 'Не указан ID']);
|
||||
exit();
|
||||
}
|
||||
|
||||
Article::delete($id);
|
||||
Article::regenerateSitemap();
|
||||
echo json_encode(['success' => true]);
|
||||
42
admin/ajax/deleteBlockBenefit.php
Normal file
42
admin/ajax/deleteBlockBenefit.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "DELETE FROM block_benefits WHERE id=".$post['benefit_id'];
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
|
||||
$sql = "SELECT * FROM block_benefits WHERE block_id=" . $post['block_id'];
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="benefit_item" benefit_id="'.$obj["id"].'">'.
|
||||
'<div class="benefit_item_prop benefit_item_ico">'.
|
||||
'<img src="../images/benefits/'.$obj["benefit_icon"].'">'.
|
||||
'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_name">'.$obj["benefit_name"].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_description">'.$obj['benefit_description'].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_edit">'.
|
||||
'<div class="benefit_edit benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Редактировать</div>'.
|
||||
'<div class="benefit_del benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Удалить</div>'.
|
||||
'</div>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>';
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
17
admin/ajax/deleteBlockImage.php
Normal file
17
admin/ajax/deleteBlockImage.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin'])) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockImage.php';
|
||||
|
||||
$id = $_POST['id'];
|
||||
|
||||
$blockImage = BlockImage::findOne($id);
|
||||
|
||||
if ($blockImage) {
|
||||
$blockImage->delete();
|
||||
}
|
||||
}
|
||||
42
admin/ajax/deleteBlockPlusMinus.php
Normal file
42
admin/ajax/deleteBlockPlusMinus.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "DELETE FROM block_plus_minus WHERE id=".$post['plus_minus_id'];
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
|
||||
$sql = "SELECT * FROM block_benefits WHERE block_id=" . $post['block_id'];
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="benefit_item" benefit_id="'.$obj["id"].'">'.
|
||||
'<div class="benefit_item_prop benefit_item_ico">'.
|
||||
'<img src="../images/benefits/'.$obj["benefit_icon"].'">'.
|
||||
'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_name">'.$obj["benefit_name"].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_description">'.$obj['benefit_description'].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_edit">'.
|
||||
'<div class="benefit_edit benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Редактировать</div>'.
|
||||
'<div class="benefit_del benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Удалить</div>'.
|
||||
'</div>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>';
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
42
admin/ajax/deleteBlockReview.php
Normal file
42
admin/ajax/deleteBlockReview.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "DELETE FROM block_reviews WHERE id=".$post['review_id'];
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
|
||||
$sql = "SELECT * FROM block_benefits WHERE block_id=" . $post['block_id'];
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="benefit_item" benefit_id="'.$obj["id"].'">'.
|
||||
'<div class="benefit_item_prop benefit_item_ico">'.
|
||||
'<img src="../images/benefits/'.$obj["benefit_icon"].'">'.
|
||||
'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_name">'.$obj["benefit_name"].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_description">'.$obj['benefit_description'].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_edit">'.
|
||||
'<div class="benefit_edit benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Редактировать</div>'.
|
||||
'<div class="benefit_del benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Удалить</div>'.
|
||||
'</div>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>';
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
50
admin/ajax/deleteBlockVideo.php
Normal file
50
admin/ajax/deleteBlockVideo.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "DELETE FROM block_videos WHERE id=".$post['video_id'];
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
|
||||
$sql = "SELECT * FROM block_videos WHERE block_id=" . $post['block_id'];
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="block_video_wrap">'.
|
||||
'<span class="block_video_url">'.$obj["url"].'</span>'.
|
||||
'<span class="block_video_del" block_id="'.$obj["block_id"].'" video_id="'.$obj["id"].'">Удалить</span>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>
|
||||
<div>
|
||||
<div class="add_month_img">Добавить изображение:</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<form method="post" enctype="multipart/form-data" id="block-video-images-form_'.$obj["id"].'" style="display: inline;">
|
||||
<div class="block-video-images-container" id="block-video-images-container_'.$obj["id"].'" class="">
|
||||
<input type="hidden" name="video_id" value="'.$obj["id"].'">
|
||||
<input data-id="'.$obj["id"].'" type="file" name="blockVideoPhoto[]" accept="image/jpg,image/jpeg" multiple="">
|
||||
</div>
|
||||
</form>
|
||||
<div id="image-block-video-result_'.$obj["id"].'">
|
||||
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>';
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
41
admin/ajax/deleteBuilderReview.php
Normal file
41
admin/ajax/deleteBuilderReview.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "DELETE FROM builder_reviews WHERE id=".$post['review_id'];
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
|
||||
/* $sql = "SELECT * FROM builder_reviews WHERE builder_id=" . $post['block_id'];
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="benefit_item" benefit_id="'.$obj["id"].'">'.
|
||||
'<div class="benefit_item_prop benefit_item_ico">'.
|
||||
'<img src="../images/benefits/'.$obj["benefit_icon"].'">'.
|
||||
'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_name">'.$obj["benefit_name"].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_description">'.$obj['benefit_description'].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_edit">'.
|
||||
'<div class="benefit_edit benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Редактировать</div>'.
|
||||
'<div class="benefit_del benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Удалить</div>'.
|
||||
'</div>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>';
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}*/
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
40
admin/ajax/deleteDocument.php
Normal file
40
admin/ajax/deleteDocument.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin'])) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockProgressImageFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockPlusFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/TargetFactory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/DocNotFoundException.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/TargetNotFoundException.php';
|
||||
|
||||
$targetId = $_POST['target_id'];
|
||||
$targetType = $_POST['target_type'];
|
||||
$docId = $_POST['doc_id'];
|
||||
|
||||
$manager = new DocumentManager((new TargetFactory())->getTarget($targetId, $targetType));
|
||||
|
||||
$doc = Document::findById($targetId, $targetType, $docId);
|
||||
|
||||
$manager->delete($docId);
|
||||
|
||||
$dirObject = $manager->getDir($doc->parent);
|
||||
$path = $manager->getParents($dirObject->getId());
|
||||
$collection = $manager->getChildren($dirObject->getId());
|
||||
|
||||
include($_SERVER['DOCUMENT_ROOT'] . "/admin/documentsWidget.php");
|
||||
}
|
||||
177
admin/ajax/domclick-parser.php
Normal file
177
admin/ajax/domclick-parser.php
Normal file
@ -0,0 +1,177 @@
|
||||
|
||||
<style>
|
||||
#domclick-parser {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
padding: 20px 35px;
|
||||
background: white;
|
||||
border: 1px solid #dedede;
|
||||
margin-top: 20px;
|
||||
}
|
||||
#domclick-parser td, #domclick-parser th {
|
||||
border: 1px solid #ddd;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#domclick-parser tr:nth-child(even){background-color: #f2f2f2;}
|
||||
|
||||
#domclick-parser tr:hover {background-color: #ddd;}
|
||||
|
||||
#domclick-parser th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #04AA6D;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
function getParsers($parser_name = [])
|
||||
{
|
||||
$items = array();
|
||||
|
||||
foreach ($parser_name as $name)
|
||||
{
|
||||
$sql = "SELECT
|
||||
dps.*
|
||||
FROM
|
||||
domclick_parser_stats dps
|
||||
JOIN
|
||||
(
|
||||
SELECT
|
||||
id
|
||||
FROM domclick_parser_stats
|
||||
WHERE
|
||||
`state` = 'Старт'
|
||||
AND `parser_name` = '{$name}'
|
||||
ORDER BY `id`
|
||||
DESC LIMIT 1
|
||||
) sub
|
||||
WHERE
|
||||
dps.id >= sub.id
|
||||
AND dps.parser_name = '{$name}'
|
||||
";
|
||||
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
if (mysql_num_rows($rez) > 0) {
|
||||
while ($dbObject = mysql_fetch_assoc($rez)) {
|
||||
$items[$dbObject['parser_name']][] = $dbObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $items;
|
||||
}
|
||||
|
||||
$items = getParsers(['moscow', 'spb', 'others']);
|
||||
?>
|
||||
|
||||
<?php foreach ($items as $key => $item) {
|
||||
$last_record = $item[count($item) - 1];
|
||||
|
||||
$status = 'Завершено';
|
||||
if ($last_record && !in_array($last_record['state'], ['Завершено с ошибкой', 'Завершено успешно'])) {
|
||||
$status = 'В процессе';
|
||||
}
|
||||
|
||||
if ($last_record['state'] == 'Завершено с ошибкой') {
|
||||
$status = 'Завершено с ошибкой';
|
||||
}
|
||||
|
||||
if (!$last_record) {
|
||||
$status = 'Парсер не был запущен';
|
||||
}
|
||||
|
||||
$name = 'Другие';
|
||||
|
||||
if ($key == 'moscow') {
|
||||
$name = 'Москва';
|
||||
}
|
||||
else if ($key == 'spb') {
|
||||
$name = 'Санкт-Петербург';
|
||||
}
|
||||
?>
|
||||
<div id="parser-<?= $key ?>" class="parser" data-type="<?= $key ?>" style="position: relative;">
|
||||
<button
|
||||
style="
|
||||
position: absolute;
|
||||
right: 36px;
|
||||
top: 15px;
|
||||
border: none;
|
||||
background: #04AA6D;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
border-radius: 4px;"
|
||||
id="update-page"
|
||||
>
|
||||
Обновить Таблицу
|
||||
</button>
|
||||
<div>
|
||||
|
||||
|
||||
<div id="domclick-parser">
|
||||
<h2><?= $name ?> - <?= $status ?></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>Количество Комплексов</th>
|
||||
<th>Количество Объектов</th>
|
||||
<th>Дата</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
|
||||
$colors = [
|
||||
'Старт' => '#247d00',
|
||||
'Создано' => '#2226f0',
|
||||
'Обновлено' => '#2226f0',
|
||||
'Удалено' => '#f02222',
|
||||
'Завершено с ошибкой' => '#f02222',
|
||||
'Завершено успешно' => '#247d00'
|
||||
];
|
||||
|
||||
foreach ($item as $record) { ?>
|
||||
<tr>
|
||||
<td style="color: <?= $colors[$record['state']] ?>"><?= $record['state']?></td>
|
||||
<td ><?= $record['complex_count'] > 0 ? $record['complex_count'] : '-' ?></td>
|
||||
<td ><?= $record['object_count'] > 0 ? $record['object_count'] : '-' ?></td>
|
||||
<td ><?= $record['updated_at']?></td>
|
||||
</tr>
|
||||
|
||||
<?php } ?>
|
||||
<!-- <tr>
|
||||
<td>Старт</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>31.03.2024 16:25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Обновлено</td>
|
||||
<td>10</td>
|
||||
<td>20</td>
|
||||
<td>31.03.2024 16:25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Удалено</td>
|
||||
<td>2</td>
|
||||
<td>0</td>
|
||||
<td>30.03.2024 16:25</td>
|
||||
</tr> -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
25
admin/ajax/getBlockBenefit.php
Normal file
25
admin/ajax/getBlockBenefit.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "SELECT * FROM block_benefits WHERE id='" . $post['benefit_id'] . "'";
|
||||
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$res['id'] = $obj['id'];
|
||||
$res['benefit_icon'] = $obj['benefit_icon'];
|
||||
$res['benefit_name'] = $obj['benefit_name'];
|
||||
$res['benefit_description'] = $obj['benefit_description'];
|
||||
}
|
||||
echo json_encode($res); exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
16
admin/ajax/getClient.php
Normal file
16
admin/ajax/getClient.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
$get = clearInputData($_GET);
|
||||
if(is_numeric($get['id']))
|
||||
{
|
||||
$client = new Clients_jw;
|
||||
$client->get($get['id']);
|
||||
|
||||
// hide_client_contacts: маскируем phone/email/fio перед отдачей в JSON.
|
||||
$clientArr = (array) $client;
|
||||
if (function_exists('mask_client_contacts_inplace')) {
|
||||
mask_client_contacts_inplace($clientArr);
|
||||
}
|
||||
echo json_encode($clientArr);
|
||||
}
|
||||
?>
|
||||
320
admin/ajax/getClientLogForEventsNew.php
Normal file
320
admin/ajax/getClientLogForEventsNew.php
Normal file
@ -0,0 +1,320 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && $_GET['id'] && is_numeric($_GET['id'])) {
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
// обновляем метку у меню календаря
|
||||
// считаем события объектов
|
||||
$sql = "SELECT count(id) FROM user_object_events WHERE user_id = $_SESSION[id] and calendar_view = 0
|
||||
and schedule_date is not null AND DATE_FORMAT(e.schedule_date, '%Y-%m-%d %H:%i:%s') <= '".date("Y-m-d H:i:s")."'";
|
||||
$rez = mysql_query($sql);
|
||||
$objectEventCount = mysql_result($rez,0);
|
||||
|
||||
// считаем события клиентов
|
||||
$sql = "SELECT count(id) FROM user_client_events WHERE user_id = $_SESSION[id] and calendar_view = 0 AND cancel = 0
|
||||
and schedule_date is not null AND DATE_FORMAT(e.schedule_date, '%Y-%m-%d %H:%i:%s') <= '".date("Y-m-d H:i:s")."'";
|
||||
$rez = mysql_query($sql);
|
||||
$clientEventCount = mysql_result($rez,0);
|
||||
|
||||
// суммарное количество событий по объектам и пользователям
|
||||
$sumCount = intval($objectEventCount) + intval($clientEventCount);
|
||||
|
||||
echo "<script>$('#calendarCounter').html('".$sumCount."');</script>";
|
||||
|
||||
$client = new Clients_jw;
|
||||
$client->get($get['id']);
|
||||
|
||||
$dateAdd = date("d.m.Y", strtotime($client->date_add));
|
||||
list($d, $m, $y) = explode(".", $dateAdd);
|
||||
|
||||
if ($y == date("Y")) {
|
||||
$y = "";
|
||||
}
|
||||
|
||||
$date_add = $d." ".getRusMonth($m)." ".$y;
|
||||
|
||||
echo '<div class="chat-date"><span>'.$date_add.'</span></div>';
|
||||
echo '<div class="chat-status added"><span>Клиент добавлен</span></div>';
|
||||
|
||||
$user = new User;
|
||||
$user->get($_SESSION['id']);
|
||||
|
||||
// если смотрит руководитель - показываем все
|
||||
if ($_SESSION['agency'] || $_SESSION['manager']) {
|
||||
$sql = "SELECT e.id, e.comment, e.create_date, e.type, e.user_id, e.schedule_date, e.address, e.sum, e.from_id, e.calendar_view, If(e.from_id <> 0, (SELECT u.user_logo FROM users as u WHERE u.id = e.from_id), (SELECT u.user_logo FROM users as u WHERE u.id = e.user_id)) as user_logo FROM user_client_jw_events as e WHERE e.client_id = $get[id] ORDER BY e.create_date ASC";
|
||||
|
||||
} else {
|
||||
$sql = "SELECT e.id, e.comment, e.create_date, e.type, e.user_id, e.schedule_date, e.address, e.sum, e.from_id, e.calendar_view, If(e.from_id <> 0, (SELECT u.user_logo FROM users as u WHERE u.id = e.from_id), (SELECT u.user_logo FROM users as u WHERE u.id = e.user_id)) as user_logo FROM user_client_jw_events as e WHERE e.user_id = $_SESSION[id] and e.client_id = $get[id] ORDER BY e.create_date ASC";
|
||||
}
|
||||
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
$date = null;
|
||||
$createDate = null;
|
||||
|
||||
while ($event = mysql_fetch_assoc($rez)) {
|
||||
if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
|
||||
|
||||
$createDate = date("d.m.Y", strtotime($event['create_date']));
|
||||
list($d, $m, $y) = explode(".", $createDate);
|
||||
|
||||
if ($y == date("Y")) {
|
||||
$y = "";
|
||||
}
|
||||
|
||||
echo '<div class="chat-date"><span>' . $d . " " . getRusMonth($m) . " " . $y . '</span></div>';
|
||||
}
|
||||
$class_ev = " is__right";
|
||||
$from_id = $event['user_id'];
|
||||
if(!empty($event['from_id'])) $from_id = $event['from_id'];
|
||||
if($_SESSION['id'] == $from_id){
|
||||
$class_ev = " is__left";
|
||||
}
|
||||
if ($event['type'] == 'comment') {
|
||||
?>
|
||||
|
||||
<div class="chat-block<?=$class_ev?>">
|
||||
<div class="chat-author">
|
||||
<div class="pic">
|
||||
<?php
|
||||
if(empty($event['user_logo'])){
|
||||
?>
|
||||
<img src="/images/user-pic.svg"/>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<img src="/photos/agency/<?=$event['user_logo']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-message">
|
||||
<div class="chat-content">
|
||||
<div class="head"><span>Примечание</span></div>
|
||||
<div class="message"><?=$event['comment']?></div>
|
||||
<span class="time"><?=date("H:i", strtotime($event['create_date']))?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
if ($event['type'] == 'call') {
|
||||
$date = date("d.m.Y", strtotime($event['schedule_date']));
|
||||
list($d, $m, $y) = explode(".", $date);
|
||||
?>
|
||||
<div class="chat-block<?=$class_ev?>">
|
||||
<div class="chat-author">
|
||||
<div class="pic">
|
||||
<?php
|
||||
if(empty($event['user_logo'])){
|
||||
?>
|
||||
<img src="/images/user-pic.svg"/>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<img src="/photos/agency/<?=$event['user_logo']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-message call">
|
||||
<div class="chat-complete">
|
||||
<div class="complete-button" data-id="<?=$event['id']?>">
|
||||
<input type="checkbox" class=""/>
|
||||
<div class="complete-action-button<?=($event['calendar_view'] == 1) ? ' active' : ''?>" id="groupAB__<?=$event['id']?>" title="Выполнено">
|
||||
<span class="check-button-box"></span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512px" height="512px">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M505.943,79.594c-8.077-8.077-21.172-8.077-29.249,0L167.755,388.532L35.306,256.083c-8.076-8.077-21.172-8.077-29.248,0 c-8.077,8.077-8.077,21.172,0,29.249l147.074,147.074c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.625-6.059 l323.562-323.562C514.019,100.767,514.019,87.672,505.943,79.594z" fill="#388e3c"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-content">
|
||||
<div class="head"><span>Звонок</span></div>
|
||||
<div class="message">Позвонить <?=$d?> <?=getRusMonth($m)?> <?=$y?> в <?=date("H:i", strtotime($event['schedule_date']))?></div>
|
||||
<?php if($event['comment']){ ?>
|
||||
<div class="message">Комментарий: <?=$event['comment']?></div>
|
||||
<?php } ?>
|
||||
<span class="time"><?=date("H:i", strtotime($event['create_date']))?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
if ($event['type'] == 'meet') {
|
||||
$date = date("d.m.Y", strtotime($event['schedule_date']));
|
||||
list($d, $m, $y) = explode(".", $date);
|
||||
?>
|
||||
<div class="chat-block<?=$class_ev?>">
|
||||
<div class="chat-author">
|
||||
<div class="pic">
|
||||
<?php
|
||||
if(empty($event['user_logo'])){
|
||||
?>
|
||||
<img src="/images/user-pic.svg"/>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<img src="/photos/agency/<?=$event['user_logo']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-message meeting">
|
||||
<div class="chat-complete">
|
||||
<div class="complete-button" data-id="<?=$event['id']?>">
|
||||
<input type="checkbox" class=""/>
|
||||
<div class="complete-action-button<?=($event['calendar_view'] == 1) ? ' active' : ''?>" id="groupAB__<?=$event['id']?>" title="Выполнено">
|
||||
<span class="check-button-box"></span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512px" height="512px">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M505.943,79.594c-8.077-8.077-21.172-8.077-29.249,0L167.755,388.532L35.306,256.083c-8.076-8.077-21.172-8.077-29.248,0 c-8.077,8.077-8.077,21.172,0,29.249l147.074,147.074c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.625-6.059 l323.562-323.562C514.019,100.767,514.019,87.672,505.943,79.594z" fill="#388e3c"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-content">
|
||||
<div class="head"><span>Встреча</span></div>
|
||||
<div class="message">Встреча будет <?=$d?> <?=getRusMonth($m)?> <?=$y?> в <?=date("H:i", strtotime($event['schedule_date']))?></div>
|
||||
<?php if ($event['address']) { ?>
|
||||
<div class="message">Адрес: <?=$event['address']?></div>
|
||||
<?php } if ($event['comment']) { ?>
|
||||
<div class="message">Комментарий: <?=$event['comment']?></div>
|
||||
<?php } ?>
|
||||
<span class="time"><?=date("H:i", strtotime($event['create_date']))?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
if ($event['type'] == 'show') {
|
||||
$date = date("d.m.Y", strtotime($event['schedule_date']));
|
||||
list($d, $m, $y) = explode(".", $date);
|
||||
?>
|
||||
<div class="chat-block<?=$class_ev?>">
|
||||
<div class="chat-author">
|
||||
<div class="pic">
|
||||
<?php
|
||||
if(empty($event['user_logo'])){
|
||||
?>
|
||||
<img src="/images/user-pic.svg"/>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<img src="/photos/agency/<?=$event['user_logo']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-message showing">
|
||||
<div class="chat-complete">
|
||||
<div class="complete-button" data-id="<?=$event['id']?>">
|
||||
<input type="checkbox" class=""/>
|
||||
<div class="complete-action-button<?=($event['calendar_view'] == 1) ? ' active' : ''?>" id="groupAB__<?=$event['id']?>" title="Выполнено">
|
||||
<span class="check-button-box"></span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512px" height="512px">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M505.943,79.594c-8.077-8.077-21.172-8.077-29.249,0L167.755,388.532L35.306,256.083c-8.076-8.077-21.172-8.077-29.248,0 c-8.077,8.077-8.077,21.172,0,29.249l147.074,147.074c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.625-6.059 l323.562-323.562C514.019,100.767,514.019,87.672,505.943,79.594z" fill="#388e3c"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-content">
|
||||
<div class="head"><span>Показ</span></div>
|
||||
<div class="message">Показ будет <?=$d?> <?=getRusMonth($m)?> <?=$y?> в <?=date("H:i", strtotime($event['schedule_date']))?></div>
|
||||
<?php if ($event['address']) { ?>
|
||||
<div class="message">Адрес: <?=$event['address']?></div>
|
||||
<?php } if ($event['comment']) { ?>
|
||||
<div class="message">Комментарий: <?=$event['comment']?></div>
|
||||
<?php } ?>
|
||||
<span class="time"><?=date("H:i", strtotime($event['create_date']))?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
if ($event['type'] == 'deal') {
|
||||
$date = date("d.m.Y", strtotime($event['schedule_date']));
|
||||
list($d, $m, $y) = explode(".", $date);
|
||||
?>
|
||||
<div class="chat-block<?=$class_ev?>">
|
||||
<div class="chat-author">
|
||||
<div class="pic">
|
||||
<?php
|
||||
if(empty($event['user_logo'])){
|
||||
?>
|
||||
<img src="/images/user-pic.svg"/>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<img src="/photos/agency/<?=$event['user_logo']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-message deal">
|
||||
<div class="chat-complete">
|
||||
<div class="complete-button" data-id="<?=$event['id']?>">
|
||||
<input type="checkbox" class=""/>
|
||||
<div class="complete-action-button<?=($event['calendar_view'] == 1) ? ' active' : ''?>" id="groupAB__<?=$event['id']?>" title="Выполнено">
|
||||
<span class="check-button-box"></span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512px" height="512px">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M505.943,79.594c-8.077-8.077-21.172-8.077-29.249,0L167.755,388.532L35.306,256.083c-8.076-8.077-21.172-8.077-29.248,0 c-8.077,8.077-8.077,21.172,0,29.249l147.074,147.074c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.625-6.059 l323.562-323.562C514.019,100.767,514.019,87.672,505.943,79.594z" fill="#388e3c"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chat-content">
|
||||
<div class="head"><span>Сделка</span></div>
|
||||
<div class="message">Сделка будет <?=$d?> <?=getRusMonth($m)?> <?=$y?> в <?=date("H:i", strtotime($event['schedule_date']))?></div>
|
||||
<?php if ($event['sum']) { ?>
|
||||
<div class="message">Сумма сделки: <?=$event['sum']?><span class="rub">p</span></div>
|
||||
<?php } if ($event['comment']) { ?>
|
||||
<div class="message">Комментарий: <?=$event['comment']?></div>
|
||||
<?php } ?>
|
||||
<span class="time"><?=date("H:i", strtotime($event['create_date']))?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
1936
admin/ajax/getClientsView.php
Normal file
1936
admin/ajax/getClientsView.php
Normal file
File diff suppressed because it is too large
Load Diff
27
admin/ajax/getComplexPresentation.php
Normal file
27
admin/ajax/getComplexPresentation.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
$agency_id = $_GET['id'];
|
||||
|
||||
$sql = "SELECT cf.token, cf.end_date FROM complexes_frame as cf WHERE cf.agency_id = $agency_id";
|
||||
|
||||
$query = mysql_query($sql);
|
||||
$res = mysql_fetch_assoc($query);
|
||||
|
||||
if (isset($res['token'])) {
|
||||
|
||||
$token = $res['token'];
|
||||
$url = $site_url . "/complexes-frame/#/" . $token . "/view";
|
||||
$end_date = $res['end_date'];
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'url' => $url,
|
||||
'end_date' => $end_date
|
||||
]);
|
||||
exit;
|
||||
} else {
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'message' => 'Frame not found',
|
||||
]);
|
||||
}
|
||||
99
admin/ajax/getReservationBlockBanksInfoTabData.php
Normal file
99
admin/ajax/getReservationBlockBanksInfoTabData.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Mortgage.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Bank.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BankProgram.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BankProgramRate.php';
|
||||
|
||||
if ($_SESSION['id'] && $_GET['id'] && isset($_SESSION['superadmin']) && is_numeric($_GET['id'])) {
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
$reservationId = $get['id'];
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservationId);
|
||||
|
||||
$bankPrograms = unserialize($storedData['banks']);
|
||||
|
||||
echo '<div class="flat__banks">';
|
||||
|
||||
if ($bankPrograms && count($bankPrograms) > 0) {
|
||||
|
||||
$bankList = array();
|
||||
$bankIdsList = array();
|
||||
|
||||
foreach ($bankPrograms as $bankProgram) {
|
||||
|
||||
$bank = Bank::findOne($bankProgram->bank_id);
|
||||
if (!in_array($bank->id, $bankIdsList)) {
|
||||
$bankIdsList[] = $bank->id;
|
||||
$bankList[] = $bank;
|
||||
}
|
||||
}
|
||||
foreach ($bankList as $bank) {
|
||||
?>
|
||||
|
||||
<div class="bank">
|
||||
<a href="#" class="program-activate" data-bank-id="<?php echo $bank->id;?>">
|
||||
<div class="bank__inner">
|
||||
<div class="bank__logo">
|
||||
<img src="<?php echo "/photos/bank/" . $bank->logo; ?>"
|
||||
alt="<?php echo $bank->name; ?>" class=""><br/>
|
||||
<span style="float: right">Подробнее...<span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="full_modal-bg" id="bank_programs__bg_<?php echo $bank->id;?>" style="display: none; overflow: visible; z-index: 100002;">
|
||||
<span class="pseudo-link programs-closer" style="z-index: 999999999" onclick="$('#bank_programs_<?php echo $bank->id;?>').hide(10); $('#bank_programs__bg_<?php echo $bank->id;?>').hide(10); $('#flat__bg .closer-flat').show(); return false;">
|
||||
<i class="ti-close"></i>
|
||||
</span>
|
||||
<div class="full_modal flat__modal" id="bank_programs_<?php echo $bank->id;?>" style="display: none;">
|
||||
<div class="flat__inner">
|
||||
<?php
|
||||
foreach ($bankPrograms as $bankProgram) {
|
||||
if ($bankProgram->bank->id == $bank->id) {
|
||||
$bankProgramRates = $bankProgram->bankProgramRates;
|
||||
|
||||
foreach ($bankProgramRates as $bankProgramRate) {
|
||||
?>
|
||||
|
||||
<div class="bank">
|
||||
<div class="bank__inner">
|
||||
<div class="bank__logo">
|
||||
<img src="<?php echo "/photos/bank/" . $bank->logo; ?>"
|
||||
alt="<?php echo $bank->name; ?>" class="">
|
||||
</div>
|
||||
<div class="bank__text">
|
||||
<p>Первый взнос <?php echo $bankProgramRate->first_pay_percent; ?>%</p>
|
||||
<p>Ставка <?php echo number_format($bankProgramRate->rate_percent, 2, ',', ' '); ?>%</p>
|
||||
<p>Срок ипотеки от <?php echo $bankProgramRate->period_min . " до " . $bankProgramRate->period_max; ?> лет</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
echo "<p>Нет ипотеки</p>";
|
||||
}
|
||||
echo '<div class="clear"></div>';
|
||||
echo '</div>';
|
||||
|
||||
}
|
||||
?>
|
||||
77
admin/ajax/getReservationBlockDocumentsInfoTabData.php
Normal file
77
admin/ajax/getReservationBlockDocumentsInfoTabData.php
Normal file
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Prefetcher.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/presentation/DocumentPrefetcher.php';
|
||||
|
||||
if ($_SESSION['id'] && $_GET['id'] && isset($_SESSION['superadmin']) && is_numeric($_GET['id'])) {
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
$reservationId = $get['id'];
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservationId);
|
||||
|
||||
$docs = unserialize($storedData['docs']);
|
||||
|
||||
function print_dirs($dirs)
|
||||
{
|
||||
if ($dirs && count($dirs) > 0) {
|
||||
print('<ul class="docs docsdirs">');
|
||||
foreach ($dirs as $dir) {
|
||||
print_dir($dir);
|
||||
}
|
||||
print('</ul>');
|
||||
}
|
||||
}
|
||||
|
||||
function print_files($files)
|
||||
{
|
||||
if ($files && count($files) > 0) {
|
||||
print('<ul class="docs docsfiles">');
|
||||
foreach ($files as $file) {
|
||||
print_file($file);
|
||||
}
|
||||
print('</ul>');
|
||||
}
|
||||
}
|
||||
|
||||
function print_dir($dir)
|
||||
{
|
||||
echo '<li class="dir opened">';
|
||||
echo '<span class="dir-link"><span class="dir-span ti-folder"></span><span class="dir-name">';
|
||||
echo $dir['name'];
|
||||
echo "</span></span>";
|
||||
print_dirs($dir['dirs']);
|
||||
print_files($dir['files']);
|
||||
print ('</li>');
|
||||
}
|
||||
|
||||
function print_file($file)
|
||||
{
|
||||
$fileUrl = $file['url'];
|
||||
|
||||
echo '<li class="file">';
|
||||
echo '<a title="Скачать файл" target="_blank" href="' . $fileUrl . '"><span class="file-span ti-file"></span><span class="file-name">' . $file['name'] . '</span></a>';
|
||||
echo '</li>';
|
||||
}
|
||||
|
||||
print_dirs($docs['dirs']);
|
||||
print_files($docs['files']);
|
||||
|
||||
}
|
||||
?>
|
||||
145
admin/ajax/getReservationBlockInfoTabData.php
Normal file
145
admin/ajax/getReservationBlockInfoTabData.php
Normal file
@ -0,0 +1,145 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Building.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/RoomType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/DecorationType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/FlatType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Region.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockSubway.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
|
||||
if ($_SESSION['id'] && $_GET['id'] && isset($_SESSION['superadmin']) && is_numeric($_GET['id'])) {
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
$reservationId = $get['id'];
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservationId);
|
||||
|
||||
$apartment = unserialize($storedData['apartment']);
|
||||
$block = unserialize($storedData['block']);
|
||||
$building = unserialize($storedData['building']);
|
||||
$builder = unserialize($storedData['builder']);
|
||||
$subways = unserialize($storedData['subways']);
|
||||
$images = unserialize($storedData['images']);
|
||||
|
||||
$price = round($block->getCalculatedFee() * $apartment->discount_price / 100);
|
||||
?>
|
||||
<div class="left">
|
||||
<div class="row">
|
||||
<div class="NB__label">Адрес</div>
|
||||
<div
|
||||
class="NB__value address"><?php echo Region::findOne($block->region_id)->name . " " . $block->address; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Метро</div>
|
||||
<div class="NB__value"><?php
|
||||
|
||||
if ($subways && count($subways)) {
|
||||
foreach ($subways as $subway) {
|
||||
echo $subway . "; ";
|
||||
}
|
||||
}
|
||||
?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">№ дома</div>
|
||||
<div class="NB__value"><?php echo $building->number; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Корпус</div>
|
||||
<div class="NB__value"><?php echo $building->corp; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Этажей</div>
|
||||
<div class="NB__value"><?php echo $building->floors; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Тип дома</div>
|
||||
<div class="NB__value"><?php echo $building->type; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Очередь</div>
|
||||
<div class="NB__value"><?php echo $building->floors; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Срок сдачи</div>
|
||||
<div class="NB__value"><?php echo Date::getFormatedEndingPeriod($building->deadline); ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Застройщик</div>
|
||||
<div class="NB__value"><?php echo $builder->name ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Тип договора</div>
|
||||
<div class="NB__value"><?php echo Block::$types[$block->type]; ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<?php
|
||||
|
||||
if ($images || $block->image) {
|
||||
|
||||
?>
|
||||
<div class="NB__images">
|
||||
<div class="fotorama" data-allowfullscreen="true" data-height="350px" data-width="100%" data-fit="cover" data-nav="false">
|
||||
<?php if ($block->image) { ?>
|
||||
<img src="<?php echo $block->image; ?>">
|
||||
<?php }
|
||||
if ($images) {
|
||||
foreach ($images as $image) {
|
||||
?>
|
||||
<img src="<?php echo $image; ?>">
|
||||
<?php }
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<div class="NB__description">
|
||||
<?php echo $block->note; ?>
|
||||
</div>
|
||||
<div class="NB__map">
|
||||
<div id="map_canvas" style="width: 100%; height: 350px;"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function onYandexMapInit() {
|
||||
|
||||
var data = [
|
||||
<?php echo $block->latitude; ?>,
|
||||
<?php echo $block->longitude; ?>
|
||||
];
|
||||
|
||||
var myMap = new ymaps.Map('map_canvas', {
|
||||
// При инициализации карты обязательно нужно указать
|
||||
// её центр и коэффициент масштабирования.
|
||||
center: data,
|
||||
zoom:15
|
||||
});
|
||||
|
||||
// Открываем балун на карте (без привязки к геообъекту).
|
||||
myMap.balloon.open(data, '<?php echo $block->name; ?>', {
|
||||
closeButton: false
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
35
admin/ajax/getReservationFlatConditionsTabData.php
Normal file
35
admin/ajax/getReservationFlatConditionsTabData.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
|
||||
if ($_SESSION['id'] && $_GET['id'] && isset($_SESSION['superadmin']) && is_numeric($_GET['id'])) {
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
$reservationId = $get['id'];
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservationId);
|
||||
|
||||
$block = unserialize($storedData['block']);
|
||||
|
||||
?>
|
||||
<div class="flat__text">
|
||||
<div class="0">
|
||||
<?php
|
||||
if ($block->additional) {
|
||||
echo $block->additional;
|
||||
} else {
|
||||
echo "<p>Не указаны</p>";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
131
admin/ajax/getReservationFlatInfoTabData.php
Normal file
131
admin/ajax/getReservationFlatInfoTabData.php
Normal file
@ -0,0 +1,131 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Building.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/RoomType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/DecorationType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/FlatType.php';
|
||||
|
||||
if ($_SESSION['id'] && $_GET['id'] && isset($_SESSION['superadmin']) && is_numeric($_GET['id'])) {
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
$reservationId = $get['id'];
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservationId);
|
||||
|
||||
$apartment = unserialize($storedData['apartment']);
|
||||
$block = unserialize($storedData['block']);
|
||||
$building = unserialize($storedData['building']);
|
||||
$roomType = unserialize($storedData['roomType']);
|
||||
$decorationType = unserialize($storedData['decorationType']);
|
||||
$flatType = unserialize($storedData['flatType']);
|
||||
|
||||
$price = round($block->getCalculatedFee() * $apartment->discount_price / 100);
|
||||
?>
|
||||
|
||||
<div class="left flat__info">
|
||||
|
||||
<div class="row comission">
|
||||
<div class="row-head">Ваши комиссионные</div>
|
||||
<div class="row-min">
|
||||
<div class="proc"><?php echo number_format($block->getCalculatedFee(), 2, ',', ' '); ?>%</div>
|
||||
<div class="sum"><?php echo number_format($price, 0, ',', ' ')?> <span class="rub">p</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Корпус</div>
|
||||
<div class="NB__value"><? echo $building->corp; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">№ кв</div>
|
||||
<div class="NB__value"><? echo $apartment->number; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Тип кв</div>
|
||||
<div class="NB__value"><? echo $roomType->name; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Этаж</div>
|
||||
<div class="NB__value"><? echo $apartment->flat_floor; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">№ подъезда</div>
|
||||
<div class="NB__value"><? echo $apartment->section; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Отделка</div>
|
||||
<div class="NB__value"><? echo $decorationType->name; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="NB__label">Высота потолков</div>
|
||||
<div class="NB__value"><? echo $apartment->height; ?></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-head">Площадь</div>
|
||||
<div class="row-min">
|
||||
<div class="NB__label">общая</div>
|
||||
<div class="NB__value"><? echo $apartment->space_total; ?></div>
|
||||
</div>
|
||||
<div class="row-min">
|
||||
<div class="NB__label">комнат</div>
|
||||
<div class="NB__value"><? if ($apartment->space_room) { echo str_replace("+", " + ", $apartment->space_room); } else { echo $apartment->space_room; } ?></div>
|
||||
</div>
|
||||
<div class="row-min">
|
||||
<div class="NB__label">кухни</div>
|
||||
<div class="NB__value"><? echo $apartment->space_kitchen; ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-head">Оплата</div>
|
||||
<div class="row-min">
|
||||
<div class="NB__label">базовая, м<sup>2</sup></div>
|
||||
<div class="NB__value"><? echo number_format($apartment->meter_price, 0, ',', ' '); ?> <span class="rub">p</span></div>
|
||||
</div>
|
||||
<div class="row-min">
|
||||
<div class="NB__label">при 100% опл., м<sup>2</sup></div>
|
||||
<div class="NB__value"><? echo number_format($apartment->discount_meter_price, 0, ',', ' '); ?> <span class="rub">p</span></div>
|
||||
</div>
|
||||
<div class="row-min">
|
||||
<div class="NB__label">базовая</div>
|
||||
<div class="NB__value"><? echo number_format($apartment->base_price, 0, ',', ' '); ?> <span class="rub">p</span></div>
|
||||
</div>
|
||||
<div class="row-min">
|
||||
<div class="NB__label">при 100% опл.</div>
|
||||
<div class="NB__value"><? echo number_format($apartment->discount_price, 0, ',', ' '); ?> <span class="rub">p</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div><b><? echo $flatType->name; ?></b></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right flat__images">
|
||||
<div class="flat__image">
|
||||
<?php if ($apartment->image) {?>
|
||||
<div class="flat__image flat-flat-plan">
|
||||
<div class="plan__label">Планировка квартиры</div>
|
||||
<img src="<?php echo $apartment->image; ?>"
|
||||
alt="Планировка квартиры - для изменения масштаба используйте колесо мышки">
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($apartment->image2) {?>
|
||||
<div class="flat-plan flat-etag-plan">
|
||||
<div class="plan__label">Планировка этажа</div>
|
||||
<img src="<?php echo $apartment->image2; ?>"
|
||||
alt="Планировка этажа - для изменения масштаба используйте колесо мышки">
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
208
admin/ajax/getReservationForm.php
Normal file
208
admin/ajax/getReservationForm.php
Normal file
@ -0,0 +1,208 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateCancel.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateWork.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateDelete.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateBought.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ReservationImage.php';
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
$reservation = Reservation::findOne($_POST['id']);
|
||||
|
||||
if ($reservation) {
|
||||
|
||||
$reservationImages = ReservationImage::findForReservation($reservation->id);
|
||||
|
||||
?>
|
||||
<div class="flat__inner">
|
||||
<div class="flat__top">
|
||||
<h2 id="flat_booking_modal_title">Бронирование квартиры №<?php echo $reservation->apartment_number; ?></h2>
|
||||
</div>
|
||||
<div class="flat__top"
|
||||
style="border-top: 1px solid #dedede;padding-top: 25px;">
|
||||
<?php echo $reservation->object_desc; ?>
|
||||
</div>
|
||||
<div class="flat__top" style="padding-top: 25px;">
|
||||
<button class="booking JWbutton button" data-id="<?php echo $reservation->id; ?>" data-flatnum="<?php echo $reservation->apartment_number; ?>" id="viewAdminApartmentsButton">Информация о квартире</button>
|
||||
</div>
|
||||
<div class="flat-booking__form">
|
||||
<form action="" class="JW-form">
|
||||
<div class="form-block" style="padding-top: 14px; color: red;" id="errorBlock">
|
||||
</div>
|
||||
<h3>Клиент</h3>
|
||||
<div class="form-block">
|
||||
<div class="label">Фамилия</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->secondname; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Имя</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->firstname; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Отчество</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->surname; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Дата рождения</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" required class=" text required" value="<?php echo Date::getDateForApi($reservation->birth_date); ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Номер телефона</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->phone; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<h3>Оплата</h3>
|
||||
<div class="form-block">
|
||||
<div class="label">Вид</div>
|
||||
<div class="inputs">
|
||||
<div class="button-row">
|
||||
<input type="radio" class="hidden--radio" id="pay_1" name="payment"
|
||||
value="<?php echo Reservation::PAYMENT_FULL_PRICE; ?>" checked>
|
||||
<input type="radio" class="hidden--radio" id="pay_2" name="payment"
|
||||
value="<?php echo Reservation::PAYMENT_FULL_SUBSIDY; ?>">
|
||||
<input type="radio" class="hidden--radio" id="pay_3" name="payment"
|
||||
value="<?php echo Reservation::PAYMENT_MORTGAGE; ?>">
|
||||
<input type="radio" class="hidden--radio" id="pay_4" name="payment"
|
||||
value="<?php echo Reservation::PAYMENT_MILITARY_MORTGAGE; ?>">
|
||||
<div class="selector-button button-left pay <?php if ($reservation->payment == Reservation::PAYMENT_FULL_PRICE) { echo "selected"; }?>">
|
||||
<span>100% стоимости</span>
|
||||
<label for="pay_1" class="label-overlay"> </label>
|
||||
</div>
|
||||
<div class="selector-button button-center pay <?php if ($reservation->payment == Reservation::PAYMENT_FULL_SUBSIDY) { echo "selected"; }?>">
|
||||
<span>Рассрочка</span>
|
||||
<label for="pay_2" class="label-overlay"> </label>
|
||||
</div>
|
||||
<div class="selector-button button-center pay <?php if ($reservation->payment == Reservation::PAYMENT_MORTGAGE) { echo "selected"; }?>">
|
||||
<span>Ипотека</span>
|
||||
<label for="pay_3" class="label-overlay"> </label>
|
||||
</div>
|
||||
<div class="selector-button button-right pay <?php if ($reservation->payment == Reservation::PAYMENT_MILITARY_MORTGAGE) { echo "selected"; }?>">
|
||||
<span>Военная ипотека</span>
|
||||
<label for="pay_4" class="label-overlay"> </label>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Банк</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text" value="<?php echo $reservation->bank; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<h3>Паспорт</h3>
|
||||
<div class="form-block">
|
||||
<div class="label">Серия</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->passport_series; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Номер</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->passport_num; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Дата выдачи</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo Date::getDateForApi($reservation->passport_date); ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Кем выдан</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->passport_place; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Адрес регистрации</div>
|
||||
<div class="inputs">
|
||||
<input type="text" disabled="disabled" class="text required" value="<?php echo $reservation->passport_address; ?>">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<h3>Изображения паспорта</h3>
|
||||
<div class="form-desc">Изображения паспорта можно приложить позже. Начать бронирование можно без
|
||||
них.
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Главный разворот</div>
|
||||
<div>
|
||||
<?php
|
||||
foreach ($reservationImages as $image) {
|
||||
if ($image->image_type == "passport_main") {
|
||||
?>
|
||||
<a target="_blank" title="Просмотр вложения" href="<?php echo $image->fullpath; ?>">Просмотр</a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Страница прописки</div>
|
||||
<div>
|
||||
<?php
|
||||
foreach ($reservationImages as $image) {
|
||||
if ($image->image_type == "passport_prop") {
|
||||
?>
|
||||
<a target="_blank" title="Просмотр вложения" href="<?php echo $image->fullpath; ?>">Просмотр</a>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<h3>Дополнительно</h3>
|
||||
<div class="form-block">
|
||||
<div class="label">Комментарий</div>
|
||||
<div class="inputs">
|
||||
<textarea disabled="disabled" class="text"><?php echo $reservation->info; ?></textarea>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
}
|
||||
34
admin/ajax/getReservationNote.php
Normal file
34
admin/ajax/getReservationNote.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateCancel.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateWork.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateDelete.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateBought.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ReservationImage.php';
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
$reservation = Reservation::findOne($_POST['id']);
|
||||
|
||||
if ($reservation) {
|
||||
if ($reservation->note) {
|
||||
echo str_replace("<br>", "\n", $reservation->note);
|
||||
} else {
|
||||
echo "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
22
admin/ajax/getReservationUserData.php
Normal file
22
admin/ajax/getReservationUserData.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$user = new User;
|
||||
$user->get($post['id']);
|
||||
|
||||
if ($user) {
|
||||
|
||||
?>
|
||||
<div>E-mail: <?php echo $user->email; ?></div>
|
||||
<div>Тел.: <?php echo $user->phone; ?></div>
|
||||
<?php
|
||||
}
|
||||
|
||||
}
|
||||
11
admin/ajax/getZipalSetting.php
Normal file
11
admin/ajax/getZipalSetting.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_SESSION['superadmin'] == 1 && $_GET['id']) {
|
||||
|
||||
$post = clearInputData($_GET);
|
||||
|
||||
$sql = "SELECT zipal_login, zipal_password, zipal_balance FROM users WHERE id = '" . $post['id'] . "'";
|
||||
$rez = mysql_query($sql);
|
||||
echo json_encode(mysql_fetch_assoc($rez));
|
||||
}
|
||||
83
admin/ajax/load_client_jw.php
Normal file
83
admin/ajax/load_client_jw.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
ini_set('display_errors', 1);
|
||||
$file = $_SERVER['DOCUMENT_ROOT']."/server/Kontakty_AN_SPb__Len_obl.csv";
|
||||
var_dump(file_exists($file));
|
||||
|
||||
$CsvString = file_get_contents($file);
|
||||
//echo $CsvString;
|
||||
$Data = str_getcsv($CsvString, "\n"); //parse the rows
|
||||
foreach($Data as &$Row) $Row = str_getcsv($Row, ";"); //parse the items in rows
|
||||
|
||||
$keys = array();
|
||||
//$res_array =
|
||||
foreach($Data as $key => $row){
|
||||
if($key == 0){
|
||||
var_dump($row);
|
||||
} else {
|
||||
$name = trim($row[1]);
|
||||
$phones_temp = explode(',',trim($row[7]));
|
||||
$phone2 = '';
|
||||
foreach ($phones_temp as $k => $p) {
|
||||
if(!empty($p)){
|
||||
if($k == 0){
|
||||
$phone = '+'.str_replace(['(',')','-',' ','+'], '', $p);
|
||||
} else {
|
||||
if($phone2 != '') $phone2 .= '; ';
|
||||
$phone2 .= '+'.str_replace(['(',')','-',' ','+'], '', $p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$phones2_temp = explode(',',trim($row[8]));
|
||||
|
||||
foreach ($phones2_temp as $k => $p) {
|
||||
if(!empty($p)){
|
||||
if($phone2 != '') $phone2 .= '; ';
|
||||
$phone2 .= '+'.str_replace(['(',')','-',' ','+'], '', $p);
|
||||
}
|
||||
}
|
||||
|
||||
$email = trim($row[9]);
|
||||
$id_agent = 4;
|
||||
$funnel_id = 2;
|
||||
if(empty($email)){
|
||||
$email = trim($row[10]);
|
||||
}
|
||||
$site = trim($row[11]);
|
||||
|
||||
// if(!empty($phone) && !empty($name)){
|
||||
$sql = "SELECT id, date_add FROM clients_jw WHERE phone = '{$phone}'";
|
||||
/* if(!empty($email)){
|
||||
$sql .= " or email = '{$email}'";
|
||||
}
|
||||
if(!empty($site)){
|
||||
$sql .= " or site = '{$site}'";
|
||||
}*/
|
||||
// }
|
||||
$q = mysql_query($sql);
|
||||
$rows = mysql_num_rows($q);
|
||||
$r = mysql_fetch_assoc($q);
|
||||
|
||||
if($rows == 0){
|
||||
$in = "INSERT INTO clients_jw SET fio='{$name}', phone='{$phone}', phone2='{$phone2}',
|
||||
email = '{$email}', site = '{$site}', id_agent = 4, funnel_id = 1, date_add = NOW(),
|
||||
stage = 1
|
||||
";
|
||||
} else {
|
||||
$in = "INSERT INTO clients_jw SET fio='{$name}', phone='{$phone}', phone2='{$phone2}',
|
||||
email = '{$email}', site = '{$site}', id_agent = 4, funnel_id = 1, date_add = '".$r['date_add']."',
|
||||
stage = 1
|
||||
";
|
||||
}
|
||||
echo $in.'<br>';
|
||||
// mysql_query($in);
|
||||
// }
|
||||
//echo $key.' - '.$name.' | '.$phone.' | '.$phone2.' | '.$email.' | '.$site.' = '.$rows.'<br>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
41
admin/ajax/renameDocument.php
Normal file
41
admin/ajax/renameDocument.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin'])) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockProgressImageFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockPlusFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/TargetFactory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/DocNotFoundException.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/TargetNotFoundException.php';
|
||||
|
||||
$targetId = $_POST['target_id'];
|
||||
$targetType = $_POST['target_type'];
|
||||
$docId = $_POST['doc_id'];
|
||||
$name = $_POST['name'];
|
||||
|
||||
$manager = new DocumentManager((new TargetFactory())->getTarget($targetId, $targetType));
|
||||
|
||||
$doc = Document::findById($targetId, $targetType, $docId);
|
||||
|
||||
$manager->rename($docId, $name);
|
||||
|
||||
$dirObject = $manager->getDir($doc->parent);
|
||||
$path = $manager->getParents($dirObject->getId());
|
||||
$collection = $manager->getChildren($dirObject->getId());
|
||||
|
||||
include($_SERVER['DOCUMENT_ROOT'] . "/admin/documentsWidget.php");
|
||||
}
|
||||
96
admin/ajax/reservationCancel.php
Normal file
96
admin/ajax/reservationCancel.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateCancel.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateWork.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateDelete.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateBought.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Building.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/RoomType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/DecorationType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/FlatType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Region.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockSubway.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
|
||||
$reservation = Reservation::findOne($_POST['id']);
|
||||
|
||||
if ($reservation) {
|
||||
|
||||
$reservation->cancel();
|
||||
|
||||
$user = new User;
|
||||
|
||||
$user->get($reservation->user_id);
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservation->id);
|
||||
|
||||
$apartment = unserialize($storedData['apartment']);
|
||||
$block = unserialize($storedData['block']);
|
||||
$building = unserialize($storedData['building']);
|
||||
$roomType = unserialize($storedData['roomType']);
|
||||
$builder = unserialize($storedData['builder']);
|
||||
|
||||
$f1 = file("https://joywork.ru/template_mail/reservation_status.html");
|
||||
$text = implode("", $f1);
|
||||
|
||||
$text = str_replace("<%apartment_number%>", $reservation->apartment_number, $text);
|
||||
$text = str_replace("<%user_name%>", $user->fio, $text);
|
||||
$text = str_replace("<%reservation_status%>", $reservation->getStateName(), $text);
|
||||
$text = str_replace("<%room_type%>", $roomType->name, $text);
|
||||
$text = str_replace("<%space_total%>", $apartment->space_total, $text);
|
||||
$text = str_replace("<%flat_floor%>", $apartment->flat_floor, $text);
|
||||
$text = str_replace("<%discount_price%>", number_format($reservation->full_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%base_price%>", number_format($reservation->base_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%block_name%>", $block->name, $text);
|
||||
$text = str_replace("<%building_line%>", $building->line, $text);
|
||||
$text = str_replace("<%building_corp%>", $building->corp, $text);
|
||||
$text = str_replace("<%building_deadline%>", Date::getFormatedEndingPeriod($building->deadline), $text);
|
||||
$text = str_replace("<%building_floors%>", $building->floors, $text);
|
||||
$text = str_replace("<%block_address%>", $block->address, $text);
|
||||
$text = str_replace("<%builder_name%>", $builder->name, $text);
|
||||
$text = str_replace("<%reservation_client_name%>", $reservation->getFullname(), $text);
|
||||
$text = str_replace("<%reservation_client_phone%>", $reservation->phone, $text);
|
||||
|
||||
$style = "";
|
||||
switch( $reservation->status ) {
|
||||
case 1:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 2:
|
||||
$style = "background: #ffc107; color: #ffffff;";
|
||||
break;
|
||||
case 3:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 4:
|
||||
$style = "background: #4caf50;color: #ffffff;";
|
||||
break;
|
||||
case 5:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
}
|
||||
|
||||
$text = str_replace("<%reservation_status_style%>", $style, $text);
|
||||
|
||||
mailClientFromJoywork($user->email, "Изменен статус брони", $text);
|
||||
}
|
||||
|
||||
}
|
||||
96
admin/ajax/reservationDelete.php
Normal file
96
admin/ajax/reservationDelete.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateCancel.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateWork.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateDelete.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateBought.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Building.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/RoomType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/DecorationType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/FlatType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Region.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockSubway.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
|
||||
$reservation = Reservation::findOne($_POST['id']);
|
||||
|
||||
if ($reservation) {
|
||||
|
||||
$reservation->remove();
|
||||
|
||||
$user = new User;
|
||||
|
||||
$user->get($reservation->user_id);
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservation->id);
|
||||
|
||||
$apartment = unserialize($storedData['apartment']);
|
||||
$block = unserialize($storedData['block']);
|
||||
$building = unserialize($storedData['building']);
|
||||
$roomType = unserialize($storedData['roomType']);
|
||||
$builder = unserialize($storedData['builder']);
|
||||
|
||||
$f1 = file("https://joywork.ru/template_mail/reservation_status.html");
|
||||
$text = implode("", $f1);
|
||||
|
||||
$text = str_replace("<%apartment_number%>", $reservation->apartment_number, $text);
|
||||
$text = str_replace("<%user_name%>", $user->fio, $text);
|
||||
$text = str_replace("<%reservation_status%>", $reservation->getStateName(), $text);
|
||||
$text = str_replace("<%room_type%>", $roomType->name, $text);
|
||||
$text = str_replace("<%space_total%>", $apartment->space_total, $text);
|
||||
$text = str_replace("<%flat_floor%>", $apartment->flat_floor, $text);
|
||||
$text = str_replace("<%discount_price%>", number_format($reservation->full_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%base_price%>", number_format($reservation->base_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%block_name%>", $block->name, $text);
|
||||
$text = str_replace("<%building_line%>", $building->line, $text);
|
||||
$text = str_replace("<%building_corp%>", $building->corp, $text);
|
||||
$text = str_replace("<%building_deadline%>", Date::getFormatedEndingPeriod($building->deadline), $text);
|
||||
$text = str_replace("<%building_floors%>", $building->floors, $text);
|
||||
$text = str_replace("<%block_address%>", $block->address, $text);
|
||||
$text = str_replace("<%builder_name%>", $builder->name, $text);
|
||||
$text = str_replace("<%reservation_client_name%>", $reservation->getFullname(), $text);
|
||||
$text = str_replace("<%reservation_client_phone%>", $reservation->phone, $text);
|
||||
|
||||
$style = "";
|
||||
switch( $reservation->status ) {
|
||||
case 1:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 2:
|
||||
$style = "background: #ffc107; color: #ffffff;";
|
||||
break;
|
||||
case 3:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 4:
|
||||
$style = "background: #4caf50;color: #ffffff;";
|
||||
break;
|
||||
case 5:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
}
|
||||
|
||||
$text = str_replace("<%reservation_status_style%>", $style, $text);
|
||||
|
||||
mailClientFromJoywork($user->email, "Изменен статус брони", $text);
|
||||
}
|
||||
|
||||
}
|
||||
96
admin/ajax/reservationSell.php
Normal file
96
admin/ajax/reservationSell.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateCancel.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateWork.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateDelete.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateBought.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Building.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/RoomType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/DecorationType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/FlatType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Region.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockSubway.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
|
||||
$reservation = Reservation::findOne($_POST['id']);
|
||||
|
||||
if ($reservation) {
|
||||
|
||||
$reservation->sell();
|
||||
|
||||
$user = new User;
|
||||
|
||||
$user->get($reservation->user_id);
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservation->id);
|
||||
|
||||
$apartment = unserialize($storedData['apartment']);
|
||||
$block = unserialize($storedData['block']);
|
||||
$building = unserialize($storedData['building']);
|
||||
$roomType = unserialize($storedData['roomType']);
|
||||
$builder = unserialize($storedData['builder']);
|
||||
|
||||
$f1 = file("https://joywork.ru/template_mail/reservation_status.html");
|
||||
$text = implode("", $f1);
|
||||
|
||||
$text = str_replace("<%apartment_number%>", $reservation->apartment_number, $text);
|
||||
$text = str_replace("<%user_name%>", $user->fio, $text);
|
||||
$text = str_replace("<%reservation_status%>", $reservation->getStateName(), $text);
|
||||
$text = str_replace("<%room_type%>", $roomType->name, $text);
|
||||
$text = str_replace("<%space_total%>", $apartment->space_total, $text);
|
||||
$text = str_replace("<%flat_floor%>", $apartment->flat_floor, $text);
|
||||
$text = str_replace("<%discount_price%>", number_format($reservation->full_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%base_price%>", number_format($reservation->base_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%block_name%>", $block->name, $text);
|
||||
$text = str_replace("<%building_line%>", $building->line, $text);
|
||||
$text = str_replace("<%building_corp%>", $building->corp, $text);
|
||||
$text = str_replace("<%building_deadline%>", Date::getFormatedEndingPeriod($building->deadline), $text);
|
||||
$text = str_replace("<%building_floors%>", $building->floors, $text);
|
||||
$text = str_replace("<%block_address%>", $block->address, $text);
|
||||
$text = str_replace("<%builder_name%>", $builder->name, $text);
|
||||
$text = str_replace("<%reservation_client_name%>", $reservation->getFullname(), $text);
|
||||
$text = str_replace("<%reservation_client_phone%>", $reservation->phone, $text);
|
||||
|
||||
$style = "";
|
||||
switch( $reservation->status ) {
|
||||
case 1:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 2:
|
||||
$style = "background: #ffc107; color: #ffffff;";
|
||||
break;
|
||||
case 3:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 4:
|
||||
$style = "background: #4caf50;color: #ffffff;";
|
||||
break;
|
||||
case 5:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
}
|
||||
|
||||
$text = str_replace("<%reservation_status_style%>", $style, $text);
|
||||
|
||||
mailClientFromJoywork($user->email, "Изменен статус брони", $text);
|
||||
}
|
||||
|
||||
}
|
||||
96
admin/ajax/reservationToWork.php
Normal file
96
admin/ajax/reservationToWork.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateCancel.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateWork.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateDelete.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateBought.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ApartmentHistory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Building.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/RoomType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/DecorationType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/FlatType.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Region.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockSubway.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
|
||||
$reservation = Reservation::findOne($_POST['id']);
|
||||
|
||||
if ($reservation) {
|
||||
|
||||
$reservation->startWork();
|
||||
|
||||
$user = new User;
|
||||
|
||||
$user->get($reservation->user_id);
|
||||
|
||||
$apartmentHistory = new ApartmentHistory();
|
||||
$storedData = $apartmentHistory->getData($reservation->id);
|
||||
|
||||
$apartment = unserialize($storedData['apartment']);
|
||||
$block = unserialize($storedData['block']);
|
||||
$building = unserialize($storedData['building']);
|
||||
$roomType = unserialize($storedData['roomType']);
|
||||
$builder = unserialize($storedData['builder']);
|
||||
|
||||
$f1 = file("https://joywork.ru/template_mail/reservation_status.html");
|
||||
$text = implode("", $f1);
|
||||
|
||||
$text = str_replace("<%apartment_number%>", $reservation->apartment_number, $text);
|
||||
$text = str_replace("<%user_name%>", $user->fio, $text);
|
||||
$text = str_replace("<%reservation_status%>", $reservation->getStateName(), $text);
|
||||
$text = str_replace("<%room_type%>", $roomType->name, $text);
|
||||
$text = str_replace("<%space_total%>", $apartment->space_total, $text);
|
||||
$text = str_replace("<%flat_floor%>", $apartment->flat_floor, $text);
|
||||
$text = str_replace("<%discount_price%>", number_format($reservation->full_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%base_price%>", number_format($reservation->base_price, 0, ',', ' '), $text);
|
||||
$text = str_replace("<%block_name%>", $block->name, $text);
|
||||
$text = str_replace("<%building_line%>", $building->line, $text);
|
||||
$text = str_replace("<%building_corp%>", $building->corp, $text);
|
||||
$text = str_replace("<%building_deadline%>", Date::getFormatedEndingPeriod($building->deadline), $text);
|
||||
$text = str_replace("<%building_floors%>", $building->floors, $text);
|
||||
$text = str_replace("<%block_address%>", $block->address, $text);
|
||||
$text = str_replace("<%builder_name%>", $builder->name, $text);
|
||||
$text = str_replace("<%reservation_client_name%>", $reservation->getFullname(), $text);
|
||||
$text = str_replace("<%reservation_client_phone%>", $reservation->phone, $text);
|
||||
|
||||
$style = "";
|
||||
switch( $reservation->status ) {
|
||||
case 1:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 2:
|
||||
$style = "background: #ffc107; color: #ffffff;";
|
||||
break;
|
||||
case 3:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
case 4:
|
||||
$style = "background: #4caf50;color: #ffffff;";
|
||||
break;
|
||||
case 5:
|
||||
$style = "background: #d0d0d0; color: #757575;";
|
||||
break;
|
||||
}
|
||||
|
||||
$text = str_replace("<%reservation_status_style%>", $style, $text);
|
||||
|
||||
mailClientFromJoywork($user->email, "Изменен статус брони", $text);
|
||||
}
|
||||
|
||||
}
|
||||
103
admin/ajax/saveArticle.php
Normal file
103
admin/ajax/saveArticle.php
Normal file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if (!$_SESSION['superadmin']) { http_response_code(403); die('Доступ запрещён'); }
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
$id = isset($post['id']) ? (int)$post['id'] : 0;
|
||||
|
||||
// Сохраняем все введённые данные в сессии,
|
||||
// чтобы при ошибке вернуть их в форму (иначе пользователь теряет введённый текст)
|
||||
function saveFormDataAndRedirect($id, $errCode, $rawPost) {
|
||||
$_SESSION['article_form_draft'] = array(
|
||||
'title' => isset($rawPost['title']) ? $rawPost['title'] : '',
|
||||
'page_title' => isset($rawPost['page_title']) ? $rawPost['page_title'] : '',
|
||||
'description' => isset($rawPost['description']) ? $rawPost['description'] : '',
|
||||
'slug' => isset($rawPost['slug']) ? $rawPost['slug'] : '',
|
||||
'date_created' => isset($rawPost['date_created']) ? $rawPost['date_created'] : '',
|
||||
'date_updated' => isset($rawPost['date_updated']) ? $rawPost['date_updated'] : '',
|
||||
'reading_time' => isset($rawPost['reading_time']) ? $rawPost['reading_time'] : 5,
|
||||
'sort_order' => isset($rawPost['sort_order']) ? $rawPost['sort_order'] : 0,
|
||||
'published' => isset($rawPost['published']) ? 1 : 0,
|
||||
'author_name' => isset($rawPost['author_name']) ? $rawPost['author_name'] : '',
|
||||
'author_job' => isset($rawPost['author_job']) ? $rawPost['author_job'] : '',
|
||||
'author_img' => isset($rawPost['author_img']) ? $rawPost['author_img'] : '',
|
||||
'image' => isset($rawPost['image']) ? $rawPost['image'] : '',
|
||||
'content' => isset($_POST['content']) ? $_POST['content'] : '',
|
||||
);
|
||||
$url = "/admin/article-edit.php" . ($id ? "?id=$id&" : "?") . "err=" . urlencode($errCode);
|
||||
header("location:$url");
|
||||
exit();
|
||||
}
|
||||
|
||||
$slug = trim(Article::val($post, 'slug', ''));
|
||||
$title = trim(Article::val($post, 'title', ''));
|
||||
|
||||
if (!$slug || !$title) {
|
||||
saveFormDataAndRedirect($id, 'empty', $post);
|
||||
}
|
||||
|
||||
$slug = preg_replace('/[^a-z0-9-]/', '', strtolower($slug));
|
||||
$slug = trim($slug, '-');
|
||||
|
||||
if ($slug === '') {
|
||||
saveFormDataAndRedirect($id, 'empty_slug', $post);
|
||||
}
|
||||
|
||||
if (Article::slugExists($slug, $id)) {
|
||||
saveFormDataAndRedirect($id, 'slug_exists', $post);
|
||||
}
|
||||
|
||||
if (Article::isSlugConflictingWithFile($slug)) {
|
||||
saveFormDataAndRedirect($id, 'slug_file_conflict', $post);
|
||||
}
|
||||
|
||||
$imagePath = trim(Article::val($post, 'image', ''));
|
||||
$maxImageSize = 5 * 1024 * 1024; // 5 MB
|
||||
|
||||
if (!empty($_FILES['image_file']['name']) && $_FILES['image_file']['error'] === UPLOAD_ERR_OK) {
|
||||
if ($_FILES['image_file']['size'] > $maxImageSize) {
|
||||
saveFormDataAndRedirect($id, 'image_too_large', $post);
|
||||
}
|
||||
$ext = strtolower(pathinfo($_FILES['image_file']['name'], PATHINFO_EXTENSION));
|
||||
$imageInfo = @getimagesize($_FILES['image_file']['tmp_name']);
|
||||
if (in_array($ext, array('jpg', 'jpeg', 'png', 'webp')) && $imageInfo !== false) {
|
||||
$dir = $_SERVER['DOCUMENT_ROOT'] . '/images/articles/';
|
||||
if (!is_dir($dir)) mkdir($dir, 0755, true);
|
||||
$filename = 'art-' . ($id ? $id : 'new') . '-' . time() . '-' . mt_rand(1000, 9999) . '.' . $ext;
|
||||
if (move_uploaded_file($_FILES['image_file']['tmp_name'], $dir . $filename)) {
|
||||
$imagePath = '/images/articles/' . $filename;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$dateCreated = Article::val($post, 'date_created', '');
|
||||
$dateUpdated = Article::val($post, 'date_updated', '');
|
||||
|
||||
$data = array(
|
||||
'slug' => $slug,
|
||||
'title' => $title,
|
||||
'page_title' => trim(Article::val($post, 'page_title', '')),
|
||||
'description' => trim(Article::val($post, 'description', '')),
|
||||
'content' => isset($_POST['content']) ? $_POST['content'] : '',
|
||||
'date_created' => $dateCreated ? $dateCreated : date('Y-m-d'),
|
||||
'date_updated' => $dateUpdated ? $dateUpdated : date('Y-m-d'),
|
||||
'reading_time' => max(1, (int)Article::val($post, 'reading_time', 5)),
|
||||
'image' => $imagePath,
|
||||
'author_name' => trim(Article::val($post, 'author_name', 'Станислав Дмитриев')),
|
||||
'author_img' => trim(Article::val($post, 'author_img', '/images/articles/rukofodJW.png')),
|
||||
'author_job' => trim(Article::val($post, 'author_job', 'руководитель JoyWork')),
|
||||
'published' => isset($post['published']) ? 1 : 0,
|
||||
'sort_order' => (int)Article::val($post, 'sort_order', 0),
|
||||
);
|
||||
|
||||
if ($id > 0) {
|
||||
Article::update($id, $data);
|
||||
Article::regenerateSitemap();
|
||||
header("location:/admin/article-edit.php?id=$id&saved=1");
|
||||
} else {
|
||||
$newId = Article::create($data);
|
||||
Article::regenerateSitemap();
|
||||
header("location:/admin/article-edit.php?id=$newId&saved=1");
|
||||
}
|
||||
exit();
|
||||
20
admin/ajax/saveDischargeObjectRequestChange.php
Normal file
20
admin/ajax/saveDischargeObjectRequestChange.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_SESSION['superadmin'] == 1 && $_POST['id']) {
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$number = $post['number'];
|
||||
$date = $post['date'];
|
||||
$id = $post['id'];
|
||||
|
||||
$dateObj = DateTime::createFromFormat('d.m.Y H:i', $date);
|
||||
$dateObjForm = "'".date("Y-m-d H:i:s", $dateObj->getTimestamp())."'";
|
||||
|
||||
$sql = "UPDATE discharge_object_request SET request_number = '" . $number ."', request_date = $dateObjForm, state = 'sended' WHERE id = '" . $id . "'";
|
||||
mysql_query($sql);
|
||||
}
|
||||
32
admin/ajax/saveReservationNote.php
Normal file
32
admin/ajax/saveReservationNote.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/IReservationState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/BaseState.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateNew.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateCancel.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateWork.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateDelete.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/state/StateBought.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/Reservation.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/helper/Date.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/Clock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/Clock/RealtimeClock.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/reservation/ReservationImage.php';
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$reservation = Reservation::findOne($post['id']);
|
||||
|
||||
if ($reservation) {
|
||||
echo $reservation->saveNote($post['note']);
|
||||
}
|
||||
|
||||
}
|
||||
19
admin/ajax/saveZipalSettings.php
Normal file
19
admin/ajax/saveZipalSettings.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_SESSION['superadmin'] == 1 && $_POST['id']) {
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$login = $post['login'];
|
||||
$password = $post['password'];
|
||||
$id = $post['id'];
|
||||
$price = $post['price'];
|
||||
|
||||
$sql = "UPDATE users SET zipal_login = '" . $login ."', zipal_password = '" . $password ."', zipal_balance = '" . $price . "' WHERE id = '" . $id . "'";
|
||||
echo $sql;
|
||||
mysql_query($sql);
|
||||
}
|
||||
152
admin/ajax/single-domclick-parser.php
Normal file
152
admin/ajax/single-domclick-parser.php
Normal file
@ -0,0 +1,152 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($type = $_POST['type'])
|
||||
{
|
||||
function getParsers($parser_name = [])
|
||||
{
|
||||
$items = array();
|
||||
|
||||
foreach ($parser_name as $name)
|
||||
{
|
||||
$sql = "SELECT
|
||||
dps.*
|
||||
FROM
|
||||
domclick_parser_stats dps
|
||||
JOIN
|
||||
(
|
||||
SELECT
|
||||
id
|
||||
FROM domclick_parser_stats
|
||||
WHERE
|
||||
`state` = 'Старт'
|
||||
AND `parser_name` = '{$name}'
|
||||
ORDER BY `id`
|
||||
DESC LIMIT 1
|
||||
) sub
|
||||
WHERE
|
||||
dps.id >= sub.id
|
||||
AND dps.parser_name = '{$name}'
|
||||
";
|
||||
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
if (mysql_num_rows($rez) > 0) {
|
||||
while ($dbObject = mysql_fetch_assoc($rez)) {
|
||||
$items[$dbObject['parser_name']][] = $dbObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $items;
|
||||
}
|
||||
|
||||
$items = getParsers([$_POST['type']]);
|
||||
?>
|
||||
|
||||
<?php foreach ($items as $key => $item) {
|
||||
$last_record = $item[count($item) - 1];
|
||||
|
||||
$status = 'Завершено';
|
||||
if ($last_record && !in_array($last_record['state'], ['Завершено с ошибкой', 'Завершено успешно'])) {
|
||||
$status = 'В процессе';
|
||||
}
|
||||
|
||||
if ($last_record['state'] == 'Завершено с ошибкой') {
|
||||
$status = 'Завершено с ошибкой';
|
||||
}
|
||||
|
||||
if (!$last_record) {
|
||||
$status = 'Парсер не был запущен';
|
||||
}
|
||||
|
||||
$name = 'Другие';
|
||||
|
||||
if ($key == 'moscow') {
|
||||
$name = 'Москва';
|
||||
}
|
||||
else if ($key == 'spb') {
|
||||
$name = 'Санкт-Петербург';
|
||||
}
|
||||
?>
|
||||
<div style="position: relative;">
|
||||
<button
|
||||
style="
|
||||
position: absolute;
|
||||
right: 36px;
|
||||
top: 15px;
|
||||
border: none;
|
||||
background: #04AA6D;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
border-radius: 4px;"
|
||||
id="parser-<?= $key ?>" class="parser" data-type="<?= $key ?>"
|
||||
>
|
||||
Обновить Таблицу
|
||||
</button>
|
||||
<div>
|
||||
|
||||
|
||||
<div id="domclick-parser">
|
||||
<h2><?= $name ?> - <?= $status ?></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>Количество Комплексов</th>
|
||||
<th>Количество Объектов</th>
|
||||
<th>Дата</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
|
||||
$colors = [
|
||||
'Старт' => '#247d00',
|
||||
'Создано' => '#2226f0',
|
||||
'Обновлено' => '#2226f0',
|
||||
'Удалено' => '#f02222',
|
||||
'Завершено с ошибкой' => '#f02222',
|
||||
'Завершено успешно' => '#247d00'
|
||||
];
|
||||
|
||||
foreach ($item as $record) { ?>
|
||||
<tr>
|
||||
<td style="color: <?= $colors[$record['state']] ?>"><?= $record['state']?></td>
|
||||
<td ><?= $record['complex_count'] > 0 ? $record['complex_count'] : '-' ?></td>
|
||||
<td ><?= $record['object_count'] > 0 ? $record['object_count'] : '-' ?></td>
|
||||
<td ><?= $record['updated_at']?></td>
|
||||
</tr>
|
||||
|
||||
<?php } ?>
|
||||
<!-- <tr>
|
||||
<td>Старт</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>31.03.2024 16:25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Обновлено</td>
|
||||
<td>10</td>
|
||||
<td>20</td>
|
||||
<td>31.03.2024 16:25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Удалено</td>
|
||||
<td>2</td>
|
||||
<td>0</td>
|
||||
<td>30.03.2024 16:25</td>
|
||||
</tr> -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
22
admin/ajax/switchAgencyNewbuildings.php
Normal file
22
admin/ajax/switchAgencyNewbuildings.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$user = new User;
|
||||
|
||||
$user->get($post['id']);
|
||||
|
||||
$access = 0;
|
||||
if ($user->newbuildings_access) {
|
||||
$access = 0;
|
||||
} else {
|
||||
$access = 1;
|
||||
}
|
||||
|
||||
$sql = "UPDATE users SET newbuildings_access = '$access' WHERE id = '" . $post['id'] . "'";
|
||||
mysql_query($sql);
|
||||
|
||||
}
|
||||
22
admin/ajax/switchAgencyWazzap.php
Normal file
22
admin/ajax/switchAgencyWazzap.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin']) && $_POST['id']) {
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$user = new User;
|
||||
|
||||
$user->get($post['id']);
|
||||
|
||||
$access = 0;
|
||||
if ($user->enable_wazzap) {
|
||||
$access = 0;
|
||||
} else {
|
||||
$access = 1;
|
||||
}
|
||||
|
||||
$sql = "UPDATE users SET enable_wazzap = '$access' WHERE id = '" . $post['id'] . "'";
|
||||
mysql_query($sql);
|
||||
|
||||
}
|
||||
90
admin/ajax/toggleComplexesFrame.php
Normal file
90
admin/ajax/toggleComplexesFrame.php
Normal file
@ -0,0 +1,90 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
$agent_id = null;
|
||||
|
||||
switch ($_SERVER['REQUEST_METHOD']) {
|
||||
|
||||
|
||||
case 'GET':
|
||||
$agent_id = $_GET['id'];
|
||||
if ($_SESSION['id'] && $agent_id && (int)$agent_id > 0) {
|
||||
$q = mysql_query("SELECT * FROM complexes_frame WHERE agency_id = $agent_id");
|
||||
if ($frame = mysql_fetch_assoc($q)) {
|
||||
// http://localhost:8080
|
||||
$frame['url'] = "$site_url/complexes-frame/#/" . $frame['token'] . "/view";
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'data' => $frame,
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'message' => 'Frame not found',
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'POST':
|
||||
if(!isset($_POST['id'])) {
|
||||
$agent_id = $_SESSION['agency_id'];
|
||||
} else {
|
||||
$agent_id = $_POST['id'];
|
||||
}
|
||||
if ($_SESSION['id'] && $agent_id && (int)$agent_id > 0) {
|
||||
$end_date = isset($_POST['endDate']) ? $_POST['endDate'] : null;
|
||||
$frame_color = isset($_POST['main_color']) ? $_POST['main_color'] : null;
|
||||
$client_funnel_id = isset($_POST['client_funnel_id']) ? $_POST['client_funnel_id'] : null;
|
||||
$req_funnel_id = isset($_POST['req_funnel_id']) ? $_POST['req_funnel_id'] : null;
|
||||
$color_reserved = isset($_POST['color_reserved']) ? $_POST['color_reserved'] : null;
|
||||
$color_free = isset($_POST['color_free']) ? $_POST['color_free'] : null;
|
||||
|
||||
$q = mysql_query("SELECT * FROM complexes_frame WHERE agency_id = $agent_id");
|
||||
|
||||
$update_fields = [];
|
||||
if ($end_date !== null) {
|
||||
$update_fields[] = "end_date = '$end_date'";
|
||||
}
|
||||
|
||||
if ($frame_color !== null) {
|
||||
$update_fields[] = "frame_color = '$frame_color'";
|
||||
}
|
||||
|
||||
if ($client_funnel_id !== null) {
|
||||
$update_fields[] = "client_funnel_id = '$client_funnel_id'";
|
||||
}
|
||||
|
||||
if ($req_funnel_id !== null) {
|
||||
$update_fields[] = "req_funnel_id = '$req_funnel_id'";
|
||||
}
|
||||
|
||||
if ($color_reserved !== null) {
|
||||
$update_fields[] = "color_reserved = '$color_reserved'";
|
||||
}
|
||||
|
||||
if ($color_free !== null) {
|
||||
$update_fields[] = "color_free = '$color_free'";
|
||||
}
|
||||
if ($frame = mysql_fetch_assoc($q)) {
|
||||
|
||||
if (!empty($update_fields)) {
|
||||
$update_query = "UPDATE complexes_frame SET " . implode(', ', $update_fields) . " WHERE agency_id = $agent_id";
|
||||
// var_dump($update_query);die;
|
||||
$query = mysql_query($update_query);
|
||||
// var_dump($query);die;
|
||||
}
|
||||
} else {
|
||||
$token = md5($agent_id . time());
|
||||
$query = mysql_query("INSERT INTO complexes_frame SET token = '$token', agency_id = $agent_id," . implode(', ', $update_fields));
|
||||
|
||||
die(mysql_error());
|
||||
}
|
||||
echo ($query);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
69
admin/ajax/togglePresentationFrame.php
Normal file
69
admin/ajax/togglePresentationFrame.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
$agent_id = null;
|
||||
|
||||
switch ($_SERVER['REQUEST_METHOD']) {
|
||||
case 'GET':
|
||||
$agent_id = $_GET['id'];
|
||||
if ($_SESSION['id'] && $agent_id && (int)$agent_id > 0) {
|
||||
$q = mysql_query("SELECT * FROM presentation_frame WHERE agency_id = $agent_id");
|
||||
if ($frame = mysql_fetch_assoc($q)) {
|
||||
// http://localhost:8080
|
||||
$frame['url'] = "$site_url/new-buildings-frame/#/catalogs/" . $frame['token'];
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'data' => $frame,
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'message' => 'Frame not found',
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
break;
|
||||
case 'POST':
|
||||
if(!isset($_POST['id'])) {
|
||||
$agent_id = $_SESSION['agency_id'];
|
||||
} else {
|
||||
$agent_id = $_POST['id'];
|
||||
}
|
||||
|
||||
if ($_SESSION['id'] && $agent_id && (int)$agent_id > 0) {
|
||||
$region_id = isset($_POST['region']) ? (int)$_POST['region'] : null;
|
||||
$end_date = isset($_POST['endDate']) ? $_POST['endDate'] : null;
|
||||
$color = isset($_POST['color']) ? $_POST['color'] : null;
|
||||
|
||||
$q = mysql_query("SELECT * FROM presentation_frame WHERE agency_id = $agent_id");
|
||||
|
||||
$update_fields = [];
|
||||
if ($region_id !== null) {
|
||||
$update_fields[] = "rf_region_id = $region_id";
|
||||
}
|
||||
if ($end_date !== null) {
|
||||
$update_fields[] = "end_date = '$end_date'";
|
||||
}
|
||||
if ($color !== null) {
|
||||
$update_fields[] = "color = '$color'";
|
||||
}
|
||||
if ($frame = mysql_fetch_assoc($q)) {
|
||||
|
||||
if (!empty($update_fields)) {
|
||||
$update_query = "UPDATE presentation_frame SET " . implode(', ', $update_fields) . " WHERE agency_id = $agent_id";
|
||||
$query = mysql_query($update_query);
|
||||
}
|
||||
} else {
|
||||
$token = md5($agent_id . time());
|
||||
$query = mysql_query("INSERT INTO presentation_frame SET token = '$token', agency_id = $agent_id," . implode(', ', $update_fields));
|
||||
die(mysql_error());
|
||||
}
|
||||
echo ($query);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
43
admin/ajax/updateBlockBenefit.php
Normal file
43
admin/ajax/updateBlockBenefit.php
Normal file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "UPDATE block_benefits
|
||||
SET block_id=2, benefit_name='" . $post['benefit_name'] . "', benefit_description='" . $post['benefit_description'] . "', benefit_icon='" . $post['benefit_icon'] . "'
|
||||
WHERE id=" . $post['benefit_id'];
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
$sql = "SELECT * FROM block_benefits WHERE block_id='" . $post['block_id'] . "'";
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
if (mysql_num_rows($result)!=0) {
|
||||
$result_html = '';
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$result_html .=
|
||||
'<div class="benefit_item" benefit_id="'.$obj["id"].'">'.
|
||||
'<div class="benefit_item_prop benefit_item_ico">'.
|
||||
'<img src="../images/benefits/'.$obj["benefit_icon"].'">'.
|
||||
'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_name">'.$obj["benefit_name"].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_description">'.$obj['benefit_description'].'</div>'.
|
||||
'<div class="benefit_item_prop benefit_item_edit">'.
|
||||
'<div class="benefit_edit benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Редактировать</div>'.
|
||||
'<div class="benefit_del benefit_act" block_id="'.$obj['block_id'].'" benefit_id="'.$obj['id'].'">Удалить</div>'.
|
||||
'</div>'.
|
||||
'<div class="clear"></div>'.
|
||||
'</div>';
|
||||
}
|
||||
echo $result_html; exit;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
82
admin/ajax/updateFiles.php
Normal file
82
admin/ajax/updateFiles.php
Normal file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
$targetId = $_POST['target_id'];
|
||||
$targetType = $_POST['target_type'];
|
||||
if (isset($_POST['dir_id'])) {
|
||||
$dirId = $_POST['dir_id'];
|
||||
} else {
|
||||
$dirId = 0;
|
||||
}
|
||||
|
||||
if ($_SESSION['id'] && isset($_SESSION['superadmin'])) {
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockProgressImageFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockPlusFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/TargetFactory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/DocNotFoundException.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/TargetNotFoundException.php';
|
||||
|
||||
$manager = new DocumentManager((new TargetFactory())->getTarget($targetId, $targetType));
|
||||
|
||||
$dirObject = $manager->getDir($dirId);
|
||||
$path = $manager->getParents($dirObject->getId());
|
||||
$collection = $manager->getChildren($dirObject->getId());
|
||||
|
||||
include($_SERVER['DOCUMENT_ROOT'] . "/admin/documentsWidget.php");
|
||||
}
|
||||
|
||||
if ($targetType == DocTarget::TYPE_BLOCK) {
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$('#createFolderButton').attr('data-targetid', <?php echo $targetId; ?>);
|
||||
$('#createFolderButton').attr('data-targettype', <?php echo $targetType; ?>);
|
||||
$('#createFolderButton').attr('data-id', <?php echo $dirId; ?>);
|
||||
|
||||
$('#load_doc_target_id').val(<?php echo $targetId; ?>);
|
||||
$('#load_doc_target_type').val(<?php echo $targetType; ?>);
|
||||
$('#load_doc_fold_id').val(<?php echo $dirId; ?>);
|
||||
</script>
|
||||
<?php
|
||||
|
||||
}
|
||||
if ($targetType == DocTarget::TYPE_BLOCK_PROGRESS) {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$('#createProgressFolderButton').attr('data-targetid', <?php echo $targetId; ?>);
|
||||
$('#createProgressFolderButton').attr('data-targettype', <?php echo $targetType; ?>);
|
||||
$('#createProgressFolderButton').attr('data-id', <?php echo $dirId; ?>);
|
||||
|
||||
$('#load_progress_target_id').val(<?php echo $targetId; ?>);
|
||||
$('#load_progress_fold_id').val(<?php echo $dirId; ?>);
|
||||
$('#load_progress_target_type').val(<?php echo $targetType; ?>);
|
||||
</script>
|
||||
<?php } ?>
|
||||
|
||||
<?php
|
||||
if ($targetType == DocTarget::TYPE_BLOCK_PLUS) {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$('#createPlusFolderButton').attr('data-targetid', <?php echo $targetId; ?>);
|
||||
$('#createPlusFolderButton').attr('data-targettype', <?php echo $targetType; ?>);
|
||||
$('#createPlusFolderButton').attr('data-id', <?php echo $dirId; ?>);
|
||||
|
||||
$('#load_plus_target_id').val(<?php echo $targetId; ?>);
|
||||
$('#load_plus_fold_id').val(<?php echo $dirId; ?>);
|
||||
$('#load_plus_target_type').val(<?php echo $targetType; ?>);
|
||||
</script>
|
||||
<?php } ?>
|
||||
15
admin/ajax/update_recommended_video.php
Normal file
15
admin/ajax/update_recommended_video.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
echo json_encode(['No data', 403]); exit;
|
||||
}
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
$sql = "UPDATE block_videos SET recommended=".$post['recommended']." WHERE id=".$post['video_id'];
|
||||
|
||||
try {
|
||||
mysql_query($sql);
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
64
admin/ajax/uploadArticleImage.php
Normal file
64
admin/ajax/uploadArticleImage.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
$isCkeditor = !empty($_GET['ckeditor']) || !empty($_GET['CKEditor']);
|
||||
$ckFuncNum = isset($_GET['CKEditorFuncNum']) ? (int)$_GET['CKEditorFuncNum'] : 0;
|
||||
|
||||
function respond($success, $message, $url = '') {
|
||||
global $isCkeditor, $ckFuncNum;
|
||||
if ($isCkeditor) {
|
||||
// CKEditor 4 ожидает HTML с window.parent.CKEDITOR.tools.callFunction(...)
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
$url = addslashes($url);
|
||||
$message = addslashes($message);
|
||||
echo "<script>window.parent.CKEDITOR.tools.callFunction($ckFuncNum, '$url', '$message');</script>";
|
||||
} else {
|
||||
// TinyMCE / стандартный JSON-ответ
|
||||
header('Content-Type: application/json');
|
||||
if ($success) {
|
||||
echo json_encode(array('location' => $url));
|
||||
} else {
|
||||
echo json_encode(array('error' => $message));
|
||||
}
|
||||
}
|
||||
exit();
|
||||
}
|
||||
|
||||
if (!$_SESSION['superadmin']) {
|
||||
respond(false, 'Доступ запрещён');
|
||||
}
|
||||
|
||||
// CKEditor отправляет файл в поле "upload", TinyMCE — в "file"
|
||||
$file = null;
|
||||
if (isset($_FILES['upload'])) $file = $_FILES['upload'];
|
||||
elseif (isset($_FILES['file'])) $file = $_FILES['file'];
|
||||
|
||||
if (!$file || $file['error'] !== UPLOAD_ERR_OK) {
|
||||
respond(false, 'Ошибка загрузки файла');
|
||||
}
|
||||
|
||||
$maxSize = 5 * 1024 * 1024; // 5 MB
|
||||
if ($file['size'] > $maxSize) {
|
||||
respond(false, 'Файл слишком большой (макс. 5 MB)');
|
||||
}
|
||||
|
||||
$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
|
||||
if (!in_array($ext, array('jpg', 'jpeg', 'png', 'webp', 'gif'))) {
|
||||
respond(false, 'Недопустимый тип файла');
|
||||
}
|
||||
|
||||
if (@getimagesize($file['tmp_name']) === false) {
|
||||
respond(false, 'Файл не является изображением');
|
||||
}
|
||||
|
||||
$dir = $_SERVER['DOCUMENT_ROOT'] . '/images/articles/';
|
||||
if (!is_dir($dir)) mkdir($dir, 0755, true);
|
||||
|
||||
$filename = 'art-upload-' . time() . '-' . mt_rand(1000, 9999) . '.' . $ext;
|
||||
$dest = $dir . $filename;
|
||||
|
||||
if (!move_uploaded_file($file['tmp_name'], $dest)) {
|
||||
respond(false, 'Не удалось сохранить файл');
|
||||
}
|
||||
|
||||
respond(true, '', '/images/articles/' . $filename);
|
||||
50
admin/ajax/uploadBlockImages.php
Normal file
50
admin/ajax/uploadBlockImages.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockImage.php';
|
||||
|
||||
$result = ""; $result_photos = "";
|
||||
for($i=0;$i<count($_FILES['blockPhoto']['name']);$i++)
|
||||
{
|
||||
if($_FILES['blockPhoto']['error'][$i] == 0) {
|
||||
$ext = strtolower(pathinfo($_FILES['blockPhoto']['name'][$i], PATHINFO_EXTENSION));
|
||||
|
||||
$name = md5($_FILES['blockPhoto']['tmp_name'][$i].time()).".".$ext;
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images");
|
||||
}
|
||||
|
||||
$one = mb_substr($name,0,1);
|
||||
if(! is_dir($_SERVER['DOCUMENT_ROOT']."/block_images/$one")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT']."/block_images/$one");
|
||||
}
|
||||
$two = mb_substr($name,1,1);
|
||||
if(! is_dir($_SERVER['DOCUMENT_ROOT']."/block_images/$one/$two")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT']."/block_images/$one/$two");
|
||||
}
|
||||
$three = mb_substr($name,3,1);
|
||||
if(! is_dir($_SERVER['DOCUMENT_ROOT']."/block_images/$one/$two/$three")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT']."/block_images/$one/$two/$three");
|
||||
}
|
||||
$new_path = "$one/$two/$three/$name";
|
||||
|
||||
$photo="/block_images/".$new_path;
|
||||
move_uploaded_file($_FILES['blockPhoto']['tmp_name'][$i],$_SERVER['DOCUMENT_ROOT'].$photo);
|
||||
|
||||
$image = BlockImage::createImage($_POST['blockId'], $photo);
|
||||
|
||||
$result_photos .= "<div class=\'col-md-1 del_photo\' style=\'margin-bottom: 7px;background:url(http://" . $_SERVER['SERVER_NAME'] . "$photo) no-repeat;background-size:cover;background-position:center;\'><div class=\'deleteBlockImage\' data-id=\'" .$image->id . "\' style=\'background-image: url(/images/del_Icon.png); width: 37px; height: 48px\'></div></div>";
|
||||
} else {
|
||||
$result .= "Превышен размер файла ".$_FILES['blockPhoto']['name'][$i];
|
||||
}
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
if(parent.document.getElementById('block-images-container'))
|
||||
parent.document.getElementById('block-images-container').style.backgroundImage='';
|
||||
parent.document.getElementById('image-block-result').innerHTML+='<?php echo $result_photos.$result; ?>';
|
||||
parent.document.getElementById('block-images-form').target = '';
|
||||
parent.document.getElementById('block-images-form').action = '';
|
||||
</script>
|
||||
77
admin/ajax/uploadBlockProgressImages.php
Normal file
77
admin/ajax/uploadBlockProgressImages.php
Normal file
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockImage.php';
|
||||
|
||||
$result = ""; $result_photos = ""; $mdate = "";
|
||||
for ($i=0; $i<count($_FILES['blockProgressPhoto']['name']); $i++) {
|
||||
if ($_FILES['blockProgressPhoto']['error'][$i] == 0) {
|
||||
$ext = strtolower(pathinfo($_FILES['blockProgressPhoto']['name'][$i], PATHINFO_EXTENSION));
|
||||
$name = md5($_FILES['blockProgressPhoto']['tmp_name'][$i].time()).".".$ext;
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images");
|
||||
}
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images/progress")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images/progress");
|
||||
}
|
||||
|
||||
$mdate_mon = substr($_POST['mdate'], 0, 2);
|
||||
$mdate_year = substr($_POST['mdate'], 3, 4);
|
||||
$new_date = $mdate_year."-".$mdate_mon."-01";
|
||||
|
||||
$mondate = "date-".$_POST['mdate'];
|
||||
|
||||
$photo="/block_images/progress/".$name;
|
||||
|
||||
move_uploaded_file($_FILES['blockProgressPhoto']['tmp_name'][$i],$_SERVER['DOCUMENT_ROOT'].$photo);
|
||||
|
||||
$image = BlockImage::createImage($_POST['blockId'], $photo, 2, $new_date );
|
||||
|
||||
$result_photos .= "<div class=\'col-md-1 del_photo\' style=\'margin-bottom: 7px;background:url(http://" . $_SERVER['SERVER_NAME'] . "$photo) no-repeat;background-size:cover;background-position:center;\'><div class=\'deleteBlockImage\' data-id=\'" .$image->id . "\' style=\'background-image: url(/images/del_Icon.png); width: 37px; height: 48px\'></div></div>";
|
||||
} else {
|
||||
$result .= "Превышен размер файла ".$_FILES['blockProgressPhoto']['name'][$i];
|
||||
}
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
w = "<?php echo $new_date ?>";
|
||||
console.log(w);
|
||||
|
||||
Months = {
|
||||
"01": "январь",
|
||||
"02": "февраль",
|
||||
"03": "март",
|
||||
"04": "апрель",
|
||||
"05": "май",
|
||||
"06": "июнь",
|
||||
"07": "июль",
|
||||
"08": "август",
|
||||
"09": "сентябрь",
|
||||
"10": "октябрь",
|
||||
"11": "ноябрь",
|
||||
"12": "декабрь"
|
||||
};
|
||||
mdate = "<?php echo $_POST['mdate'] ?>";
|
||||
mondate_mon = mdate.substr(0, 2);
|
||||
mondate_year = mdate.substr(3, 4);
|
||||
|
||||
mondate = "<?php echo $mondate ?>";
|
||||
|
||||
month_wrap = parent.document.getElementById("<?php echo $mondate ?>");
|
||||
if (month_wrap) {
|
||||
month_images = month_wrap.getElementsByClassName('month_images')[0];
|
||||
month_images.innerHTML+='<?php echo $result_photos.$result; ?>';
|
||||
} else {
|
||||
months_wrapper = parent.document.getElementById("months_wrapper");
|
||||
months_wrapper.innerHTML+="<div class=\'month_wrap\' id=\'date-"+mdate+"\'><div class=\'month_ttl\'>"+Months[mondate_mon]+" "+mondate_year+"</div><div class=\'month_images\'>"+"<?php echo $result_photos.$result; ?>"+"</div><div class=\'clear\'></div>";
|
||||
}
|
||||
|
||||
if(parent.document.getElementById('block-progress-images-container'))
|
||||
parent.document.getElementById('block-progress-images-container').style.backgroundImage='';
|
||||
//parent.document.getElementById('image-block-progress-result').innerHTML+='<?php //echo $result_photos.$result; ?>//';
|
||||
parent.document.getElementById('block-progress-images-form').target = '';
|
||||
parent.document.getElementById('block-progress-images-form').action = '';
|
||||
</script>
|
||||
40
admin/ajax/uploadBlockRealImages.php
Normal file
40
admin/ajax/uploadBlockRealImages.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockImage.php';
|
||||
|
||||
$result = ""; $result_photos = "";
|
||||
for ($i=0; $i<count($_FILES['blockRealPhoto']['name']); $i++) {
|
||||
if ($_FILES['blockRealPhoto']['error'][$i] == 0) {
|
||||
$ext = strtolower(pathinfo($_FILES['blockRealPhoto']['name'][$i], PATHINFO_EXTENSION));
|
||||
$name = md5($_FILES['blockRealPhoto']['tmp_name'][$i].time()).".".$ext;
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images");
|
||||
}
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images/real")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images/real");
|
||||
}
|
||||
|
||||
// $photo="/block_images/".$new_path;
|
||||
$photo="/block_images/real/".$name;
|
||||
|
||||
move_uploaded_file($_FILES['blockRealPhoto']['tmp_name'][$i],$_SERVER['DOCUMENT_ROOT'].$photo);
|
||||
|
||||
$image = BlockImage::createImage($_POST['blockId'], $photo, 1);
|
||||
|
||||
$result_photos .= "<div class=\'col-md-1 del_photo\' style=\'margin-bottom: 7px;background:url(http://" . $_SERVER['SERVER_NAME'] . "$photo) no-repeat;background-size:cover;background-position:center;\'><div class=\'deleteBlockImage\' data-id=\'" .$image->id . "\' style=\'background-image: url(/images/del_Icon.png); width: 37px; height: 48px\'></div></div>";
|
||||
} else {
|
||||
$result .= "Превышен размер файла ".$_FILES['blockRealPhoto']['name'][$i];
|
||||
}
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
if(parent.document.getElementById('block-real-images-container'))
|
||||
parent.document.getElementById('block-real-images-container').style.backgroundImage='';
|
||||
parent.document.getElementById('image-block-real-result').innerHTML+='<?php echo $result_photos.$result; ?>';
|
||||
parent.document.getElementById('block-real-images-form').target = '';
|
||||
parent.document.getElementById('block-real-images-form').action = '';
|
||||
</script>
|
||||
47
admin/ajax/uploadBlockVideoImages.php
Normal file
47
admin/ajax/uploadBlockVideoImages.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockImage.php';
|
||||
|
||||
$result = ""; $result_photos = ""; $video_id = 0;
|
||||
if(isset($_POST['video_id'])) $video_id = (int)$_POST['video_id'];
|
||||
for ($i=0; $i<count($_FILES['blockVideoPhoto']['name']); $i++) {
|
||||
if ($_FILES['blockVideoPhoto']['error'][$i] == 0) {
|
||||
$ext = strtolower(pathinfo($_FILES['blockVideoPhoto']['name'][$i], PATHINFO_EXTENSION));
|
||||
$name = md5($_FILES['blockVideoPhoto']['tmp_name'][$i].time()).".".$ext;
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images");
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images/video/")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images/video");
|
||||
}
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/block_images/video/".$video_id)) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/block_images/video/".$video_id);
|
||||
}
|
||||
|
||||
$photo="/block_images/video/".$video_id."/".$name;
|
||||
|
||||
move_uploaded_file($_FILES['blockVideoPhoto']['tmp_name'][$i],$_SERVER['DOCUMENT_ROOT'].$photo);
|
||||
|
||||
$image = BlockImage::createImage($_POST['blockId'], $photo, 10, NULL, $video_id);
|
||||
|
||||
$result_photos .= "<div class=\'col-md-1 del_photo\' style=\'margin-bottom: 7px;margin-left: 7px;background:url(http://" . $_SERVER['SERVER_NAME'] . "$photo) no-repeat;background-size:cover;background-position:center;\'><div class=\'deleteBlockImage\' data-id=\'" .$image->id . "\' style=\'background-image: url(/images/del_Icon.png); width: 37px; height: 48px\'></div></div>";
|
||||
} else {
|
||||
$result .= "Превышен размер файла ".$_FILES['blockVideoPhoto']['name'][$i];
|
||||
}
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
var id = parseInt("<?=$video_id?>");
|
||||
if(parent.document.getElementById('block-video-images-container_'+id))
|
||||
parent.document.getElementById('block-video-images-container_'+id).style.backgroundImage='';
|
||||
parent.document.getElementById('image-block-video-result_'+id).innerHTML+='<?php echo $result_photos.$result; ?>';
|
||||
parent.document.getElementById('block-video-images-form_'+id).target = '';
|
||||
parent.document.getElementById('block-video-images-form_'+id).action = '';
|
||||
</script>
|
||||
122
admin/antiznakAdmin.php
Normal file
122
admin/antiznakAdmin.php
Normal file
@ -0,0 +1,122 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="/css/vue-select.css?v=21">
|
||||
<style>
|
||||
.tr__color {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="antiznakTariffs">
|
||||
<template v-if="is_show_tariffs">
|
||||
<div class="main-title">
|
||||
<h1>Тарифы для апи АнтиЗнак</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="jw__NB">
|
||||
<div class="jw__NB__flat-list">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Количество объектов</th>
|
||||
<th>Цена</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<template v-if="!isEmpty(tariffs)">
|
||||
<tbody>
|
||||
<tr v-for="(tariff, index) in tariffs" :class="{'tr__color': index%2 == 0}">
|
||||
<td>{{ tariff.id }}</td>
|
||||
<td>{{ tariff.count }}</td>
|
||||
<td>{{ tariff.price }}</td>
|
||||
<td width="50"><a @click="edit_tariff(tariff.id)" title="Редактировать"><i class="ti-pencil"></i></a></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</template>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template v-if="is_show_edit_tariff">
|
||||
<div class="main-title">
|
||||
<h1>Редактирование тарифа апи АнтиЗнак</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="new-object">
|
||||
<div>
|
||||
<div class="new-object__form">
|
||||
|
||||
<div v-if="error_edit" class="block" style="border-bottom: none; color: red;"></div>
|
||||
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Количество:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="number" class="text" name="count" style="width: 75%;" v-model="edit_count">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Цена:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="number" class="text" name="price" style="width: 75%;" v-model="edit_price">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="line" style="text-align: right">
|
||||
<button type="submit" @click="save_edit(edit_id)" class="medium-button">Сохранить</button>
|
||||
<a href="javascript:{}" @click="close_edit" class="cancel-button medium-button">Закрыть</a>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script src="/js/vue.min.js"></script>
|
||||
<!--<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>-->
|
||||
<script src="/js/vue-select.js"></script>
|
||||
<script src="/js/admin/antiznak-tariffs.js?<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/admin/antiznak-tariffs.js')?>"></script>
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
153
admin/antiznakPay.php
Normal file
153
admin/antiznakPay.php
Normal file
@ -0,0 +1,153 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
<link rel="stylesheet" href="/css/vue-select.css?v=21">
|
||||
<style>
|
||||
.tr__color {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="antiznak_pay">
|
||||
<div class="main-title">
|
||||
<h1>Оплата АнтиЗнак</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<?php
|
||||
|
||||
$sqlCount = "SELECT count(id) FROM antiznak_user_request";
|
||||
$rezCount = mysql_query($sqlCount);
|
||||
$count = mysql_result($rezCount, 0);
|
||||
|
||||
$num_on_page = 20;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
$page = $_GET['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$from = ($page - 1) * $num_on_page;
|
||||
|
||||
$all_pages = ceil($count / $num_on_page);
|
||||
|
||||
if ($count > 0) {
|
||||
|
||||
$sql = "select * from antiznak_user_request order by created_at DESC LIMIT $from, $num_on_page";
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
if (mysql_num_rows($rez) > 0) {
|
||||
?>
|
||||
|
||||
<div class="jw__NB">
|
||||
<div class="jw__NB__flat-list">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Дата запроса</th>
|
||||
<th>ФИО пользователя</th>
|
||||
<th>Телефон пользователя</th>
|
||||
<th>Email пользователя</th>
|
||||
<th>Количество выписок</th>
|
||||
<th>Цена</th>
|
||||
<th>Оплачено</th>
|
||||
|
||||
<th></th>
|
||||
<th>Остаток</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$num = 1;
|
||||
while($request = mysql_fetch_array($rez)) {
|
||||
|
||||
$sqlUser = new User();
|
||||
|
||||
$sqlUser->get($request['user_id']);
|
||||
|
||||
echo '<tr ';
|
||||
|
||||
if ($num % 2 > 0) {
|
||||
echo 'style="background-color: #f9f9f9;"';
|
||||
}
|
||||
|
||||
echo '>';
|
||||
echo '<td>' . date_format(date_create($request['created_at']), 'd.m.Y H:i:s') . '</td>';
|
||||
echo '<td>' . ($sqlUser->agency ? ($sqlUser->agency_name . "<br/> (" . trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name) .")") : trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name)) . '</td>';
|
||||
echo '<td>' . $sqlUser->phone . '</td>';
|
||||
echo '<td>' . $sqlUser->email . '</td>';
|
||||
echo '<td>' . $request['count'] . '</td>';
|
||||
echo '<td>' . $request['price'] . '</td>';
|
||||
echo '<td>' . ($request['paid'] == 0 ? "Нет" : "Да") . '</td>';
|
||||
if ($request['paid'] == 0) {
|
||||
echo '<td width="50"><a href="javascript:{}" onclick="confirmPay(' . $request['id'] . ');">Подтвердить оплату</a></td>';
|
||||
} else {
|
||||
echo '<td width="50"> </td>';
|
||||
}
|
||||
echo '<td>'.$sqlUser->antiznak_request_count.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
if ($all_pages > 1) {
|
||||
num_of_pages($page, $all_pages, $url_params);
|
||||
}
|
||||
echo '</ul></div>';
|
||||
|
||||
?>
|
||||
</div>
|
||||
<? } ?>
|
||||
<? } else echo "<div class='empty-block'><h1><i class='ti-na'></i></h1><h2>Заказов не найдено</h2></div>" ?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||
<script src="/js/vue.min.js"></script>
|
||||
<!--<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>-->
|
||||
<script src="/js/vue-select.js"></script>
|
||||
<script src="/js/admin/antiznak-tariffs.js?<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/admin/antiznak-tariffs.js')?>"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function confirmPay(requestId) {
|
||||
axios.post('/ajax/vue_ajax/antiznak_axios.php', {
|
||||
request: 'confirm_request_pay',
|
||||
id: requestId,
|
||||
}, )
|
||||
.then((response) => {
|
||||
window.location.reload(true);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
336
admin/article-edit.php
Normal file
336
admin/article-edit.php
Normal file
@ -0,0 +1,336 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if (!$_SESSION['superadmin']) { header("location:/index.php"); die("Доступ запрещён!"); }
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
$id = isset($get['id']) ? (int)$get['id'] : 0;
|
||||
|
||||
$article = null;
|
||||
$err = '';
|
||||
$success = '';
|
||||
|
||||
$errorMessages = array(
|
||||
'empty' => 'Заполните заголовок и слаг',
|
||||
'empty_slug' => 'Слаг не может быть пустым',
|
||||
'slug_exists' => 'Статья с таким слагом уже существует',
|
||||
'slug_file_conflict' => 'Слаг конфликтует с существующим файлом в корне сайта. Выберите другой.',
|
||||
'image_too_large' => 'Изображение слишком большое (макс. 5 MB)',
|
||||
);
|
||||
if (!empty($_GET['err']) && isset($errorMessages[$_GET['err']])) {
|
||||
$err = $errorMessages[$_GET['err']];
|
||||
}
|
||||
if (!empty($_GET['saved'])) {
|
||||
$success = 'Статья сохранена';
|
||||
}
|
||||
|
||||
if ($id > 0) {
|
||||
$article = Article::getById($id);
|
||||
if (!$article) {
|
||||
header("location:/admin/articles.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
// Если есть черновик в сессии (после ошибки сохранения) — используем его как источник
|
||||
$draft = null;
|
||||
if (!empty($err) && !empty($_SESSION['article_form_draft'])) {
|
||||
$draft = $_SESSION['article_form_draft'];
|
||||
unset($_SESSION['article_form_draft']); // одноразово
|
||||
}
|
||||
|
||||
// Значения для формы: приоритет — черновик из сессии, потом БД, потом дефолты
|
||||
$src = $draft ? $draft : $article;
|
||||
$f_title = Article::val($src, 'title', '');
|
||||
$f_page_title = Article::val($src, 'page_title', '');
|
||||
$f_description = Article::val($src, 'description', '');
|
||||
$f_slug = Article::val($src, 'slug', '');
|
||||
$f_date_c = Article::val($src, 'date_created', date('Y-m-d'));
|
||||
$f_date_u = Article::val($src, 'date_updated', date('Y-m-d'));
|
||||
$f_time = Article::val($src, 'reading_time', 5);
|
||||
$f_sort = Article::val($src, 'sort_order', 0);
|
||||
$f_author_n = Article::val($src, 'author_name', 'Станислав Дмитриев');
|
||||
$f_author_j = Article::val($src, 'author_job', 'руководитель JoyWork');
|
||||
$f_author_i = Article::val($src, 'author_img', '/images/articles/rukofodJW.png');
|
||||
$f_image = Article::val($src, 'image', '');
|
||||
$f_content = Article::val($src, 'content', '');
|
||||
|
||||
if ($draft) {
|
||||
$f_published = !empty($draft['published']);
|
||||
} else {
|
||||
$f_published = (!$article || !empty($article['published']));
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
?>
|
||||
|
||||
<div class="main-title" style="display:flex; align-items:center; justify-content:space-between;">
|
||||
<div style="display:flex; align-items:center; gap:15px;">
|
||||
<a href="/admin/articles.php" style="color:#666; text-decoration:none; font-size:14px;">← Назад к списку</a>
|
||||
<h1 style="margin:0;"><?= $id ? 'Редактирование статьи' : 'Новая статья' ?></h1>
|
||||
</div>
|
||||
<div style="display:flex; gap:10px;">
|
||||
<?php if ($id): ?>
|
||||
<a href="/article.php?id=<?= $id ?>" target="_blank" class="medium-button" style="background:#fff; border:1px solid #ccc; color:#333;">Предпросмотр ↗</a>
|
||||
<?php endif; ?>
|
||||
<button type="submit" form="article-form" class="medium-button">Сохранить</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if ($err): ?>
|
||||
<div style="margin:10px 20px; padding:12px; background:#ffebee; color:#c62828; border-radius:4px;"><?= htmlspecialchars($err) ?></div>
|
||||
<?php endif; ?>
|
||||
<?php if ($success): ?>
|
||||
<div style="margin:10px 20px; padding:12px; background:#e8f5e9; color:#2e7d32; border-radius:4px;"><?= htmlspecialchars($success) ?></div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="users fr__users" style="margin-right:20px;">
|
||||
<form method="post" enctype="multipart/form-data" id="article-form" action="/admin/ajax/saveArticle.php">
|
||||
<?php if ($id): ?>
|
||||
<input type="hidden" name="id" value="<?= $id ?>">
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="new-object">
|
||||
<div class="new-object__form">
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label"><span>Заголовок H1:</span></div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="title" id="field-title" style="width:100%;"
|
||||
value="<?= htmlspecialchars($f_title) ?>"
|
||||
placeholder="Заголовок статьи (H1)" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Мета-заголовок:</span></div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="page_title" style="width:100%;"
|
||||
value="<?= htmlspecialchars($f_page_title) ?>"
|
||||
placeholder="Заголовок для SEO (title тег)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line" style="align-items:flex-start;">
|
||||
<div class="label"><span>Описание:</span></div>
|
||||
<div class="inputs">
|
||||
<textarea name="description" class="text" style="width:100%; min-height:70px;"
|
||||
placeholder="Краткое описание для SEO (meta description) и для карточек на /blog.php"><?= htmlspecialchars($f_description) ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Слаг (URL):</span></div>
|
||||
<div class="inputs" style="display:flex; gap:8px; align-items:center;">
|
||||
<input type="text" class="text" name="slug" id="field-slug" style="flex:1;"
|
||||
value="<?= htmlspecialchars($f_slug) ?>"
|
||||
placeholder="url-stranicy-bez-rasshireniya" required>
|
||||
<span style="color:#999; font-size:12px;">joywork.ru/<span id="slug-preview"><?= htmlspecialchars($f_slug) ?></span>.php</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label"><span>Дата создания:</span></div>
|
||||
<div class="inputs">
|
||||
<input type="date" class="text" name="date_created" style="width:160px;"
|
||||
value="<?= htmlspecialchars($f_date_c) ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Дата обновления:</span></div>
|
||||
<div class="inputs">
|
||||
<input type="date" class="text" name="date_updated" style="width:160px;"
|
||||
value="<?= htmlspecialchars($f_date_u) ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Время чтения (мин.):</span></div>
|
||||
<div class="inputs">
|
||||
<input type="number" class="text" name="reading_time" style="width:80px;" min="1" max="60"
|
||||
value="<?= htmlspecialchars($f_time) ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Опубликована:</span></div>
|
||||
<div class="inputs">
|
||||
<label style="display:flex; align-items:center; gap:8px; cursor:pointer;">
|
||||
<input type="checkbox" name="published" value="1" <?= $f_published ? 'checked' : '' ?>>
|
||||
<span>Показывать на сайте</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Порядок сортировки:</span></div>
|
||||
<div class="inputs">
|
||||
<input type="number" class="text" name="sort_order" style="width:80px;"
|
||||
value="<?= htmlspecialchars($f_sort) ?>"
|
||||
title="Больше = выше в списке">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label"><span>Имя автора:</span></div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="author_name" style="width:280px;"
|
||||
value="<?= htmlspecialchars($f_author_n) ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Должность автора:</span></div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="author_job" style="width:280px;"
|
||||
value="<?= htmlspecialchars($f_author_j) ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label"><span>Фото автора (путь):</span></div>
|
||||
<div class="inputs" style="display:flex; gap:10px; align-items:center;">
|
||||
<input type="text" class="text" name="author_img" id="field-author-img" style="width:350px;"
|
||||
value="<?= htmlspecialchars($f_author_i) ?>">
|
||||
<?php if (!empty($f_author_i)): ?>
|
||||
<img src="<?= htmlspecialchars($f_author_i) ?>" style="width:36px;height:36px;border-radius:50%;object-fit:cover;" alt="">
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label"><span>Обложка статьи:</span></div>
|
||||
<div class="inputs" style="display:flex; gap:15px; align-items:flex-start;">
|
||||
<div>
|
||||
<input type="file" name="image_file" id="image-file" accept="image/jpeg,image/png,image/webp" style="margin-bottom:6px;">
|
||||
<br>
|
||||
<span style="color:#999; font-size:12px;">или укажите путь вручную:</span><br>
|
||||
<input type="text" class="text" name="image" id="field-image" style="width:350px; margin-top:4px;"
|
||||
value="<?= htmlspecialchars($f_image) ?>"
|
||||
placeholder="/images/articles/art-69.jpg">
|
||||
</div>
|
||||
<?php if (!empty($f_image)): ?>
|
||||
<img id="image-preview" src="<?= htmlspecialchars($f_image) ?>"
|
||||
style="max-width:160px; max-height:100px; border-radius:4px; object-fit:cover;" alt="">
|
||||
<?php else: ?>
|
||||
<img id="image-preview" src="" style="max-width:160px; max-height:100px; border-radius:4px; object-fit:cover; display:none;" alt="">
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block" style="border-bottom:none; padding:15px 20px;">
|
||||
<div style="font-weight:500; margin-bottom:10px;">Контент статьи:</div>
|
||||
<textarea name="content" id="article-content" style="width:100%; min-height:400px;"><?= htmlspecialchars($f_content) ?></textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="padding:15px 20px; text-align:right; border-top:1px solid #eee;">
|
||||
<button type="submit" class="medium-button">Сохранить статью</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script src="/js/ckeditor/ckeditor.js"></script>
|
||||
<script>
|
||||
CKEDITOR.stylesSet.add('article_styles', [
|
||||
{ name: 'Чек-лист (зелёные галочки)', element: 'ul', attributes: { 'class': 'check-list' } },
|
||||
{ name: 'Подзаголовок H2', element: 'h2' },
|
||||
{ name: 'Подзаголовок H3', element: 'h3' },
|
||||
{ name: 'Выделенный блок', element: 'div', attributes: { 'class': 'highlight-block' }, styles: { 'background': '#f5f5f5', 'padding': '15px', 'border-left': '4px solid #29b13a' } }
|
||||
]);
|
||||
|
||||
CKEDITOR.replace('article-content', {
|
||||
height: 600,
|
||||
language: 'ru',
|
||||
allowedContent: true,
|
||||
extraAllowedContent: 'script[*]; iframe[*]',
|
||||
stylesSet: 'article_styles',
|
||||
contentsCss: ['/css/article-editor.css?v=<?= filemtime($_SERVER["DOCUMENT_ROOT"] . "/css/article-editor.css") ?>'],
|
||||
bodyClass: 'c',
|
||||
protectedSource: [
|
||||
/<script[\s\S]*?<\/script>/gi
|
||||
],
|
||||
toolbarGroups: [
|
||||
{ name: 'clipboard', groups: ['clipboard', 'undo'] },
|
||||
{ name: 'editing', groups: ['find', 'selection'] },
|
||||
{ name: 'basicstyles', groups: ['basicstyles', 'cleanup'] },
|
||||
{ name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align'] },
|
||||
{ name: 'links' },
|
||||
{ name: 'insert' },
|
||||
'/',
|
||||
{ name: 'styles' },
|
||||
{ name: 'colors' },
|
||||
{ name: 'tools' },
|
||||
{ name: 'document', groups: ['mode'] }
|
||||
],
|
||||
removeButtons: 'Save,NewPage,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,Language,Flash,Smiley,About,ShowBlocks',
|
||||
filebrowserUploadUrl: '/admin/ajax/uploadArticleImage.php?ckeditor=1',
|
||||
filebrowserUploadMethod: 'form',
|
||||
// При вставке из Word/Google Docs — автоматически снимать inline-стили
|
||||
// чтобы заголовки были чистыми <h2>текст</h2> без вложенных span/b
|
||||
forcePasteAsPlainText: true
|
||||
});
|
||||
|
||||
// CKEditor хранит данные в своём поле — синхронизируем textarea перед submit
|
||||
document.getElementById('article-form').addEventListener('submit', function() {
|
||||
for (var i in CKEDITOR.instances) {
|
||||
CKEDITOR.instances[i].updateElement();
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById('field-title').addEventListener('input', function() {
|
||||
var slug = document.getElementById('field-slug').value;
|
||||
if (!slug) {
|
||||
var generated = makeSlug(this.value);
|
||||
document.getElementById('field-slug').value = generated;
|
||||
document.getElementById('slug-preview').textContent = generated;
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById('field-slug').addEventListener('input', function() {
|
||||
document.getElementById('slug-preview').textContent = this.value;
|
||||
});
|
||||
|
||||
document.getElementById('field-image').addEventListener('input', function() {
|
||||
var preview = document.getElementById('image-preview');
|
||||
if (this.value) {
|
||||
preview.src = this.value;
|
||||
preview.style.display = 'block';
|
||||
} else {
|
||||
preview.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById('image-file').addEventListener('change', function() {
|
||||
if (!this.files[0]) return;
|
||||
var formData = new FormData();
|
||||
formData.append('file', this.files[0]);
|
||||
fetch('/admin/ajax/uploadArticleImage.php', { method: 'POST', body: formData })
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(data) {
|
||||
if (data.location) {
|
||||
document.getElementById('field-image').value = data.location;
|
||||
var preview = document.getElementById('image-preview');
|
||||
preview.src = data.location;
|
||||
preview.style.display = 'block';
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function makeSlug(str) {
|
||||
var cyr = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
|
||||
var lat = ['a','b','v','g','d','e','yo','zh','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','cz','ch','sh','shh','','y','','e','yu','ya'];
|
||||
str = str.toLowerCase();
|
||||
var result = '';
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
var idx = cyr.indexOf(str[i]);
|
||||
if (idx >= 0) result += lat[idx];
|
||||
else result += str[i];
|
||||
}
|
||||
return result.replace(/[^a-z0-9\s-]/g, '').replace(/[\s-]+/g, '-').replace(/^-+|-+$/g, '');
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php"); ?>
|
||||
92
admin/articles.php
Normal file
92
admin/articles.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if (!$_SESSION['superadmin']) { header("location:/index.php"); die("Доступ запрещён!"); }
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
$articles = Article::getAll();
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<a href="/admin/article-edit.php" class="medium-button" style="float: right;">+ Новая статья</a>
|
||||
<h1>Статьи</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
<table class="table" style="width:100%; border-collapse:collapse;">
|
||||
<thead>
|
||||
<tr style="background:#f5f5f5; border-bottom:2px solid #ddd;">
|
||||
<th style="padding:10px 8px; text-align:left; width:60px;">Фото</th>
|
||||
<th style="padding:10px 8px; text-align:left;">Заголовок</th>
|
||||
<th style="padding:10px 8px; text-align:left; width:120px;">Дата</th>
|
||||
<th style="padding:10px 8px; text-align:left; width:220px;">Слаг</th>
|
||||
<th style="padding:10px 8px; text-align:center; width:90px;">Статус</th>
|
||||
<th style="padding:10px 8px; text-align:right; width:240px;">Действия</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php if (empty($articles)): ?>
|
||||
<tr>
|
||||
<td colspan="6" style="padding:30px; text-align:center; color:#999;">Статей пока нет</td>
|
||||
</tr>
|
||||
<?php else: ?>
|
||||
<?php foreach ($articles as $a): ?>
|
||||
<tr style="border-bottom:1px solid #eee;" class="article-row" data-id="<?= $a['id'] ?>">
|
||||
<td style="padding:8px;">
|
||||
<?php if ($a['image']): ?>
|
||||
<img src="<?= htmlspecialchars($a['image']) ?>" style="width:50px;height:35px;object-fit:cover;border-radius:3px;" alt="">
|
||||
<?php else: ?>
|
||||
<div style="width:50px;height:35px;background:#eee;border-radius:3px;"></div>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td style="padding:8px;">
|
||||
<a href="/admin/article-edit.php?id=<?= $a['id'] ?>" style="color:#333; font-weight:500;">
|
||||
<?= htmlspecialchars($a['title']) ?>
|
||||
</a>
|
||||
</td>
|
||||
<td style="padding:8px; color:#666; font-size:13px;"><?= htmlspecialchars($a['date_created']) ?></td>
|
||||
<td style="padding:8px; color:#999; font-size:12px; font-family:monospace;"><?= htmlspecialchars($a['slug']) ?></td>
|
||||
<td style="padding:8px; text-align:center;">
|
||||
<?php if ($a['published']): ?>
|
||||
<span style="background:#e8f5e9;color:#2e7d32;padding:2px 8px;border-radius:10px;font-size:12px;">Опубл.</span>
|
||||
<?php else: ?>
|
||||
<span style="background:#fff3e0;color:#e65100;padding:2px 8px;border-radius:10px;font-size:12px;">Черновик</span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td style="padding:8px; text-align:right; white-space:nowrap;">
|
||||
<a href="/admin/article-edit.php?id=<?= $a['id'] ?>"
|
||||
style="display:inline-block; padding:6px 14px; background:#fff; border:1px solid #ccc; color:#333; border-radius:4px; text-decoration:none; font-size:13px; margin-right:8px;">Редактировать</a>
|
||||
<button class="btn-delete-article" data-id="<?= $a['id'] ?>"
|
||||
style="display:inline-block; padding:6px 14px; background:#f44336; color:#fff; border:none; border-radius:4px; cursor:pointer; font-size:13px;">Удалить</button>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.querySelectorAll('.btn-delete-article').forEach(function(btn) {
|
||||
btn.addEventListener('click', function() {
|
||||
if (!confirm('Удалить статью? Это действие нельзя отменить.')) return;
|
||||
var id = this.getAttribute('data-id');
|
||||
fetch('/admin/ajax/deleteArticle.php', {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'id=' + id
|
||||
})
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(data) {
|
||||
if (data.success) {
|
||||
document.querySelector('.article-row[data-id="' + id + '"]').remove();
|
||||
} else {
|
||||
alert('Ошибка: ' + data.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php"); ?>
|
||||
178
admin/bankEdit.php
Normal file
178
admin/bankEdit.php
Normal file
@ -0,0 +1,178 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Bank.php';
|
||||
|
||||
if (isset($_POST['add_bank'])) {
|
||||
|
||||
$err = "";
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
if ($_FILES['logo']['name']) {
|
||||
if ($_FILES['logo']['error'] == UPLOAD_ERR_OK) {
|
||||
list($a, $ext) = explode("/", $_FILES['logo']['type']);
|
||||
if ($ext == "pjpeg") {
|
||||
$ext = "jpeg";
|
||||
}
|
||||
$ext = mb_strtolower($ext);
|
||||
if ($ext == "jpeg" or $ext == "jpg" or $ext == "png") {
|
||||
$name = md5($_FILES['logo']['tmp_name'] . time()) . "." . $ext;
|
||||
$photo = $_SERVER['DOCUMENT_ROOT'] . "/photos/bank/" . $name;
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/photos/bank")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/photos/bank");
|
||||
}
|
||||
if (move_uploaded_file($_FILES['logo']['tmp_name'], $photo)) {
|
||||
$size = getimagesize($photo);
|
||||
if ($size[0] > 272) {
|
||||
resize_img(272, $photo, $photo);
|
||||
}
|
||||
$post['hidden_logo'] = $name;
|
||||
}
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Неверный тип файла. Допустимые типы - jpg или png.";
|
||||
}
|
||||
} else {
|
||||
if ($_FILES['logo']['error'] == UPLOAD_ERR_FORM_SIZE) {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Превышен размер файла. Допустимый размер 1-2 Mb.";
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Ошибка при загрузке: ".$_FILES['logo']['error'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($post['id'])) {
|
||||
if (strlen($err) == 0) {
|
||||
$bankToSave = new Bank();
|
||||
$bankToSave->newRecord = false;
|
||||
$bankToSave->name = $post['hidden_name'];
|
||||
$bankToSave->id = $post['id'];
|
||||
$bankToSave->logo = $post['hidden_logo'];
|
||||
$bankToSave->save();
|
||||
|
||||
header("location:/admin/banks.php");
|
||||
exit();
|
||||
}
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Не найден идентификатор застройщика в запросе.";
|
||||
}
|
||||
}
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
if (!isset($get['id'])) {
|
||||
header("location:/admin/banks.php");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
if (!isset($post) && $get['id'] > 0) {
|
||||
$bank = Bank::findOne($get['id']);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<h1>Редактирование банка</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="new-object">
|
||||
<form method="post" enctype="multipart/form-data" id="upload-form">
|
||||
<div class="new-object__form">
|
||||
<?php if (isset($err) && strlen($err) > 0) { ?>
|
||||
<div class="block" style="border-bottom: none; color: red;"><?php echo $err; ?></div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Название:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="name" disabled="disabled" style="width: 75%;"
|
||||
value="<? if (isset($post)) echo $post['hidden_name'];
|
||||
if (isset($bank)) echo $bank->name; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Логотип:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="3000000"/>
|
||||
<input style="border: 1px solid white;" type="file" accept="image/jpeg,image/png"
|
||||
class="text" name="logo"/>
|
||||
<div class="text_comment" style="margin-left: 123px; font-size: 12px;">
|
||||
<p>JPG, PNG (квадрат 272х272 пиксела)</p>
|
||||
<div id="upload-result"></div>
|
||||
</div>
|
||||
<div <?php if(isset($bank) && $bank->logo) echo "style='margin-left: 123px;margin-top: 10px;height: 272px; width: 272px; background:url(/photos/bank/".$bank->logo.") no-repeat'"; ?>>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line" style="text-align: right">
|
||||
<button type="submit" class="medium-button">Сохранить</button>
|
||||
<a href="/admin/banks.php" class="cancel-button medium-button">Закрыть</a>
|
||||
</div>
|
||||
<input type="hidden" name="add_bank" value="1">
|
||||
<input type="hidden" name="hidden_logo" value="<?php if (isset($bank)) {
|
||||
echo $bank->logo;
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['hidden_logo'];
|
||||
}
|
||||
} ?>">
|
||||
<input type="hidden" name="hidden_name" value="<?php if (isset($bank)) {
|
||||
echo $bank->name;
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['hidden_name'];
|
||||
}
|
||||
} ?>">
|
||||
<input type="hidden" name="id" value="<?php if (isset($bank)) {
|
||||
echo $bank->id;
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['id'];
|
||||
}
|
||||
} ?>">
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
156
admin/banks.php
Normal file
156
admin/banks.php
Normal file
@ -0,0 +1,156 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Bank.php';
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
|
||||
<h1>Банки</h1>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="head-filter__top">
|
||||
|
||||
<div class="top-line">
|
||||
|
||||
<div class="head-filter-search">
|
||||
|
||||
<div class="form-search">
|
||||
|
||||
<form>
|
||||
|
||||
<input type="search" name="search" class="text" placeholder="Название"
|
||||
value="<?php if (isset($_GET['search'])) {
|
||||
echo $_GET['search'];
|
||||
} ?>">
|
||||
|
||||
<span class="search-icon">
|
||||
|
||||
<i class="ti-search"></i>
|
||||
|
||||
</span>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
$num_on_page = 20;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
$page = $_GET['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$from = ($page - 1) * $num_on_page;
|
||||
|
||||
$searchName = null;
|
||||
$url_params = '';
|
||||
|
||||
if (isset($_GET['search'])) {
|
||||
$searchName = $_GET['search'];
|
||||
|
||||
if (strlen($url_params) > 0) {
|
||||
$url_params = $url_params . "&";
|
||||
}
|
||||
$url_params = $url_params . "search=" . $_GET['search'];
|
||||
}
|
||||
|
||||
$banksCount = Bank::count($searchName);
|
||||
|
||||
$all_pages = ceil($banksCount / $num_on_page);
|
||||
|
||||
if ($banksCount > 0) {
|
||||
|
||||
$banksList = Bank::search($searchName, $from, $num_on_page);
|
||||
|
||||
?>
|
||||
|
||||
<div class="jw__NB">
|
||||
|
||||
<?php
|
||||
|
||||
$numFrom = $from + 1;
|
||||
$numTo = (($from + $num_on_page) >= $banksCount) ? $banksCount : ($from + $num_on_page);
|
||||
|
||||
echo '<div style="margin: 13px 35px; font-weight: bold;">Показаны записи ' . $numFrom . '-' . $numTo . ' из ' . $banksCount . '</div>'
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<div class="jw__NB__flat-list">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Название банка</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$num = 1;
|
||||
foreach ($banksList as $bank) {
|
||||
|
||||
echo '<tr ';
|
||||
|
||||
if ($num % 2 > 0) {
|
||||
echo 'style="background-color: #f9f9f9;"';
|
||||
}
|
||||
|
||||
echo '>';
|
||||
echo '<td>' . $bank->id . '</td>';
|
||||
echo '<td>' . $bank->name . '</td>';
|
||||
echo '<td width="50"><a href="/admin/bankEdit.php?id=' . $bank->id . '" title="Редактировать"><i class="ti-pencil"></i></a></td>';
|
||||
echo '</tr>';
|
||||
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
if ($all_pages > 1) {
|
||||
num_of_pages($page, $all_pages, $url_params);
|
||||
}
|
||||
echo '</ul></div>';
|
||||
|
||||
?>
|
||||
</div>
|
||||
<? } else echo "<div class='empty-block'><h1><i class='ti-na'></i></h1><h2>Банков не найдено</h2></div>" ?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
3075
admin/blockEdit.php
Normal file
3075
admin/blockEdit.php
Normal file
File diff suppressed because it is too large
Load Diff
194
admin/blocks.php
Normal file
194
admin/blocks.php
Normal file
@ -0,0 +1,194 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/BlockImage.php';
|
||||
|
||||
$importerService = new ImporterService();
|
||||
|
||||
$willBeRun = $importerService->isForceFlatshopImportStart();
|
||||
$isImporterActive = $importerService->isFlatshopActive();
|
||||
|
||||
if (isset($_GET['run']) && $_GET['run'] == 1) {
|
||||
$importerService->setForceFlatshopImport(1);
|
||||
header("location:/admin/blocks.php");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
|
||||
<h1>Комплексы</h1>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="head-filter__top">
|
||||
|
||||
<div class="top-line">
|
||||
|
||||
<div class="head-filter-search">
|
||||
|
||||
<div class="form-search">
|
||||
|
||||
<form>
|
||||
|
||||
<input type="search" name="search" class="text" placeholder="Название"
|
||||
value="<?php if (isset($_GET['search'])) {
|
||||
echo $_GET['search'];
|
||||
} ?>">
|
||||
|
||||
<span class="search-icon">
|
||||
|
||||
<i class="ti-search"></i>
|
||||
|
||||
</span>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
$num_on_page = 20;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
$page = $_GET['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$from = ($page - 1) * $num_on_page;
|
||||
|
||||
$searchName = null;
|
||||
$url_params = '';
|
||||
|
||||
if (isset($_GET['search'])) {
|
||||
$searchName = $_GET['search'];
|
||||
|
||||
if (strlen($url_params) > 0) {
|
||||
$url_params = $url_params . "&";
|
||||
}
|
||||
$url_params = $url_params . "search=" . $_GET['search'];
|
||||
}
|
||||
|
||||
$blocksCount = Block::count($searchName);
|
||||
|
||||
$all_pages = ceil($blocksCount / $num_on_page);
|
||||
|
||||
if ($blocksCount > 0) {
|
||||
|
||||
$blocksList = Block::search($searchName, $from, $num_on_page);
|
||||
|
||||
?>
|
||||
|
||||
<div class="jw__NB">
|
||||
|
||||
<?php
|
||||
|
||||
$numFrom = $from + 1;
|
||||
$numTo = (($from + $num_on_page) >= $blocksCount) ? $blocksCount : ($from + $num_on_page);
|
||||
|
||||
echo '<div style="margin: 13px 35px; font-weight: bold;"><span style="float: left; line-height: 2;">Показаны записи ' . $numFrom . '-' . $numTo . ' из ' . $blocksCount . '</span>';
|
||||
|
||||
if ($willBeRun && !$isImporterActive) {
|
||||
echo '<span style = "color: red;float: right;" >Обновление с Flatshop будет запущено в ближайшие 5 минут.</span>';
|
||||
}
|
||||
|
||||
if ($isImporterActive) {
|
||||
echo '<span style="color: red;float: right;">В данный момент работает обновление с Flatshop.</span>';
|
||||
}
|
||||
|
||||
if (!$willBeRun && !$isImporterActive) {
|
||||
echo '<a style="float: right;" href="/admin/blocks.php?run=1" class="medium-button allFromFlatShop">Обновить все с FlatShop</a>';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<div class="jw__NB__flat-list">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Название</th>
|
||||
<th>Комиссия (значение у блока)</th>
|
||||
<th>Комиссия (используемая в расчетах)</th>
|
||||
<th>Количество апартаментов</th>
|
||||
<th> </th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$num = 1;
|
||||
foreach ($blocksList as $block) {
|
||||
|
||||
echo '<tr ';
|
||||
|
||||
if ($num % 2 > 0) {
|
||||
echo 'style="background-color: #f9f9f9;"';
|
||||
}
|
||||
|
||||
echo '>';
|
||||
echo '<td>' . $block->id . '</td>';
|
||||
echo '<td><a href="/admin/blockEdit.php?id=' . $block->id . '" title="Редактировать">' . $block->name . '</a></td>';
|
||||
echo '<td>' . number_format($block->fee, 2, ',', ' ') . '</td>';
|
||||
echo '<td>' . number_format($block->getCalculatedFee(), 2, ',', ' ') . '</td>';
|
||||
echo '<td>' . $block->apartmentsCount . '</td>';
|
||||
echo '<td>';
|
||||
echo '<a href="javascript:void(0);" data-id="'. $block->id . '" class="update-block-from-fs">Обновить с FlatShop</a>';
|
||||
echo '</td>';
|
||||
echo '<td style="width: 26px; height: 26px;"><div id="action_loader_' . $block->id . '" style="width: 26px; height:26px; background:url(/images/ajax_preloader.gif) no-repeat center center; background-size: 26px 26px; display: none;"></div></td>';
|
||||
echo '</tr>';
|
||||
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
if ($all_pages > 1) {
|
||||
num_of_pages($page, $all_pages, $url_params);
|
||||
}
|
||||
echo '</ul></div>';
|
||||
|
||||
?>
|
||||
</div>
|
||||
<? } else echo "<div class='empty-block'><h1><i class='ti-na'></i></h1><h2>Комплексов не найдено</h2></div>" ?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<script src="/js/admin-edit.js?t=<?php echo ceil(microtime(true)); ?>"></script>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
408
admin/builderEdit.php
Normal file
408
admin/builderEdit.php
Normal file
@ -0,0 +1,408 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||||
|
||||
if (isset($_POST['add_builder'])) {
|
||||
|
||||
$err = "";
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
if ($_FILES['logo']['name']) {
|
||||
if ($_FILES['logo']['error'] == UPLOAD_ERR_OK) {
|
||||
list($a, $ext) = explode("/", $_FILES['logo']['type']);
|
||||
if ($ext == "pjpeg") {
|
||||
$ext = "jpeg";
|
||||
}
|
||||
$ext = mb_strtolower($ext);
|
||||
if ($ext == "jpeg" or $ext == "jpg" or $ext == "png") {
|
||||
$name = md5($_FILES['logo']['tmp_name'] . time()) . "." . $ext;
|
||||
$photo = $_SERVER['DOCUMENT_ROOT'] . "/photos/builder/" . $name;
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/photos/builder")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/photos/builder");
|
||||
}
|
||||
if (move_uploaded_file($_FILES['logo']['tmp_name'], $photo)) {
|
||||
$size = getimagesize($photo);
|
||||
if ($size[0] > 272) {
|
||||
resize_img(272, $photo, $photo);
|
||||
}
|
||||
$post['hidden_logo'] = $name;
|
||||
}
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Неверный тип файла. Допустимые типы - jpg или png.";
|
||||
}
|
||||
} else {
|
||||
if ($_FILES['logo']['error'] == UPLOAD_ERR_FORM_SIZE) {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Превышен размер файла. Допустимый размер 1-2 Mb.";
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Ошибка при загрузке: ".$_FILES['logo']['error'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($post['id'])) {
|
||||
if (strlen($err) == 0) {
|
||||
$builderToSave = new Builder();
|
||||
$builderToSave->newRecord = false;
|
||||
$builderToSave->name = $post['hidden_name'];
|
||||
$builderToSave->id = $post['id'];
|
||||
$builderToSave->fee = $post['fee'];
|
||||
$builderToSave->note = $post['note'];
|
||||
$builderToSave->discount_fee = $post['discount_fee'];
|
||||
$builderToSave->pay_period = $post['pay_period'];
|
||||
$builderToSave->adv = $post['adv'];
|
||||
$builderToSave->logo = $post['hidden_logo'];
|
||||
$builderToSave->save();
|
||||
|
||||
header("location:/admin/builders.php");
|
||||
exit();
|
||||
}
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Не найден идентификатор застройщика в запросе.";
|
||||
}
|
||||
}
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
if (!isset($get['id'])) {
|
||||
header("location:/admin/builders.php");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
if (!isset($post) && $get['id'] > 0) {
|
||||
$builder = Builder::findOne($get['id']);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<h1>Редактирование застройщика</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="new-object">
|
||||
<form method="post" enctype="multipart/form-data" id="upload-form">
|
||||
<div class="new-object__form">
|
||||
<?php if (isset($err) && strlen($err) > 0) { ?>
|
||||
<div class="block" style="border-bottom: none; color: red;"><?php echo $err; ?></div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Название:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="name" disabled="disabled" style="width: 75%;"
|
||||
value="<? if (isset($post)) echo $post['hidden_name'];
|
||||
if (isset($builder)) echo $builder->name; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label" style="width: 230px;">
|
||||
<span>Комиссия:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="number" step="0.1" min="0" max="100" class="text" name="fee"
|
||||
value="<? if (isset($post)) echo $post['fee'];
|
||||
if (isset($builder)) echo $builder->fee; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label" style="width: 230px;">
|
||||
<span>Комиссия переуступок:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="number" step="0.1" min="0" max="100" class="text" name="discount_fee"
|
||||
value="<? if (isset($post)) echo $post['discount_fee'];
|
||||
if (isset($builder)) echo $builder->discount_fee; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label" style="width: 230px;">
|
||||
<span>Срок выплаты комиссионных застройщиком:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="pay_period"
|
||||
value="<? if (isset($post)) echo $post['pay_period'];
|
||||
if (isset($builder)) echo $builder->pay_period; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Заметка:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<textarea name="note" style="width: 75%;"><? if (isset($post)) echo $post['note'];
|
||||
if (isset($builder) && $builder->note) { echo str_replace("<br>", "\n", $builder->note); } ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Реклама:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<textarea name="adv" style="width: 75%;"><? if (isset($post)) echo $post['adv'];
|
||||
if (isset($builder)) echo $builder->adv; ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Логотип:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="3000000"/>
|
||||
<input style="border: 1px solid white;" type="file" accept="image/jpeg,image/png"
|
||||
class="text" name="logo"/>
|
||||
<div class="text_comment" style="margin-left: 123px; font-size: 12px;">
|
||||
<p>JPG, PNG (квадрат 272х272 пиксела)</p>
|
||||
<div id="upload-result"></div>
|
||||
</div>
|
||||
<div <?php if(isset($builder) && $builder->logo) echo "style='margin-left: 123px;margin-top: 10px;height: 272px; width: 272px; background:url(/photos/builder/".$builder->logo.") no-repeat'"; ?>>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line" style="text-align: right">
|
||||
<button type="submit" class="medium-button">Сохранить</button>
|
||||
<a href="/admin/builders.php" class="cancel-button medium-button">Закрыть</a>
|
||||
</div>
|
||||
<input type="hidden" name="add_builder" value="1">
|
||||
<input type="hidden" name="hidden_logo" value="<?php if (isset($builder)) {
|
||||
echo $builder->logo;
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['hidden_logo'];
|
||||
}
|
||||
} ?>">
|
||||
<input type="hidden" name="hidden_name" value="<?php if (isset($builder)) {
|
||||
echo $builder->name;
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['hidden_name'];
|
||||
}
|
||||
} ?>">
|
||||
<input type="hidden" name="id" value="<?php if (isset($builder)) {
|
||||
echo $builder->id;
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['id'];
|
||||
}
|
||||
} ?>">
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<!-- Отзовы застройщиков -->
|
||||
|
||||
<div class="tabs__content">
|
||||
<div style="padding: 15px">
|
||||
<style>
|
||||
.review_builder_del_btn {
|
||||
color: #e77;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
|
||||
<h2 style="margin-bottom: 15px">Отзывы</h2>
|
||||
<div id="reviews_builder_wrap">
|
||||
<?php
|
||||
$sql = "SELECT * FROM builder_reviews WHERE builder_id=".$builder->id;
|
||||
|
||||
$reviews = [];
|
||||
try {
|
||||
$result = mysql_query($sql);
|
||||
while ($obj = mysql_fetch_assoc($result)) {
|
||||
$reviews[$obj['id']] = $obj;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
?>
|
||||
|
||||
<table id="reviews_builder_table_id" class="display reviews_table_id">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>id</th>
|
||||
<th>Имя</th>
|
||||
<th>Отзыв</th>
|
||||
<th>Дата</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($reviews as $id => $review) {
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $id ?></td>
|
||||
<td><?php echo $review['name'] ?></td>
|
||||
<td><?php echo $review['review'] ?></td>
|
||||
<td><?php echo date('d.m.Y H:i', strtotime($review['date'])) ?></td>
|
||||
<td><span class="review_builder_del_btn" id="<?php echo $id ?>">Удалить</span></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<button builder_id="<?php echo $builder->id ?>" class="medium-button action-button actionJW show_add_review_btn block_features_btn">Добавить</button>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
reviews_builder = $('#reviews_builder_table_id').DataTable({
|
||||
"oLanguage": {
|
||||
"sLengthMenu": "Отобразить _MENU_ записей на странице",
|
||||
"sZeroRecords": "Ничего не найдено",
|
||||
"sInfo": "Показано с _START_ по _END_ из _TOTAL_ записей",
|
||||
"sInfoEmpty": "Показано с 0 по 0 из 0 записей",
|
||||
"sInfoFiltered": "(Отфильтровано из _MAX_ записей)",
|
||||
"sSearch": "Найти",
|
||||
"oPaginate": {
|
||||
"sFirst": "Первая",
|
||||
"sLast": "Последняя",
|
||||
"sNext": "Следующая",
|
||||
"sPrevious": "Предыдущая"
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
$('.show_add_review_btn').on('click', function () {
|
||||
$('#show_add_review_bg').show();
|
||||
$('#show_add_review').show();
|
||||
});
|
||||
|
||||
$('#show_add_review_bg .closer').on('click', function(){
|
||||
$("#show_add_review_bg").toggle(10);
|
||||
});
|
||||
|
||||
$('#block_review_save').on('click', function(){
|
||||
builder_id = $(this).attr('builder_id');
|
||||
review = $('#block_review_text').val();
|
||||
name = $('#block_review_name').val();
|
||||
param = {
|
||||
"builder_id": builder_id,
|
||||
"review": review,
|
||||
"name": name,
|
||||
};
|
||||
$.post('/admin/ajax/addBuilderReview.php', param, function (data) {
|
||||
data = JSON.parse(data);
|
||||
id = data.id;
|
||||
review = data.review;
|
||||
name = data.name;
|
||||
date = data.date;
|
||||
del_btn = "<span id='"+id+"' class='review_builder_del_btn'>Удалить</span>";
|
||||
|
||||
reviews_builder.row.add([
|
||||
id,
|
||||
name,
|
||||
review,
|
||||
date,
|
||||
del_btn
|
||||
]).draw();
|
||||
|
||||
$('#show_add_review_bg').hide();
|
||||
$('#block_review_text').val('');
|
||||
});
|
||||
});
|
||||
|
||||
$('body').on('click','.review_builder_del_btn', function(){
|
||||
|
||||
review_id = $(this).attr('id');
|
||||
console.log(review_id);
|
||||
param = {
|
||||
"review_id": review_id
|
||||
};
|
||||
$.post('/admin/ajax/deleteBuilderReview.php', param, function (data) { });
|
||||
reviews_builder.row( $(this).parents('tr') ).remove().draw();
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
<!--Review-->
|
||||
<div class="full_modal-bg" id="show_add_review_bg" style="display: none">
|
||||
<div class="full_modal" id="show_add_review" style="display: none">
|
||||
<span class="pseudo-link closer" onclick="hidechangeTarif(); return false;"><i class="ti-close"></i></span>
|
||||
<form id="add_review_form" action="">
|
||||
<div class="modal-form">
|
||||
<div class="modal-inner">
|
||||
<h2>Добавить отзыв</h2>
|
||||
<!-- <div class="form-block">-->
|
||||
<!-- <div class="label">Порядок:</div>-->
|
||||
<!-- <div class="inputs">-->
|
||||
<!-- <input type="number" min="0" class="text" name="num" value="1" style="width:70px;">-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="clear"></div>-->
|
||||
<!-- </div>-->
|
||||
<div class="form-block">
|
||||
<div class="label">Имя:</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" id="block_review_name" name="block_review_name" value="" style="width:100%">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Описание:</div>
|
||||
<div class="inputs">
|
||||
<textarea class="text" id="block_review_text" name="block_review_text" style="width:100%; height:200px;"></textarea>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal-submit">
|
||||
<button id="block_review_save" class="fr-btn1" builder_id="<?php echo $builder->id ?>">Сохранить <i class="ti-angle-right"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
170
admin/builders.php
Normal file
170
admin/builders.php
Normal file
@ -0,0 +1,170 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Builder.php';
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
|
||||
<h1>Застройщики</h1>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="head-filter__top">
|
||||
|
||||
<div class="top-line">
|
||||
|
||||
<div class="head-filter-search">
|
||||
|
||||
<div class="form-search">
|
||||
|
||||
<form>
|
||||
|
||||
<input type="search" name="search" class="text" placeholder="Название"
|
||||
value="<?php if (isset($_GET['search'])) {
|
||||
echo $_GET['search'];
|
||||
} ?>">
|
||||
|
||||
<span class="search-icon">
|
||||
|
||||
<i class="ti-search"></i>
|
||||
|
||||
</span>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
$num_on_page = 20;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
$page = $_GET['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$from = ($page - 1) * $num_on_page;
|
||||
|
||||
$searchName = null;
|
||||
$url_params = '';
|
||||
|
||||
if (isset($_GET['search'])) {
|
||||
$searchName = $_GET['search'];
|
||||
|
||||
if (strlen($url_params) > 0) {
|
||||
$url_params = $url_params . "&";
|
||||
}
|
||||
$url_params = $url_params . "search=" . $_GET['search'];
|
||||
}
|
||||
|
||||
$buildersCount = Builder::countActive($searchName);
|
||||
|
||||
$all_pages = ceil($buildersCount / $num_on_page);
|
||||
|
||||
if ($buildersCount > 0) {
|
||||
|
||||
$buildersList = Builder::searchActive($searchName, $from, $num_on_page);
|
||||
|
||||
?>
|
||||
|
||||
<div class="jw__NB">
|
||||
|
||||
<?php
|
||||
|
||||
$numFrom = $from + 1;
|
||||
$numTo = (($from + $num_on_page) >= $buildersCount) ? $buildersCount : ($from + $num_on_page);
|
||||
|
||||
echo '<div style="margin: 13px 35px; font-weight: bold;">Показаны записи ' . $numFrom . '-' . $numTo . ' из ' . $buildersCount . '</div>'
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<div class="jw__NB__flat-list">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>ID</th>
|
||||
<th>Название застройщика</th>
|
||||
<th>Комиссия</th>
|
||||
<th>Комиссия переуступок</th>
|
||||
<th>Срок выплаты комиссионных застройщиком</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$num = 1;
|
||||
foreach ($buildersList as $builder) {
|
||||
|
||||
$note = "";
|
||||
|
||||
if ($builder->note) {
|
||||
$note = $builder->note;
|
||||
}
|
||||
|
||||
echo '<tr ';
|
||||
|
||||
if ($num % 2 > 0) {
|
||||
echo 'style="background-color: #f9f9f9;"';
|
||||
}
|
||||
|
||||
echo '>';
|
||||
echo '<td><i class="ti-info-alt" title="' . str_replace("<br>", "\n", $note) . '"></i></td>';
|
||||
echo '<td>' . $builder->id . '</td>';
|
||||
echo '<td>' . $builder->name . '</td>';
|
||||
echo '<td>' . number_format($builder->fee, 2, ',', ' ') . '</td>';
|
||||
echo '<td>' . number_format($builder->discount_fee, 2, ',', ' ') . '</td>';
|
||||
echo '<td>' . $builder->pay_period . '</td>';
|
||||
echo '<td><a href="/admin/builderEdit.php?id=' . $builder->id . '" title="Редактировать"><i class="ti-pencil"></i></a></td>';
|
||||
echo '</tr>';
|
||||
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
if ($all_pages > 1) {
|
||||
num_of_pages($page, $all_pages, $url_params);
|
||||
}
|
||||
echo '</ul></div>';
|
||||
|
||||
?>
|
||||
</div>
|
||||
<? } else echo "<div class='empty-block'><h1><i class='ti-na'></i></h1><h2>Застройщиков не найдено</h2></div>" ?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
654
admin/clients_jw.php
Normal file
654
admin/clients_jw.php
Normal file
@ -0,0 +1,654 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
// закрываем доступ на выполнение запросов
|
||||
|
||||
if(!$_SESSION['superadmin']) {header("location:/index.php"); die("Доступ запрещён!");}
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/templates/header-admin.php");
|
||||
$cl = new Clients_jw;
|
||||
|
||||
$user_view = null;
|
||||
$idAgentForView = null;
|
||||
$idManagerForView = null;
|
||||
?>
|
||||
|
||||
|
||||
<div class="content-right" style="min-height: 100%;">
|
||||
|
||||
<div class="inner">
|
||||
<div class="main-title">
|
||||
<h1 style="float: left;">Клиенты</h1>
|
||||
<?php
|
||||
if(!$_SESSION['funnel_jw_id']) $_SESSION['funnel_jw_id'] = 1;
|
||||
$funnel_id = $_SESSION['funnel_jw_id'];
|
||||
$f_q = mysql_query("SELECT * FROM funnels_jw");
|
||||
while($f_r = mysql_fetch_assoc($f_q)){
|
||||
?>
|
||||
<div data-id="<?=$f_r['id']?>" style="margin: 17px 10px;" class="search-funnel-item<?=($f_r['id'] == $funnel_id) ? ' active': ''?>">
|
||||
<span><?=$f_r['name']?></span>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="crm new">
|
||||
<div class="crm__filters">
|
||||
<div class="crm__filters-inner">
|
||||
<div class="search-query">
|
||||
<div class="search-query-item">
|
||||
<span>0 опций</span>
|
||||
<i class="ti-close"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-filter">
|
||||
<?php
|
||||
if(isset($_GET['id_agent'])) unset($_SESSION['client_search']);
|
||||
$search = ""; if(isset($_SESSION['client_search']) && !empty($_SESSION['client_search'])) $search = $_SESSION['client_search']; ?>
|
||||
<input type="text" tabindex="1" value="<?=$search?>" name="search" placeholder="Фильтр и поиск" class="search-filter__filter" id="search_filter_input" autocomplete="off">
|
||||
<div class="search-filter__icons">
|
||||
<i class="ti-search" title="Искать"></i>
|
||||
<i class="ti-close" title="Очистить"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="crm__new-client">
|
||||
<button class="jw__g-button add_client_new">Добавить</button>
|
||||
</div>
|
||||
<div class="view-changer">
|
||||
<div class="view-list <?=(!isset($_SESSION['kanban'])) ? 'active' : ''?>">
|
||||
<a href="javascript:{}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M0,74.672V224h512V74.672H0z M496,208H16V90.672h480V208z" fill="#757575"/></g></g><g><g><path d="M0,288v149.328h512V288H0z M496,421.328H16V304h480V421.328z" fill="#757575"/></g></g></svg>
|
||||
<span>Список</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="view-kanban <?=(isset($_SESSION['kanban'])) ? 'active' : ''?>">
|
||||
<a href="javascript:{}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M0,96v128h128V96H0z M112,208H16v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M192,96v128h128V96H192z M304,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M384,96v128h128V96H384z M496,208h-96v-96h96V208z" fill="#757575"/></g></g><g><g><path d="M0,288v128h128V288H0z M112,400H16v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M192,288v128h128V288H192z M304,400h-96v-96h96V400z" fill="#757575"/></g></g><g><g><path d="M384,288v128h128V288H384z M496,400h-96v-96h96V400z" fill="#757575"/></g></g></svg>
|
||||
<span>Таблица</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="crm__filter-popup">
|
||||
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
||||
<div class="filter-popup-items">
|
||||
<div class="filter-popup__left">
|
||||
<?php
|
||||
// if(!isset($_GET['page'])){
|
||||
if(isset($_GET['id_agent'])){
|
||||
$_SESSION['filter_stage_work'] = 1;
|
||||
unset ($_SESSION['filter_stage_hot']);
|
||||
unset ($_SESSION['filter_stage_close']);
|
||||
unset ($_SESSION['filter_stage_hit']);
|
||||
unset ($_SESSION['filter_confirm']);
|
||||
unset ($_SESSION['filter_work_ahency']);
|
||||
}
|
||||
|
||||
if(!isset($_SESSION['filter_stage_work']) &&
|
||||
!isset ($_SESSION['filter_stage_hot']) &&
|
||||
!isset ($_SESSION['filter_stage_close'])&&
|
||||
!isset ($_SESSION['filter_stage_hit'])&&
|
||||
!isset ($_SESSION['filter_confirm'])&&
|
||||
!isset ($_SESSION['filter_work_ahency'])){
|
||||
$_SESSION['filter_stage_work'] = 1;
|
||||
}
|
||||
// }
|
||||
?>
|
||||
<div class="filter-popup-type <?=isset($_SESSION['filter_stage_work']) ? 'active' : ''?>" id="filter_stage_work">
|
||||
<a href="javascript:{}"><span>В работе</span></a>
|
||||
</div>
|
||||
<div class="filter-popup-type hot <?=isset($_SESSION['filter_stage_hot']) ? 'active' : ''?>" id="filter_stage_hot">
|
||||
<a href="javascript:{}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="19px" height="19px" class=""><g><g transform="matrix(1.25 0 0 -1.25 0 45)">
|
||||
<path style="fill:#F4511E" d="M398.448-179.952c0,23.5-4.18,46.008-11.847,66.843c-5.24-61.375-37.967-92.917-72.162-78.234 c-32.043,13.761-10.445,67.401-8.851,92.996C308.277-54.958,305.451-5.293,226.637,36c32.749-62.651,3.793-101.563-26.586-103.943 c-33.683-2.62-64.542,28.956-53.151,80.216c-36.884-27.179-37.967-72.925-26.586-102.52c11.869-30.847-0.467-56.477-29.423-59.325 c-32.339-3.189-50.314,34.641-33.74,94.922c-28.683-33.775-45.997-77.516-45.997-125.302C11.152-286.902,97.85-373.6,204.8-373.6 S398.448-286.902,398.448-179.952z" data-original="#F4900C" class="active-path" data-old_color="#FF7043"/>
|
||||
<path style="fill:#FFB74D" d="M277.418-279.146c-23.978,9.603-17.554,26.097-23.728,60.27 c-6.174,34.173-29.902,57.912-65.031,68.346c25.63-72.14-14.204-98.726-35.084-103.476c-21.324-4.853-42.751,0.012-45.2,45.644 c-24.867-24.764-40.267-59.028-40.267-96.893c0-4.186,0.199-8.325,0.567-12.415C103.652-352.245,151.729-373.6,204.8-373.6 s101.148,21.355,136.126,55.932c0.369,4.09,0.567,8.229,0.567,12.415c0,24.901-6.652,48.253-18.283,68.358 C324.885-272.026,294.026-285.798,277.418-279.146z" data-original="#FFCC4D" class="" data-old_color="#FFCC4D"/>
|
||||
</g></g></svg>
|
||||
<span>Горячие</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="filter-popup-type <?=isset($_SESSION['filter_stage_close']) ? 'active' : ''?>" id="filter_stage_close">
|
||||
<a href="javascript:{}"><span>Закрытые</span></a>
|
||||
</div>
|
||||
<div class="filter-popup-type <?=isset($_SESSION['filter_stage_hit']) ? 'active' : ''?>" id="filter_stage_hit">
|
||||
<a href="javascript:{}"><span>Успешные</span></a>
|
||||
</div>
|
||||
<?php
|
||||
$sqlt = "SELECT count(*) as total from clients WHERE 1 AND (who_work = ".$_SESSION['id'].") AND `date_add` > '1970-01-01' AND `confirm` = 0";
|
||||
|
||||
$qt = mysql_query($sqlt);
|
||||
$totalt = (int)mysql_fetch_assoc($qt)['total'];
|
||||
|
||||
?>
|
||||
<div class="filter-popup-type <?=isset($_SESSION['filter_confirm']) ? 'active' : ''?>" id="filter_confirm">
|
||||
<a href="javascript:{}"><span>Назначенные</span></a><?php if($totalt > 0){?> <span class="counter"><?=$totalt?></span> <?php } ?>
|
||||
</div>
|
||||
<div class="filter-popup-type <?=isset($_SESSION['filter_work_ahency']) ? 'active' : ''?>" id="filter_work_ahency">
|
||||
<a href="javascript:{}"><span>Общие</span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-popup__right">
|
||||
<div class="filter-popup-header-inputs">
|
||||
<h3>Параметры</h3>
|
||||
</div>
|
||||
<?php
|
||||
//var_dump($user->agencyId);
|
||||
if($_SESSION['agency'] || $_SESSION['manager']){
|
||||
if($_SESSION['agency']){
|
||||
$agentsOfManager = User::getAllManagers($_SESSION['id']);
|
||||
};
|
||||
$agentsOfAgency = User::getAgentsOfManager($_SESSION['id'], true);
|
||||
$emp_arr = array();
|
||||
if(isset($_GET['id_agent'])) {
|
||||
unset($_SESSION['filter_emp']);
|
||||
$emp_arr[] = $_GET['id_agent'];
|
||||
}
|
||||
if(isset($_SESSION['filter_emp'])){
|
||||
$emp_arr = json_decode(html_entity_decode($_SESSION['filter_emp']), ENT_QUOTES);
|
||||
}
|
||||
?>
|
||||
<!--<div class="filter-popup-input">
|
||||
<div class="crm__filter-input" id="crm_filter_emp">
|
||||
<select id="filter_emp" multiple="">
|
||||
<option value="<?=$_SESSION[id]?>" <?=in_array($_SESSION[id], $emp_arr) ? 'selected' : ''?>>Я</option>
|
||||
<?php
|
||||
if($agentsOfManager) {
|
||||
|
||||
foreach($agentsOfManager as $mngr)
|
||||
{
|
||||
|
||||
?>
|
||||
<option class="bolt" value="<?=$mngr[id]?>" <?=in_array($mngr[id], $emp_arr) ? 'selected' : ''?>><?= trim($mngr['last_name'] . ' ' . $mngr['first_name'] . ' ' . $mngr['middle_name']); ?></option>
|
||||
<?php
|
||||
$agenThisManager = User::getAgentsOfManager($mngr[id], true);
|
||||
foreach($agenThisManager as $mAgent){
|
||||
?>
|
||||
<option value="<?=$mAgent[id]?>" <?=in_array($mAgent[id], $emp_arr) ? 'selected' : ''?>>- <?= trim($mAgent['last_name'] . ' ' . $mAgent['first_name'] . ' ' . $mAgent['middle_name']); ?></option>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($agentsOfAgency) {
|
||||
foreach($agentsOfAgency as $agent)
|
||||
{ ?>
|
||||
<option value="<?=$agent[id]?>" <?=in_array($agent[id], $emp_arr) ? 'selected' : ''?>><?= trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']); ?></option>
|
||||
<?php
|
||||
}
|
||||
} ?>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="filter-popup-input">
|
||||
<div class="crm__filter-input">
|
||||
<?php
|
||||
if(isset($_GET['id_agent'])) unset($_SESSION['filter_client_type']);
|
||||
$arr_client_type = array();
|
||||
if(isset($_SESSION['filter_client_type'])){
|
||||
$arr_client_type = json_decode(html_entity_decode($_SESSION['filter_client_type']), ENT_QUOTES);
|
||||
}
|
||||
?>
|
||||
<select id="filter-client-type" multiple>
|
||||
<option data-op="1" value="Аренда" <?=in_array('Аренда', $arr_client_type) ? 'selected' : ''?>>Аренда</option>
|
||||
<option data-op="2" value="Вторичка" <?=in_array('Вторичка', $arr_client_type) ? 'selected' : ''?>>Вторичка</option>
|
||||
<option data-op="3" value="Новостройки" <?=in_array('Новостройки', $arr_client_type) ? 'selected' : ''?>>Новостройки</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-popup-input">
|
||||
<div class="crm__filter-input">
|
||||
<?php
|
||||
$arr_type = array();
|
||||
if(isset($_GET['id_agent'])) unset($_SESSION['filter_client_objects_type']);
|
||||
if(isset($_SESSION['filter_client_objects_type'])){
|
||||
$arr_type = json_decode(html_entity_decode($_SESSION['filter_client_objects_type']), ENT_QUOTES);
|
||||
}
|
||||
?>
|
||||
<select id="filter-client-objects-type" multiple>
|
||||
<option data-op="1" value="1к_кв" <?=in_array('1к_кв', $arr_type) ? 'selected' : ''?>>1к.кв.</option>
|
||||
<option data-op="2" value="2к_кв" <?=in_array('2к_кв', $arr_type) ? 'selected' : ''?>>2к.кв.</option>
|
||||
<option data-op="3" value="3к_кв" <?=in_array('3к_кв', $arr_type) ? 'selected' : ''?>>3к.кв.</option>
|
||||
<option data-op="4" value="4к_кв" <?=in_array('4к_кв', $arr_type) ? 'selected' : ''?>>4к.кв.</option>
|
||||
<option data-op="5" value="5к_кв" <?=in_array('5к_кв', $arr_type) ? 'selected' : ''?>>5к.кв.</option>
|
||||
<option data-op="6" value="6к_кв" <?=in_array('6к_кв', $arr_type) ? 'selected' : ''?>>6к.кв.</option>
|
||||
<option data-op="7" value="7к_кв" <?=in_array('7к_кв', $arr_type) ? 'selected' : ''?>>7к.кв.</option>
|
||||
<option data-op="8" value="8к_кв" <?=in_array('8к_кв', $arr_type) ? 'selected' : ''?>>8к.кв.</option>
|
||||
<option data-op="9" value="9к_кв" <?=in_array('9к_кв', $arr_type) ? 'selected' : ''?>>9к.кв.</option>
|
||||
<option data-op="10" value="Более_9_комнат" <?=in_array('Более_9_комнат', $arr_type) ? 'selected' : ''?>>Более 9 комнат</option>
|
||||
<option data-op="11" value="Комната" <?=in_array('Комната', $arr_type) ? 'selected' : ''?>>Комната</option>
|
||||
<option data-op="12" value="Дом" <?=in_array('Дом', $arr_type) ? 'selected' : ''?>>Дом</option>
|
||||
<option data-op="13" value="Помещение" <?=in_array('Помещение', $arr_type) ? 'selected' : ''?>>Помещение</option>
|
||||
<option data-op="14" value="Часть дома" <?=in_array('Часть дома', $arr_type) ? 'selected' : ''?>>Часть дома</option>
|
||||
<option data-op="15" value="Комплекс домов" <?=in_array('Комплекс домов', $arr_type) ? 'selected' : ''?>>Комплекс домов</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-popup-input">
|
||||
<div class="crm__filter-input">
|
||||
<?php
|
||||
$arr_role = array();
|
||||
if(isset($_GET['id_agent'])) unset($_SESSION['filter_client_rol']);
|
||||
if(isset($_SESSION['filter_client_rol'])){
|
||||
$arr_role = json_decode(html_entity_decode($_SESSION['filter_client_rol']), ENT_QUOTES);
|
||||
}
|
||||
?>
|
||||
<select id="filter_client_rol" multiple="multiple">
|
||||
<option data-op="1" value="Арендатор" <?=in_array('Арендатор', $arr_role) ? 'selected' : ''?>>Арендатор</option>
|
||||
<option data-op="2" value="Арендодатель" <?=in_array('Арендодатель', $arr_role) ? 'selected' : ''?>>Арендодатель</option>
|
||||
<option data-op="3" value="Покупатель" <?=in_array('Покупатель', $arr_role) ? 'selected' : ''?>>Покупатель</option>
|
||||
<option data-op="4" value="Продавец" <?=in_array('Продавец', $arr_role) ? 'selected' : ''?>>Продавец</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="filter-popup-input">
|
||||
<div class="crm__filter-input">
|
||||
<select id="filter_source" multiple="">
|
||||
<?php
|
||||
$arr_source = array();
|
||||
if(isset($_GET['id_agent'])) unset($_SESSION['filter_source']);
|
||||
if(isset($_SESSION['filter_source'])){
|
||||
$arr_source = json_decode(html_entity_decode($_SESSION['filter_source']), ENT_QUOTES);
|
||||
}
|
||||
$sql_adv = "SELECT * FROM `advertising_sources` WHERE `user_id` = '".$user->id."' or `manager_id` = '".$user->id."'";
|
||||
if($user->id_manager){
|
||||
$sql_adv .= " or `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'";
|
||||
}
|
||||
|
||||
if($user -> agencyId){
|
||||
$sql_adv .= " or `manager_id` = '".$user -> agencyId."' or `user_id` = '".$user -> agencyId."'";
|
||||
}
|
||||
$q_adv = mysql_query($sql_adv);
|
||||
$rows_adv = mysql_num_rows($q_adv);
|
||||
if($rows_adv > 0){
|
||||
while($r_adv = mysql_fetch_assoc($q_adv)){
|
||||
?>
|
||||
<option value="<?=$r_adv['id']?>"<?=in_array($r_adv['id'], $arr_source) ? 'selected' : ''?>><?=$r_adv['source']?></option>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<div class="filter-popup-input">
|
||||
<div class="crm__filter-input">
|
||||
<?php
|
||||
$arr_etap = array();
|
||||
if(isset($_GET['id_agent'])) unset($_SESSION['filter_etap']);
|
||||
if(isset($_SESSION['filter_etap'])){
|
||||
$arr_etap = json_decode(html_entity_decode($_SESSION['filter_etap']), ENT_QUOTES);
|
||||
}
|
||||
?>
|
||||
<select id="filter_etap" multiple="">
|
||||
<option value="1" <?=in_array('1', $arr_etap) ? 'selected' : ''?>>Новый</option>
|
||||
<option value="2" <?=in_array('2', $arr_etap) ? 'selected' : ''?>>В работе</option>
|
||||
<option value="3" <?=in_array('3', $arr_etap) ? 'selected' : ''?>>Коммерческое предложение</option>
|
||||
<option value="4" <?=in_array('4', $arr_etap) ? 'selected' : ''?>>Встреча в офисе</option>
|
||||
<option value="5" <?=in_array('5', $arr_etap) ? 'selected' : ''?>>Зарегистрировались</option>
|
||||
<option value="6" <?=in_array('6', $arr_etap) ? 'selected' : ''?>>Оплатили</option>
|
||||
<option value="7" <?=in_array('7', $arr_etap) ? 'selected' : ''?>>Отвалились</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="filter-popup-input">
|
||||
<div class="crm__filter-input">
|
||||
<?php
|
||||
|
||||
$period = 'all';
|
||||
if(isset($_GET['id_agent'])) unset($_SESSION['client_period']);
|
||||
if(isset($_SESSION['client_period']))
|
||||
$period = $_SESSION['client_period'];
|
||||
|
||||
?>
|
||||
<select class="ms-crm-client-period" >
|
||||
<option value="today" <?=($period == 'today') ? 'selected' : ''?>>Сегодня</option>
|
||||
<option value="week" <?=($period == 'week') ? 'selected' : ''?>>Неделя</option>
|
||||
<option value="month" <?=($period == 'month') ? 'selected' : ''?>>Месяц</option>
|
||||
<option value="quarter" <?=($period == 'quarter') ? 'selected' : ''?>>Квартал</option>
|
||||
<option value="year" <?=($period == 'year') ? 'selected' : ''?>>Год</option>
|
||||
<option value="all" <?=($period == 'all') ? 'selected' : ''?>>Все время</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-popup-input">
|
||||
<?php if(isset($_GET['id_agent'])) unset($_SESSION['order']); ?>
|
||||
<div class="checkbox">
|
||||
<input name="order" id="order" type="checkbox" <?=(isset($_SESSION['order'])) ? 'checked' : ''?> value="cena">
|
||||
<label for="order">С задачами</label>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="filter-popup-submit">
|
||||
<button class="medium-button">Закрыть</button>
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="clients_list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.tab{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
padding: 5px 0 10px;
|
||||
cursor: pointer;
|
||||
border: 0;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
<div class="full_modal-bg" id="send_bg_new" style="display: none;">
|
||||
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
||||
<div class="full_modal edit-modal new-client__modal" id="send_new" style="display: none;">
|
||||
<form class="form-validate" method="post" id="addEditNew">
|
||||
<div class="modal-inner">
|
||||
<div class="error_msg"></div>
|
||||
<h2 class="modal-title">Новый клиент</h2>
|
||||
<!-- <h2>Редактирование клиента</h2> -->
|
||||
|
||||
<div class="jw-tabs">
|
||||
|
||||
<ul class="tabs__caption">
|
||||
<li id="liGlobal" class="active" data-page="0">
|
||||
<i class="tabs-li__icon">1</i>
|
||||
<span>Общие</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div>
|
||||
<div class="tabs__content">
|
||||
<div class="form-block">
|
||||
<div class="label">Этап</div>
|
||||
<div class="inputs">
|
||||
<div class="stagebar">
|
||||
<div class="crm__small-stagebar">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="stage stage-new active" title="Новый клиент">
|
||||
<div data-stage="1" class="crm__small-stage"></div>
|
||||
<span class="next-stage">Новый</span>
|
||||
</td>
|
||||
<td class="stage stage-work active" title="В работе">
|
||||
<div data-stage="2" class="crm__small-stage"></div>
|
||||
<span class="next-stage">В работе</span>
|
||||
</td>
|
||||
<td class="stage stage-offer" title="Коммерческое предложение">
|
||||
<div data-stage="3" class="crm__small-stage"></div>
|
||||
<span class="next-stage">Коммерческое предложение</span>
|
||||
</td>
|
||||
<td class="stage stage-showing" title="Встреча в офисе">
|
||||
<div data-stage="4" class="crm__small-stage"></div>
|
||||
<span class="next-stage">Встреча в офисе</span>
|
||||
</td>
|
||||
<td class="stage stage-reservation" title="Зарегистрировались">
|
||||
<div data-stage="5" class="crm__small-stage"></div>
|
||||
<span class="next-stage">Зарегистрировались</span>
|
||||
</td>
|
||||
<td class="stage stage-meet" title="Оплатили">
|
||||
<div data-stage="6" class="crm__small-stage"></div>
|
||||
<span class="next-stage">Оплатили</span>
|
||||
</td>
|
||||
<td class="stage stage-deal" title="Отвалились">
|
||||
<div data-stage="7" class="crm__small-stage"></div>
|
||||
<span class="next-stage">Отвалились</span>
|
||||
</td>
|
||||
<!--
|
||||
<td class="stage stage-end" title="Клиент закрыт">
|
||||
<div data-stage="8" class="crm__small-stage"></div>
|
||||
<span class="next-stage">Закрыт</span>
|
||||
</td>-->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label l-space">Название</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="fio" required="" style="width:400px;" value="">
|
||||
</div>
|
||||
<div class="form-block__hot-client" title="Горячий клиент">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="24px" height="24px" class=""><g><g transform="matrix(1.25 0 0 -1.25 0 45)"><path style="fill:#F4511E" d="M398.448-179.952c0,23.5-4.18,46.008-11.847,66.843c-5.24-61.375-37.967-92.917-72.162-78.234 c-32.043,13.761-10.445,67.401-8.851,92.996C308.277-54.958,305.451-5.293,226.637,36c32.749-62.651,3.793-101.563-26.586-103.943 c-33.683-2.62-64.542,28.956-53.151,80.216c-36.884-27.179-37.967-72.925-26.586-102.52c11.869-30.847-0.467-56.477-29.423-59.325 c-32.339-3.189-50.314,34.641-33.74,94.922c-28.683-33.775-45.997-77.516-45.997-125.302C11.152-286.902,97.85-373.6,204.8-373.6 S398.448-286.902,398.448-179.952z" data-original="#F4900C" class="active-path" data-old_color="#FF7043"></path>
|
||||
<path style="fill:#FFB74D" d="M277.418-279.146c-23.978,9.603-17.554,26.097-23.728,60.27 c-6.174,34.173-29.902,57.912-65.031,68.346c25.63-72.14-14.204-98.726-35.084-103.476c-21.324-4.853-42.751,0.012-45.2,45.644 c-24.867-24.764-40.267-59.028-40.267-96.893c0-4.186,0.199-8.325,0.567-12.415C103.652-352.245,151.729-373.6,204.8-373.6 s101.148,21.355,136.126,55.932c0.369,4.09,0.567,8.229,0.567,12.415c0,24.901-6.652,48.253-18.283,68.358 C324.885-272.026,294.026-285.798,277.418-279.146z" data-original="#FFCC4D" class="" data-old_color="#FFCC4D"></path></g></g></svg>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Эл. почта</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="email" style="width:400px;" value="">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Телефон</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text phoneMask" name="phone" required="" style="width:400px;" value="">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">Описание</div>
|
||||
<div class="inputs">
|
||||
<textarea name="opis" class="text" style="width:400px;" rows="7"></textarea>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tabs__content">
|
||||
<div class="jw__objects">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal-submit">
|
||||
<span class="hidden" id="sid" data-id="<?=$_SESSION['id']?>" data-agency-id="<?= $_SESSION['agency_id']; ?>"></span>
|
||||
<input type="hidden" name="id" value="">
|
||||
<input type="hidden" name="confirm" id="confirm" value="1">
|
||||
<button type="submit" id="newClient">Сохранить <i class="ti-angle-right"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="full_modal-bg clients" id="client-history__bg" style="display: none;">
|
||||
<span class="pseudo-link closer"><i class="ti-close"></i></span>
|
||||
<div class="full_modal history__modal" id="client_history" style="display: none;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chat-modal__bg hidden" id="chat-modal__bg__call">
|
||||
<div class="chat-modal call hidden" id="chat-modal__call">
|
||||
<span class="pseudo-link closer-obj-events"><i class="ti-close"></i></span>
|
||||
<div class="chat-modal__inner">
|
||||
<h2>Новый звонок</h2>
|
||||
<form>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Выберите<br> дату и время
|
||||
</div>
|
||||
<div class="date-timepicker">
|
||||
<div class="datepicker-here" id="callDatetime" data-timepicker="true"></div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Комментарий
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<textarea id="callComment"></textarea>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div class="modal-submit">
|
||||
|
||||
<button type="button" class="addCallButtonNew">Добавить</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chat-modal__bg hidden" id="chat-modal__bg__showing">
|
||||
<div class="chat-modal hidden" id="chat-modal__showing">
|
||||
<span class="pseudo-link closer-obj-events"><i class="ti-close"></i></span>
|
||||
<div class="chat-modal__inner">
|
||||
<h2>Новый показ</h2>
|
||||
<form>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Выберите<br> дату и время
|
||||
</div>
|
||||
<div class="date-timepicker">
|
||||
<div class="datepicker-here" id="showDatetime" data-timepicker="true"></div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Адрес
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input id="showAddress" type="text">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Комментарий
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<textarea id="showComment"></textarea>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div class="modal-submit">
|
||||
|
||||
<button type="button" class="addShowButtonNew">Добавить</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chat-modal__bg hidden" id="chat-modal__bg__meeting">
|
||||
<div class="chat-modal hidden" id="chat-modal__meeting">
|
||||
<span class="pseudo-link closer-obj-events"><i class="ti-close"></i></span>
|
||||
<div class="chat-modal__inner">
|
||||
<h2>Новая встреча</h2>
|
||||
<form>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Выберите<br> дату и время
|
||||
</div>
|
||||
<div class="date-timepicker">
|
||||
<div class="datepicker-here" id="meetDatetime" data-timepicker="true"></div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Адрес
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input id="meetAddress" type="text">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Комментарий
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<textarea id="meetComment"></textarea>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div class="modal-submit">
|
||||
|
||||
<button type="button" class="addMeetButtonNew">Добавить</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="chat-modal__bg hidden" id="chat-modal__bg__deal">
|
||||
<div class="chat-modal hidden" id="chat-modal__deal">
|
||||
<span class="pseudo-link closer-obj-events"><i class="ti-close"></i></span>
|
||||
<div class="chat-modal__inner">
|
||||
<h2>Новая сделка</h2>
|
||||
<form>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Выберите<br> дату и время
|
||||
</div>
|
||||
<div class="date-timepicker">
|
||||
<div class="datepicker-here" id="dealDatetime" data-timepicker="true"></div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Сумма
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input id="dealSum" type="text">
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="form-block">
|
||||
<div class="label">
|
||||
Комментарий
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<textarea id="dealComment"></textarea>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div class="modal-submit">
|
||||
|
||||
<button type="button" class="addDealButtonNew">Добавить</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
show_options_search();
|
||||
get_list();
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
111
admin/complaints.php
Normal file
111
admin/complaints.php
Normal file
@ -0,0 +1,111 @@
|
||||
<?php
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
// закрываем доступ на выполнение запросов
|
||||
if(!$_SESSION['superadmin']) {header("location:/index.php"); die("Доступ запрещён!");}
|
||||
if($_GET['st'])
|
||||
{
|
||||
$sql="UPDATE complaints SET status=1 WHERE id=$_GET[st]";
|
||||
mysql_query($sql);
|
||||
}
|
||||
if($_GET['to_black'])
|
||||
{
|
||||
$sql="UPDATE objects SET black = '1', is_main = 0 WHERE id=$_GET[to_black]";
|
||||
mysql_query($sql);
|
||||
$sql="UPDATE complaints SET status=1 WHERE id_obj=$_GET[to_black]";
|
||||
mysql_query($sql);
|
||||
}
|
||||
if($_GET['to_arch'])
|
||||
{
|
||||
$r = to_archive($_GET['to_arch'],1);
|
||||
$sql="UPDATE complaints SET status=1 WHERE id_obj=$_GET[to_arch]";
|
||||
mysql_query($sql);
|
||||
if($r!==true) echo "<script>location.replace('complaints.php');</script>";
|
||||
}
|
||||
// if($_GET['del'])
|
||||
// {
|
||||
// del_object($_GET['del']);
|
||||
// echo "<script>location.replace('complaints.php');</script>";
|
||||
// }
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/templates/header-admin.php");
|
||||
?>
|
||||
<div class="main-title">
|
||||
<h1>Жалобы</h1>
|
||||
</div>
|
||||
<div class="switch__filter button-row" style="margin: 20px 0;">
|
||||
<a href="?status=0" class="selector-button button-left <?php if($_GET['status']==0) echo 'selected'; ?>">
|
||||
<span>Новые</span>
|
||||
<i class="filter_counter" style="display: block;" id="favorite"><?php echo mysql_result(mysql_query("SELECT COUNT(*) FROM complaints WHERE status=0"),0); ?></i>
|
||||
</a>
|
||||
<a href="?status=1" class="selector-button button-right <?php if($_GET['status']==1) echo 'selected'; ?>">
|
||||
<span>Просмотренные</span>
|
||||
<i class="filter_counter" style="display: block;" id="favorite"><?php echo mysql_result(mysql_query("SELECT COUNT(*) FROM complaints WHERE status=1"),0); ?></i>
|
||||
</a>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<div class="users">
|
||||
|
||||
<?php
|
||||
if($_GET['status'])
|
||||
{
|
||||
$status = $_GET['status'];
|
||||
} else
|
||||
{
|
||||
$status = 0;
|
||||
}
|
||||
$sql="SELECT * FROM complaints WHERE status = $status ORDER BY ID DESC";
|
||||
$rez=mysql_query($sql);
|
||||
if(mysql_num_rows($rez))
|
||||
{
|
||||
$comps = array();
|
||||
while($comp = mysql_fetch_array($rez))
|
||||
{
|
||||
$comps[] = $comp;
|
||||
}
|
||||
foreach ($comps as $comp)
|
||||
{
|
||||
if($comp['id_user'])
|
||||
{
|
||||
$sql1 = "SELECT * FROM users WHERE id=$comp[id_user]";
|
||||
$rez1 = mysql_query($sql1);
|
||||
$user1 = mysql_fetch_assoc($rez1);
|
||||
}
|
||||
echo "<div class='user'>
|
||||
<div class='top'>
|
||||
<div class='date-status'>
|
||||
<span>$comp[date_add]</span>
|
||||
<span>Добавил $user1[fio]</span>
|
||||
</div>
|
||||
<h2>Жалоба $comp[id] на объект <a href='/object.php?id=$comp[id_obj]' target='_blank'>$comp[id_obj]</a></h2>
|
||||
</div>
|
||||
<div class='center'>
|
||||
<div class='user_row row_line'>
|
||||
<div class='col'>
|
||||
<p class='small'>Причина</p>
|
||||
<p><b class='big'>".$COMPLAINT_REASONS["$comp[reason]"]."</b></p>
|
||||
</div>
|
||||
<div class='col'>
|
||||
<p class='small'>Описание</p>
|
||||
<p><b class='big'>$comp[txt]</b></p>
|
||||
</div>
|
||||
<div class='clear'></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='bottom'>
|
||||
<span><a class='fr-btn edit-btn steel i-btn very-small' href='?to_arch=$comp[id_obj]'>В архив</a></span>
|
||||
<span><a class='fr-btn edit-btn steel i-btn very-small' href='?to_black=$comp[id_obj]'>В бан</a></span>
|
||||
|
||||
<span><a class='fr-btn edit-btn steel i-btn very-small' href='?st=$comp[id]'>Увидел</a></span>
|
||||
</div>
|
||||
</div>";
|
||||
}
|
||||
} else echo "<div class='empty-block'><h1><i class='ti-na'></i></h1><h2>Жалоб на объекты нет</h2></div>";
|
||||
|
||||
?>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/templates/footer-admin.php");
|
||||
?>
|
||||
247
admin/dischargeOrderFile.php
Normal file
247
admin/dischargeOrderFile.php
Normal file
@ -0,0 +1,247 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
if (isset($_POST['add_file'])) {
|
||||
|
||||
$err = "";
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
if ($_FILES['request_file']['name']) {
|
||||
if ($_FILES['request_file']['error'] == UPLOAD_ERR_OK) {
|
||||
$ext = end(explode(".", $_FILES['request_file']['name']));
|
||||
$ext = mb_strtolower($ext);
|
||||
|
||||
$name = md5($_FILES['request_file']['tmp_name'] . time()) . "." . $ext;
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/upload/requests")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/upload/requests");
|
||||
}
|
||||
$one = mb_substr($name, 0, 1);
|
||||
|
||||
$file = $_SERVER['DOCUMENT_ROOT'] . "/upload/requests/$one/$name";
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/upload/requests/$one")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/upload/requests/$one");
|
||||
}
|
||||
|
||||
if (move_uploaded_file($_FILES['request_file']['tmp_name'], $file)) {
|
||||
$post['hidden_request_file'] = "/upload/requests/$one/$name";
|
||||
|
||||
}
|
||||
} else {
|
||||
if ($_FILES['request_file']['error'] == UPLOAD_ERR_FORM_SIZE) {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Превышен размер файла. Допустимый размер 1-2 Mb.";
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Ошибка при загрузке: ".$_FILES['request_file']['error'];
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($post['id'])) {
|
||||
if (strlen($err) == 0) {
|
||||
|
||||
$sql = "select * from discharge_object_request where id= $post[id]";
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
$request = mysql_fetch_array($rez);
|
||||
|
||||
$sql = "UPDATE discharge_object_request SET request_file = '" . $post['hidden_request_file'] ."', state = 'done' WHERE id = '" . $post['id'] . "'";
|
||||
mysql_query($sql);
|
||||
|
||||
$message = 'Получена выписка из ЕГРН';
|
||||
|
||||
if ($request['request_type'] == 'move') {
|
||||
$message = $message . " о переходе прав на объект недвижимости.";
|
||||
}
|
||||
|
||||
$message = $message . ' <a href="' . $post['hidden_request_file'] . '" target="_blank">Скачать</a>';
|
||||
|
||||
$sqlObj = "SELECT o.id, o.nazv, o.adres, o.cadastral_number, o.dom, o.korpus, o.litera, o.id_rf_region, rayon.rayon FROM objects o LEFT JOIN rayon rayon on o.rayon = rayon.id WHERE o.id=$request[object_id]";
|
||||
$rezObj = mysql_query($sqlObj);
|
||||
$obj = mysql_fetch_assoc($rezObj);
|
||||
|
||||
$sqlUser = new User();
|
||||
$sqlUser->get($request['user_id']);
|
||||
|
||||
//событие в задачи
|
||||
$sqlEvent = "INSERT INTO user_object_events(user_id, object_id, type, comment) VALUES($request[user_id], $request[object_id], 'comment', '$message')";
|
||||
mysql_query($sqlEvent);
|
||||
|
||||
$noticeText = "Получена выписка из ЕГРН по объекту $obj[nazv]";
|
||||
|
||||
mailClientFromJoywork($sqlUser->email, "Получена выписка из ЕГРН", $noticeText);
|
||||
|
||||
//уведомление в телеграм
|
||||
$sql = "INSERT INTO discharge_user_notice(user_id, text, sended, created_at) VALUES($request[user_id], '$noticeText', 0, NOW())";
|
||||
mysql_query($sql);
|
||||
|
||||
header("location:/admin/dischargeOrders.php");
|
||||
exit();
|
||||
}
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Не найден идентификатор Запроса в запросе.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
if (!isset($get['id'])) {
|
||||
header("location:/admin/dischargeOrders.php");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
if (!isset($post) && $get['id'] > 0) {
|
||||
$sql = "select * from discharge_object_request where id= $get[id]";
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
$request = mysql_fetch_array($rez);
|
||||
|
||||
$sqlUser = new User();
|
||||
$sqlUser->get($request['user_id']);
|
||||
|
||||
$sqlObj = "SELECT o.id, o.nazv, o.adres, o.cadastral_number, o.dom, o.korpus, o.litera, o.id_rf_region, rayon.rayon FROM objects o LEFT JOIN rayon rayon on o.rayon = rayon.id WHERE o.id=$request[object_id]";
|
||||
$rezObj = mysql_query($sqlObj);
|
||||
$obj = mysql_fetch_assoc($rezObj);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<h1>Добавление файла выписки</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="new-object">
|
||||
<form method="post" enctype="multipart/form-data" id="upload-form">
|
||||
<div class="new-object__form">
|
||||
<?php if (isset($err) && strlen($err) > 0) { ?>
|
||||
<div class="block" style="border-bottom: none; color: red;"><?php echo $err; ?></div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Дата выписки:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" name="name" disabled="disabled" style="width: 75%;"
|
||||
value="<? if (isset($request)) echo date_format(date_create($request['created_at']), 'd.m.Y H:i:s'); ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Тип выписки:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" disabled="disabled" style="width: 75%;"
|
||||
value="<? if (isset($request)) echo ($request['request_type'] == 'simple' ? 'Выписка из ЕГРН о характеристиках и правах' : 'Выписка из ЕГРН о переходе прав на объект недвижимости') ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Пользователь:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" disabled="disabled" style="width: 75%;"
|
||||
value="<? if (isset($sqlUser)) echo (($sqlUser->agency ? ($sqlUser->agency_name . " (" . trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name) .")") : trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name)) .
|
||||
' ' . $sqlUser->phone . ' ' . $sqlUser->email) ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Объект:</span>
|
||||
</div>
|
||||
<div class="inputs" style="padding-top: 9px;">
|
||||
<a style="margin-left: 4px;" href="/object.php?id=' . $obj['id'] . '" target="_blank"><?php if (isset($obj)) echo $obj['nazv'] ?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Номер из Росреестра:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" disabled="disabled" style="width: 75%;" value="<? if (isset($request)) echo $request['request_number'] ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Дата из Росреестра:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="text" class="text" disabled="disabled" style="width: 75%;" value="<? if (isset($request)) echo date_format(date_create($request['request_date']), 'd.m.Y H:i:s'); ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Прикрепить выписку:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="6000000"/>
|
||||
<input style="border: 1px solid white;" type="file"
|
||||
class="text" name="request_file"/>
|
||||
<div class="text_comment" style="margin-left: 123px; font-size: 12px;">
|
||||
<div id="upload-result"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="line" style="text-align: right">
|
||||
<button type="submit" class="medium-button">Сохранить</button>
|
||||
<a href="/admin/dischargeOrders.php" class="cancel-button medium-button">Закрыть</a>
|
||||
</div>
|
||||
<input type="hidden" name="add_file" value="1">
|
||||
<input type="hidden" name="hidden_request_file" value="<?php if (isset($request)) {
|
||||
echo $request['request_file'];
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['hidden_request_file'];
|
||||
}
|
||||
} ?>">
|
||||
<input type="hidden" name="id" value="<?php if (isset($request)) {
|
||||
echo $request['id'];
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['id'];
|
||||
}
|
||||
} ?>">
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
205
admin/dischargeOrders.php
Normal file
205
admin/dischargeOrders.php
Normal file
@ -0,0 +1,205 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
//ini_set('display_errors', 1);
|
||||
//error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<h1>Заказы выписок ЕГРН</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<?php
|
||||
|
||||
$sqlCount = "SELECT count(id) FROM discharge_object_request";
|
||||
$rezCount = mysql_query($sqlCount);
|
||||
$count = mysql_result($rezCount, 0);
|
||||
|
||||
$num_on_page = 20;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
$page = $_GET['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$from = ($page - 1) * $num_on_page;
|
||||
|
||||
$all_pages = ceil($count / $num_on_page);
|
||||
|
||||
if ($count > 0) {
|
||||
|
||||
$sql = "select * from discharge_object_request order by created_at DESC LIMIT $from, $num_on_page";
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
if (mysql_num_rows($rez) > 0) {
|
||||
?>
|
||||
|
||||
<div class="jw__NB">
|
||||
<div class="jw__NB__flat-list" style="overflow-x: auto;">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Дата запроса</th>
|
||||
<th>Тип выписки</th>
|
||||
<th>Пользователь</th>
|
||||
<th>Объект</th>
|
||||
<th>Адрес<br/> Кадастровый №</th>
|
||||
<th>Статус</th>
|
||||
<th>Номер из Росреестра</th>
|
||||
<th>Дата из Росреестра</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$num = 1;
|
||||
while($request = mysql_fetch_array($rez)) {
|
||||
|
||||
$sqlUser = new User();
|
||||
$sqlUser->get($request['user_id']);
|
||||
|
||||
$sqlObj = "SELECT o.id, o.nazv, o.adres, o.cadastral_number, o.dom, o.korpus, o.litera, o.id_rf_region, rayon.rayon FROM objects o LEFT JOIN rayon rayon on o.rayon = rayon.id WHERE o.id=$request[object_id]";
|
||||
$rezObj = mysql_query($sqlObj);
|
||||
$obj = mysql_fetch_assoc($rezObj);
|
||||
|
||||
$sqlObjAdditional = "SELECT flat_number FROM objects_additional_information WHERE object_id=$request[object_id]";
|
||||
$rezObjAdditional = mysql_query($sqlObjAdditional);
|
||||
$objAdditional = mysql_fetch_assoc($rezObjAdditional);
|
||||
|
||||
echo '<tr ';
|
||||
|
||||
if ($num % 2 > 0) {
|
||||
echo 'style="background-color: #f9f9f9;"';
|
||||
}
|
||||
|
||||
echo '>';
|
||||
echo '<td>' . date_format(date_create($request['created_at']), 'd.m.Y H:i:s') . '</td>';
|
||||
echo '<td>' . ($request['request_type'] == 'simple' ? 'Выписка из ЕГРН' : 'Выписка из ЕГРН о переходе прав на объект недвижимости') . '</td>';
|
||||
echo '<td>' . ($sqlUser->agency ? ($sqlUser->agency_name . " (" . trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name) .")") : ($sqlUser->agencyName ? trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name) . " (агентство " . $sqlUser->agencyName .")" : trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name)));
|
||||
echo '<br/>' . $sqlUser->phone;
|
||||
echo '<br/>' . $sqlUser->email . '</td>';
|
||||
echo '<td><a href="/object.php?id=' . $obj['id'] . '" target="_blank">' . $obj['nazv'] . '</a></td>';
|
||||
echo '<td>';
|
||||
|
||||
if ($obj['id_rf_region'] == 50) {
|
||||
echo "Ленинградская область";
|
||||
}else if($obj['id_rf_region'] == 81){
|
||||
echo "Санкт Петербург";
|
||||
} else if($obj['id_rf_region'] == 77) {
|
||||
$sqlRegion = "SELECT parent.name as parent,rf_regions.name FROM rf_regions as parent
|
||||
LEFT JOIN rf_regions on rf_regions.parent = parent.id
|
||||
LEFT JOIN rf_region_rayons ON rf_region_rayons.rf_region_id = rf_regions.id
|
||||
WHERE rayon_id in (select rayon from objects where id = $obj[id])";
|
||||
$rezRegion = mysql_query($sqlRegion);
|
||||
if($rezRegion){
|
||||
$region = mysql_fetch_assoc($rezRegion);
|
||||
echo $region['parent'].','.$region['name'].' округ';
|
||||
}
|
||||
}else{
|
||||
$sqlRegion = "SELECT rf_regions.name FROM rf_regions
|
||||
LEFT JOIN rf_region_rayons ON rf_region_rayons.rf_region_id = rf_regions.id
|
||||
WHERE rayon_id in (select rayon from objects where id = $obj[id])";
|
||||
$rezRegion = mysql_query($sqlRegion);
|
||||
if($rezRegion){
|
||||
$region = mysql_fetch_assoc($rezRegion);
|
||||
echo $region['name'];
|
||||
}
|
||||
}
|
||||
|
||||
echo ', ';
|
||||
|
||||
if (strpos($obj['rayon'], "район")) {
|
||||
echo $obj['rayon'];
|
||||
} else {
|
||||
echo $obj['rayon'] . " район";
|
||||
}
|
||||
|
||||
echo ', ';
|
||||
echo $obj['adres'];
|
||||
if ($obj['dom']) {
|
||||
echo ", " . $obj['dom'];
|
||||
}
|
||||
if ($obj['korpus']) {
|
||||
echo ", к. " . $obj['korpus'];
|
||||
}
|
||||
if ($obj['litera']) {
|
||||
echo ", лит. " . $obj['litera'];
|
||||
}
|
||||
if ($objAdditional['flat_number']) {
|
||||
echo ", кв. " . $objAdditional['flat_number'];
|
||||
}
|
||||
echo ' <br/> № ' . $obj['cadastral_number'] . '</td>';
|
||||
echo '<td>';
|
||||
if ($request['state'] == 'created') {
|
||||
echo "Запрос создан";
|
||||
}
|
||||
if ($request['state'] == 'sended') {
|
||||
echo "Выписка заказана";
|
||||
}
|
||||
if ($request['state'] == 'done') {
|
||||
echo "Выписка получена";
|
||||
}
|
||||
echo '</td>';
|
||||
echo '<td>' . $request['request_number'] . '</td>';
|
||||
echo '<td>' . $request['request_date'] . '</td>';
|
||||
if ($request['state'] == 'created') {
|
||||
echo '<td width="50"><a href="javascript:{}" data-id="' . $request['id'] . '" onclick="openChangeDischargeObjectRequest(this);">Выписка заказана</a></td>';
|
||||
} else {
|
||||
if ($request['state'] == 'sended') {
|
||||
echo '<td width="50"><a href="/admin/dischargeOrderFile.php?id=' . $request['id'] . '" onclick="">Выписка получена</a></td>';
|
||||
} else {
|
||||
echo '<td width="50"><a target="_blank" href="' . $request['request_file'] . '" onclick="">Скачать выписку</a></td>';
|
||||
}
|
||||
}
|
||||
echo '</tr>';
|
||||
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
if ($all_pages > 1) {
|
||||
num_of_pages($page, $all_pages, '');
|
||||
}
|
||||
echo '</ul></div>';
|
||||
|
||||
?>
|
||||
</div>
|
||||
<? } ?>
|
||||
<? } else echo "<div class='empty-block'><h1><i class='ti-na'></i></h1><h2>Заказов не найдено</h2></div>" ?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function confirmPay(requestId) {
|
||||
$.ajax({
|
||||
url: '/admin/ajax/confirmRequestPay.php?id=' + requestId,
|
||||
success:function(data){
|
||||
window.location.reload(true);
|
||||
},
|
||||
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
||||
console.log("eRROR: " + errorThrown + "; status:" + textStatus);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
131
admin/dischargePay.php
Normal file
131
admin/dischargePay.php
Normal file
@ -0,0 +1,131 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
/*ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);*/
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<h1>Оплата выписок ЕГРН</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<?php
|
||||
|
||||
$sqlCount = "SELECT count(id) FROM discharge_user_request";
|
||||
$rezCount = mysql_query($sqlCount);
|
||||
$count = mysql_result($rezCount, 0);
|
||||
|
||||
$num_on_page = 20;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
$page = $_GET['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$from = ($page - 1) * $num_on_page;
|
||||
|
||||
$all_pages = ceil($count / $num_on_page);
|
||||
|
||||
if ($count > 0) {
|
||||
|
||||
$sql = "select * from discharge_user_request order by created_at DESC LIMIT $from, $num_on_page";
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
if (mysql_num_rows($rez) > 0) {
|
||||
?>
|
||||
|
||||
<div class="jw__NB">
|
||||
<div class="jw__NB__flat-list">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Дата запроса</th>
|
||||
<th>ФИО пользователя</th>
|
||||
<th>Телефон пользователя</th>
|
||||
<th>Email пользователя</th>
|
||||
<th>Количество выписок</th>
|
||||
<th>Цена</th>
|
||||
<th>Оплачено</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$num = 1;
|
||||
while($request = mysql_fetch_array($rez)) {
|
||||
|
||||
$sqlUser = new User();
|
||||
|
||||
$sqlUser->get($request['user_id']);
|
||||
|
||||
echo '<tr ';
|
||||
|
||||
if ($num % 2 > 0) {
|
||||
echo 'style="background-color: #f9f9f9;"';
|
||||
}
|
||||
|
||||
echo '>';
|
||||
echo '<td>' . date_format(date_create($request['created_at']), 'd.m.Y H:i:s') . '</td>';
|
||||
echo '<td>' . ($sqlUser->agency ? ($sqlUser->agency_name . "<br/> (" . trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name) .")") : trim($sqlUser->last_name . ' ' . $sqlUser->first_name . ' ' . $sqlUser->middle_name)) . '</td>';
|
||||
echo '<td>' . $sqlUser->phone . '</td>';
|
||||
echo '<td>' . $sqlUser->email . '</td>';
|
||||
echo '<td>' . $request['count'] . '</td>';
|
||||
echo '<td>' . $request['price'] . '</td>';
|
||||
echo '<td>' . ($request['paid'] == 0 ? "Нет" : "Да") . '</td>';
|
||||
if ($request['paid'] == 0) {
|
||||
echo '<td width="50"><a href="javascript:{}" onclick="confirmPay(' . $request['id'] . ');">Подтвердить оплату</a></td>';
|
||||
} else {
|
||||
echo '<td width="50"> </td>';
|
||||
}
|
||||
echo '</tr>';
|
||||
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
if ($all_pages > 1) {
|
||||
num_of_pages($page, $all_pages, $url_params);
|
||||
}
|
||||
echo '</ul></div>';
|
||||
|
||||
?>
|
||||
</div>
|
||||
<? } ?>
|
||||
<? } else echo "<div class='empty-block'><h1><i class='ti-na'></i></h1><h2>Заказов не найдено</h2></div>" ?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function confirmPay(requestId) {
|
||||
$.ajax({
|
||||
url: '/admin/ajax/confirmRequestPay.php?id=' + requestId,
|
||||
success:function(data){
|
||||
window.location.reload(true);
|
||||
},
|
||||
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
||||
console.log("eRROR: " + errorThrown + "; status:" + textStatus);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
73
admin/dischargeTariffs.php
Normal file
73
admin/dischargeTariffs.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<h1>Тарифы для выписок ЕГРН</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<?php
|
||||
|
||||
$sql = "select * from discharge_tariff";
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
?>
|
||||
|
||||
<div class="jw__NB">
|
||||
<div class="jw__NB__flat-list">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Количество выписок</th>
|
||||
<th>Цена</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$num = 1;
|
||||
while($dischargeTariff = mysql_fetch_array($rez)) {
|
||||
|
||||
echo '<tr ';
|
||||
|
||||
if ($num % 2 > 0) {
|
||||
echo 'style="background-color: #f9f9f9;"';
|
||||
}
|
||||
|
||||
echo '>';
|
||||
echo '<td>' . $dischargeTariff['id'] . '</td>';
|
||||
echo '<td>' . $dischargeTariff['count'] . '</td>';
|
||||
echo '<td>' . $dischargeTariff['price'] . '</td>';
|
||||
echo '<td width="50"><a href="/admin/dischargeTariffsEdit.php?id=' . $dischargeTariff['id'] . '" title="Редактировать"><i class="ti-pencil"></i></a></td>';
|
||||
echo '</tr>';
|
||||
|
||||
$num++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
|
||||
?>
|
||||
110
admin/dischargeTariffsEdit.php
Normal file
110
admin/dischargeTariffsEdit.php
Normal file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
if (isset($_POST['add_tariff'])) {
|
||||
|
||||
$err = "";
|
||||
|
||||
$post = clearInputData($_POST);
|
||||
|
||||
if (isset($post['id'])) {
|
||||
if (strlen($err) == 0) {
|
||||
|
||||
$sqlUpdate = "UPDATE discharge_tariff SET count = '$post[count]', price = '$post[price]' WHERE id = $post[id]";
|
||||
mysql_query($sqlUpdate);
|
||||
|
||||
header("location:/admin/dischargeTariffs.php");
|
||||
exit();
|
||||
}
|
||||
} else {
|
||||
if (strlen($err) > 0) {
|
||||
$err = $err . "<br/>";
|
||||
}
|
||||
$err .= "Не найден идентификатор тарифа в запросе.";
|
||||
}
|
||||
}
|
||||
|
||||
$get = clearInputData($_GET);
|
||||
|
||||
if (!isset($get['id'])) {
|
||||
header("location:/admin/dischargeTariffs.php");
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
|
||||
if (!isset($post) && $get['id'] > 0) {
|
||||
$sql = "select * from discharge_tariff where id= $get[id]";
|
||||
$rez = mysql_query($sql);
|
||||
|
||||
$tariff = mysql_fetch_array($rez);
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
<h1>Редактирование тарифа выписок ЕГРН</h1>
|
||||
</div>
|
||||
|
||||
<div class="users fr__users" style="margin-right: 20px;">
|
||||
|
||||
<div class="new-object">
|
||||
<form method="post">
|
||||
<div class="new-object__form">
|
||||
<?php if (isset($err) && strlen($err) > 0) { ?>
|
||||
<div class="block" style="border-bottom: none; color: red;"><?php echo $err; ?></div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="block">
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Количество:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="number" class="text" name="count" style="width: 75%;"
|
||||
value="<? if (isset($post)) echo $post['count'];
|
||||
if (isset($tariff)) echo $tariff['count']; ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="label">
|
||||
<span>Цена:</span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<input type="number" class="text" name="price" style="width: 75%;"
|
||||
value="<? if (isset($post)) echo $post['price'];
|
||||
if (isset($tariff)) echo $tariff['price']; ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="line" style="text-align: right">
|
||||
<button type="submit" class="medium-button">Сохранить</button>
|
||||
<a href="/admin/dischargeTariffs.php" class="cancel-button medium-button">Закрыть</a>
|
||||
</div>
|
||||
<input type="hidden" name="add_tariff" value="1">
|
||||
<input type="hidden" name="id" value="<?php if (isset($tariff)) {
|
||||
echo $tariff['id'];
|
||||
} else {
|
||||
if (isset($post)) {
|
||||
echo $post['id'];
|
||||
}
|
||||
} ?>">
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
?>
|
||||
54
admin/documentsWidget.php
Normal file
54
admin/documentsWidget.php
Normal file
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
echo '<div class="row">';
|
||||
echo '<a href="#" class="goToRootDocsFolder" data-targetid="' . $manager->getTarget()->getDocTargetId() .
|
||||
'" data-targettype="' . $manager->getTarget()->getDocTargetType() . '" title="Перейти в корневую папку"> / </a>';
|
||||
if (!$dirObject->isRoot()) {
|
||||
echo "<span>" . $dirObject->getName() . "</span>";
|
||||
}
|
||||
echo '</div>';
|
||||
|
||||
if (!$dirObject->isRoot()) {
|
||||
echo '<div class="row">';
|
||||
echo '<a style="display: inline-block;width: 100%;" class="goToDocsFolder" data-targetid="' . $manager->getTarget()->getDocTargetId() .
|
||||
'" data-targettype="' . $manager->getTarget()->getDocTargetType() . '" data-dirid="'. $dirObject->getParent() .'" title="Перейти на уровень выше" href = "#"><i class="ti-back-right"></i> .. </a >';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
foreach ($collection->getDirs() as $dir) {
|
||||
echo '<div class="row">';
|
||||
echo '<div style="float: left; width: 90%;">';
|
||||
echo '<div style="margin-left: 10px;">';
|
||||
echo '<a style="display: inline-block;width: 100%;" title="Перейти в папку" class="goToDocsFolder" data-targetid="' . $manager->getTarget()->getDocTargetId() .
|
||||
'" data-targettype="' . $manager->getTarget()->getDocTargetType() . '" data-dirid="'. $dir->getId() .'" href="#"><i class="ti-folder"></i> ';
|
||||
echo $dir->getName();
|
||||
echo '</a>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
echo '<div style="float: right; width: 10%;text-align: right;">';
|
||||
echo '<a title="Переименовать папку" href="#" class="renameDocsFolder" data-name="' . $dir->getName(). '" data-targetid="' . $manager->getTarget()->getDocTargetId() .
|
||||
'" data-targettype="' . $manager->getTarget()->getDocTargetType() . '" data-id="' . $dir->getId() . '"><i class="ti-pencil"></i></a> <a href="#" class="deleteDocsFolder" data-targetid="' . $manager->getTarget()->getDocTargetId() .
|
||||
'" data-targettype="' . $manager->getTarget()->getDocTargetType() . '" data-id="' . $dir->getId() . '" title="Удалить папку"><i class="ti-trash"></i></a>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
foreach ($collection->getFiles() as $file) {
|
||||
|
||||
$fileUrl = $file->getUrl();
|
||||
|
||||
echo '<div class="row">';
|
||||
echo '<div style="float: left; width: 90%;">';
|
||||
echo '<div style="margin-left: 10px;">';
|
||||
echo '<a style="display: inline-block;width: 100%;" title="Скачать" target="_blank" href="' . $fileUrl . '"><i class="ti-file"></i> ';
|
||||
echo $file->getName();
|
||||
echo '</a>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
echo '<div style="float: right; width: 10%;text-align: right;">';
|
||||
echo '<a title="Переименовать файл" href="#" class="renameDocsFile" data-name="' . $file->getName(). '" data-targetid="' . $manager->getTarget()->getDocTargetId() .
|
||||
'" data-targettype="' . $manager->getTarget()->getDocTargetType() . '" data-id="' . $file->getId() . '"><i class="ti-pencil"></i></a> <a href="#" class="deleteDocsFile" data-targetid="' . $manager->getTarget()->getDocTargetId() .
|
||||
'" data-targettype="' . $manager->getTarget()->getDocTargetType() . '" data-id="' . $file->getId() . '" title="Удалить файл"><i class="ti-trash"></i></a>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
63
admin/import.php
Normal file
63
admin/import.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
if (!isset($_SESSION['superadmin'])) {
|
||||
header("location:/index.php");
|
||||
die("Доступ запрещён!");
|
||||
}
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImporterService.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/ImportReport.php';
|
||||
|
||||
if (isset($_GET['run']) && $_GET['run'] == 1) {
|
||||
(new ImporterService())->setForceImport(1);
|
||||
header("location:/admin/import.php");
|
||||
}
|
||||
|
||||
$importerService = new ImporterService();
|
||||
|
||||
$willBeRun = $importerService->isForceStart();
|
||||
$isImporterActive = $importerService->isActive();
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/header-admin.php");
|
||||
?>
|
||||
<div class="main-title">
|
||||
<h1>Выгрузка</h1>
|
||||
</div>
|
||||
<br/>
|
||||
<div class="users">
|
||||
<?php if ($willBeRun && !$isImporterActive):?>
|
||||
<div style="color: red;">Выгрузка будет запущена в ближайшие 5 минут.</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($isImporterActive):?>
|
||||
<div style="color: red;">В данный момент работает выгрузка.</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!$willBeRun && !$isImporterActive) { ?>
|
||||
<div>
|
||||
<a href="/admin/import.php?run=1" class="medium-button runImport" >Запустить выгрузку</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<div>Логи за последние 2 недели:</div>
|
||||
|
||||
<br/>
|
||||
|
||||
<ul style="list-style: inside; line-height: 2;">
|
||||
<?php foreach(ImportReport::getList() as $ts => $file): ?>
|
||||
<li><a target="_blank" href="https://joywork.ru/import/reports/<?php echo $file; ?>"><?php echo date('H:i d-m-y', $ts); ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/templates/footer-admin.php");
|
||||
?>
|
||||
903
admin/index.php
Normal file
903
admin/index.php
Normal file
@ -0,0 +1,903 @@
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||||
|
||||
// закрываем доступ на выполнение запросов
|
||||
|
||||
if(!$_SESSION['superadmin']) {header("location:/index.php"); die("Доступ запрещён!");}
|
||||
|
||||
$starttime = microtime(true);
|
||||
|
||||
$url_params = '';
|
||||
$url_params_with_page = '';
|
||||
if (isset($_GET['agent'])) {
|
||||
$url_params = $url_params."agent=".$_GET['agent'];
|
||||
}
|
||||
|
||||
if (isset($_GET['block'])) {
|
||||
if (strlen($url_params) > 0) {
|
||||
$url_params = $url_params."&";
|
||||
}
|
||||
$url_params = $url_params."block=1";
|
||||
}
|
||||
|
||||
if (isset($_GET['active'])) {
|
||||
if (strlen($url_params) > 0) {
|
||||
$url_params = $url_params."&";
|
||||
}
|
||||
$url_params = $url_params."active=1";
|
||||
}
|
||||
|
||||
if (isset($_GET['search'])) {
|
||||
if (strlen($url_params) > 0) {
|
||||
$url_params = $url_params."&";
|
||||
}
|
||||
$url_params = $url_params."search=".$_GET['search'];
|
||||
}
|
||||
|
||||
$url_params_with_page = $url_params;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
if (strlen($url_params) > 0) {
|
||||
$url_params_with_page = $url_params_with_page."&";
|
||||
}
|
||||
$url_params_with_page = $url_params_with_page."page=".$_GET['page'];
|
||||
}
|
||||
|
||||
if($_GET['ok_tarif']) {
|
||||
|
||||
User::changeTarif();
|
||||
|
||||
header("location:index.php?".$url_params_with_page);
|
||||
}
|
||||
|
||||
if(isset($_GET['blocked'])) {
|
||||
User::set_blocked($_GET['blocked'],$_GET['id_user']);
|
||||
|
||||
header("location:index.php?".$url_params_with_page);
|
||||
|
||||
}
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/templates/header-admin.php");
|
||||
|
||||
?>
|
||||
|
||||
<div class="main-title">
|
||||
|
||||
<h1>Пользователи</h1>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="users fr__users">
|
||||
|
||||
<div class="head-filter__top">
|
||||
|
||||
<div class="top-line">
|
||||
|
||||
<div class="head-filter-search">
|
||||
|
||||
<div class="form-search">
|
||||
|
||||
<form>
|
||||
|
||||
<input type="search" name="search" class="text" placeholder="Имя, эл. почта или номер телефона" value="<?php echo $_GET['search']; ?>">
|
||||
|
||||
<span class="search-icon">
|
||||
|
||||
<i class="ti-search"></i>
|
||||
|
||||
</span>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="switch__filter button-row">
|
||||
|
||||
<a href="/admin/index.php" class="selector-button button-left <?php if(!$_GET['agent'] && !$_GET['developer'] && !$_GET['search'] && !$_GET['block'] && !$_GET['active']) echo 'selected'; ?>">
|
||||
|
||||
<span>Агентства</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountAgency(0, false); ?></i>
|
||||
|
||||
</a>
|
||||
|
||||
<a href="/admin/index.php?agent=1" class="selector-button button-center <?php if($_GET['agent'] && !$_GET['block'] && !$_GET['active']) echo 'selected'; ?>">
|
||||
|
||||
<span>Агенты</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountAgency(1, false); ?></i>
|
||||
|
||||
</a>
|
||||
|
||||
<a href="/admin/index.php?developer=1" class="selector-button button-center <?php if($_GET['developer'] && !$_GET['block'] && !$_GET['active']) echo 'selected'; ?>">
|
||||
|
||||
<span>Застройщики</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountDeveloper(false); ?></i>
|
||||
|
||||
</a>
|
||||
|
||||
<a href="/admin/index.php?block=1" class="selector-button button-center <?php if(!$_GET['agent'] && !$_GET['developer'] && $_GET['block']) echo 'selected'; ?>">
|
||||
|
||||
<span>ЧС агентства</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountAgency(0, true); ?></i>
|
||||
|
||||
</a>
|
||||
|
||||
<a href="/admin/index.php?agent=1&block=1" class="selector-button button-right <?php if($_GET['agent'] && $_GET['block']) echo 'selected'; ?>">
|
||||
|
||||
<span>ЧС агенты</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountAgency(1, true); ?></i>
|
||||
|
||||
</a>
|
||||
<!--
|
||||
<a href="/admin/index.php?developer=1&block=1" class="selector-button button-right <?php if($_GET['developer'] && $_GET['block']) echo 'selected'; ?>">
|
||||
|
||||
<span>ЧС застройщики</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountDeveloper(true); ?></i>
|
||||
|
||||
</a> -->
|
||||
|
||||
<a href="/admin/index.php?active=1" class="selector-button button-center <?php if(!$_GET['agent'] && !$_GET['developer'] && !$_GET['domclick'] && !$_GET['block'] && $_GET['active']) echo 'selected'; ?>">
|
||||
|
||||
<span>Актив. агентства</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountAgency(0, false, true); ?></i>
|
||||
|
||||
</a>
|
||||
|
||||
<a href="/admin/index.php?agent=1&active=1" class="selector-button button-right <?php if($_GET['agent'] && !$_GET['block'] && $_GET['active']) echo 'selected'; ?>">
|
||||
|
||||
<span>Актив. агенты</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountAgency(1, false, true); ?></i>
|
||||
|
||||
</a>
|
||||
|
||||
<a href="/admin/index.php?developer=1&active=1" class="selector-button button-right <?php if($_GET['developer'] && !$_GET['block'] && $_GET['active']) echo 'selected'; ?>">
|
||||
|
||||
<span>Актив. застройщики</span>
|
||||
|
||||
<i class="filter_counter" style="display: block;"><?php echo User::getCountDeveloper(false, true); ?></i>
|
||||
|
||||
</a>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$num_on_page = 10;
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
$page = $_GET['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$from = ($page - 1) * $num_on_page;
|
||||
|
||||
if ($_GET['search']) {
|
||||
$count_users = User::countUsers($_GET['agent']);
|
||||
$users = [];
|
||||
if ($count_users > 0) {
|
||||
$users = User::searchUsers($_GET['agent'], $from, $num_on_page);
|
||||
}
|
||||
}
|
||||
else if (isset($_GET['developer']))
|
||||
{
|
||||
$count_users = User::getCountDeveloper($_GET['block'], $_GET['active']);
|
||||
|
||||
$users = [];
|
||||
if ($count_users > 0)
|
||||
{
|
||||
$users = User::getAllDeveloper($_GET['block'], $_GET['active'], $from, $num_on_page);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$count_users = User::countAllAgency($_GET['agent'], $_GET['block'], $_GET['active']);
|
||||
$users = [];
|
||||
if ($count_users > 0) {
|
||||
$users = User::getAllAgency($_GET['agent'], $_GET['block'], $_GET['active'], $from, $num_on_page);
|
||||
}
|
||||
}
|
||||
|
||||
$all_pages = ceil($count_users / $num_on_page);
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
|
||||
if($all_pages > 1) {
|
||||
|
||||
num_of_pages($page, $all_pages, $url_params);
|
||||
|
||||
}
|
||||
|
||||
echo '</ul><div class="clear"></div></div>';
|
||||
|
||||
$getUsersTime = microtime(true);
|
||||
|
||||
foreach($users as $agent)
|
||||
{
|
||||
|
||||
$agent['moderation_advert'] = 0;
|
||||
|
||||
$result_frame = mysql_query("SELECT users.id, users.presentation_frame pf FROM users WHERE presentation_frame = 1 AND users.id = $agent_id");
|
||||
|
||||
|
||||
if(mysql_num_rows(mysql_query("SELECT id FROM advert_moderation_agency WHERE agency_id={$agent['id']}")) > 0){
|
||||
$agent['moderation_advert'] = 1;
|
||||
}
|
||||
|
||||
if (mysql_num_rows($result_frame) > 0) {
|
||||
$agent['presentation_frame'] = 1;
|
||||
}
|
||||
|
||||
if($agent['blocked'])
|
||||
{
|
||||
$style = "style='background:rgba(247, 220, 220, 0.6);' title='Заблокирован'";
|
||||
$word_blocked = "Разблокировать";
|
||||
$new_block = 0;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$style = "";
|
||||
$word_blocked = "Заблокировать";
|
||||
$new_block = 1;
|
||||
}
|
||||
|
||||
$online = mysql_fetch_assoc(mysql_query("SELECT DATE_FORMAT(entry,'%d.%m.%Y %H:%i') AS entry FROM online WHERE id_user=$agent[id]"));
|
||||
|
||||
if ($online)
|
||||
{
|
||||
$onl = "<div class='status green' title='Время захода'><i>$online[entry]</i></div>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$onl = "<div class='status red' title='Последняя авторизация'><i>$agent[last_auth]</i></div>";
|
||||
}
|
||||
|
||||
$role_box = "";
|
||||
if ($agent['role_developer'])
|
||||
{
|
||||
$role_box = "<div class='status border' title='Застройщик'><i>Застройщик</i></div>";
|
||||
}
|
||||
|
||||
if($agent['id_tarif'])
|
||||
{
|
||||
|
||||
$oplata = "Оплачено";
|
||||
|
||||
$tarif = new Tarif;
|
||||
|
||||
$tarif->get($agent['id_tarif']);
|
||||
|
||||
$date_end = $agent['date_tarif'] + $tarif->period * 3600 * 24;
|
||||
|
||||
$date_end_f = date("d.m.Y H:i",$date_end);
|
||||
|
||||
$dney = ceil(($date_end - time()) / 24 / 3600);
|
||||
|
||||
if($dney < 0) {
|
||||
$dney = 0; $oplata = "Не оплачено";
|
||||
}
|
||||
|
||||
if ($dney == -0) {
|
||||
$dney = 0;
|
||||
}
|
||||
|
||||
$dney = "<a title='$date_end_f' href='#' class='changeTarif' data-id='$agent[id]' data-tarif='$agent[id_tarif]'>$dney ".padezh_day($dney)."</a>";
|
||||
|
||||
$tarif = "<a title='$date_end_f' href='#' class='changeTarif' data-id='$agent[id]' data-tarif='$agent[id_tarif]'>$agent[tarif]</a>";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$dney = "";
|
||||
}
|
||||
|
||||
list($d,$m,$y) = explode(".",$agent['date_reg']);
|
||||
|
||||
$date_reg = $d." ".getRusMonth($m)." ".$y;
|
||||
|
||||
if($agent[id_manager])
|
||||
{
|
||||
$mstr = mysql_fetch_assoc(mysql_query("SELECT agency, manager, agency_name, first_name, last_name, middle_name, id_manager FROM users WHERE id=$agent[id_manager]"));
|
||||
|
||||
if($mstr['id_manager']) $mstr2 = mysql_fetch_assoc(mysql_query("SELECT agency, manager, agency_name, first_name, last_name, middle_name, id_manager FROM users WHERE id=$mstr[id_manager]"));
|
||||
|
||||
if($mstr['agency'])
|
||||
{
|
||||
$master = "Агентство $mstr[agency_name]";
|
||||
}
|
||||
else if ($mstr['manager'])
|
||||
{
|
||||
$master = "Менеджер " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']) . " (" . trim($mstr2['last_name'] . ' ' . $mstr2['first_name'] . ' ' . $mstr2['middle_name']) . ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
$master = "Агент " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']); // хозяином агент быть не может, ну да пускай будет
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$master = 0;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<div class="user" <?php echo $style; ?>>
|
||||
|
||||
<div class="top">
|
||||
|
||||
<div class="date-status">
|
||||
|
||||
<span>Регистрация: <?php echo $date_reg; ?></span>
|
||||
|
||||
<div class="status border"><i><?php echo $oplata; ?></i></div>
|
||||
|
||||
<?php echo $onl; ?>
|
||||
<?= $role_box; ?>
|
||||
|
||||
<?php if($_GET['search'] and $master) echo '<div class="status border"><i><b class="ti-bookmark"></b> '.$master.'</i></div>'; ?>
|
||||
|
||||
</div>
|
||||
|
||||
<h2><?php
|
||||
if ($agent['agency'] == 1 || $agent['role_developer'] == 1)
|
||||
echo $agent['agency_name'];
|
||||
else
|
||||
echo trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']);
|
||||
?></h2>
|
||||
|
||||
<?php if ($agent['agency'] == 0 && $agent['agent'] == 1 && $agent['id_manager'] == 0 && $agent['id'] != 6189 && $agent['id'] != 2683) {
|
||||
|
||||
$sqlCountZipalPackFeed = "SELECT count(objects.id) FROM objects objects WHERE objects.id in
|
||||
(SELECT p.object_id FROM advertising_package_object_publish p WHERE p.active = 1 and
|
||||
p.user_id in (SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id]))))";
|
||||
|
||||
$rezCountZipalPackFeed = mysql_query($sqlCountZipalPackFeed, $mdb);
|
||||
$feedZipalPackCount = (int)mysql_result($rezCountZipalPackFeed, 0);
|
||||
|
||||
$sqlCountZipalFeed = "SELECT count(objects.id)
|
||||
FROM objects objects WHERE objects.add_to_zipal = 1 and objects.id_add_user in
|
||||
(SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountZipalFeed = mysql_query($sqlCountZipalFeed, $mdb);
|
||||
$feedZipalCount = (int)mysql_result($rezCountZipalFeed, 0) + $feedZipalPackCount;
|
||||
|
||||
$objectsZipalUrl = "https://joywork.ru/objects-from-feed.php?zipal=1&id_agent=".$agent['id'];
|
||||
?>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Размещение на Zipal.ru</b>: <a target="_blank" href="<?php echo $objectsZipalUrl;?>"><?php echo $feedZipalCount; ?></a></div>
|
||||
|
||||
<?php }?>
|
||||
|
||||
<?php if (($agent['agency'] == 1 && $agent['agent'] == 1) || ($agent['agency'] == 0 && $agent['id_manager'] == 0 && $agent['manager'] == 0 && $agent['agent'] == 1)) {
|
||||
|
||||
$sqlCountFeed = "SELECT count(objects.id) FROM objects objects WHERE objects.archive <> 1 and objects.id_add_user > 0 and objects.add_to_yandex_feed = 1
|
||||
and objects.id_add_user in (SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountFeed = mysql_query($sqlCountFeed, $mdb);
|
||||
$feedCount = mysql_result($rezCountFeed,0);
|
||||
|
||||
$sqlCountAvitoFeed = "SELECT count(objects.id)
|
||||
FROM objects objects
|
||||
WHERE objects.archive <> 1
|
||||
and objects.add_to_avito_feed = 1 and objects.id_add_user in
|
||||
(SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountAvitoFeed = mysql_query($sqlCountAvitoFeed, $mdb);
|
||||
$feedAvitoCount = mysql_result($rezCountAvitoFeed,0);
|
||||
|
||||
$sqlCountCianFeed = "SELECT count(objects.id)
|
||||
FROM objects objects
|
||||
WHERE objects.archive <> 1
|
||||
and objects.add_to_cian_feed = 1 and objects.id_add_user in
|
||||
(SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountCianFeed = mysql_query($sqlCountCianFeed, $mdb);
|
||||
$feedCianCount = mysql_result($rezCountCianFeed,0);
|
||||
|
||||
$sqlCountDomFeed = "SELECT count(objects.id)
|
||||
FROM objects objects
|
||||
WHERE objects.archive <> 1
|
||||
and objects.add_to_domclick_feed = 1 and objects.id_add_user in
|
||||
(SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountDomFeed = mysql_query($sqlCountDomFeed, $mdb);
|
||||
$feedDomCount = mysql_result($rezCountDomFeed,0);
|
||||
|
||||
$sqlCountEmlsFeed = "SELECT count(objects.id)
|
||||
FROM objects objects
|
||||
WHERE objects.archive <> 1
|
||||
and objects.add_to_emls_feed = 1 and objects.id_add_user in
|
||||
(SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountEmlsFeed = mysql_query($sqlCountEmlsFeed, $mdb);
|
||||
$feedEmlsCount = mysql_result($rezCountEmlsFeed,0);
|
||||
|
||||
$sqlCountBnFeed = "SELECT count(objects.id)
|
||||
FROM objects objects
|
||||
WHERE objects.archive <> 1
|
||||
and objects.add_to_bn_feed = 1 and objects.id_add_user in
|
||||
(SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountBnFeed = mysql_query($sqlCountBnFeed, $mdb);
|
||||
$feedBnCount = mysql_result($rezCountBnFeed, 0);
|
||||
|
||||
$sqlCountZipalPackFeed = "SELECT count(objects.id) FROM objects objects WHERE objects.id in
|
||||
(SELECT p.object_id FROM advertising_package_object_publish p WHERE p.active = 1 and
|
||||
p.user_id in (SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id]))))";
|
||||
|
||||
$rezCountZipalPackFeed = mysql_query($sqlCountZipalPackFeed, $mdb);
|
||||
$feedZipalPackCount = (int)mysql_result($rezCountZipalPackFeed, 0);
|
||||
|
||||
$sqlCountZipalFeed = "SELECT count(objects.id)
|
||||
FROM objects objects WHERE objects.add_to_zipal = 1 and objects.id_add_user in
|
||||
(SELECT id FROM `users` WHERE id=$agent[id] or id_manager=$agent[id] or id_manager in (select id from users where id_manager=$agent[id]) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agent[id])))";
|
||||
|
||||
$rezCountZipalFeed = mysql_query($sqlCountZipalFeed, $mdb);
|
||||
$feedZipalCount = (int)mysql_result($rezCountZipalFeed, 0) + $feedZipalPackCount;
|
||||
|
||||
$yandexFeedName = $agent['id'];
|
||||
|
||||
if ($yandexFeedName == 177) {
|
||||
$yandexFeedName = "1ght764cndh";
|
||||
}
|
||||
|
||||
$feedUrl = "https://joywork.ru/feeds/".$yandexFeedName.".xml";
|
||||
$avFeedUrl = "https://joywork.ru/av_feeds/".$agent['id'].".xml";
|
||||
$cianFeed2Url = "https://joywork.ru/cian_feed_v2/".$agent['id'].".xml";
|
||||
$emlsFeed = "https://joywork.ru/cian_feed_jcat/".$agent['id'].".xml";
|
||||
$bnYandexFeedUrl = "https://joywork.ru/bn_ya_feeds/".$agent['id'].".xml";
|
||||
$domFeedUrl = "https://joywork.ru/dom_feeds/".$agent['id'].".xml";
|
||||
$objectsUrl = "https://joywork.ru/objects-from-feed.php?id_agent=".$agent['id'];
|
||||
$objectsAvitoUrl = "https://joywork.ru/objects-from-feed.php?avito=1&id_agent=".$agent['id'];
|
||||
$objectsCianUrl = "https://joywork.ru/objects-from-feed.php?cian=1&id_agent=".$agent['id'];
|
||||
$objectsEmlsUrl = "https://joywork.ru/objects-from-feed.php?emls=1&id_agent=".$agent['id'];
|
||||
$objectsBnUrl = "https://joywork.ru/objects-from-feed.php?bn=1&id_agent=".$agent['id'];
|
||||
$objectsZipalUrl = "https://joywork.ru/objects-from-feed.php?zipal=1&id_agent=".$agent['id'];
|
||||
$objectsDomUrl = "https://joywork.ru/objects-from-feed.php?dom=1&id_agent=".$agent['id'];
|
||||
?>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Яндекс</b>: <a target="_blank" href="<?php echo $feedUrl; ?>"><?php echo $feedUrl; ?></a> (<a target="_blank" href="<?php echo $objectsUrl;?>"><?php echo $feedCount; ?></a>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Авито</b>: <a target="_blank" href="<?php echo $avFeedUrl; ?>"><?php echo $avFeedUrl; ?></a> (<a target="_blank" href="<?php echo $objectsAvitoUrl;?>"><?php echo $feedAvitoCount; ?></a>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид ЦИАН v2</b>: <a target="_blank" href="<?php echo $cianFeed2Url; ?>"><?php echo $cianFeed2Url; ?></a> (<a target="_blank" href="<?php echo $objectsCianUrl;?>"><?php echo $feedCianCount; ?></a>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Циан Jcat</b>: <a target="_blank" href="<?php echo $emlsFeed; ?>"><?php echo $emlsFeed; ?></a> (<a target="_blank" href="<?php echo $objectsEmlsUrl;?>"><?php echo $feedEmlsCount; ?></a>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид яндекс для BN.ru</b>: <a target="_blank" href="<?php echo $bnYandexFeedUrl; ?>"><?php echo $bnYandexFeedUrl; ?></a> (<a target="_blank" href="<?php echo $objectsBnUrl;?>"><?php echo $feedBnCount; ?></a>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Домклик</b>: <a target="_blank" href="<?php echo $domFeedUrl; ?>"><?php echo $domFeedUrl; ?></a> (<a target="_blank" href="<?php echo $objectsDomUrl;?>"><?php echo $feedDomCount; ?></a>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Размещение на Zipal.ru</b>: <a target="_blank" href="<?php echo $objectsZipalUrl;?>"><?php echo $feedZipalCount; ?></a></div>
|
||||
<?php } ?>
|
||||
|
||||
<?php if (($agent['role_developer'] == 1)) {
|
||||
$sqlCountCianComplexFeed = "SELECT count(complex_rooms.id) FROM complex_rooms
|
||||
JOIN complex_floors ON complex_floors.id = complex_rooms.floor_id
|
||||
JOIN complex_entrances ON complex_floors.complex_entrance_id = complex_entrances.id
|
||||
JOIN complex_houses ON complex_entrances.complex_house_id = complex_houses.id
|
||||
JOIN complex_list ON complex_list.id = complex_houses.complex_id
|
||||
LEFT JOIN complex_room_advert complex_room_advert ON complex_room_advert.complex_room_id = complex_rooms.id
|
||||
WHERE complex_houses.is_archive = 0 and complex_room_advert.add_to_cian_feed = 1 AND complex_list.agency_id={$agent['id']}";
|
||||
|
||||
$rezCountCianComplexFeed = mysql_query($sqlCountCianComplexFeed, $mdb);
|
||||
$feedCianComplexCount = (int)mysql_result($rezCountCianComplexFeed, 0);
|
||||
|
||||
$sqlCountDomComplexFeed = "SELECT count(complex_rooms.id) FROM complex_rooms
|
||||
JOIN complex_floors ON complex_floors.id = complex_rooms.floor_id
|
||||
JOIN complex_entrances ON complex_floors.complex_entrance_id = complex_entrances.id
|
||||
JOIN complex_houses ON complex_entrances.complex_house_id = complex_houses.id
|
||||
JOIN complex_list ON complex_list.id = complex_houses.complex_id
|
||||
LEFT JOIN complex_room_advert complex_room_advert ON complex_room_advert.complex_room_id = complex_rooms.id
|
||||
WHERE complex_houses.is_archive = 0 and complex_room_advert.add_to_domclick_feed = 1 AND complex_list.agency_id={$agent['id']}";
|
||||
|
||||
$rezCountDomComplexFeed = mysql_query($sqlCountDomComplexFeed, $mdb);
|
||||
$feedDomComplexCount = (int)mysql_result($rezCountDomComplexFeed, 0);
|
||||
|
||||
$sqlCountYaComplexFeed = "SELECT count(complex_rooms.id) FROM complex_rooms
|
||||
JOIN complex_floors ON complex_floors.id = complex_rooms.floor_id
|
||||
JOIN complex_entrances ON complex_floors.complex_entrance_id = complex_entrances.id
|
||||
JOIN complex_houses ON complex_entrances.complex_house_id = complex_houses.id
|
||||
JOIN complex_list ON complex_list.id = complex_houses.complex_id
|
||||
LEFT JOIN complex_room_advert complex_room_advert ON complex_room_advert.complex_room_id = complex_rooms.id
|
||||
WHERE complex_houses.is_archive = 0 and complex_room_advert.add_to_yandex_feed = 1 AND complex_list.agency_id={$agent['id']}";
|
||||
|
||||
$rezCountYaComplexFeed = mysql_query($sqlCountYaComplexFeed, $mdb);
|
||||
$feedYaComplexCount = (int)mysql_result($rezCountYaComplexFeed, 0);
|
||||
|
||||
$sqlCountAvitoComplexFeed = "SELECT count(complex_rooms.id) FROM complex_rooms
|
||||
JOIN complex_floors ON complex_floors.id = complex_rooms.floor_id
|
||||
JOIN complex_entrances ON complex_floors.complex_entrance_id = complex_entrances.id
|
||||
JOIN complex_houses ON complex_entrances.complex_house_id = complex_houses.id
|
||||
JOIN complex_list ON complex_list.id = complex_houses.complex_id
|
||||
LEFT JOIN complex_room_advert complex_room_advert ON complex_room_advert.complex_room_id = complex_rooms.id
|
||||
WHERE complex_houses.is_archive = 0 and complex_room_advert.add_to_avito_feed = 1 AND complex_list.agency_id={$agent['id']}";
|
||||
|
||||
$rezCountAvitoComplexFeed = mysql_query($sqlCountAvitoComplexFeed, $mdb);
|
||||
$feedAvitoComplexCount = (int)mysql_result($rezCountAvitoComplexFeed, 0);
|
||||
|
||||
$sqlCountDomRfComplexFeed = "SELECT count(complex_rooms.id) FROM complex_rooms
|
||||
JOIN complex_floors ON complex_floors.id = complex_rooms.floor_id
|
||||
JOIN complex_entrances ON complex_floors.complex_entrance_id = complex_entrances.id
|
||||
JOIN complex_houses ON complex_entrances.complex_house_id = complex_houses.id
|
||||
JOIN complex_list ON complex_list.id = complex_houses.complex_id
|
||||
LEFT JOIN complex_room_advert complex_room_advert ON complex_room_advert.complex_room_id = complex_rooms.id
|
||||
WHERE complex_houses.is_archive = 0 and complex_room_advert.add_to_domrf_feed = 1 AND complex_list.agency_id={$agent['id']}";
|
||||
|
||||
$rezCountDomRfComplexFeed = mysql_query($sqlCountDomRfComplexFeed, $mdb);
|
||||
$feedDomRfComplexCount = (int)mysql_result($rezCountDomRfComplexFeed, 0);
|
||||
|
||||
$sqlCountSiteComplexFeed = "SELECT count(complex_rooms.id) FROM complex_rooms
|
||||
JOIN complex_floors ON complex_floors.id = complex_rooms.floor_id
|
||||
JOIN complex_entrances ON complex_floors.complex_entrance_id = complex_entrances.id
|
||||
JOIN complex_houses ON complex_entrances.complex_house_id = complex_houses.id
|
||||
JOIN complex_list ON complex_list.id = complex_houses.complex_id
|
||||
LEFT JOIN complex_room_advert complex_room_advert ON complex_room_advert.complex_room_id = complex_rooms.id
|
||||
WHERE complex_houses.is_archive = 0 and complex_room_advert.add_to_site_feed = 1 AND complex_list.agency_id={$agent['id']}";
|
||||
|
||||
$rezCountSiteComplexFeed = mysql_query($sqlCountSiteComplexFeed, $mdb);
|
||||
$feedSiteComplexCount = (int)mysql_result($rezCountSiteComplexFeed, 0);
|
||||
|
||||
$avComplexFeedUrl = "https://joywork.ru/av_feeds_complex/".$agent['id'].".xml";
|
||||
$domComplexFeedUrl = "https://joywork.ru/dom_feeds_complex/".$agent['id'].".xml";
|
||||
$bnYandexComplexFeedUrl = "https://joywork.ru/bn_ya_feeds_complex/".$agent['id'].".xml";
|
||||
$cianComplexFeedUrl = "https://joywork.ru/cian_feed_v2_complex/".$agent['id'].".xml";
|
||||
$domRfComplexFeedUrl = "https://joywork.ru/dom_rf_feeds_complex/".$agent['id'].".xml";
|
||||
$siteComplexFeedUrl = "https://joywork.ru/bn_ya_feeds_complex/".$agent['id']."_site.xml";
|
||||
?>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Яндекс</b>: <a target="_blank" href="<?php echo $bnYandexComplexFeedUrl; ?>"><?php echo $bnYandexComplexFeedUrl; ?></a> (<?php echo $feedYaComplexCount; ?>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Авито</b>: <a target="_blank" href="<?php echo $avComplexFeedUrl; ?>"><?php echo $avComplexFeedUrl; ?></a> (<?php echo $feedAvitoComplexCount; ?>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид ЦИАН</b>: <a target="_blank" href="<?php echo $cianComplexFeedUrl; ?>"><?php echo $cianComplexFeedUrl; ?></a> (<?php echo $feedCianComplexCount; ?>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Домклик</b>: <a target="_blank" href="<?php echo $domComplexFeedUrl; ?>"><?php echo $domComplexFeedUrl; ?></a> (<?php echo $feedDomComplexCount; ?>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Дом.рф</b>: <a target="_blank" href="<?php echo $domRfComplexFeedUrl; ?>"><?php echo $domRfComplexFeedUrl; ?></a> (<?php echo $feedDomRfComplexCount; ?>)</div>
|
||||
<div style="padding: 7px 35px 15px 35px;"><b>Фид Сайт</b>: <a target="_blank" href="<?php echo $siteComplexFeedUrl; ?>"><?php echo $siteComplexFeedUrl; ?></a> (<?php echo $feedSiteComplexCount; ?>)</div>
|
||||
<?php } ?>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="center">
|
||||
|
||||
<div class="user_row row_line">
|
||||
|
||||
<div class="col tarif">
|
||||
|
||||
<p class="small">Тариф</p>
|
||||
|
||||
<p><b class="big pseudo"><?php echo $tarif; ?></b></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col days">
|
||||
|
||||
<p class="small">Осталось</p>
|
||||
|
||||
<p><b class="big"><?php echo $dney; ?></b></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="user_row">
|
||||
|
||||
<div class="col director">
|
||||
|
||||
<p class="small">Контактное лицо</p>
|
||||
|
||||
<p><b class="big"><?php echo trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']); ?></b></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
|
||||
<p class="small">Телефон</p>
|
||||
|
||||
<p><b class="big"><?php echo $agent['phone']; ?></b></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
|
||||
<p class="small">Эл.почта</p>
|
||||
|
||||
<p><b class="big"><?php echo $agent['email']; ?></b></p>
|
||||
|
||||
</div>
|
||||
<div class="col">
|
||||
|
||||
<p class="small">Регион</p>
|
||||
|
||||
<p><b class="big"><?php echo $agent['name'] ?></b></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
if(!isset($_GET['agent']))
|
||||
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<div class="user_row row_line employes">
|
||||
|
||||
<h3 class="employ">Сотрудники
|
||||
|
||||
<label class="fl-right hidden">
|
||||
|
||||
<span class="fr-btn edit-btn steel i-btn very-small tr_agency" data-id='<?php echo $agent['id']; ?>'>
|
||||
|
||||
Развернуть
|
||||
|
||||
</span>
|
||||
|
||||
</label>
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="switch__filter filter-changer">
|
||||
|
||||
<ul>
|
||||
|
||||
<?php
|
||||
$blockUsers = 0;
|
||||
$managersCount = User::countAllManagers($agent['id']);
|
||||
$usersCount = User::getAllAgents($agent['id']);
|
||||
foreach ($usersCount as $key => $value) {
|
||||
if($value["blocked"] == 1)
|
||||
$blockUsers=$blockUsers+1;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<li><a href="" class="pseudo show_managers" data-id='<?php echo $agent['id']; ?>'>Менеджеры <span style="color: #4CAF50; font-weight: bold;">(<?php echo $managersCount ?>)</span></a></li>
|
||||
|
||||
<li><a href="" class="pseudo show_agents" data-id='<?php echo $agent['id']; ?>'>Агенты <span style="color: #4CAF50; font-weight: bold;">(<?php echo count($usersCount); ?>)</span></a></li>
|
||||
|
||||
<li>Всего <span style="color: #4CAF50; font-weight: bold;"><?php echo (int)count($usersCount) + (int)$managersCount - (int)$blockUsers; ?></span></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id='a<?php echo $agent['id']; ?>' class="hidden">
|
||||
|
||||
<div class="one-user user_row row_line row_head">
|
||||
|
||||
<div class="col">
|
||||
|
||||
<p class="small">Имя</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
|
||||
<p class="small">Телефон</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
|
||||
<p class="small">Эл.почта</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
|
||||
<p class="small">Онлайн</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id='b<?php echo $agent['id']; ?>'></div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="bottom">
|
||||
|
||||
<?php if($_SESSION['id'] != $agent['id']) : ?>
|
||||
|
||||
<span><a href='<?php echo "?$url_params_with_page&blocked=$new_block&id_user=$agent[id]"; ?>' class="fr-btn edit-btn steel i-btn very-small"><?php echo $word_blocked; ?></a></span>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($agent['agency'] == 1 && $agent['agent'] == 1) {?>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small switch-newbuildings" data-id="<?php echo $agent['id']; ?>"><?php if ($agent['newbuildings_access']) { echo "Выключить новостройки"; } else { echo "Включить новостройки"; }?></a></span>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small switch-wazzap" data-id="<?php echo $agent['id']; ?>"><?php if ($agent['enable_wazzap']) { echo "Выключить Wazzup"; } else { echo "Включить Wazzup"; }?></a></span>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small zipal-settings" data-id="<?php echo $agent['id']; ?>">Настройки Zipal - <?php if ($agent['zipal_login'] || $agent['zipal_password'] || $agent['zipal_balance']) { echo "Заполнено"; } else { echo "Пусто"; }?></a></span>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($agent['agency'] == 0 && $agent['agent'] == 1) {?>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small zipal-settings" data-id="<?php echo $agent['id']; ?>">Настройки Zipal - <?php if ($agent['zipal_login'] || $agent['zipal_password'] || $agent['zipal_balance']) { echo "Заполнено"; } else { echo "Пусто"; }?></a></span>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small switch-wazzap" data-id="<?php echo $agent['id']; ?>"><?php if ($agent['enable_wazzap']) { echo "Выключить Wazzup"; } else { echo "Включить Wazzup"; }?></a></span>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small presentation-settings" data-id="<?php echo $agent['id']; ?>">Каталог новостроек</a></span>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($agent['agency'] == 1 || $agent['role_developer'] == 1) {?>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small presentation-settings" data-id="<?php echo $agent['id']; ?>">Каталог новостроек</a></span>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small switch-wazzap" data-id="<?php echo $agent['id']; ?>"><?php if ($agent['enable_wazzap']) { echo "Выключить Wazzup"; } else { echo "Включить Wazzup"; }?></a></span>
|
||||
<span><a href="javascript:void(0);" class="fr-btn edit-btn steel i-btn very-small complex-iframe" data-id="<?php echo $agent['id']; ?>">Каталог комплексов</a></span>
|
||||
<?php } ?>
|
||||
|
||||
<div class="admin-comment">
|
||||
<div class="admin_comment_modal" id="admin_comment_<?php echo $agent['id']; ?>" style="display: none">
|
||||
<textarea id="admin_comment_text_<?php echo $agent['id']; ?>"><?php echo $agent['comment']; ?></textarea>
|
||||
<button class="fr-btn edit-btn steel close_admin_comment" data-id="<?php echo $agent['id']; ?>">Сохранить</button>
|
||||
</div>
|
||||
|
||||
<span class="new_comment_btn"><a class="open_admin_comment fr-btn edit-btn steel i-btn very-small" data-id="<?php echo $agent['id']; ?>">Комментарий</a></span>
|
||||
</div>
|
||||
|
||||
<div class="agent-new-password" style="display: inline-block;">
|
||||
<div class="agent_pass_change_" id="agent_new_pass_for_<?php echo $agent['id']; ?>">
|
||||
<input class="new_password_inp" style="margin-right: 15px; padding: 4px 10px; font-size: 12px;" autocomplete="new-password" placeholder="Введите новый пароль" type="password" id="new_password_for_<?php echo $agent['id']; ?>">
|
||||
<button style="margin-right: 20px;" class="fr-btn edit-btn steel close_new_password very-small" data-id="<?php echo $agent['id']; ?>">Сохранить</button>
|
||||
</div>
|
||||
<span class="new_password_btn">
|
||||
<a class="open_agent_new_password fr-btn edit-btn steel i-btn very-small" data-id="<?php echo $agent['id']; ?>">Изменить пароль</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<?php if ($agent['agency'] == 1 && $agent['agent'] == 1) {?>
|
||||
<div class="checkbox small" style="margin-bottom: 10px; display: inline; width: 196px;">
|
||||
<input id="is_moderation_advert_objetcs_<?=$agent['id']?>" class="advert_moderation" type="checkbox" value="1" data-id="<?php echo $agent['id']; ?>" <?=($agent['moderation_advert'] == 1) ? 'checked':''?>>
|
||||
<label for="is_moderation_advert_objetcs_<?=$agent['id']?>">Модерация рекламы</label>
|
||||
</div>
|
||||
<!-- PRESENTATION FRAME -->
|
||||
<div class="checkbox small" style="margin-bottom: 10px; display: inline; width: 196px; margin-left: 15px;">
|
||||
<input id="presentation_frame_checkbox<?=$agent['id']?>" class="presentation_frame" type="checkbox" value="1" data-id="<?php echo $agent['id']; ?>" <?=($agent['presentation_frame'] == 1) ? 'checked':''?>>
|
||||
<label for="presentation_frame_checkbox<?=$agent['id']?>">Презентация по региону</label>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
|
||||
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
|
||||
|
||||
if($all_pages > 1) {
|
||||
|
||||
num_of_pages($page, $all_pages, $url_params);
|
||||
|
||||
}
|
||||
|
||||
echo '</ul><div class="clear"></div></div>';
|
||||
|
||||
$cycleTime = microtime(true);
|
||||
|
||||
?>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="full_modal-bg" id="changeTarif_bg" style="display: none;">
|
||||
|
||||
<span class="pseudo-link closer" onclick="hidechangeTarif(); return false;"><i class="ti-close"></i></span>
|
||||
|
||||
<div class="full_modal" id="changeTarif" style="display: none;">
|
||||
|
||||
<form>
|
||||
|
||||
<div class="modal-form">
|
||||
|
||||
<div class="modal-inner">
|
||||
|
||||
<h2>Тариф</h2>
|
||||
|
||||
<div class="form-block">
|
||||
|
||||
<div class="label">Тариф</div>
|
||||
|
||||
<div class="inputs">
|
||||
|
||||
<select name="id_tarif">
|
||||
|
||||
<?php
|
||||
|
||||
$trfs = Tarif::getAll();
|
||||
|
||||
foreach ($trfs as $i => $trf) {
|
||||
|
||||
if($trf['status'] == 1) $st = "style='background:rgba(234, 140, 140, 0.5);'"; else $st = "";
|
||||
|
||||
echo "<option value='$trf[id]' $st>$trf[nazv]</option>";
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
</select>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal-submit">
|
||||
|
||||
<input type="hidden" name="id_user" value="0">
|
||||
<?php
|
||||
if (isset($_GET['page'])) {
|
||||
?>
|
||||
<input type="hidden" name="page" value="<?php echo $_GET['page']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if (isset($_GET['search'])) {
|
||||
?>
|
||||
<input type="hidden" name="search" value="<?php echo $_GET['search']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php if (isset($_GET['agent'])) {
|
||||
?>
|
||||
<input type="hidden" name="agent" value="<?php echo $_GET['agent']?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<button type="submit" name="ok_tarif" value="1">Сохранить</button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script src="/js/admin-edit.js?t=<?php echo ceil(microtime(true)); ?>"></script>
|
||||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT']."/templates/footer-admin.php");
|
||||
|
||||
$endtime = microtime(true);
|
||||
|
||||
//printf("Users get in %f seconds", $getUsersTime - $starttime );
|
||||
//echo '<br/>';
|
||||
//printf("Users cycle in %f seconds", $cycleTime - $starttime );
|
||||
//echo '<br/>';
|
||||
//printf("Page loaded in %f seconds", $endtime - $starttime );
|
||||
|
||||
?>
|
||||
104
admin/loadBlockFiles.php
Normal file
104
admin/loadBlockFiles.php
Normal file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/ImportRecord.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/DocTarget.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Block.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/obj/Apartment.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockProgressImageFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/BlockPlusFacade.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/target/TargetFactory.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/DocumentManager.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/provider/DbDocProvider.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/Dir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/RootDir.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/File.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/entity/DocCollection.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/ar/Document.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/DocNotFoundException.php';
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/import/document/exception/TargetNotFoundException.php';
|
||||
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||||
|
||||
$result = "";
|
||||
$updateContent = false;
|
||||
$markupId = "";
|
||||
|
||||
for ($i = 0; $i < count($_FILES['docFiles']['name']); $i++) {
|
||||
|
||||
if ($_FILES['docFiles']['error'][$i] == 0) {
|
||||
|
||||
$ext = strtolower(pathinfo($_FILES['docFiles']['name'][$i], PATHINFO_EXTENSION));
|
||||
|
||||
$name = substr(md5($_POST['fold_id'] . '_' . $_POST['target_type'] . '_' . $_POST['target_id']), 0, 5) . time() . $i . '.' . strtolower($ext);
|
||||
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/documents")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/documents");
|
||||
}
|
||||
|
||||
$one = mb_substr($name, 0, 1);
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/documents/$one")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/documents/$one");
|
||||
}
|
||||
$two = mb_substr($name, 1, 1);
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/documents/$one/$two")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/documents/$one/$two");
|
||||
}
|
||||
$three = mb_substr($name, 3, 1);
|
||||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/documents/$one/$two/$three")) {
|
||||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/documents/$one/$two/$three");
|
||||
}
|
||||
$new_path = "$one/$two/$three/$name";
|
||||
|
||||
$document = "/documents/" . $new_path;
|
||||
move_uploaded_file($_FILES['docFiles']['tmp_name'][$i], $_SERVER['DOCUMENT_ROOT'] . $document);
|
||||
|
||||
$manager = new DocumentManager((new TargetFactory())->getTarget($_POST['target_id'], $_POST['target_type']));
|
||||
|
||||
$manager->saveFileTo(
|
||||
// хак 70lvl
|
||||
trim(pathinfo(' ' . $_FILES['docFiles']['name'][$i], PATHINFO_FILENAME)),
|
||||
$document,
|
||||
$_POST['fold_id']
|
||||
);
|
||||
|
||||
$dirObject = $manager->getDir($_POST['fold_id']);
|
||||
$path = $manager->getParents($dirObject->getId());
|
||||
$collection = $manager->getChildren($dirObject->getId());
|
||||
|
||||
$updateContent = true;
|
||||
$markupId = "documentsContent" . $_POST['target_type'];
|
||||
|
||||
} else {
|
||||
$result .= "Превышен размер файла " . $_FILES['docFiles']['name'][$i];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
if (parent.document.getElementById('doc-loader')) {
|
||||
parent.document.getElementById('doc-loader').style.backgroundImage = '';
|
||||
}
|
||||
if (parent.document.getElementById('doc-progress-loader')) {
|
||||
parent.document.getElementById('doc-progress-loader').style.backgroundImage = '';
|
||||
}
|
||||
if (parent.document.getElementById('doc-plus-loader')) {
|
||||
parent.document.getElementById('doc-plus-loader').style.backgroundImage = '';
|
||||
}
|
||||
<?php if ($updateContent) { ?>
|
||||
parent.document.getElementById('<?php echo $markupId; ?>').innerHTML = '<?php include($_SERVER['DOCUMENT_ROOT']."/admin/documentsWidget.php"); ?>';
|
||||
<?php } ?>
|
||||
parent.document.getElementById('upload-docs-form').target = '';
|
||||
parent.document.getElementById('upload-docs-form').action = '';
|
||||
parent.document.getElementById('upload-docs-button').disabled = false;
|
||||
|
||||
parent.document.getElementById('upload-progress-form').target = '';
|
||||
parent.document.getElementById('upload-progress-form').action = '';
|
||||
parent.document.getElementById('upload-progress-button').disabled = false;
|
||||
|
||||
parent.document.getElementById('upload-plus-form').target = '';
|
||||
parent.document.getElementById('upload-plus-form').action = '';
|
||||
parent.document.getElementById('upload-plus-button').disabled = false;
|
||||
</script>
|
||||
205
admin/migrate-articles.php
Normal file
205
admin/migrate-articles.php
Normal file
@ -0,0 +1,205 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||||
|
||||
if (!$_SESSION['superadmin']) { die('Доступ запрещён'); }
|
||||
|
||||
// Карта id → slug (из существующих PHP-заглушек)
|
||||
$slugMap = [
|
||||
1 => 'poisk-obektov-nedvizhimosti-scanner',
|
||||
2 => 'multilistingovaya-sistema-partnerskikh-sdelok',
|
||||
3 => 'voronki-prodazh-v-crm',
|
||||
4 => 'avtopublikaciya-obyavlenij-na-200-sajtov',
|
||||
5 => 'ip-telefoniya-i-kolltraking-v-crm',
|
||||
6 => 'dokumentooborot-v-crm-dlja-rieltorov',
|
||||
7 => 'baza-kommercheskoj-nedvizhimosti',
|
||||
8 => 'kabinet-klienta-v-crm',
|
||||
9 => 'odobrjaem-ipoteku-onlajn-broker',
|
||||
10 => 'skvoznaja-analitika-v-nedvizhimosti',
|
||||
11 => 'reklama-kvartiry-v-socsetyah',
|
||||
12 => 'crm-dlja-agenta-reklama-200-sajtov',
|
||||
13 => 'poisk-obektov-na-tematicheskih-sajtah',
|
||||
14 => 'smart-voronka-prodazh-v-crm',
|
||||
15 => 'integraciya-crm-s-ip-telefoniej',
|
||||
16 => 'zakaz-svedenij-egrn-iz-crm',
|
||||
17 => 'nakoplenie-klientskoj-bazy-targetirovannaya-reklama',
|
||||
18 => 'dokumentooborot-rieltora-v-crm',
|
||||
19 => 'avtomaticheskij-poisk-v-crm',
|
||||
20 => 'upravlenie-tipami-razmeshchenij-obektov',
|
||||
21 => 'internet-marketing-v-nedvizhimosti',
|
||||
22 => 'kak-reklamirovat-nedvizhimost-na-ploshchadkah',
|
||||
23 => 'strategii-prodvizheniya-agentstva-2023',
|
||||
24 => 'analiz-rynka-rijeltorskih-uslug',
|
||||
25 => 'servisy-po-poisku-nedvizhimosti',
|
||||
26 => 'marketing-dlja-zastrojshhikov',
|
||||
27 => 'analiz-obektov-nedvizhimosti',
|
||||
28 => 'prezentacija-obektov-nedvizhimosti',
|
||||
29 => 'parser-nedvizhimosti',
|
||||
30 => 'poisk-obektov-nedvizhimosti-v-rezhime-online',
|
||||
31 => 'kak-uvelichit-prodazhi-nedvizhimosti',
|
||||
32 => 'na-kakih-sajtah-prodavat-nedvizhimost',
|
||||
33 => 'avtomatizacija-prodazh-nedvizhimosti',
|
||||
34 => 'instrumenty-rijeltora-nedvizhimosti',
|
||||
35 => 'lidy-dlja-agentstva-nedvizhimosti',
|
||||
36 => 'cel-vnedrenija-crm',
|
||||
37 => 'rijeltor-nedvizhimosti-s-nulja',
|
||||
38 => 'houmstejdzhing-kvartiry',
|
||||
39 => 'prognoz-rynka-nedvizhimosti-2024',
|
||||
40 => 'otchet-rijeltora-o-rabote',
|
||||
41 => 'baza-novostroek-ot-zastrojshhika',
|
||||
42 => 'klienty-na-nedvizhimost',
|
||||
43 => 'opredelit-rynochnuju-stoimost-obekta',
|
||||
44 => 'avtovygruzka-nedvizhimosti-na-avito',
|
||||
45 => 'kak-otkryt-agentstvo-nedvizhimosti',
|
||||
46 => 'flipping-v-nedvizhimosti',
|
||||
47 => 'cifrovye-tehnologii-v-nedvizhimosti',
|
||||
48 => 'cenoobrazovanie-na-rynke-nedvizhimosti',
|
||||
49 => 'crm-sdelki-s-nedvizhimostju',
|
||||
50 => 'upravlenie-reklamnymi-kampanijami',
|
||||
51 => 'marketing-dlja-zastrojshhikov-vazhnost',
|
||||
52 => 'srm-dlja-stroitelnoj-kompanii',
|
||||
53 => 'kak-rijeltoru-najti-klientov',
|
||||
54 => 'sajt-dlja-agentstva-nedvizhimosti',
|
||||
55 => 'brend-agentstva-nedvizhimosti',
|
||||
56 => 'reklama-dlja-rijeltora',
|
||||
57 => 'franshiza-agentstva-nedvizhimosti',
|
||||
58 => 'skript-holodnogo-zvonka',
|
||||
59 => 'biznes-plan-agentstva-nedvizhimosti',
|
||||
60 => 'struktura-agentstva-nedvizhimosti',
|
||||
61 => 'oshibki-pri-vnedrenii-crm',
|
||||
62 => 'cifrovizacija-nedvizhimosti',
|
||||
63 => 'segmentacija-klientov-srm',
|
||||
64 => 'utp-dlja-nedvizhimosti',
|
||||
65 => 'avtomatizacija-raboty-rieltora',
|
||||
66 => 'avtomatizaciya-otdela-prodazh-nedvizhimosti',
|
||||
67 => 'otsenka-kvartiry-brokerom',
|
||||
68 => 'servis-dlya-analiza-nedvizhimosti',
|
||||
];
|
||||
|
||||
$src = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/article.php');
|
||||
|
||||
// Извлекаем скалярные поля метаданных через regex (без eval)
|
||||
function extractArtField($src, $id, $field) {
|
||||
if (preg_match('/\$art' . $id . '\[\'' . $field . '\'\]\s*=\s*"([^"]*?)"/u', $src, $m)) return $m[1];
|
||||
if (preg_match("/\\\$art{$id}\\['{$field}'\\]\\s*=\\s*'([^']*?)'/u", $src, $m)) return $m[1];
|
||||
return '';
|
||||
}
|
||||
|
||||
function extractArtAuthorField($src, $id, $field) {
|
||||
if (preg_match('/\$art' . $id . '\[\'author\'\]\s*=\s*\[.*?\'' . $field . '\'\s*=>\s*\'([^\']*?)\'/su', $src, $m)) return $m[1];
|
||||
if (preg_match('/\$art' . $id . '\[\'author\'\]\s*=\s*\[.*?\'' . $field . '\'\s*=>\s*"([^"]*?)"/su', $src, $m)) return $m[1];
|
||||
return '';
|
||||
}
|
||||
|
||||
// Извлекаем HTML-контент из блоков if ($id == X) { ... }
|
||||
function extractArtContent($src, $id) {
|
||||
if (preg_match('/\$id == ' . $id . '\) \{ \?>(.*?)(?=<\?php \})/su', $src, $m)) {
|
||||
return trim($m[1]);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function convertDate($d) {
|
||||
$parts = explode('.', $d);
|
||||
if (count($parts) === 3) return $parts[2] . '-' . $parts[1] . '-' . $parts[0];
|
||||
return date('Y-m-d');
|
||||
}
|
||||
|
||||
// Генерируем description из первого абзаца статьи (для SEO и карточек блога)
|
||||
function generateDescription($content) {
|
||||
if (!$content) return '';
|
||||
// Берём первый <p> в статье
|
||||
if (preg_match('/<p[^>]*>(.*?)<\/p>/s', $content, $m)) {
|
||||
$text = strip_tags($m[1]);
|
||||
$text = preg_replace('/\s+/u', ' ', $text);
|
||||
$text = trim(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
|
||||
// Обрезаем до ~160 символов (стандарт meta description), не разрезая слова
|
||||
if (mb_strlen($text, 'UTF-8') > 160) {
|
||||
$text = mb_substr($text, 0, 160, 'UTF-8');
|
||||
$lastSpace = mb_strrpos($text, ' ', 0, 'UTF-8');
|
||||
if ($lastSpace !== false) $text = mb_substr($text, 0, $lastSpace, 'UTF-8');
|
||||
$text .= '…';
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
// Считаем количество <script> блоков в контенте (для отчёта в dry-run)
|
||||
function countScripts($content) {
|
||||
return preg_match_all('/<script[\s\S]*?<\/script>/i', $content);
|
||||
}
|
||||
|
||||
$dryRun = isset($_GET['dry']) && $_GET['dry'] == '1';
|
||||
$results = [];
|
||||
$errors = [];
|
||||
|
||||
for ($i = 1; $i <= 68; $i++) {
|
||||
$title = extractArtField($src, $i, 'title');
|
||||
if (!$title) {
|
||||
$errors[] = "Нет title для статьи #$i";
|
||||
continue;
|
||||
}
|
||||
|
||||
$slug = isset($slugMap[$i]) ? $slugMap[$i] : Article::makeSlug($title);
|
||||
$content = extractArtContent($src, $i);
|
||||
$dateRaw = extractArtField($src, $i, 'date');
|
||||
$updateRaw = extractArtField($src, $i, 'update');
|
||||
|
||||
$data = [
|
||||
'slug' => $slug,
|
||||
'title' => $title,
|
||||
'page_title' => extractArtField($src, $i, 'pageTitle') ?: $title,
|
||||
'description' => generateDescription($content),
|
||||
'content' => $content,
|
||||
'date_created' => $dateRaw ? convertDate($dateRaw) : date('Y-m-d'),
|
||||
'date_updated' => $updateRaw ? convertDate($updateRaw) : date('Y-m-d'),
|
||||
'reading_time' => max(1, (int)extractArtField($src, $i, 'time')),
|
||||
'image' => extractArtField($src, $i, 'image'),
|
||||
'author_name' => extractArtAuthorField($src, $i, 'name') ?: 'Станислав Дмитриев',
|
||||
'author_img' => extractArtAuthorField($src, $i, 'img') ?: '/images/articles/rukofodJW.png',
|
||||
'author_job' => extractArtAuthorField($src, $i, 'job') ?: 'руководитель JoyWork',
|
||||
'published' => 1,
|
||||
'sort_order' => $i,
|
||||
];
|
||||
|
||||
$scriptsCount = countScripts($content);
|
||||
|
||||
if (!$dryRun) {
|
||||
if (!Article::slugExists($slug)) {
|
||||
Article::create($data);
|
||||
$scriptsNote = $scriptsCount > 0 ? " | scripts: {$scriptsCount}" : '';
|
||||
$results[] = "✓ #{$i}: {$title}{$scriptsNote}";
|
||||
} else {
|
||||
$results[] = "— #{$i}: пропущена (slug уже есть): {$slug}";
|
||||
}
|
||||
} else {
|
||||
$contentInfo = strlen($content) ? strlen($content) . " симв." : '❌ пусто';
|
||||
$scriptsInfo = $scriptsCount > 0 ? " | scripts: {$scriptsCount}" : '';
|
||||
$descrInfo = $data['description'] ? ' | descr: ✓' : ' | descr: ❌';
|
||||
$results[] = "[DRY] #{$i}: {$title} → {$slug} | контент: {$contentInfo}{$scriptsInfo}{$descrInfo}";
|
||||
}
|
||||
}
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html><head><meta charset="utf-8"><title>Миграция статей</title>
|
||||
<style>body{font-family:Arial;padding:20px;max-width:900px;} .ok{color:green;} .err{color:red;} pre{background:#f5f5f5;padding:15px;border-radius:4px;font-size:13px;line-height:1.6;white-space:pre-wrap;}</style>
|
||||
</head><body>
|
||||
<h2>Миграция статей из PHP в БД</h2>
|
||||
<?php if ($dryRun): ?>
|
||||
<p style="background:#fff3cd;padding:10px;border-radius:4px;">⚠️ Режим dry-run — данные <strong>не записаны</strong>. Проверьте результаты и <a href="?">запустите реально</a>.</p>
|
||||
<?php else: ?>
|
||||
<p><a href="?dry=1">Dry-run (без записи)</a> | <a href="/admin/articles.php">← К списку статей</a></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<h3>Результат (<?= count($results) ?> / 68):</h3>
|
||||
<pre><?php foreach ($results as $r) echo htmlspecialchars($r) . "\n"; ?></pre>
|
||||
|
||||
<?php if ($errors): ?>
|
||||
<h3 class="err">Ошибки (<?= count($errors) ?>):</h3>
|
||||
<pre class="err"><?php foreach ($errors as $e) echo htmlspecialchars($e) . "\n"; ?></pre>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!$dryRun && empty($errors) && count($results) > 0): ?>
|
||||
<p class="ok" style="font-size:16px;"><strong>✓ Готово! <a href="/admin/articles.php">Перейти к статьям →</a></strong></p>
|
||||
<?php endif; ?>
|
||||
</body></html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user