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

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

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



API MyBB

Сообщений 21 страница 40 из 279

21

Очередной опус. Встречаем!  :glasses:

2. Доступ к информации об участнике форума

а) доступ по UserID

Аргумент -> data
Значение -> user

Аргумент -> id
Значение -> номер идентификатора участника, например для главного админа он равен 2

Возвращает строку со всей доступной информацией об участнике форума, кроме идентификационного номера.

Пример:
Запрос:

Код:
https://forum.mybb.ru/api.php?data=user&id=2

Ответ:

Код:
{"ключ":"значение","ключ":"значение" и т.д.}

Используемые ключи:
sex - пол. Если не установлен - 0, женский - 1, мужской 2
age - возраст, если не установлен, то 0
name - имя, указанное в профиле, если не указано - пустая текстовая строка
posts - число постов данного юзера
style - стиль установленый в профиле
status - статус участника
avatar - относительный путь к аватару строкой, т.е. "/img/avatars/********.jpg"
invited - кол-во участников, зареганных по приглашению юзера
groupId - идентификационный номер группы
location - откуда (из профиля инфа), если нет - пустая текст. строка
lastPost - дата последнего сообщения в секундах от начала эпохи UNIX
lastVisit - дата последнего визита в секундах от начала эпохи UNIX
totalTime - время проведённое онлайн на форуме в секундах
userLogin - логин
birthDate - дата рождения в секундах от начала эпохи UNIX
groupTitle - название группы
registered - дата регистрации на форуме (для гл. админа момент создания форума) в секундах от начала эпохи UNIX
inviteCode - код инвайта
respectPlus - кол-во плюсов полученных участником, если значение положит. то без плюса, но если отриц. - то минус указать
respectMinus - кол-во минусов полученных участником, если значение положит. то без плюса, но если отриц. - то минус указать
positivePlus - кол-во плюсов данных участником, если значение положит. то без плюса, но если отриц. - то минус указать
positiveMinus - кол-во минусов полученных участником, если значение положит. то без плюса, но если отриц. - то минус указать

Получение только нужных данных
Это возможно при использовании доп. аргументов со значением 1.

Примеры:
Запрос:

Код:
https://forum.mybb.ru/api.php?data=user&id=5&login=1

Ответ:

Код:
{"login":"Мракобес"}

Запрос:

Код:
https://forum.mybb.ru/api.php?data=user&id=17&login=1&style=1

Ответ:

Код:
{"login":"Пацифист","style":"Cobalt"}

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

б) доступ по UserLogin

Аргумент -> data
Значение -> user

Аргумент -> login
Значение -> логин участника

Возвращает строку со всей доступной информацией об участнике форума, кроме логина.

Пример:
Запрос:

Код:
https://forum.mybb.ru/api.php?data=user&login=Admin

Ответ:

Код:
{"ключ":"значение","ключ":"значение" и т.д.}

Используемые ключи:
id - номер идентификатора участника
sex - пол. Если не установлен - 0, женский - 1, мужской 2
age - возраст, если не установлен, то 0
name - имя, указанное в профиле, если не указано - пустая текстовая строка
posts - число постов данного юзера
style - стиль установленый в профиле
status - статус участника
avatar - относительный путь к аватару строкой, т.е. "/img/avatars/********.jpg"
invited - кол-во участников, зареганных по приглашению юзера
groupId - идентификационный номер группы
location - откуда (из профиля инфа), если нет - пустая текст. строка
lastPost - дата последнего сообщения в секундах от начала эпохи UNIX
lastVisit - дата последнего визита в секундах от начала эпохи UNIX
totalTime - время проведённое онлайн на форуме в секундах
birthDate - дата рождения в секундах от начала эпохи UNIX
groupTitle - название группы
registered - дата регистрации на форуме (для гл. админа момент создания форума) в секундах от начала эпохи UNIX
inviteCode - код инвайта
respectPlus - кол-во плюсов полученных участником, если значение положит. то без плюса, но если отриц. - то минус указать
respectMinus - кол-во минусов полученных участником, если значение положит. то без плюса, но если отриц. - то минус указать
positivePlus - кол-во плюсов данных участником, если значение положит. то без плюса, но если отриц. - то минус указать
positiveMinus - кол-во минусов полученных участником, если значение положит. то без плюса, но если отриц. - то минус указать

Получение только нужных данных
Это возможно при использовании доп. аргументов со значением 1.

Примеры:
Запрос:

Код:
https://forum.mybb.ru/api.php?data=user&login=Наивная&id=1

Ответ:

Код:
{"id":"16793"}

Запрос:

Код:
https://forum.mybb.ru/api.php?data=user&login=Deff&groupId=1&positivePlus=1

Ответ:

Код:
{"groupId":"Опытные","positivePlus":"704"}

+1

22

RUSSIAN_GOBLIN - эгоист  (Ти - хоть и ратуешь за минимизацию обращений - стандарты API выбираешь ток под собственные нужды - оч сравнимо,- когда челы требуют ключи от заброшенного сайта, при живом хозяине

Ну нет у тьву реализации запросов текущих скриптов, да тех же новых писем...

Дафай - повторение мать учения - мну думает, что ты хочешь подавить объёмом и колвом настойчивости

Нужно что-то действительно универсально прозрачное, могущее заинтересовать и Админа - А так, без интереса, по максимуму -жди формат 10 -15 последних сообщений

А Запись в тему - позволяет вести  расширенную полную текущую статистику, не прибегая к сервису, и не клянчить ток часть востребованных данных

Отредактировано Deff (Ср, 14 Мар 2012 16:51:19)

0

23

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

RUSSIAN_GOBLIN - эгоист  (Ти - хоть и ратуешь за минимизацию обращений - стандарты API выбираешь ток под собственные нужды - оч сравнимо,- когда челы требуют ключи от заброшенного сайта, при живом хозяине

Я не эгоист! :)
Я предлагаю то, что будет востребовано в большинстве скриптов.

Например так:

Код:
https://forum.mybb.ru/api.php?data=user&id=5&login=1&avatar=1&status=1

Ромыч сможет получить часть нужной инфы для скрипта показывающего кто оценил пост.
Ответ запроса будет таким:

Код:
{"login" : "Борис Николаевич Ельцин" , "avatar" : "/img/avatars/******.jpg", "status" : "Экс-Президент"}

Для этого необходимо получить id-шники тех, кто оценил пост.
А как получить список id тех, кто оценил пост, а также данные ими оценки, и дату/время оценки я расскажу попозже.

0

24

RUSSIAN_GOBLIN
Самый востребованный скрипт с аякс - скрипт закрепления первого сообщения в теме - самый непродуктивный по запросам, но широко применяемый - скрипт "Инфо табло - кто -где",- где они отражены в твоём варианте запросов?
Тады -

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

Я предлагаю то, что будет востребовано в большинстве скриптов.

Кем? - в Ваших еще не реализованных Планах ?

Отредактировано Deff (Ср, 14 Мар 2012 17:28:51)

0

25

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

Самый востребованный скрипт с аякс - скрипт закрепления первого сообщения в теме - самый непродуктивный по запросам, но широко применяемый - скрипт "Инфо табло - кто -где",- где они отражены в твоём варианте запросов?
Тады -

А я разве закончил описание API? Всё ещё впереди!  https://forumupload.ru/uploads/0000/14/1c/346394-1.gif

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

Кем?

Развитый API - отличная возможность реализовать свои идеи для всех тех, кто пишет собственные приложения (скрипты)  :tomato:

0

26

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

А я разве закончил описание API? Всё ещё впереди!

Собственно хотелось бы услышать некий промежуточный резъюм от Админа(Мож не в ту степ прём

0

27

Deff, я тоже жду сообщения Admin'а о том, каким ему видится API.
Собственно за не имением такой опоры, пишу как думаю сам...

В моём представлении это функции/классы, находящиеся в файле api.php, и получающие данные путём get-запросов.
Далее функции/классы, в соответствии с полученными данными, делают запросы к БД и получают из таблиц БД инфу, которую преобразовывают в формат JSON и отдают клиенту т.е. браузеру.

Я пытаюсь создаю простую и понятную спецификацию запросов и ответов.
Это попытка создать решение удобное:
1. для реализации Admin'ом,
2. для использования программистами скриптов.

Код:
<script type="text/javascript">
$.getJSON("api.php", { data: "forum", title: "1" }, function(json) {
       var title_forum=json.title;
      //и далее манипуляции...
    });
</script>

На этом форуме этот запрос вернул бы "Единый форум поддержки".  :yep:

0

28

долго расписывать сейчас не получится, но разделите на пару веток API:
User, Post, Topic, Forum, Vote, PM
И надо разделить обсуждение с топиком вынесения описания методов

0

29

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

долго расписывать сейчас не получится, но разделите на пару веток API:
User, Post, Topic, Forum, Vote, PM

Дык я так и хочу. Я уже описал две части:
первое  - доступ к инфе о форуме,
второе - доступ к инфе юзеров.

Остальное напишу в течении нескольких дней.
API конструировать - не орешки щелкать.
Тем более первый раз таким занимаюсь  :huh:

mkusher, кстати, конструктивные предложения очень нужны ;)

Впереди: списки юзеров, нтмл-контент, ЛС, опросы, рейтинг поста...

0

30

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

Собственно хотелось бы услышать некий промежуточный резъюм от Админа(Мож не в ту степ прём

RUSSIAN_GOBLIN :cool: То, что надо. Я пока не успел ознакомиться подробно, но в целом по твоему ТЗ можно сразу приступать к реализации (с минимальными отклонениями), чем займусь с завтрашнего дня. Все понятно для программиста. Готовое ТЗ – уже половина работы (мне теперь не отвертеться ;-)  ).

+2

31

Admin, большое спасибо за отзыв :)
Я сам немного программист (не по образованию, а скорее по призванию) - в 2007-2009 годах писал программы на заказ, фриласером был. Клиенты прислали мне в общей сложности десятки тех. заданий. Поэтому знаю как написать хорошее ТЗ для программиста.
Ясное, подробное ТЗ это действительно полработы.

Кстати, вроде бы баг движка форума обнаружил: подробности.

0

32

RUSSIAN_GOBLIN

Зачет)

0

33

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

И я не сторонник наличия в API возможности создания (редактирования) тем, опросов, сообщений...Мне видится это уязвимостью, которую смогли бы использовать злоумышленникии и/или спамеры.

Злоумышленники могут  :glasses: типо меня обойтись и без АPI и аяксов.

Для защит от чреватостей, - данному боту достаточно присвоить некую группу, которая по-умолчанию, в настройках форума, выключена на запись/чтение, как и у гостя, тобишь писать/читать открывать темы можно лишь в форумах открытых для бота.. В противном случае, всю доп инфу придется складывать только на партнёрский сервер, что автоматом ставит всех партнёров новичков в аутсайдеры... Да и тьву тож, по сравнению с тем же DUKой..
Реально востребованный скрипт для ролевых - скрипт: денег- товарообмена и магазина, который без такого API реально пролетает...

Отредактировано Deff (Чт, 15 Мар 2012 10:23:21)

0

34

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

Впереди: списки юзеров, нтмл-контент, ЛС, опросы, рейтинг поста...

при просмотре форума (/viewforum.php?id=) опросы ничем не отлчаются от обычных тем, ни наличием иконки, ни сопроводительным описанием (Опрос:),
что само по себе является ненормальным по сравнению с другими популярными форумными движками,
я в своё время пытался через ajax запросы прошерстить все темы на наличие в них блока #poll-special,
дабы присвоить теме-опросу некий класс и соответствующую иконку, но у меня результат был неудачный, такой путь конечно неверен, но данный факт нельзя оставлять без внимания и решать, лучше конечно в самом движке, заранее присвоив опросам некий класс

0

35

5 копеек от бывшего разработчика сервиса

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

А куды децо от уже реализованных скриптами
а)Первый Пост закрепляемый на всех страницах
b)Вывод опросов на главную
с) Инфоблок Кто-где
d) Cписок ботов на главной и в Активных

Согласен с гоблином:

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

В топку эти скрипты.

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

Самый востребованный скрипт с аякс - скрипт закрепления первого сообщения в теме - самый непродуктивный по запросам, но широко применяемый - скрипт "Инфо табло - кто -где",

Первый точно и уже давно нужно реализовать средствами сервера.

О втором я ничего не знаю, но видится что если он такой популярный, должен быть отдельный запрос в api на эту тему.

+1

36

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

Кстати, вроде бы баг движка форума обнаружил: подробности.

Это от спецсимволов , наверное.

0

37

Важное дополнение к API:

Необязательные параметры запросов.

1. Получение данных о времени с учётом часового пояса участника форума

Аргумент -> umt аббр.  User Mean Time (пользовательский часовой пояс)
Значение -> 0 или 1

Семантика:

При запросе инфы, вид которой определён через data, если в результатах ответа есть данные о времени (в формате кол-ва сек с начала эпохи UNIX), то они указываются так:

Для зарегистрированных и авторизованных пользователей:

Если umt не указан явно или равен 0, то в ответе данные о времени - с учётом часового пояса форума,
если umt=1, то данные о времени - в соответствии с часовым поясом участника форума, выставленного в профиле.

Для неавторизованных пользователей, т.е. для гостей:
Вне зависимости от значения umt или при не указании его в запросе: в ответе данные о времени - с учётом часового пояса форума.

Пример:
В настройках форума +03:00
В настройках профиля юзера +07:00

Авторизованный юзер:
Запрос:

Код:
https://forum.mybb.ru/api.php?data=forum&timeCreate=1&umt=1

Ответ:

Код:
{"timeCreate":"1331779622"}

Гость:
Запрос:

Код:
https://forum.mybb.ru/api.php?data=forum&timeCreate=1&umt=1

Ответ:

Код:
{"timeCreate":"1331765222"}

Т.е. для гостя - на 4 часа (14400 сек) меньше по сравнению с юзером.

2. Кеширование результатов запросов

Не знаю получится ли это реализовать, но по многим запросам не нужно каждый раз вытягивать инфу из БД.
Для снижения нагрузки API на серверы (экономия трафика, кол-ва подключений к БД и прочее) удобно кешировать ответы запросов.

Аргумент -> cache
Значение -> время (в секундах) актуальности кешированных данных

Если cache явно не задан или задан равным нулю, то данные не кешируются.

Пример:
Запрос:

Код:
https://forum.mybb.ru/api.php?data=forum&title=1&cache=86400

Ответ, сохраняется в кеше браузера на 86400 сек, т.е. на одни сутки:

Код:
{"title":"Единый форум поддержки"}

И повторные запросы в течениии суток будут брать результаты из кеша браузера, а не обращаться вновь в серверам МуВВ.

Думаю, реализовать это можно через заголовок ответа сервера:

Код:
$expires=htmlentities($_REQUEST['cache'], ENT_QUOTES, 'UTF-8');

header('Content-type: application/json');

if($expires != '' || $expires != 0)
  header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . 'GMT');
else
{
  header("Cache-Control: no-store, no-cache, must-revalidate");
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");
}

//-----
P.S.: сегодня мотался по магазинам - покупал межкомнатную дверь, поэтому устал, мозг не шибко варит и c описанием API могут быть задержки.

Отредактировано RUSSIAN_GOBLIN (Чт, 15 Мар 2012 14:28:18)

+1

38

RUSSIAN_GOBLIN
Туть бывает  и обратная вещь - кеширование браузером при запросе одним адресом, возможно стоит в запросный адрес - добавлять существенный аргумент в конце , через некий спецсимвол

Отредактировано Deff (Чт, 15 Мар 2012 13:53:30)

0

39

Deff, можно в заголовке ответа писать по умолчанию (если cash не указан или равен 0):

Код:
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");

Или в функции запроса так:

Код:
<script type="text/javascript">
$.getJSON("api.php", { data: "forum", title: "1", "no-cache", Math.round(new Date().getTime()) }, function(json) {
       var title_forum=json.title;
      //и далее манипуляции...
    });
</script>

Серверный вариант предпочтительней.

0

40

RUSSIAN_GOBLIN
:flag: Не наю про серверные ухищрения - но при аякс запросах, в ИЕ мне пришлось менять адрес на левый - перезапрашивать ненужную страницу - ток потом восстанавливать старый - дабы прочесть очередной раз последнее сообщение, последней страницы

Отредактировано Deff (Чт, 15 Мар 2012 14:48:30)

0