/** * Retorna um dispositivo informado, validando-o * * @param object $input * Dados informados * @return Device Dispositivo */ function getDevice($input) { if (!$input || !isset($input->token) || !isset($input->type) || !isset($input->userId)) { throw new \InvalidArgumentException("A requisição não contém todos os dados necessários."); } $device = new Device((string) $input->token, (int) $input->type, (string) $input->userId); DeviceManager::validateDevice($device); return $device; }
/** * Remove um dispositivo * * @param string $token * Identificador de push do dispositivo * @return boolean True se removeu um dispositivo, false caso contrário */ public static function deleteDevice($token) { if (!$token || !is_string($token)) { return false; } global $entityManager; $deviceToDelete = DeviceManager::getDevice($token); //remove dos serviços da UNISUAM UnisuamPushServices::delete($deviceToDelete); $queryBuilder = $entityManager->createQueryBuilder()->delete(DeviceManager::DEVICE_REPOSITORY, "device")->where('device.token=:token')->setParameter('token', $token); $rows = $queryBuilder->getQuery()->execute(); $entityManager->flush(); return $rows > 0; }
/** * Trata os resultados contendo dispositivos Android que tiveram seus identificadores atualizados * * @param object $results * Resultados * @param int $deviceType * Tipo de dispositivo */ private static function handleCanonicalResult($results) { $obj = new \ArrayObject($results); $iterator = $obj->getIterator(); // itera sobre os resultados para atualizar os identificadores dos dispositivos while ($iterator->valid()) { $oldToken = $iterator->key(); $newToken = $iterator->current(); DeviceManager::updateDevice($oldToken, $newToken, null); $iterator->next(); } }