From f4129ff8ee0985f67fe03c2633f2c80e60f23e73 Mon Sep 17 00:00:00 2001 From: Dmitriy Simushev Date: Wed, 21 May 2014 08:23:51 +0000 Subject: [PATCH] Replace "operator/invite.php" with a controller --- .../Mibew/Controller/InvitationController.php | 58 +++++++++++++++++++ src/mibew/libs/routing.yml | 7 +++ src/mibew/operator/invite.php | 33 ----------- .../server_side/users.handlebars | 2 +- 4 files changed, 66 insertions(+), 34 deletions(-) create mode 100644 src/mibew/libs/classes/Mibew/Controller/InvitationController.php delete mode 100644 src/mibew/operator/invite.php diff --git a/src/mibew/libs/classes/Mibew/Controller/InvitationController.php b/src/mibew/libs/classes/Mibew/Controller/InvitationController.php new file mode 100644 index 00000000..88c90713 --- /dev/null +++ b/src/mibew/libs/classes/Mibew/Controller/InvitationController.php @@ -0,0 +1,58 @@ +attributes->get('_operator'); + + // Get visitor ID from the request and check it + $visitor_id = $request->query->get('visitor'); + if (!preg_match("/^\d{1,10}$/", $visitor_id)) { + throw new BadRequestException('Wrong format of visitor param.'); + } + + // Try to invite the visitor + $thread = invitation_invite($visitor_id, $operator); + if (!$thread) { + return new Response('Invitation failed!'); + } + + // Open chat window for operator + $redirect_to = $request->getBasePath() + . '/operator/agent.php?thread=' . intval($thread->id) + . '&token=' . urlencode($thread->lastToken); + + return $this->redirect($redirect_to); + } +} diff --git a/src/mibew/libs/routing.yml b/src/mibew/libs/routing.yml index cf782603..bb8b3ee6 100644 --- a/src/mibew/libs/routing.yml +++ b/src/mibew/libs/routing.yml @@ -162,6 +162,13 @@ history_user_track: _controller: Mibew\Controller\HistoryController::userTrackAction _access_check: Mibew\AccessControl\Check\LoggedInCheck +## Invitations +invite: + path: /operator/invite + defaults: + _controller: Mibew\Controller\InvitationController::inviteAction + _access_check: Mibew\AccessControl\Check\LoggedInCheck + ## Password recovery password_recovery: path: /operator/password-recovery diff --git a/src/mibew/operator/invite.php b/src/mibew/operator/invite.php deleted file mode 100644 index e0a9f538..00000000 --- a/src/mibew/operator/invite.php +++ /dev/null @@ -1,33 +0,0 @@ -id) - . '&token=' . urlencode($thread->lastToken); -header('Location: ' . $redirect_to); diff --git a/src/mibew/styles/pages/default/templates_src/server_side/users.handlebars b/src/mibew/styles/pages/default/templates_src/server_side/users.handlebars index 77fa375b..4b0e1c70 100644 --- a/src/mibew/styles/pages/default/templates_src/server_side/users.handlebars +++ b/src/mibew/styles/pages/default/templates_src/server_side/users.handlebars @@ -102,7 +102,7 @@ geoLink: "{{geoLink}}", trackedLink: "{{mibewRoot}}/operator/history/user-track", banLink: "{{mibewRoot}}/operator/ban.php", - inviteLink: "{{mibewRoot}}/operator/invite.php", + inviteLink: "{{mibewRoot}}/operator/invite", chatWindowParams: "{{[chatStyles.chatWindowParams]}}", geoWindowParams: "{{geoWindowParams}}",