|
|
|
# Модуль - Работа с документами
|
|
|
|
###### Массовый обход документов в пределах одной рубрики, и выполенеие действий над ними.
|
|
|
|
|
|
|
|
## Оглавление
|
|
|
|
|
|
|
|
* [Настройки](#настройки)
|
|
|
|
|
|
|
|
* [Внутренние функции](#внутренние-функции)
|
|
|
|
|
|
|
|
* [Примеры кода перед сохранением](#примеры-кода-перед-сохранением)
|
|
|
|
|
|
|
|
* [Пример своей SQL выборки](#пример-своей-sql-выборки)
|
|
|
|
|
|
|
|
|
|
|
|
## Настройки
|
|
|
|
1. Пересохранять документы при обходе - Включает функцию documentSave, передаются все данные из $data
|
|
|
|
2. При сохранении документа использовать Исполняемый код рубрики
|
|
|
|
3. Сохранение ревизий документа
|
|
|
|
4. Отображать действия в системных сообщениях
|
|
|
|
|
|
|
|
Пункты (2, 3, 4 работают только если вкл 1 пункт)<br/>
|
|
|
|
|
|
|
|
|
|
|
|
## Внутренние функции
|
|
|
|
Является ли файл изображением<br/>
|
|
|
|
**self::_is_image($path)**<br/>
|
|
|
|
return bool<br/>
|
|
|
|
|
|
|
|
Существует ли файл<br/>
|
|
|
|
**self::_if_exists($path)**<br/>
|
|
|
|
return bool<br/>
|
|
|
|
|
|
|
|
Есть ли в тексте ссылки (http|s)<br/>
|
|
|
|
**self::_link_exists($string)**<br/>
|
|
|
|
return int
|
|
|
|
|
|
|
|
Очищает теги от style, убирает пустые теги<br/>
|
|
|
|
**self::_clear_text($string, $span = false)**<br/>
|
|
|
|
$span - bool - удалить из текста `<span></span>` (только теги)<br/>
|
|
|
|
return string<br/>
|
|
|
|
|
|
|
|
|
|
|
|
## Примеры кода перед сохранением
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
// Посмотреть все данные, для теста
|
|
|
|
Debug::_echo($data, true);
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
// Описание (Многострочное): Поле ID = 1
|
|
|
|
if (empty($data['feld'][1]))
|
|
|
|
{
|
|
|
|
$document_logs[] = 'Нет описания - Поле 1';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ($num_links = self::_link_exists($data['feld'][1]))
|
|
|
|
$document_logs[] = 'В описании найдены ссылки: <strong>' . count($num_links) . '</strong>';
|
|
|
|
|
|
|
|
// Символов в исходном тексте
|
|
|
|
$count_text = strlen($data['feld'][1]);
|
|
|
|
|
|
|
|
// Очищаем текст
|
|
|
|
$string = self::_clear_text($data['feld'][1], true);
|
|
|
|
|
|
|
|
// Символов в очищенном тексте
|
|
|
|
$new_count = strlen($string);
|
|
|
|
|
|
|
|
// Разница
|
|
|
|
$diff = $count_text - $new_count;
|
|
|
|
|
|
|
|
// Если разница больше 100 символов
|
|
|
|
if ($diff > 100)
|
|
|
|
$document_logs[] = 'Текст описания можно уменьшить: <strong>с ' . $count_text . ' до ' . $new_count . '</strong>';
|
|
|
|
}
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
// Изображение (Одиночное): Поле ID = 2
|
|
|
|
$image = $data['feld'][2]['img'];
|
|
|
|
|
|
|
|
// Изображение
|
|
|
|
if (empty($image))
|
|
|
|
$document_logs[] = 'Нет изображения - Поле 2';
|
|
|
|
|
|
|
|
if (! empty($image))
|
|
|
|
{
|
|
|
|
// Проврека на наличие файла на сервере
|
|
|
|
if (! self::_if_exists(BASE_DIR . $image))
|
|
|
|
{
|
|
|
|
$document_logs[] = 'Файл отсутсвует на сервере: <strong>' . $image . '</strong>';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (! self::_is_image(BASE_DIR . $image))
|
|
|
|
$document_logs[] = 'Неправильный формат файла: <strong>' . $image . '</strong>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
// Изображение (Мега): Поле ID = 3
|
|
|
|
$images = $data['feld'][3];
|
|
|
|
|
|
|
|
if (empty($images))
|
|
|
|
$document_logs[] = 'Нет изображений - Поле 3';
|
|
|
|
|
|
|
|
if (! empty($images))
|
|
|
|
{
|
|
|
|
foreach ($images AS $k => $v)
|
|
|
|
{
|
|
|
|
$image = $v['url'];
|
|
|
|
|
|
|
|
if (! empty($image))
|
|
|
|
{
|
|
|
|
// Проврека на наличие файла на сервере
|
|
|
|
if (! self::_if_exists(BASE_DIR . $image))
|
|
|
|
{
|
|
|
|
$document_logs[] = '('.$k.') Файл отсутсвует на сервере: <strong>' . $image . '</strong>';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (! self::_is_image(BASE_DIR . $image))
|
|
|
|
$document_logs[] = '('.$k.') Неправильный файл: <strong>' . $image . '</strong>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
// Если документ не опубликован
|
|
|
|
if ($data['document_status'] == 0)
|
|
|
|
$document_logs[] = 'Документ не опубликован';
|
|
|
|
|
|
|
|
// Если документ в корзине
|
|
|
|
if ($data['document_deleted'] == 1)
|
|
|
|
$document_logs[] = 'Документ в корзине';
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
// Пропускаем запись логов
|
|
|
|
if ($data['document_title'] != '')
|
|
|
|
$document_logs = [];
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
## Пример своей SQL выборки
|
|
|
|
|
|
|
|
<u>Важно! Перед полным запуском, не забывайете проверить, наличи тестовых данных</u>
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
$sql = "
|
|
|
|
SELECT
|
|
|
|
Id
|
|
|
|
FROM
|
|
|
|
" . PREFIX . "_documents
|
|
|
|
WHERE
|
|
|
|
rubric_id = {$rubric_id}
|
|
|
|
AND
|
|
|
|
document_status = 1
|
|
|
|
ORDER BY document_title ASC
|
|
|
|
LIMIT {$limit}, 1;
|
|
|
|
";
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
## Запросить конкретный документ для теста
|
|
|
|
|
|
|
|
<u>Важно! Перед полным запуском, не забывайете проверить, наличи тестовых данных</u>
|
|
|
|
|
|
|
|
```php
|
|
|
|
<?php
|
|
|
|
$document_id = 1;
|
|
|
|
?>
|
|
|
|
```
|
|
|
|
|
|
|
|
Если **$document_logs** пусто - то запись логов не будет производиться<br/>
|
|
|
|
Если **$data пусто** - то сохранение документа будет пропущено
|
|
|
|
|
|
|
|
## Changelog:
|
|
|
|
|
|
|
|
05.07.2020 - Дата создания
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
Copyright © 2007-2020 [Ave-Cms.Ru](https://ave-cms.ru)
|