11. Серверное хранилище
Данная возможность позволит скриптам сохранять на сервере МуВВ произвольные данные и обращаться к ним.
Немного аналогичная функция есть в API Вконтакте:
Методы для хранения произвольных данных
storage.get – возвращает значение хранимой переменной.
storage.set– сохраняет значение хранимой переменной.
Каждому форуму на сервере МуВВ выделяется отдельная таблица БД с возможность чтения и записи в неё посредством запросов к API.
Допустим название таких таблиц будет начинаться на ss -- сокращение от Server Storage (англ. серверное хранилище), а заканчиваться ID-номером форума.
Например, таблица этого форума будет будет называться: ss8753.
Таким образом у каждого форума будет своя таблица в БД, а ss - будет играть роль префикса для этого типа таблиц.
Таблица стоит из двух столбцов: префикс и данные.
Пример таблицы:
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 - возвращает количество (не пустых) строк в таблице
2. api.php?method=length.storage.get&prefix=***** - возвращает количество строк префиксом, с указанным вместо *****
Чтение данных:
1. api.php?method=storage.get - возвращает содержимое всех строк таблицы:
2. api.php?method=storage.get&prefix=award - возвращает содержимое строк с заданным префиксом (в данном случае award)
3. api.php?method=storage.get&prefix=award&str=2 - возвращает содержимое указанной строки с заданным префиксом: (в данном случае префикс - award, вторая строка).
4. api.php?method=storage.get&prefix=award&str=1(,2, ...) - возвращает содержимое указанных строк с заданным префиксом: (в данном случае префикс - award, первая и вторая строки).
Запись данных:
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