четверг, февраля 14, 2008

Установка перменных объектов. Server Side API. SmartFoxServer

Основные объекты SmartFoxServer (room и user) могут сохранять и возвращать переменные. Как они возвращают переменные мы уже видели здесь и здесь.
Для того, чтобы установить переменные, необходимо вмешательство главного управляющего класса _server.

Следующие методы позволяют устанавливать/удалять переменные:

_server.setRoomVariables(room, who, varList, setOwnership, sendUpdate)
Устанавливает переменную(ые) комнаты.
room - объект Room комната, переменные которой устанавливаются.
who - объект User пользователя, который производит установку. null - установка от имени сервера.
varList - массив, состоящий из объектов, характеризующих переменную:
name - имя переменной
val - значение переменной. Если установить undefined (а можно null ?) переменная будет удалена.
priv - приватная или нет
persistent - постоянная или нет (если постоянная - не удалится, если пользователь перейдет в другую комнату. Но после его отключения - удалится)
setOwnership - если false - не позволит изменить хозяина переменной (того кто ее создал). true по умолчанию.
sendUpdate - если false, пользователи комнаты не будут извещаться о происшедшем изменении. true по умолчанию.

_server.setUserVariables(who, varList, sendUpdate)
Устанавливает переменную(ые) пользователя.
who - объект User пользователя, который производит установку. null - установка от имени сервера.
varList - объект (ассоциативный массив) содержащий переменные ([имя]=значение). Если значение установлено в undefined - переменная удаляется.
sendUpdate - если false, пользователи комнаты не будут извещаться о происшедшем изменении. true по умолчанию.

_server.setBuddyVariables(user, variables)
Установить переменные друга. Генерирует событие onBuddyListUpdate.
user - объект User пользователя-хозяина переменных.
variables - ассоциативный массив переменных.

* * *

Как показала практика, нельзя сохранить переменную-массив. Она просто не сохраняется. По-видимому нельзя сохранить и объект. Поэтому, для хранения, нужно сериализовать массивы в строки.

Комментариев нет: