MadDen
4 years ago
1 changed files with 190 additions and 1 deletions
@ -1,2 +1,191 @@ |
|||||||
# module-workdocs |
# Модуль - Работа с документами |
||||||
|
###### Массовый обход документов в пределах одной рубрики, и выполенеие действий над ними. |
||||||
|
|
||||||
|
## Оглавление |
||||||
|
|
||||||
|
* [Настройки](#настройки) |
||||||
|
|
||||||
|
* [Внутренние функции](#внутренние-функции) |
||||||
|
|
||||||
|
* [Примеры кода перед сохранением](#примеры-кода-перед-сохранением) |
||||||
|
|
||||||
|
* [Пример своей 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; |
||||||
|
?> |
||||||
|
``` |
||||||
|
|
||||||
|
--- |
||||||
|
Copyright © 2007-2020 [Ave-Cms.Ru](https://ave-cms.ru) |
Loading…
Reference in new issue