Содержит класс Share. Предназначен для организации обмена сообщениями и файлами по типу простой социальной сети.
Share (class Share extends Discuss)__construct(\mysqli $dbLink)
Описание
Устанавливает связь с базой данных.
Принимаемые значения
dbLink - объект mysqli.
string createCircle(int $userId, string $name)
Описание
Создает новый круг контактов пользователя.
Принимаемые значения
userId - идентификатор пользователя, для которого создаётся круг.
name - имя круга.
Возвращаемые значения
В случае успеха, возвращает строковый идентификатор (GUID), созданного круга, иначе возвращает FALSE.
string / DOMDocument / bool userCircles(int $userId)
Описание
Возвращает список кругов пользователя.
Принимаемые значения
userId - идентификатор пользователя.
Возвращаемые значения
В случае успеха возвращает список кругов пользователя в виде объекта DOMDocument, строки в формате JSON, либо массива ,иначе возвращает FALSE.
Структура JSON описывается следующей схемой JSON Schema:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Структура XML описывается следующей схемой RELAX NG:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Структура массива имеет вид подобный:
array(
array(
'id' => 'идентификатор круга контактов',
'name' => 'имя круга контактов'
),
array(...),
...
)
bool renameCircle(int $userId, string $circleId, string $newName)
Описание
Переименовывает круг контактов пользователя.
Принимаемые значения
userId - идентификатор пользователя.
circleId - идентификатор (GUID) круга.
newName - новое имя круга.
Возвращаемые значение
В случае успеха возвращает TRUE, иначе FALSE.
bool addToCircle(int $contactId, string $circleId, int $userId)
Описание
Добавляет другого пользователя в круг контактов.
Принимаемые значение
contactId - идентификатор пользователя, который добавляется в круг в качестве нового контакта.
circleId - идентификатор (GUID) круга, в который добавляется контакт.
userId - идентификатор пользователе, в круг которого добавляется контакт.
Возвращаемые значения
В случае успеха возвращает TRUE, иначе FALSE.
string / DOMDocument / bool circleContacts(int $userId, string $circleId)
Описание
Возвращает список пользователей из круга контактов.
Принимаемые значения
userId - идентификатор пользователя, которому принадлежит круг.
circleId - идентификатор (GUID) круга.
Возвращаемые значения
В случае успеха возвращает список контактов, содержащихся в круге, в виде объекта DOMDocument, строки в формате JSON, либо массива ,иначе возвращает FALSE.
Структура JSON описывается следующей схемой JSON Schema:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | |
Структура XML описывается следующей схемой RELAX NG:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
Структура массива имеет вид подобный:
array(
'cid' => 'идентификатор круга',
'cname' => 'имя круга',
'contacts' => array(
array(
'id' => 'идентификатор контакта',
'username' => 'имя контакта',
'fullname' => 'полное имя контакта'
),
array(...),
...
)
)
bool rmFromCircle(int $userId, string $circleId, int $contactId)
Описание
Удаляет пользователя из круга контактов.
Принимаемые значения
userId - идентификатор пользователя, из круга которого удаляется контакт.
circleId - идентификатор (GUID) круг.
contactId - идентификактор пользователя, которого удаляют из круга.
Возвращаемые значения
В случае успеха возвращает TRUE, иначе FALSE.
bool delCircle(int $userId, string $circleId)
Описание
Удаляет круг контактов пользователя.
Принимаемые значения
userId - идентификатор пользователя.
circleId - идентификатор круга.
Возвращаемые значения
В случае успеха возвращает TRUE, иначе FALSE.
string createMsg(int $userId, string $title, string $text)
Описание
Создает сообщение пользователя.
Принимаемые значения
userId - идентификатор пользователя, от имени которого создаётся сообщение.
title - заголовок сообщения.
text - текст сообщения.
Возвращаемые значения
Идентификатор (GUID) созданного сообщения, иначе FALSE.
string stageFile(string $file, string $filename, int $userid, string $title = '', string $comment = '')
Описание
Перемещает, выгруженный на сервер, файл из временной директории и размещает его за именем указанного пользователя.
Принимаемые значения
file - путь до выгруженного файла во временной директории.
filename - имя файла, с которым он будет отдаваться при скачивании.
userId - идентификатор пользователя, за именем которого размещается файл.
title - краткий заголовок файла.
comment - краткий комментарий к файлу.
Возвращаемые значения
Идентификатор (GUID) размещённого файла, иначе возвращает FALSE.
bool shareFile(string $fileId, int $userId, array $circles)
Описание
Определяет права доступа к файлу среди кругов контактов пользователя для того, чтобы им можно было поделиться с другими пользователями.
Принимаемые значения
fileId - идентификатор (GUID) файла.
userId - идентификатор пользователя, которому принадлежит файл.
circles - массив вида array('идентификатор_круга' => bool ...).
Возвращаемые значения
В случае успеха возвращает TRUE, иначе FALSE.
string / DOMDocument / array / bool getFileInfo($fileId)
Описание
Возвращает информацию о файле.
Принимаемые значения
fileId - идентификатор файла (GUID).
Возвращаемые значения
В случае успеха возвращает информацию о файле в виде объекта DOMDocument, строки в формате JSON, либо массива ,иначе возвращает FALSE.
Структура JSON описывается следующей схемой JSON Schema:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | |
Структура XML описывается следующей схемой RELAX NG:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
Структура массива имеет вид подобный:
array(
'id' => 'идентификатор файла',
'username' => 'имя пользователя, загрузившего файл',
'fullname' => 'полное имя пользователя, загрузившего файл',
'title' => 'заголовок файла',
'filename' => 'имя файла',
'comment' => 'комментарий к файлу',
'mime' => 'mime тип файла',
'size' => размер_файла_в_байтах,
'time' => 'время выгрузки файла'
)
bool getFile(string $fileId, string $disp = 'inline', bool $nocache = FALSE)
Описание
Проверяет права на доступ и возвращает файл при помощи mod_xsendfile (для Apache2) и X-Accel-Redirect (для NGINX) или X-LIGHTTPD-send-file (для lighttpd).
Принимаемые значения
fileId - идентификатор (GUID) файла.
disp - может принимать значения 'inline' и 'attachment'. Указывает значение заголовка Content-Disposition. Значение 'inline' указывает, что контент может быть отображён внутри страницы браузера. А значение 'attachment' указывает, что контент должен быть скачен, большенство браузеров предоставляют для этого диалог 'Сохранить как'.
nocache - флаг, указывающий веб-браузеру, что он не должен кешировать полученый файл, если значение TRUE. Если значение FALSE, браузер должен кешировать полученый файл.
Возвращаемые значения
В случае успеха возвращает запрашиваемый файл, иначе возвращает страницу с одним из HTTP статусов:
:::403 Forbidden```, если в доступе отказано;
:::404 Not Found```, если файл не обнаружен;
:::501 Not Implemented```, если метод исполняется на неподдерживаемом веб-сервере;
:::503 Service Unavailable```, если на сервере возникла какая-либо ошибка.
При попытке выполнения не на веб-сервере возвращается ```FALSE```.
** **
**```bool attachFile( string $fileId, string $msgId, int $userId)```**
**Описание**
Прикрепляет файл к сообщению.
**Принимаемые значения**
*```fileId```* - идентификатор (GUID) файла.
*```msgId```* - идентификатор (GUID) сообщения.
*```userId```* - идентификатор пользователя, которому принадлежит файл и сообщение.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```bool unattachFile(string $fileId, string $msgId, int $userId)```**
**Описание**
Открепляет файл от сообщения.
**Принимаемые значения**
*```fileId```* - идентификатор (GUID) файла.
*```msgId```* - идентификатор (GUID) сообщения.
*```userId```* - идентификатор пользователя, которому принадлежит файл и сообщение.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```bool delFile(string $fileId, int $userId, bool $force = FALSE)```**
**Описание**
Удаляет размещённый файл.
**Принимаемые значения**
*```fileId```* - идентификатор (GUID) файла.
*```userId```* - идентификатор пользователя, которому принадлежит файл.
*```force```* - при значении ```FALSE```, файл будет удалён только если от не прикреплён к сообщению. При значении ```TRUE```, файл будет удалён даже если он прикреплён к сообщению.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```bool shareMsg(string $msgId, int $userId, array $circles)```**
**Описание**
Определяет права доступа к сообщению среди кругов контактов пользователя для того, чтобы им можно было поделиться с другими пользователями.
**Принимаемые значения**
*```msgId```* - идентификатор (GUID) файла.
*```userId```* - идентификатор пользователя, которому принадлежит сообщение.
*```circles```* - массив вида ```array('идентификатор_круга' => bool ...)```.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```string / DOMDocument / bool getMsg(string $msgId)```**
**Описание**
Возвращает данные сообщения.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения (GUID).
**Возвращаемые значения**
В случае успеха возвращает данные сообщения в виде объекта ```DOMDocument```, строки в формате JSON, либо массива ,иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"oneOf":
{
"type": ["string", "null",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
{
"type": "string",
"length": 0
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 65535
},
"time": {
"type": "string",
"pattern": "^[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}$"
},
"username": {
"type": "string",
"pattern": "[a-zA-Z0-9_]{3,20}"
},
"fullname": {
"type": "string",
"maxLength": 100
}
},
"required": ["id", "source", "title", "text", "time", "username", "fullname"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="message">
<attribute name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</attribute>
<choice>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">65535
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
<element name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</element>
<element name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</element>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'id' => 'идентификатор сообщения',
'source' => 'идентификатор исходного сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
'username' => 'имя пользователя, от имени которого было создано сообщение',
'fullname' => 'полное имя пользователя, от имени которого было создано сообщение'
)
** **
**```string / DOMDocument / bool msgFiles(string $msgId)```**
**Описание**
Возвращает список файлов, прикреплённых к сообщению.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения (GUID).
**Возвращаемые значения**
В случае успеха возвращает список файлов, прикреплённых к сообщению, в виде объекта ```DOMDocument```, строки в формате JSON, либо массива ,иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"msgid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"title": {
"type": "string",
"maxLength": 255
},
"filename": {
"type": "string",
"minLength": 3,
"maxLength": 255
},
"mime": {
"type": "string",
"pattern": "^[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})\/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})$"
}
},
"required": ["id", "title", "filename", "mime"]
}
}
},
"required": ["msgid", "files"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="files">
<attribute name="msgid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</attribute>
<zeroormore>
<element name="file">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="title">
<data type="string">
<param name="maxLength">255
</data>
</element>
<element name="filename">
<data type="string">
<param name="minLength">3
<param name="maxLength">255
</data>
</element>
<element name="mime">
<data type="string">
<param name="pattern">[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'msgid' => '',
'files' => array(
array(
'id' => 'идентификатор файла',
'title' => 'заголовок файла',
'filename' => 'имя файла',
'mime' => 'MIME-тип файла'
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool getFileShares(string $fileId, int $userId)```**
**Описание**
Возвращает данные о правах доступа к файлу.
**Принимаемые значения**
*```fileId```* - идентификатор файла (GUID).
*```userId```* - идентификатор пользователя, которому принадлежит файл.
**Возвращаемые значения**
В случае успеха возвращает данные о правах доступа к файлу в виде объекта ```DOMDocument```, строки в формате JSON, либо массива ,иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"fileId": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"circles": {
"type": "array",
"items": {
"type": "object",
"oneOf":
{
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"access": {
"type": "integer",
"minimum": 0,
"maximum": 1
}
}
},
{
"properties": {
"id": {
"type": "string",
"pattern": "^public$"
},
"name": {
"type": "string",
"length": 0
},
"access": {
"type": "integer",
"minimum": 0,
"maximum": 1
}
}
}
],
"required": ["id", "name", "access"]
}
}
},
"required": ["fileId", "circles"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="shares">
<attribute name="fileId">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</attribute>
<zeroormore>
<choice>
<element name="circle">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="name">
<data type="string">
<param name="minLength">1
<param name="maxLength">50
</data>
</element>
<element name="access">
<choice>
<value>0</value>
<value>1</value>
</choice>
</element>
</element>
<element name="circle">
<element name="id">
<data type="string">
<param name="pattern">public
</data>
</element>
<element name="name">
<data type="string">
<param name="length">0
</data>
</element>
<element name="access">
<choice>
<value>0</value>
<value>1</value>
</choice>
</element>
</element>
</choice>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'fileId' => 'идентификатор файла',
'circles' => array(
array(
'id' => 'идентификатор круга',
'name' => 'имя круга',
'access' => значение_доступа_к_файлу
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool getMsgShares(string $msgId, int $userId)```**
**Описание**
Возвращает данные о правах доступа к сообщению.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения (GUID).
*```userId```* - идентификатор пользователя, которому принадлежит сообщение.
**Возвращаемые значения**
В случае успеха возвращает данные о правах доступа к сообщению в виде объекта ```DOMDocument```, строки в формате JSON, либо массива ,иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"msgId": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"circles": {
"type": "array",
"items": {
"type": "object",
"oneOf":
{
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"access": {
"type": "integer",
"minimum": 0,
"maximum": 1
}
}
},
{
"properties": {
"id": {
"type": "string",
"pattern": "^public$"
},
"name": {
"type": "string",
"length": 0
},
"access": {
"type": "integer",
"minimum": 0,
"maximum": 1
}
}
}
],
"required": ["id", "name", "access"]
}
}
},
"required": ["msgId", "circles"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="shares">
<attribute name="msgId">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</attribute>
<zeroormore>
<choice>
<element name="circle">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="name">
<data type="string">
<param name="minLength">1
<param name="maxLength">50
</data>
</element>
<element name="access">
<choice>
<value>0</value>
<value>1</value>
</choice>
</element>
</element>
<element name="circle">
<element name="id">
<data type="string">
<param name="pattern">public
</data>
</element>
<element name="name">
<data type="string">
<param name="length">0
</data>
</element>
<element name="access">
<choice>
<value>0</value>
<value>1</value>
</choice>
</element>
</element>
</choice>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'msgId' => 'идентификатор сообщения',
'circles' => array(
array(
'id' => 'идентификатор круга',
'name' => 'имя круга',
'access' => значение_доступа_к_сообщению
),
array(...),
...
)
)
** **
**```bool editFile(string $fileId, int $userId, string $title, string $comment)```**
**Описание**
Редактирует информацию о файле.
**Принимаемые значения**
*```fileId```* - идентификатор файла.
*```userId```* - идентификатори пользователя.
*```title```* - новый краткий заголовок файла.
*```comment```* - новый краткий комментарий к файлу.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```array / bool repostMsg(string $msgId, int $userId, bool $hlink = TRUE)```**
**Описание**
Производит репост сообщения со всеми файлами, прикреплёнными к сообщению, к которым предоставлен доступ.
**Принимаемые значения**
*```msgId```* - идентификатор копируемого сообщения.
*```userId```* - идентификатор пользователя, производящего репост.
*```hlink```* - флаг, который указывает на то, нужно ли создавать жёсткие ссылки на файлы, прикреплённые к сообщению (позволяет сэкономить дисковое пространство), или же нужно производить копирование этих файлов. При значении ```TRUE```, создаются жёсткие ссылки. При значении ```FALSE```, файлы копируются.
**Возвращаемые значения**
При успешном репосте сообщения возвращается массив с информацией о копии сообщения вида ```array('message' => 'идентификатор_сообщения', 'files' => array_values('идентификатор_файла_1', 'идентификатор_файла_2' ...))```.
** **
**```bool editMsg(string $msgId, int $userId, string $title, string $text)```**
**Описание**
Редактирует сообщение.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения.
*```userId```* - идентификатор пользователя, которому принадлежит сообщение.
*```title```* - заголовок сообщения.
*```text```* - текст сообщения.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```bool delMsg($msgId, $userId, $keepFiles = TRUE)```**
**Описание**
Удаляет сообщение.
**Принимаемые значения**
*```msgId```* - идентификатор удаляемого сообщения.
*```userId```* - идентификатор пользователя, которому принадлежит сообщение.
*```keepFiles```* - флаг, который указывает на то, нужно ли сохранить файлы, прикреплённые к сообщению. При значении ```TRUE```, файлы будут сохранены. При значении ```FALSE```, файлы, прикреплённые к сообщению, будут удалены вместе с ним.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```string / bool repostFile($fileId, $userId, $hlink = TRUE)```**
**Описание**
Производит репост файла.
**Принимаемые значения**
*```fileId```* - идентификатор копируемого файла.
*```userId```* - идентификатор пользователя, производящего репост.
*```hlink```* - глаг, который указывает на то, нужно ли создать жёсткую ссылку на файл (позволяет сэкономить дисковое пространство), или же нужно произвести копирование этого файла. При значении ```TRUE```, создаётся жёсткая ссылка. При значении ```FALSE```, файл копируется.
**Возвращаемые значения**
В случае успеха возвращает идентификатор копии файла (GUID), иначе ```FALSE```.
** **
**```array / bool sumUserMsgs(int $userId, int $rpp = 20)```**
**Описание**
Возвращает обобщенные данные о сообщениях, опубликованных пользователем, постранично.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, данные о сообщениях которого запрашиваются.
*```rpp```* - желаемое максимальное количество записей на странице. Число от 1 и выше. Если значение меньше 1, то оно приравнивается к 1.
**Возвращаемые значения**
Массив вида ```array('records' => int $totalRecs, 'pages' => int $totalPages)```, где ```totalRecs``` - общее количество сообщения, ```totalPages``` - общее количество страниц, рассчитанное из соотношения ```totalRecs/rpp```. Данные выводятся с учётом прав доступа. В случае неудачи возвращает ```FALSE```.
** **
**```string / DOMDocument / bool userMsgs(int $userId, int $pageNumber, int $totalPages, int $rpp = 20, array $orderBy = array('time'), bool $ascent = FALSE)```**
**Описание**
Возвращает страницу с сообщениями пользователя.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи сообщения запрашиваются
*```pageNumber```* - номер страницы, число от 1 и выше.
*```totalPages```* - общее количество страниц.
*```rpp```* - желаемое максимальное количество записей на странице.
*```orderBy```* - параметры сортировки вывода сообщений пользователя. Допустимые значения параметров: ```'time'```, ```'title'```. Последовательность параметров задаётся как массив, например, ```array('title', 'time')```. Некорректно заданная последовательность параметров приравнивается к ```array('time')```.
*```ascent```* - направление сортировки. При значении ```FALSE```, применяется сортировка по убывающей. При значении ```TRUE``` применяется сортировка по возрастающей.
**Возвращаемые значения**
В случае успеха возвращает сообщения пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "source", "title", "text", "time"]
}
}
},
"required": ["username", "uid", "fullname", "messages"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<zeroormore>
<element name="message">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'messages' => array(
array(
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения'
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool msgStripe(int $userId, int $rpp = 20)```**
**Описание**
Возвращает ленту сообщений пользователя.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи сообщения запрашиваются.
*```rpp```* - желаемое максимальное количество записей.
**Возвращаемые значения**
В случае успеха возвращает ленту сообщений пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "source", "title", "text", "time"]
}
},
"maxmark": {
"type": "number"
},
"minmark": {
"type": "number"
}
},
"required": ["username", "uid", "fullname", "messages", "minmark", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="minmark">
<data type="double">
</data></attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'messages' => array(
array(
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'minmark' => минимальная.метка,
'maxmark' => максимальная.метка
)
** **
**```string / DOMDocument / bool appendMsgStripe(int $userId, double $minMark, int $rpp = 20)```**
**Описание**
Возвращает ленту сообщений пользователя, следующих за минимальной меткой.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи сообщения запрашиваются.
*```minMark```* - минимальная метка.
*```rpp```* - желаемое максимальное количество записей.
**Возвращаемые значения**
В случае успеха возвращает ленту сообщений пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "source", "title", "text", "time"]
}
},
"minmark": {
"type": "number"
}
},
"required": ["username", "uid", "fullname", "messages", "minmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="minmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'messages' => array(
array(
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'minmark' => минимальная.метка
)
** **
**```string / DOMDocument / bool updateMsgStripe(int $userId, double $maxMark)```**
**Описание**
Возвращает ленту сообщений пользователя, идущих перед максимальной меткой.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи сообщения запрашиваются.
*```maxMark```* - максимальная метка.
**Возвращаемые значения**
В случае успеха возвращает ленту сообщений пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "source", "title", "text", "time"]
}
},
"maxmark": {
"type": "number"
}
},
"required": ["username", "uid", "fullname", "messages", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'messages' => array(
array(
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'maxmark' => максимальная.метка
)
** **
**```array / bool sumUserFiles(int $userId, int $rpp = 20)```**
**Описание**
Возвращает обобщенные данные о файлах, размещённых пользователем, постранично.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, данные о файлах которого запрашиваются.
*```rpp```* - желаемое максимальное количество записей на странице. Число от 1 и выше. Если значение меньше 1, то оно приравнивается к 1.
**Возвращаемые значения**
Массив вида ```array('records' => int $totalRecs, 'pages' => int $totalPages)```, где ```totalRecs``` - общее количество файлов, ```totalPages``` - общее количество страниц, рассчитанное из соотношения ```totalRecs/rpp```. Данные выводятся с учётом прав доступа. В случае неудачи возвращает ```FALSE```.
** **
**```string / DOMDocument / bool userFiles(int $userId, int $pageNumber, int $totalPages, int $rpp = 20, array $orderBy = array('time'), bool $ascent = FALSE)```**
**Описание**
Возвращает страницу с файлами пользователя.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи файлы запрашиваются.
*```pageNumber```* - номер страницы, число от 1 и выше.
*```totalPages```* - общее количество страниц.
*```rpp```* - желаемое максимальное количество записей на странице.
*```orderBy```* - параметры сортировки вывода файлов пользователя. Допустимые значения параметров: ```'time'```, ```'title'```. Последовательность параметров задаётся как массив, например, ```array('title', 'time')```. Некорректно заданная последовательность параметров приравнивается к ```array('time')```.
*```ascent```* - направление сортировки. При значении ```FALSE```, применяется сортировка по убывающей. При значении ```TRUE``` применяется сортировка по возрастающей.
**Возвращаемые значения**
В случае успеха возвращает файлы пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"title": {
"type": "string",
"maxLength": 255
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"comment": {
"type": "string",
"maxLength": 1024
},
"mime": {
"type": "string",
"pattern": "^[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})\/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})$",
"maxLength": 50
},
"size": {
"type": "integer",
"minimal": 1
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "title", "filename", "comment", "mime", "size", "time"]
}
}
},
"required": ["username", "uid", "fullname", "files"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="files">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<zeroormore>
<element name="file">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="title">
<data type="string">
<param name="maxLength">255
</data>
</element>
<element name="filename">
<data type="string">
<param name="minLength">1
<param name="maxLength">255
</data>
</element>
<element name="comment">
<data type="string">
<param name="maxLength">1024
</data>
</element>
<element name="mime">
<data type="string">
<param name="pattern">[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})
</data>
</element>
<element name="size">
<data type="positiveInteger">
</data></element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'files' => array(
array(
'id' => 'идентификатор файла',
'title' => 'заголовок файла',
'filename' => 'имя файла',
'comment' => 'комментарий к файлу',
'mime' => 'mime тип файла',
'size' => размер_файла_в_байтах,
'time' => 'время выгрузки файла'
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool fileStripe(int $userId, int $rpp = 20)```**
**Описание**
Возвращает ленту файлов пользователя.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи файлы запрашиваются.
*```rpp```* - желаемое максимальное количество записей.
**Возвращаемые значения**
В случае успеха возвращает сообщения пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"title": {
"type": "string",
"maxLength": 255
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"comment": {
"type": "string",
"maxLength": 1024
},
"mime": {
"type": "string",
"pattern": "^[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})\/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})$",
"maxLength": 50
},
"size": {
"type": "integer",
"minimal": 1
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "title", "filename", "comment", "mime", "size", "time"]
}
},
"minmark": {
"type": "number"
},
"maxmark": {
"type": "number"
}
},
"required": ["username", "uid", "fullname", "files", "minmark", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="files">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="minmark">
<data type="double">
</data></attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="file">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="title">
<data type="string">
<param name="maxLength">255
</data>
</element>
<element name="filename">
<data type="string">
<param name="minLength">1
<param name="maxLength">255
</data>
</element>
<element name="comment">
<data type="string">
<param name="maxLength">1024
</data>
</element>
<element name="mime">
<data type="string">
<param name="pattern">[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})
</data>
</element>
<element name="size">
<data type="positiveInteger">
</data></element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'files' => array(
array(
'id' => 'идентификатор файла',
'title' => 'заголовок файла',
'filename' => 'имя файла',
'comment' => 'комментарий к файлу',
'mime' => 'mime тип файла',
'size' => размер_файла_в_байтах,
'time' => 'время выгрузки файла'
),
array(...),
...
),
'minmark' => минимальная.метка,
'maxmark' => максимальная.метка
)
** **
**```string / DOMDocument / bool appendFileStripe(int $userId, double $minMark, int $rpp = 20)```**
**Описание**
Возвращает ленту файлов пользователя, следующих за минимальной меткой.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи файлы запрашиваются.
*```minMark```* - минимальная метка.
*```rpp```* - желаемое максимальное количество записей.
**Возвращаемые значения**
В случае успеха возвращает ленту файлов пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"title": {
"type": "string",
"maxLength": 255
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"comment": {
"type": "string",
"maxLength": 1024
},
"mime": {
"type": "string",
"pattern": "^[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})\/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})$",
"maxLength": 50
},
"size": {
"type": "integer",
"minimal": 1
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "title", "filename", "comment", "mime", "size", "time"]
}
},
"minmark": {
"type": "number"
}
},
"required": ["username", "uid", "fullname", "files", "minmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="files">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="minmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="file">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="title">
<data type="string">
<param name="maxLength">255
</data>
</element>
<element name="filename">
<data type="string">
<param name="minLength">1
<param name="maxLength">255
</data>
</element>
<element name="comment">
<data type="string">
<param name="maxLength">1024
</data>
</element>
<element name="mime">
<data type="string">
<param name="pattern">[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})
</data>
</element>
<element name="size">
<data type="positiveInteger">
</data></element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'files' => array(
array(
'id' => 'идентификатор файла',
'title' => 'заголовок файла',
'filename' => 'имя файла',
'comment' => 'комментарий к файлу',
'mime' => 'mime тип файла',
'size' => размер_файла_в_байтах,
'time' => 'время выгрузки файла'
),
array(...),
...
),
'minmark' => минимальная.метка
)
** **
**```string / DOMDocument / bool updateFileStripe(int $userId, double $maxMark)```**
**Описание**
Возвращает ленту файлов пользователя, идущих перед максимальной меткой.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, чьи файлы запрашиваются.
*```maxMark```* - максимальная метка.
**Возвращаемые значения**
В случае успеха возвращает ленту файлов пользователя в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"uid": {
"type": "integer",
"minimum": 1
},
"fullname": {
"type": "string",
"maxLength": 100
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"title": {
"type": "string",
"maxLength": 255
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"comment": {
"type": "string",
"maxLength": 1024
},
"mime": {
"type": "string",
"pattern": "^[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})\/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})$",
"maxLength": 50
},
"size": {
"type": "integer",
"minimal": 1
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["id", "title", "filename", "comment", "mime", "size", "time"]
}
},
"maxmark": {
"type": "number"
}
},
"required": ["username", "uid", "fullname", "files", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="files">
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="file">
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="title">
<data type="string">
<param name="maxLength">255
</data>
</element>
<element name="filename">
<data type="string">
<param name="minLength">1
<param name="maxLength">255
</data>
</element>
<element name="comment">
<data type="string">
<param name="maxLength">1024
</data>
</element>
<element name="mime">
<data type="string">
<param name="pattern">[a-z0-9]{1,12}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})/[a-z0-9]{1,13}([-.+]{1}[a-z0-9]{1,11}|[a-z0-9]{0,12})
</data>
</element>
<element name="size">
<data type="positiveInteger">
</data></element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'username' => 'имя пользователя',
'uid' => идентификатор_пользователя,
'fullname' => 'полное имя пользователя',
'files' => array(
array(
'id' => 'идентификатор файла',
'title' => 'заголовок файла',
'filename' => 'имя файла',
'comment' => 'комментарий к файлу',
'mime' => 'mime тип файла',
'size' => размер_файла_в_байтах,
'time' => 'время выгрузки файла'
),
array(...),
...
),
'maxmark' => максимальная.метка
)
** **
**```array / bool sumUserSubs(int $userId, int $rpp = 20)```**
**Описание**
Возвращает обобщенные данные о сообщениях, опубликованных контактами пользователя для него, постранично.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, данные о сообщениях для которого запрашиваются.
*```rpp```* - желаемое максимальное количество записей на странице. Число от 1 и выше. Если значение меньше 1, то оно приравнивается к 1.
**Возвращаемые значения**
Массив вида ```array('records' => int $totalRecs, 'pages' => int $totalPages)```, где ```totalRecs``` - общее количество сообщений, ```totalPages``` - общее количество страниц, рассчитанное из соотношения ```totalRecs/rpp```. Данные выводятся с учётом прав доступа. В случае неудачи возвращает ```FALSE```.
** **
**```string / DOMDocument / bool userSubs(int $userId, int $pageNumber, int $totalPages, int $rpp = 20, array $orderBy = array('time'), bool $ascent = FALSE)```**
**Описание**
Возвращает страницу с сообщениями, опубликованными контактами пользователя для него.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, для которого запрашиваются сообщения.
*```pageNumber```* - номер страницы, число от 1 и выше.
*```totalPages```* - общее количество страниц.
*```rpp```* - желаемое максимальное количество записей на странице.
*```orderBy```* - параметры сортировки вывода файлов пользователя. Допустимые значения параметров: ```'time'```, ```'title'```. Последовательность параметров задаётся как массив, например, ```array('title', 'time')```. Некорректно заданная последовательность параметров приравнивается к ```array('time')```.
*```ascent```* - направление сортировки. При значении ```FALSE```, применяется сортировка по убывающей. При значении ```TRUE``` применяется сортировка по возрастающей.
**Возвращаемые значения**
В случае успеха возвращает сообщения, опубликованные контактами пользователя для него, в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"type": "integer",
"minimum": 1
},
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": "string",
"maxLength": 100
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["uid", "username", "fullname", "id", "source", "title", "text", "time"]
}
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<zeroormore>
<element name="message">
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
array(
'uid' => идентификатор_пользователя,
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
)
** **
**```string / DOMDocument / bool subStripe(int $userId, int $rpp = 20)```**
**Описание**
Возвращает ленту сообщений, опубликованных контактами пользователя для него.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, для которого запрашиваются сообщения.
*```rpp```* - желаемое максимальное количество записей на странице.
**Возвращаемые значения**
В случае успеха возвращает ленту сообщений, опубликованных контактами пользователя для него, в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"type": "integer",
"minimum": 1
},
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": "string",
"maxLength": 100
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["uid", "username", "fullname", "id", "source", "title", "text", "time"]
}
},
"minmark": {
"type": "number"
},
"maxmark": {
"type": "number"
}
},
"required": ["messages", "minmark", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="minmark">
<data type="double">
</data></attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'messages' => array(
array(
'uid' => идентификатор_пользователя,
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'minmark' => минимальная.метка,
'maxmark' => максимальная.метка
)
** **
**```string / DOMDocument / bool appendSubStripe(int $userId, double $minMark, int $rpp = 20)```**
**Описание**
Возвращает ленту сообщений, опубликованных контактами пользователя для него, следующих за минимальной меткой.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, для которого запрашиваются сообщения.
*```minMark```* - минимальная метка.
*```rpp```* - желаемое максимальное количество записей.
**Возвращаемые значения**
В случае успеха возвращает ленту сообщений, опубликованных контактами пользователя для него, в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"type": "integer",
"minimum": 1
},
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": "string",
"maxLength": 100
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["uid", "username", "fullname", "id", "source", "title", "text", "time"]
}
},
"minmark": {
"type": "number"
}
},
"required": ["messages", "minmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="minmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'messages' => array(
array(
'uid' => идентификатор_пользователя,
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'minmark' => минимальная.метка
)
** **
**```string / DOMDocument / bool updateSubStripe(int $userId, double $maxMark)```**
**Описание**
Возвращает ленту сообщений, опубликованных контактами пользователя для него, идущих перед максимальной меткой.
**Принимаемые значения**
*```userId```* - идентификатор пользователя, для которого запрашиваются сообщения.
*```maxMark```* - максимальная метка.
**Возвращаемые значения**
В случае успеха возвращает ленту сообщений, опубликованных контактами пользователя для него, в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"type": "integer",
"minimum": 1
},
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": "string",
"maxLength": 100
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["uid", "username", "fullname", "id", "source", "title", "text", "time"]
}
},
"maxmark": {
"type": "number"
}
},
"required": ["messages", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'messages' => array(
array(
'uid' => идентификатор_пользователя,
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'maxmark' => максимальная.метка
)
** **
**```string / bool createMsgComment(string $msgId, int $userId, string $comment, string $parentId = '')```**
**Описание**
Создаёт комментарий к сообщению.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения, к которому создается комментарий.
*```userId```* - идентификатор пользователя, от имени которого создается сообщение.
*```comment```* - текст комментария, длина до 1024 символов.
*```parentId```* - идентификатор родительского комментария, если комментарий создаётся, как ответ на предшествующий комментарий.
**Возвращаемые значения**
В случае успеха возвращает идентификатор созданного комментария, иначе ```FALSE```.
** **
**```bool editMsgComment(string $comment, string $commentId, int $userId)```**
**Описание**
Редактирует комментарий к сообщению.
**Принимаемые значения**
*```comment```* - текст комментария, длина до 1024 символов.
*```commentId```* - идентификатор комментария.
*```userId```* - идентификатор пользователя, которому принадлежит редактируемый комментарий.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```string / DOMDocument / bool getMsgComment(sting $commentId, int $userId)```**
**Описание**
Получает информацию о комментарии.
**Принимаемые значения**
*```commentId```* - идентификатор комментария.
*```userId```* - идентификатор пользователя, которому принадлежит комментарий.
**Возвращаемые значения**
В случае успеха возвращает информацию о комментарии в виде объекта ```DOMDocument```, либо строки в формате JSON, иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"uid": {
"type": "integer"
},
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": ["string", "null"],
"maxLength": 100
},
"cid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["uid", "username", "fullname", "cid", "text"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="comment">
<element name="uid">
<data type="positiveInteger">
</data></element>
<element name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</element>
<element name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</element>
<element name="cid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="text">
<data type="string">
<param name="minLength">1
<param name="maxLength">1024
</data>
</element>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'uid' => 'идентификатор пользователя',
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'cid' => 'идентификатор комментария',
'text' => 'текст комментария'
)
** **
**```bool eraseMsgComment(string $commentId, string $userId)```**
**Описание**
Затирает комментарий.
**Принимаемые значения**
*```commentId```* - идентификатор комментария.
*```userId```* - идентификатор пользователя, которому принадлежит комментарий.
**Возвращаемые значения**
В случае успеха возвращает ```TRUE```, иначе ```FALSE```.
** **
**```string / DOMDocument / bool getMsgAllComments(string $msgId)```**
**Описание**
Получает ленту всех комментариев к сообщению.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения.
**Возвращаемые значения**
В случае успеха возвращает ленту комментариев к сообщению в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": ["string", "null"],
"maxLength": 100
},
"cid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"pcid": {
"type": ["string", "null"],
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 1024
},
"time": {
"type": "string",
"pattern": "^[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}$"
}
},
"required": ["username", "fullname", "cid", "pcid", "text", "time"]
}
},
"topic": {
"type": ["string", "null"]
},
"tid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"minmark": {
"type": "number"
},
"maxmark": {
"type": "number"
}
},
"required": ["comments", "topic", "tid", "minmark", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="comments">
<attribute name="topic">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="tid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</attribute>
<attribute name="minmark">
<data type="double">
</data></attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="comment">
<element name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</element>
<element name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</element>
<element name="cid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="pcid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="pcid">
<data type="string">
<param name="length">0
</data>
</element>
</choice>
<element name="text">
<data type="string">
<param name="minLength">1
<param name="maxLength">1024
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'topic' => 'название темы',
'tid' => 'идентификатор темы',
'minmark' => минимальная.метка,
'maxmark' => максимальная.метка,
'comments' => array(
array(
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'cid' => 'идентификатор комментария',
'pcid' => 'идентификатор родительского комментария',
'text' => 'текст комментария',
'time' => 'время создания комментария'
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool getMsgComments(string $msgId, int $rpp = 20)```**
**Описание**
Получает ленту комментариев к сообщению.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения.
*```rpp```* - желаемое максимальное количество записей на странице. Число от 1 и выше. Если значение меньше 1, то оно приравнивается к 1.
**Возвращаемые значения**
В случае успеха возвращает ленту комментариев к сообщению в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": ["string", "null"],
"maxLength": 100
},
"cid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"pcid": {
"type": ["string", "null"],
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 1024
},
"time": {
"type": "string",
"pattern": "^[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}$"
}
},
"required": ["username", "fullname", "cid", "pcid", "text", "time"]
}
},
"topic": {
"type": ["string", "null"]
},
"tid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"minmark": {
"type": "number"
},
"maxmark": {
"type": "number"
}
},
"required": ["comments", "topic", "tid", "minmark", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="comments">
<attribute name="topic">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<attribute name="tid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</attribute>
<attribute name="minmark">
<data type="double">
</data></attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="comment">
<element name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</element>
<element name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</element>
<element name="cid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="pcid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="pcid">
<data type="string">
<param name="length">0
</data>
</element>
</choice>
<element name="text">
<data type="string">
<param name="minLength">1
<param name="maxLength">1024
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'topic' => 'название темы',
'tid' => 'идентификатор темы',
'minmark' => минимальная.метка,
'maxmark' => максимальная.метка,
'comments' => array(
array(
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'cid' => 'идентификатор комментария',
'pcid' => 'идентификатор родительского комментария',
'text' => 'текст комментария',
'time' => 'время создания комментария'
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool appendMsgComments($msgId, $minMark, $rpp = 20)```**
**Описание**
Получает ленту комментариев к указанному сообщению, следующие за комментарием с минимальной меткой.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения.
*```minMark```* - минимальная метка.
*```rpp```* - желаемое максимальное количество записей на странице. Число от 1 и выше. Если значение меньше 1, то оно приравнивается к 1.
**Возвращаемые значения**
В случае успеха возвращает ленту комментариев к сообщению в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": ["string", "null"],
"maxLength": 100
},
"cid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"pcid": {
"type": ["string", "null"],
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 1024
},
"time": {
"type": "string",
"pattern": "^[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}$"
}
},
"required": ["username", "fullname", "cid", "pcid", "text", "time"]
}
},
"minmark": {
"type": "number"
}
},
"required": ["comments", "minmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="comments">
<attribute name="minmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="comment">
<element name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</element>
<element name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</element>
<element name="cid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="pcid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="pcid">
<data type="string">
<param name="length">0
</data>
</element>
</choice>
<element name="text">
<data type="string">
<param name="minLength">1
<param name="maxLength">1024
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'topic' => 'название темы',
'tid' => 'идентификатор темы',
'minmark' => минимальная.метка,,
'comments' => array(
array(
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'cid' => 'идентификатор комментария',
'pcid' => 'идентификатор родительского комментария',
'text' => 'текст комментария',
'time' => 'время создания комментария'
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool updateMsgComments(string $msgId, double $maxMark)```**
**Описание**
Получает все комментарии к указанному сообщению, идущие перед комментарием с максимальной меткой.
**Принимаемые значения**
*```msgId```* - идентификатор сообщения.
*```maxMark```* - максимальная метка.
**Возвращаемые значения**
В случае успеха возвращает ленту комментариев к сообщению в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": ["string", "null"],
"maxLength": 100
},
"cid": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"pcid": {
"type": ["string", "null"],
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 1024
},
"time": {
"type": "string",
"pattern": "^[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}$"
}
},
"required": ["username", "fullname", "cid", "pcid", "text", "time"]
}
},
"maxmark": {
"type": "number"
}
},
"required": ["comments", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="comments">
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="comment">
<element name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</element>
<element name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</element>
<element name="cid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="pcid">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<element name="pcid">
<data type="string">
<param name="length">0
</data>
</element>
</choice>
<element name="text">
<data type="string">
<param name="minLength">1
<param name="maxLength">1024
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'topic' => 'название темы',
'tid' => 'идентификатор темы',
'maxmark' => максимальная.метка,
'comments' => array(
array(
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'cid' => 'идентификатор комментария',
'pcid' => 'идентификатор родительского комментария',
'text' => 'текст комментария',
'time' => 'время создания комментария'
),
array(...),
...
)
)
** **
**```string / DOMDocument / bool pubMsgs(int $rpp = 20)```**
**Описание**
Возвращает ленту с публичными сообщениями ото всех пользователей
**Принимаемые значения**
*```rpp```* - желаемое максимальное количество записей на странице. Число от 1 и выше. Если значение меньше 1, то оно приравнивается к 1.
**Возвращаемые значения**
В случае успеха возвращает ленту с сообщениями ото всех пользователей, имеюшими публичный доступ, в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"type": "integer",
"minimum": 1
},
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": "string",
"maxLength": 100
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["uid", "username", "fullname", "id", "source", "title", "text", "time"]
}
},
"minmark": {
"type": "number"
},
"maxmark": {
"type": "number"
}
},
"required": ["messages", "minmark", "maxmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="minmark">
<data type="double">
</data></attribute>
<attribute name="maxmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'messages' => array(
array(
'uid' => идентификатор_пользователя,
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'minmark' => минимальная.метка,
'maxmark' => максимальная.метка
)
** **
**```string / DOMDocument / bool appendPubMsgs(double $minMark, int $rpp = 20)```**
**Описание**
Возвращает ленту с публичными сообщениями ото всех пользователей и следующими за сообением с минимальной меткой.
**Принимаемые значения**
*```minMark```* - минимальная метка.
*```rpp```* - желаемое максимальное количество записей.
**Возвращаемые значения**
В случае успеха возвращает ленту с сообщениями ото всех пользователей, имеюшими публичный доступ и следующими за минимальной меткой, в виде объекта ```DOMDocument```, строки в формате JSON, либо массива, иначе возвращает ```FALSE```. Данные выводятся с учётом прав доступа.
Структура JSON описывается следующей схемой JSON Schema:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"type": "integer",
"minimum": 1
},
"username": {
"type": "string",
"pattern": "^[a-zA-Z0-9_]{3,20}$"
},
"fullname": {
"type": "string",
"maxLength": 100
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
},
"source": {
"type": "string",
"oneOf":
{
"length": 0
},
{
"pattern": "^[a-z0-9{8}-[a-z0-9]{4}-4[a-z0-9]{3}-[a-z0-9]{4}-[a-z0-9]{12}$"
}
]
},
"title": {
"type": "string",
"maxLength": 250
},
"text": {
"type": "string",
"maxLength": 512
},
"time": {
"type": "string",
"pattern": "[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}"
}
},
"required": ["uid", "username", "fullname", "id", "source", "title", "text", "time"]
}
},
"minmark": {
"type": "number"
}
},
"required": ["messages", "minmark"]
}
Структура XML описывается следующей схемой RELAX NG:
<grammar datatypelibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="messages">
<attribute name="minmark">
<data type="double">
</data></attribute>
<zeroormore>
<element name="message">
<attribute name="uid">
<data type="positiveInteger">
</data></attribute>
<attribute name="username">
<data type="string">
<param name="pattern">[a-zA-Z\d_]{3,20}
</data>
</attribute>
<attribute name="fullname">
<data type="string">
<param name="maxLength">100
</data>
</attribute>
<element name="id">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
<choice>
<element name="source">
<data type="string">
<param name="length">0
</data>
</element>
<element name="source">
<data type="string">
<param name="pattern">[a-z\d]{8}-[a-z\d]{4}-4[a-z\d]{3}-[a-z\d]{4}-[a-z\d]{12}
</data>
</element>
</choice>
<element name="title">
<data type="string">
<param name="maxLength">250
</data>
</element>
<element name="text">
<data type="string">
<param name="maxLength">512
</data>
</element>
<element name="time">
<data type="string">
<param name="pattern">[0-9]{4}(-[0-9]{2}){2} [0-2]0-9{2}
</data>
</element>
</element>
</zeroormore>
</element>
</start>
</grammar>
Структура массива имеет вид подобный:
array(
'messages' => array(
array(
'uid' => идентификатор_пользователя,
'username' => 'имя пользователя',
'fullname' => 'полное имя пользователя',
'id' => 'идентификатор сообщения',
'source' => 'источник сообщения',
'title' => 'заголовок сообщения',
'text' => 'текст сообщения',
'time' => 'время создания сообщения',
),
array(...),
...
),
'minmark' => минимальная.метка
)
** **
**```void outputFormat(string $output = 'xml')```**
**Описание**
Устанавливает формат выводимых данных.
**Принимаемые значения**
*```output```* - может принимать значения *json*, или *xml*.
**[>>> Содержание <<<](ru.index)**