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