You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MadDen
d59b4996ab
|
4 years ago | |
---|---|---|
LICENSE | 4 years ago | |
README.md | 4 years ago |
README.md
Модуль - Работа с документами
Массовый обход документов в пределах одной рубрики, и выполенеие действий над ними.
Оглавление
Настройки
- Пересохранять документы при обходе - Включает функцию documentSave, передаются все данные из $data
- При сохранении документа использовать Исполняемый код рубрики
- Сохранение ревизий документа
- Отображать действия в системных сообщениях
Пункты (2, 3, 4 работают только если вкл 1 пункт)
Внутренние функции
Является ли файл изображением
self::_is_image($path)
return bool
Существует ли файл
self::_if_exists($path)
return bool
Есть ли в тексте ссылки (http|s)
self::_link_exists($string)
return int
Очищает теги от style, убирает пустые теги
self::_clear_text($string, $span = false)
$span - bool - удалить из текста <span></span>
(только теги)
return string
Примеры кода перед сохранением
<?php
// Посмотреть все данные, для теста
Debug::_echo($data, true);
?>
<?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
// Изображение (Одиночное): Поле 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
// Изображение (Мега): Поле 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
// Если документ не опубликован
if ($data['document_status'] == 0)
$document_logs[] = 'Документ не опубликован';
// Если документ в корзине
if ($data['document_deleted'] == 1)
$document_logs[] = 'Документ в корзине';
?>
<?php
// Пропускаем запись логов
if ($data['document_title'] != '')
$document_logs = [];
?>
Пример своей SQL выборки
Важно! Перед полным запуском, не забывайете проверить, наличи тестовых данных
<?php
$sql = "
SELECT
Id
FROM
" . PREFIX . "_documents
WHERE
rubric_id = {$rubric_id}
AND
document_status = 1
ORDER BY document_title ASC
LIMIT {$limit}, 1;
";
?>
Запросить конкретный документ для теста
Важно! Перед полным запуском, не забывайете проверить, наличи тестовых данных
<?php
$document_id = 1;
?>
Copyright © 2007-2020 Ave-Cms.Ru