Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



API MyBB

Сообщений 121 страница 140 из 279

121

9. Последние сообщения

Метод -> lastPosts.orderedList.get

Возвращает массив с инфой о максимум 25-ти (по умолчанию 10) последних сообщениях на форуме,
т.е. улучшенный аналог /export.php.
Сортировка по дате отправления сообщения, упорядочивание по убыванию. Т.е. чем свежее сообщение, тем оно выше.

Доп. аргумент:
max - ограничение в ответе по количеству последних сообщений, не более 25.

Примерчик:

Код:
https://forum.mybb.ru/api.php?method=lastPosts.orderedList.get
https://forum.mybb.ru/api.php?method=lastPosts.orderedList.get&max=10

Используемые ключи:
topicId - ID темы
topicName - название темы
forumId - ID форума, в котором находится тема
forumName - название форума, в котором находится тема
idLastPoster - идентификационный номер (UserID) автора последнего сообщения
loginLastPoster - логин (UserLogin) автора последнего сообщения
avatarLastPoster - относительный путь к аватару "/img/avatars/0000/*********.jpg" автора последнего сообщения, если не установлен - пустая текст. строка
timeLastPost - дата создания последнего сообщения, кол-во сек с начала эпохи UNIX

Можно получать только нужные данные перечисляя ключи в запросе через запятую в значении аргумента key.

-------------------------------

Этот метод и два предыдущих можно объединить в один, создавая разницу доп. аргументом:

Код:
https://forum.mybb.ru/api.php?method=search.orderedList.get&data=new
https://forum.mybb.ru/api.php?method=search.orderedList.get&data=active
https://forum.mybb.ru/api.php?method=search.orderedList.get&data=last

Отредактировано RUSSIAN_GOBLIN (Сб, 24 Мар 2012 16:01:45)

+1

122

RUSSIAN_GOBLIN написал(а):

Примерчик бы, чтобы понять как это работает.
Но мне кажется такое решение содержит потенциальную  уязвимость...
Наверное, было бы лучше брать инфу из сессии и сравнивать на стороне сервера.

Объясняю.

При использовании скриптов партнеров, использующих серверные решения, мы не можем отслеживать правдивость отправляемых данных на стороне клиента. Потенциальная уязвимость заключалась в том, что пользователь может самостоятельно выполнить запрос, изменив UserID или BoardID в запросе и получить данные, предназначенные не для него. Решение этой проблемы - использование подписи, составляющейся на сервере Mybb с данными (указаны в настройках http://mybb.ru/partner/settings/ ). Теперь своим скриптам на стороне клиента нужно передавать все данные, включая ForumAPITicket, и на стороне сервера делать проверку подписи

Код:
...
if( sha1( $_GET['BoardID'] . $_GET['UserID'] . $_GET['GroupID'] . $_GET['UserLastVisit'] . $SecretKey ) === $_GET['ForumAPITicket'] ) 
{
      return true;
}
...

где $SecretKey — ваш партнерский ключ.
SecretKey нужен для того, чтобы пользователи самостоятельно не смогли составить/подделать подпись. Ключ знает только владелец партнерки.

Отредактировано Duka (Пт, 23 Мар 2012 22:45:58)

0

123

10. Категории и форумы

Метод -> category.orderedList.get

Возвращает массив с инфой о категориях форума.
Сортировка по расположению категорий согласно настройкам в админке.

Пример:

Код:
https://forum.mybb.ru/api.php?method=category.orderedList.get

Ответ:

Код:
[{"id":"0", "name":"Информационный раздел", "forums":"4"},
{"id":"1", "name":"Техническая поддержка", "forums":"5"},
{"id":"2", "name":"Форумы опытных пользователей", "forums":"7"},
...
]

Используемые ключи:
id - номер расположения категории по порядку, начиная с 0.
name - название категории
forums - количество форумов в категории

Можно получать только нужные данные перечисляя ключи в запросе  через запятую в значении аргумента key.

Можно получить инфу только о нужных категориях так:

Код:
https://forum.mybb.ru/api.php?method=category.orderedList.get&data=1,4

------------------------------------------------------------------------------------------------------

Метод -> forums.orderedList.get

Возвращает массив с инфой о форумах в категории.
Сортировка по расположению форумов в категории согласно настройкам в админке.

Пример:

Код:
https://forum.mybb.ru/api.php?method=forums.orderedList.get

Ответ:

Код:
[{"id":"0", "name":"Информация сервиса", "description":"Этот форум предназначен для извещения пользователей о всех изменениях, нововведениях в сервисе, а так же и на этом форуме.", "topics":"38", "answers":"4251", "lastTopicId":"28813", "lastTopicName":"18 ноября 2011г.: Изменения в форме ответа", "lastPosterId":"20787", "lastPostTime":"1332515686","redirect":"","messageСounter":"1"},
{"id":"1", "name":"Справочная", "description":"Здесь собраны ответы на часто задаваемые вопросы. Рекомендуем к прочтению новичкам в обязательном порядке.", "topics":"53", "answers":"1090", "lastTopicId":"21386", "lastTopicName":"Профилактика на форуме", "lastPosterId":"20787", "lastPostTime":"1321515686","redirect":"","messageСounter":"1"},
{"id":"2", "name":"Новые возможности форумов", "description":"Здесь можно найти скрипты, позволяющие расширить функциональные возможности форума и дополнить существующие. Любой опытный пользователь имеет возможность поделиться собственным творением в Javascript, HTML или CSS.", "topics":"24", "answers":"5427", "lastTopicId":"27467", "lastTopicName":"JS-конструктор — удобное управление популярными скриптами", "lastPosterId":"9327", "lastPostTime":"1332515406","redirect":"","messageСounter":"1"},
...
]

Используемые ключи:
id - номер расположения форума по порядку, начиная с 0.
name - название форума
description - HTML-описание форума
topics - количество тем в форуме
answers - количество ответов в форуме
lastTopicId - ID темы в форуме, в которой было опубликовано самое свежее сообщение
lastTopicsName - название темы в форуме, в которой было опубликовано самое свежее сообщение
lastPosterId -  ID автора самого свежего сообщения в форуме
lastPostTime - дата создания последнего сообщения, кол-во сек с начала эпохи UNIX
redirect - пустая текст. строка если нет редиректа, иначе адрес редиректа
messageСounter - 0 если счётчик постов отключён, иначе 1

Можно получать только нужные данные перечисляя ключи в запросе через запятую в значении аргумента key.

Можно получить инфу только о нужных категориях так:

Код:
https://forum.mybb.ru/api.php?method=forums.orderedList.get&data=2,3

Отредактировано RUSSIAN_GOBLIN (Сб, 24 Мар 2012 15:57:19)

+1

124

11. Серверное хранилище

Данная возможность позволит скриптам сохранять на сервере МуВВ произвольные данные и обращаться к ним.
Немного аналогичная функция есть в API Вконтакте:

Методы для хранения произвольных данных
storage.get – возвращает значение хранимой переменной.
storage.set– сохраняет значение хранимой переменной.

Каждому форуму на сервере МуВВ выделяется отдельная таблица БД с возможность чтения и записи в неё посредством запросов к API.
Допустим название таких таблиц будет начинаться на ss -- сокращение от Server Storage (англ. серверное хранилище), а заканчиваться ID-номером форума.
Например, таблица этого форума будет будет называться: ss8753.
Таким образом у каждого форума будет своя таблица в БД, а ss - будет играть роль префикса для этого типа таблиц.

Таблица стоит из двух столбцов: префикс и данные.

Код:
mysql> CREATE TABLE ss8753 (prefix VARCHAR(20), data TEXT(65535));

Пример таблицы:

Name table: ss8753

prefix VARCHAR(20)

data TEXT(65535)

shop

**********

purchase

**********

moneyBalance

**********

moneyTransactions

**********

award

**********

award

**********

prize

**********

prize

**********

сards

**********

сards

**********

comments

**********

Префикс - уникальный ключ скрипта, нужен чтобы скрипты не мешали друг другу - не пытались удалить или изменить данные, созданые другими скриптами, т.е. чтобы всегда обращались только к своим строкам. Префикс состоит из символов [A-Za-z0-9].

Методы:

Получение информации:

1. api.php?method=length.storage.get - возвращает количество (не пустых) строк в таблице

Код:
{"length":"11"}

2. api.php?method=length.storage.get&prefix=***** - возвращает количество строк префиксом, с указанным вместо *****

Код:
{"length":"**"}

Чтение данных:

1. api.php?method=storage.get - возвращает содержимое всех строк таблицы:

Код:
[{"prefix":"", "data":""},
{"prefix":"", "data":""},
...
]

2. api.php?method=storage.get&prefix=award - возвращает содержимое строк с заданным префиксом (в данном случае award)

Код:
[{"prefix":"award", "data":"**********"},
{"prefix":"award", "data":"**********"}]

3. api.php?method=storage.get&prefix=award&str=2 - возвращает содержимое указанной строки с заданным префиксом: (в данном случае префикс - award, вторая строка).

Код:
{"prefix":"award", "data":"**********"}

4. api.php?method=storage.get&prefix=award&str=1(,2, ...) - возвращает содержимое указанных строк с заданным префиксом: (в данном случае префикс - award, первая и вторая строки).

Код:
[{"prefix":"award", "data":"**********"},
{"prefix":"award", "data":"**********"}]

Запись данных:

1. api.php?method=new.storage.set&prefix=********&data=Привет, мир!
Создаёт новую строку с заданным префиксом и заданным, значением аргумента data, содержимым поля data;

2.  api.php?method=storage.set&prefix=********&str=N&data=Привет, мир!
Если N-ной строки с данным префиксом нет, создаёт её с заданным префиксом и заданным, значением аргумента data, содержимым поля data;
или если есть N-ная строка с данным префиксом, то перезаписывает содержимое поля data этой строки

3. api.php?method=append.storage.set&prefix=********&str=N&data=Привет, мир!
Добавляет данные в конец содержимого поля data N-ной строки.

4. api.php?method=prepend.storage.set&prefix=********&str=N&data=Привет, мир!
Добавляет данные в начало содержимого поля data N-ной строки.

Очищение данных

1. api.php?method=storage.null - очищает содержимое поля data всех строк таблицы;
2. api.php?method=storage.null&prefix=******** - очищает содержимое поля data строк с заданным префиксом;
3. api.php?method=storage.null&prefix=********str=1(,2,3, ...) - очищает содержимое поля data заданных строк с заданным префиксом.

Удаление строк

1. api.php?method=storage.remove - удаляет все строки таблицы;
2. api.php?method=storage.remove&prefix=******** - удаляет все строки с заданным префиксом;
3. api.php?method=storage.remove&prefix=********str=1(,2,3, ...) - удаляет заданные строки с заданным префиксом;

Ограничения:
1. В каждой такой таблице не более 500 строк. Этого хватит множеству скриптов.
2. Запросы на запись, удаление и очищение данных только при наличии авторизованной сессии.

----------------------------

P.S.: Admin, изначально мной такая возможность API не планировалась. Но для того чтобы спасти форумы (и серверы) МуВВ от нашествия на них "мощного фреймового API" © Deff, пришлось придумать это решение, более  благоразумное - чем запись на форум в спецраздел от имени какого-то бота.

----------------------------

P.P.S.:  Если это будет реализовано, то можно будет с помощью API сделать то, что сейчас делается с помощью фреймов, а также трудно программируемо: магазины всякие, форумные деньги, полноценные награды, открытки, подарки, комментарии к оценкам постов и т.п.

----------------------------

P.P.P.S.: Шансов того, что это будет реализовано - 1 к 1.000.000

+2

125

RUSSIAN_GOBLIN
+ Но с Ботом, занчительно реальней!
Прост запрос под ботом - анализ - гость не гость - гость - запрет правки произвольной подписи и выделенного Доп поля(к примеру, - пятого - если оно включено) ;
Чтение - запись/редактирование сообщений и открытие тем (в открытых для бота форумах) осуществляется под любым аккаунтом и гостем(это основа доп статистики и магазина; наградных листов)

Безопасность - открытие для бота ток определенных форумов в Админке

Отредактировано Deff (Вс, 25 Мар 2012 12:57:34)

0

126

Хоть кому-нибудь понятно - что такое серверное хранилище:D

0

127

RUSSIAN_GOBLIN
ты ещё не всё из запланированного расписал?

0

128

Romych, хотел сегодня ещё написать про отладку скриптов использующих API, т.е. про обработку ошибок запросов к API. Но не смог сделать нормальное описание...

0

129

RUSSIAN_GOBLIN
:glasses: Придёцо Писать фреймо API, которое будет тырить ники-пароли участников, посколь Гоблин не прислушиваецо к просьбам,

Без записи, - API  малоинтересно на этапе развития новых востребованных функций:

Неть ни магазина - ни нормальных наград, ни денежного обращения, нет отметок - в послужном списке, нет указаний за что поставили плюс в Уважение,

Реализация же Вышеописанного серверного хранилища - вещь утопическая... даж издевацо над многобуквами - не стоило

Отредактировано Deff (Вс, 25 Мар 2012 13:07:10)

0

130

Deff написал(а):

Без записи, - API  малоинтересно на этапе развития новых востребованных функций:

Неть ни магазина - ни нормальных наград, ни денежного обращения, нет отметок - в послужном списке, нет указаний за что поставили плюс в Уважение,

Читаем выше:

11. Серверное хранилище

...

P.P.S.:  Если это будет реализовано, то можно будет с помощью API сделать то, что сейчас делается с помощью фреймов, а также трудно программируемо: магазины всякие, форумные деньги, полноценные награды, открытки, подарки, комментарии к оценкам постов и т.п.

0

131

RUSSIAN_GOBLIN
Мну Еще раз Говорит

Deff написал(а):

Реализация же Вышеописанного серверного хранилища - вещь утопическая... даж издевацо над многобуквами - не стоило

Нун просто API-запрос записи/чтения/редактирования сообщения и создания Темы под выделенным  Аккаунтом бота, независимым от текущего статуса Аккаунта юзера, в Отличие от всех предыдущих запросов,
Запись по всему форуму ограничена в настройках конкретного форума, для данной выделенной группы(к который и приписан этот автоаккаунт.По умолчанию группа уже есть уже в списках редактирования форумов, как и Гость, с проставленным начальным запретом чтения/запись создание тем

Отредактировано Deff (Вс, 25 Мар 2012 13:34:23)

0

132

Deff, серверное хранилище вовсе не утопия, оно вполне реализуемо на практике.

Deff написал(а):

Нун просто API-запрос записи/чтения/редактирования сообщения и создания Темы под выделенным  Аккаунтом бота, независимым от текущего статуса Аккаунта юзера,

А вот это:
во-первых неудобно,
во-вторых Admin не станет это делать.

0

133

RUSSIAN_GOBLIN написал(а):

во-первых неудобно,

Во первых это удобно:
Этим делаецо как наградной лист, так и магазин,
Во вторых - способ опробированный уже под Гостем многолетне на сервисе
В третьих - всю нужную инфу из данных постов ти мож прочесть предыдущими методами API
В отличие от серверного хранилища - где ты ток через этот метод
В пятых - он отключаемый

Отредактировано Deff (Вс, 25 Мар 2012 13:45:22)

0

134

Deff, нет, это не удобно - ведь необходимо же вручную создать форум и настроить его.
Партнёрам МуВВ такой вариант не подходит. Смотри шире!

0

135

RUSSIAN_GOBLIN
Партнёрам Подходит и форум Администрации удобно
Не хочет чел пользовацо услугами - не даёт допуск боту... Хочет - Даёт

Отредактировано Deff (Вс, 25 Мар 2012 14:05:51)

0

136

Deff, твой вариант не удобен и точка (.)  :playful:
^^

0

137

RUSSIAN_GOBLIN
Еще раз напомню своё предложение, которое в качестве дополнений к посту 133, устроило и создателей отдельных скриптов и партнёров.

Движение в Ногу со временем... п.п.2

Deff написал(а):

2. Разрешение заливки в Админку файлов с Инета установленных типов(а думаю функционал движка заливки это позволяет, - дало бы возможность Партнёрам заливать скрипты дополнительного функционала по запросу от конкретного форума и его последущей сборке в минимальной конфигурации средствами партнера, с последующей перезаливкой  на конкретный форум, что существенно уменьшит размер контента всех текущих страниц, вынужденных сейчас тащить на себе на каждой странице все окна Админ-Настроек с полнотекстовыми скриптами

Разрешение на заливку для партнёров по спецключу,$SecretKey — предложенному Duka

Отредактировано Deff (Ср, 28 Мар 2012 04:08:19)

0

138

http://uploads.ru/t/6/M/S/6MSzw.png
Видел пост Ромыча про выведение рядом со строкой "Последнее сообщение" Аватара юзера, который написал этот последний пост, думаю тогда не особо сложно дополнить "Полседние 10 сообщений" - Пример указан на скрине выше.

0

139

baron4ik, это не тема для заказа скриптов.

0

140

Romych написал(а):

пока вот такой набросок предполагаемых скриптов основанных на запросах, может что-то упустил

    1. цветовыделение групп (без ручного вписывания ников)

Выделять ники на основе их группы в блоке статистики теперь можно средствами CSS.
Пример:

Код:
#pun-stats a.group1 {color:red}
#pun-stats a.group2 {color:green}

Покрасит ники администраторов в красный, а модераторов – в зеленый цвет.
Данный класс group(id) прописывается только для посетивших за сутки и именинников. Для списка Активных эта возможность недоступна.

+3