InsertDocument
С помощью метода InsertDocument можно вставить документ DJEM в систему. Не-смотря на то, что это один из самых сложных методов, его применение весьма про-сто – просто укажите XML с входящими данными документа и номер раздела, в ко-торый следует поместить документ или раздел.
Данный метод позволяет вставлять не только документы, но и разделы. В системе DJEM различие между документами и разделами не очень велико – по сути самым важным отличием является способность раздела содержать в себе другие разделы и документы. В остальном же принципы работы с разделами и документами весьма схожи.
Синтаксис:
int InsertDocument(xml docXml[, int folderId])
Параметры:
docXml – XML данные, хранимые в документе
folderId – идентификационный номер раздела, в который необходимо добавить документ. Этот параметр также может передаваться через поле _parent_id входяще-го XML. Если параметр отсутствует и там и там, функция вернет ошибку – добавить документ "в никуда" библиотека не будет. Такая же ошибка возникнет в том случае, если указанный документ-отец не существует.
Возвращаемое значение:
Идентификатор нового созданного документа DJEM. В случае ошибки будет возвра-щено значение false, и причина ошибки будет помещена в переменную класса по имени error.
Примечания:
Существует ряд важных особенностей данной функции, вытекающих из принципов функционирования системы.
Все документы DJEM хранит в формате UTF-8. Добавление данных в других коди-ровках может привести к неожиданным для Вас результатам. Если Вы используете другую кодировку – воспользуйтесь функциями SetCodepage, SetCodepageInput или SetCodepageOutput – они позволят на лету осуществлять перекодировку входящих и исходящих данных. На данный момент поддерживаются кодировки windows-1251 и koi-8r.
При добавлении документа в XML документа Вы можете установить некоторые сис-темные поля, которые так или иначе повлияют на результат добавления документов. Например, от поля _type зависит, будет добавлен документ или раздел – если Вы установите поле в 1, то будет добавлен документ, если в 0 – то раздел. По умолча-нию добавляется документ. Ниже перечислены системные поля, обрабатываемые алгоритмом функции InsertDocument:
_parent_id – указывает id раздела, в который необходимо добавить документ, если таковой id не указан посредством параметра при вызове функции
_type - указывает тип создаваемого документа. 0 для раздела, 1 для документа
_create_time – время создания документа. Если не указано, устанавливается в текущее время.
_publish_time – время первой публикации документа. Если не указано, устанав-ливается в 0 ("документ не был опубликован").
_code – указывает код создаваемого раздела. Применяется только при создании раздела, при создании же документа игнорируется.
_url – указывает маску пути создаваемого документа. Если не указано – будет взято из настроек по умолчанию. Особенности разворачивания маски документов – чуть ниже.
При создании документа или раздела используются настройки по умолчанию, кото-рая система берет из раздела, в котором создается документ. То есть, вновь создан-ному документу будут присвоены все прописанные пользователем настройки по умолчанию - контент-шаблон, дизайн-шаблон, кодировка и путь к документу.
phpDJEM не обладает способностями DJEM-скрипт процессора, поэтому не может в полной мере развернуть выражение DJEM-скрипт в маске файла. Поддерживается только таг <#_id#>, который заменяется на id вновь создаваемого документа. Напри-мер, маска /ru/biblio/books/<#_id#>.shtml будет заменена на /ru/biblio/books/22.shtml для вновь созданного документа за номером 22
Пример:
<?php require("djem.php");
$djem = new DJEM("localhost", "base", "user", "pass"); $dxml = new xml(‘root’); $dxml->Set("_name", "Test document"); $dxml->Set("price", 23); $dxml->Set("country", $djem->win2utf("Россия")); $dxml->Set("_url", "/test/document_<#_id#>.shtml");
$documentId = $djem->InsertDocument($dxml, 32);
echo $documentId; ?>
Данная программа добавит документ номер 33 (допустим) с именем "Test document" и путем /test/document_33.shtml в раздел с номером 32
|