Главная  |  О продукте  |  Пользователям  |  Community

Поиск

 

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