ddTools

Library
  • Версия: 0.2
  • Выпущено:
  • Метки: General
Скачать41 скачивание

Описание

Библиотека с различными небольшими инструментами, облегчающими работу. Умеет:

  • Создавать новый документ;
  • Обновлять информацию о существующем документе;
  • Парсить текст (почти как modx->parseChunk, только принимает текст, а не имя чанка);
  • Парсить ресурс (вызывается $modx->parseDocumentSource и $modx->rewriteUrls);
  • Разбивать строку в ассоциативный массив по двум разделителям;
  • Разбивать ассоциативный массив полей и TV документа на два отдельных массива;
  • Генерировать случайную строку нужной длины;
  • И ещё несколько мелочей (см. код).

Список изменений

  • Добавлено статическое поле «$documentFields», содержащее массив имён полей документа.
  • Добавлено статическое поле «$tables», содержащее полные имена некоторых таблиц.
  • Добавлен метод «screening», осуществляющий экранирование символов в строке.
  • Добавлен метод «explodeAssoc», разбивающий строку по двум разделителям в ассоциативный массив.
  • Добавлен метод «explodeFieldsArr», разбивающий ассоциативный массив полей и TV документа на два отдельных массива.
  • Метод «parseText» обновлён до версии 1.1
    • Добавлена возможность отключить дополнительную обработку полей документа, настроек, чанков (параметр «mergeAll»).
  • Метод «createDocument» обновлён до версии 1.1
    • В параметр $fields добавлена возможность передавать не только поля документа, но и TV.
  • Метод «udateDocument» обновлён до версии 1.1
    • В параметр $update добавлена возможность передавать не только поля документа, но и TV.
    • Добавлена правильная проверка на то, изменялись данные или нет. Теперь метод точно возвращает true или false.
  • Метод «parseSourse» переименован в «parseSource».
  • Метод «generateString» переименован в «generateRandomString».

Документация

Для установки распакуйте архив в корень сайта (файл modx.ddtools.class.php должен находиться в папке assets/snippets/ddTools/). Вообще говоря, библиотека очень проста, так что, если что, посмотрите в исходный код и вы всё поймёте.

Все методы и поля являются публичными, статичными и объявляются в классе «ddTools».

Описание параметров

Название Описание Допустимые значения Значение по умолчанию

Поле «documentFields»

Содержит массив имён полей документа.

Поле «tables»

Содержит полные имена некоторых таблиц БД (см. код).

Метод «screening»

Экранирует символы в строке (см. код).
str * Строка для обработки. {string}

Метод «explodeAssoc»

Разбивает строку по двум разделителям в ассоциативный массив.
str * Строка для обработки. {separated string}
splY Разделитель между значениями (между парами ключ-значение). {string} '||'
splX Разделитель между ключом и значением. {string} '::'

Метод «parseText»

Аналог модексовского parseChunk, только принимает текст (+ пара плюшек).
chunk * Строка, которую нужно парсить. {string}
chunkArr * Массив значений. Ключ — имя плэйсхолдера, значение — значение. {array: associative}
prefix Префикс плэйсхолдеров. {string} '[+'
suffix Суффикс плэйсхолдеров. {string} '+]'
mergeAll Надо ли делать дополнительно обрабатывать поля документа, настроек, чанков. {boolean} true

Метод «parseSource»

Парсит ресурс (вызывается $modx->parseDocumentSource и $modx->rewriteUrls).
source * Текст для парсинга. {string}

Метод «explodeFieldsArr»

Разбивает ассоциативный массив полей и TV документа на два отдельных массива.
fields * Ассоциативный массив значений полей документа (в таблице `site_content`) и/или TV. {array: associative}

Метод «createDocument»

Создаёт новый документ.
fields * Массив полей или TV документа. Ключ — название поля или TV, значение — значение. Обязательно должен присутствовать заголовок нового документа (элемент 'pagetitle'). {array: associative}
groups Индексированный массив id групп, к которым должен принадлежать документ. {array}

Метод «udateDocument»

Обновляет информацию по документу.
id * ID документа, который необхоидмо отредактировать. {integer} 0
update * Массив значений полей или TV документа. Ключ — название поля или TV, значение — значение. {array: associative}
where SQL условие WHERE. {string: sql}

Метод «generateRandomString»

Генерирует случайную строку нужной длины.
length Размер строки на выходе. {integer} 8
chars Набор символов для генерации. {string} 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789'

Примеры

Разбивка строки в ассоциативный массив по двум разделителям

ddTools::explodeAssoc('pagetitle::Test pagetitle||menuindex::2||published::0');

Вернёт:

Array(
'pagetitle' => 'Test pagetitle',
'menuindex' => '2',
'published' => '0'
);

Разделение ассоциативного массива, содержащего значения полей документа и TV на два разных

ddTools::explodeFieldsArr(array(
'pagetitle' => 'Test',
'some_image' => 'assets/images/some_image.png',
'another_tv' => 'Test tv'
'longtitle' => 'Long test',
));

Вернёт:

Array(
Array(
'pagetitle' => 'Test',
'longtitle' => 'Long test'
),
Array(
'some_image' => Array(
'val' => 'assets/images/some_image.png',
'id' => 123
),
'another_tv' => Array(
'val' => 'Test tv',
'id' => 321
)
)
);

Парсинг произовльного текста (замена плэйсхолдеров на значения).

ddTools::parseText('<div>[+test1+], [+test2+]</div>', array('test1' => 'Hello', 'test2' => 'world'));

Создание опубликованного документа с шаблоном 36 в корне сайта (+ запомним id созданного документа)

$id = ddTools::createDocument(array('pagetitle' => 'Test document', 'template' => 36, 'published' => 1));

Обновление заголовка документа и заголовка меню у документа

ddTools::udateDocument($id, array('pagetitle' => 'Tested document', 'menutitle' => 'Omg'));