public static function Set($userId, $params) { $userId = intval($userId); if ($userId <= 0) { return false; } if (isset($params['STATUS'])) { $params['IDLE'] = null; } $needToUpdate = false; $params = self::PrepereFields($params); $res = IM\StatusTable::getById($userId); if ($status = $res->fetch()) { foreach ($params as $key => $value) { $oldValue = is_object($status[$key]) ? $status[$key]->toString() : $status[$key]; $newValue = is_object($value) ? $value->toString() : $value; if ($oldValue != $newValue) { $status[$key] = $value; $needToUpdate = true; } } if ($needToUpdate) { IM\StatusTable::update($userId, $params); } } else { $params['USER_ID'] = $userId; IM\StatusTable::add($params); $needToUpdate = true; $status = $params; } if ($needToUpdate && self::Enable()) { CPullStack::AddShared(array('module_id' => 'online', 'command' => 'user_status', 'params' => self::PrepereToPush($status))); } return true; }