public function SendUserOrderMessage($order, $message) { $user = $order->user->get(); $user_apn_token = UserApnToken::getInstanceByUserID($user->getID()); if (!isset($user_apn_token)) { return false; } $deviceToken = str_replace(' ', '', $user_apn_token->token->get()); $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', getcwd() . '/apple_apn/IlluminataDevCerAndKey.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', AppleAPNService::$passphrase); $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) { throw new Exception("Failed to connect: {$err} {$errstr}" . PHP_EOL); } $body['aps'] = array('alert' => $message, 'title' => 'Order message', 'type' => strval(AppleAPNService::$MESSAGE_TYPE_USER_ORDER_MESSAGE), 'targetID' => $order->getID(), 'url' => 'http://www.illuminataeyewear.com', 'sound' => 'default'); $payload = json_encode($body); $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; $result = fwrite($fp, $msg, strlen($msg)); fclose($fp); if (!$result) { return false; } else { return true; } //throw new Exception('Message successfully delivered' . PHP_EOL); }
public function save() { $request = $this->application->getRequest(); $userID = $request->get('userID'); $token = $request->get('token'); if (!isset($token)) { throw new Exception('Token is required'); } if (isset($userID) && intval($userID) > 0) { $user_apn_token = UserApnToken::getInstanceByUserID($userID); if (!isset($user_apn_token)) { $user_apn_token = UserApnToken::getInstanceByToken($token); if (!isset($user_apn_token)) { $user_apn_token = UserApnToken::getNewInstance($userID, $token); $user_apn_token->save(); } else { $user_apn_token->userID->set($userID); $user_apn_token->save(); } } else { $current_token = UserApnToken::getInstanceByToken($token); if (isset($current_token)) { $current_token->delete(); $current_token->save(); } //$user_apn_token = UserApnToken::getNewInstance($userID, $token); $user_apn_token->token->set($token); $user_apn_token->save(); } } else { $token = UserApnToken::getNewInstance(null, $token); $token->save(); } $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>'); return new SimpleXMLResponse($response); }