Esempio n. 1
1
 /**
  * Returns the rendered subtree of each top-level toolbar link.
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function subtreesJsonp()
 {
     $subtrees = toolbar_get_rendered_subtrees();
     $response = new JsonResponse($subtrees);
     $response->setCallback('Drupal.toolbar.setSubtrees.resolve');
     // The Expires HTTP header is the heart of the client-side HTTP caching. The
     // additional server-side page cache only takes effect when the client
     // accesses the callback URL again (e.g., after clearing the browser cache
     // or when force-reloading a Drupal page).
     $max_age = 365 * 24 * 60 * 60;
     $response->setPrivate();
     $response->setMaxAge($max_age);
     $expires = new \DateTime();
     $expires->setTimestamp(REQUEST_TIME + $max_age);
     $response->setExpires($expires);
     return $response;
 }
 /**
  * @Route("/admin/testimonials/jsondata", name="admin_testimonials_jsondata")
  */
 public function JsonData(Request $request)
 {
     $sortColumn = $request->get('sidx');
     $sortDirection = $request->get('sord');
     $pageSize = $request->get('rows');
     $page = $request->get('page');
     $callback = $request->get('callback');
     $repo = $this->getDoctrineRepo('AppBundle:Testimonial');
     $dataRows = $repo->getGridOverview($sortColumn, $sortDirection, $pageSize, $page);
     $rowsCount = $repo->countAll();
     $pagesCount = ceil($rowsCount / $pageSize);
     $rows = array();
     // rows as json result
     foreach ($dataRows as $dataRow) {
         // build single row
         $row = array();
         $row['id'] = $dataRow->getId();
         $cell = array();
         $i = 0;
         $cell[$i++] = '';
         $cell[$i++] = $dataRow->getId();
         $cell[$i++] = $dataRow->getName();
         $cell[$i++] = $dataRow->getAge();
         $cell[$i++] = $dataRow->getPlace();
         $cell[$i++] = $dataRow->getPosition();
         $row['cell'] = $cell;
         array_push($rows, $row);
     }
     $result = array('records' => $rowsCount, 'page' => $page, 'total' => $pagesCount, 'rows' => $rows);
     $resp = new JsonResponse($result, JsonResponse::HTTP_OK);
     $resp->setCallback($callback);
     return $resp;
 }
Esempio n. 3
0
 /**
  * Returns the rendered subtree of each top-level toolbar link.
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function subtreesJsonp()
 {
     _toolbar_initialize_page_cache();
     $subtrees = toolbar_get_rendered_subtrees();
     $response = new JsonResponse($subtrees);
     $response->setCallback('Drupal.toolbar.setSubtrees.resolve');
     return $response;
 }
Esempio n. 4
0
 protected function json($req, $data, $status = 200)
 {
     $resp = new JsonResponse($data, $status);
     if ($req->query->has('callback')) {
         $resp->setCallback($req->query->get('callback'));
     }
     return $resp;
 }
Esempio n. 5
0
 /**
  * @Route("/track/pageview", name="track_pageview")
  *
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function postPageviewAction(Request $request)
 {
     $trackedCustomerStorage = new SessionStorage($request->getSession());
     $command = new AddNewPageviewEventCommand($trackedCustomerStorage);
     $command->url = $request->query->get('url');
     $command->ip = $request->getClientIp();
     $command->customerId = $request->query->get('customer', null);
     $command->referrer = $request->query->get('referrer', null);
     $this->get('command_bus')->handle($command);
     $response = new JsonResponse(null, 201);
     $response->setCallback($request->query->get('callback'));
     return $response;
 }
Esempio n. 6
0
 /**
  * Generates a JavaScript file with popup CSS file loader.
  *
  * @param Request $request
  * @return JsonResponse
  */
 public function loadPopupStyleAction(Request $request)
 {
     $style_name = $request->attributes->get('style');
     if (!$style_name) {
         $style_name = ChatStyle::getDefaultStyle();
     }
     $style = new ChatStyle($style_name);
     $configs = $style->getConfigurations();
     $response = new JsonResponse();
     if ($configs['chat']['iframe']['css']) {
         $generator = $this->getAssetManager()->getUrlGenerator();
         $css = $generator->generate($style->getFilesPath() . '/' . $configs['chat']['iframe']['css'], UrlGeneratorInterface::ABSOLUTE_URL);
         $response->setData($css);
         $response->setCallback('Mibew.Utils.loadStyleSheet');
     }
     return $response;
 }
 /**
  * @param Request $request
  * @param int     $max
  * @param string  $provider
  *
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getPostsAction(Request $request, $max = 5, $provider = null)
 {
     $posts = $this->getPostRepository()->retrieveMostRecentPublicPosts($max, $provider);
     /** @var ThumbnailExtension $thumbnailService */
     $thumbnailService = $this->get('genj_thumbnail.twig.thumbnail_extension');
     $postList = array();
     /** @var Post $post */
     foreach ($posts as $post) {
         $postData = array('provider' => $post->getProvider(), 'postId' => $post->getPostId(), 'author' => array('username' => $post->getAuthorUsername(), 'name' => $post->getAuthorName(), 'avatar' => (string) $thumbnailService->getThumbnailPath($post, 'authorFileUpload', 'teaser')), 'body' => $post->getHeadline(), 'image' => (string) $thumbnailService->getThumbnailPath($post, 'fileUpload', 'teaser'), 'link' => $post->getLink(), 'publishAt' => $post->getPublishAt()->format('Y-m-d H:i:s'));
         $postList[] = $postData;
     }
     $response = new JsonResponse(array('posts' => $postList), 200, array());
     $callback = $request->get('callback', false);
     if ($callback) {
         $response->setCallback($callback);
     }
     return $response;
 }
Esempio n. 8
0
 /**
  * {@inheritdoc}
  */
 public function serve($params = null)
 {
     $return = $params ? true : false;
     $key = $this->request->request->get('key');
     $callback = $this->request->query->get('callback');
     $configString = $this->request->request->get('data');
     if ($callback && $this->request->isXmlHttpRequest()) {
         $configString = $this->request->query->get('data');
     }
     $publicMethods = array($this->request->query->get('method'), $this->request->request->get('method'));
     $response = new JsonResponse();
     $response->setCallback($callback);
     $response->headers->set('Access-Control-Allow-Headers', 'origin, content-type, accept');
     $response->headers->set('Access-Control-Allow-Origin', '*');
     $response->headers->set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
     if ($this->request->isXmlHttpRequest()) {
         $key = $this->request->query->get('key');
     }
     $data = array('error' => true, 'message' => 'Invalid config');
     $serviceHandler = get_class($this->serviceHandler);
     $server = new $serviceHandler($this->authentication, $this->connectionStrings, $this->logDir);
     if (in_array('getAvailableDrivers', $publicMethods)) {
         $data = $server->getAvailableDrivers();
     } elseif ($configString) {
         $configString = json_decode($configString, true);
         if (is_array($configString) && isset($configString['config'])) {
             $config = isset($configString['config']) ? $configString['config'] : array();
             $sql = isset($configString['sql']) ? $configString['sql'] : '';
             $limit = isset($configString['limit']) ? intval($configString['limit']) : 500;
             $offset = isset($configString['offset']) ? intval($configString['offset']) : 0;
             $single = isset($configString['single']) ? (bool) $configString['single'] : false;
             $data = $server->getResult($config, $sql, $limit, $offset, $single, $key, 'array');
             if (in_array('getServerVersion', $publicMethods)) {
                 $data = $server->getServerVersion();
             }
         }
     }
     $response->setData($data);
     if (!$return) {
         $response->send();
     } else {
         return $response;
     }
 }
 /**
  * Get List From API Access
  *
  * @Route("/api/{categoryCode}/{callback}", name="category_get_category", requirements={"categoryCode" = "^[a-z0-9]*$"}, defaults={"callback" = null})
  * @Method("GET")
  */
 public function getCategoryForApiAction(Request $request, $categoryCode, $callback)
 {
     $em = $this->getDoctrine()->getManager();
     $entity = $em->getRepository('AtwTestBundle:Category')->findOneBy(['categoryCode' => $categoryCode]);
     $output = null;
     if (!is_null($entity)) {
         $output["name"] = htmlspecialchars($entity->getName());
         $output["categoryCode"] = htmlspecialchars($entity->getCategoryCode());
     }
     $response = new JsonResponse();
     $response->setData($output);
     $response->setStatusCode(Response::HTTP_OK);
     // if error...
     //$response->setStatusCode(500);
     if (isset($callback)) {
         $response->setCallback($callback);
     }
     return $response;
 }
Esempio n. 10
0
 /**
  * @Route("/admin/users/jsondata", name="admin_users_jsondata")
  */
 public function JsonData(Request $request)
 {
     $sortColumn = $request->get('sidx');
     $sortDirection = $request->get('sord');
     $pageSize = $request->get('rows');
     $page = $request->get('page');
     $callback = $request->get('callback');
     $email = $request->get('u_email');
     $name = $request->get('u_name');
     $surname = $request->get('u_surname');
     $enabled = $request->get('u_enabled');
     $createdAt = $request->get('u_createdAt');
     $modifiedAt = $request->get('u_modifiedAt');
     $repo = $this->getDoctrineRepo('AppBundle:User');
     $dataRows = $repo->getGridOverview($sortColumn, $sortDirection, $pageSize, $page, $email, $name, $surname, $enabled, $createdAt, $createdAt, $modifiedAt);
     $rowsCount = $repo->countAll();
     $pagesCount = ceil($rowsCount / $pageSize);
     $rows = array();
     // rows as json result
     foreach ($dataRows as $dataRow) {
         // build single row
         $row = array();
         $row['id'] = $dataRow->getId();
         $cell = array();
         $i = 0;
         $cell[$i++] = "";
         $cell[$i++] = $dataRow->getId();
         $cell[$i++] = $dataRow->getUsername();
         $cell[$i++] = $dataRow->getName();
         $cell[$i++] = $dataRow->getSurname();
         $cell[$i++] = $dataRow->isEnabled();
         $cell[$i++] = $dataRow->getCreatedAt()->format('Y-m-d H:i');
         $cell[$i++] = $dataRow->getModifiedAt()->format('Y-m-d H:i');
         $row['cell'] = $cell;
         array_push($rows, $row);
     }
     $result = array('records' => $rowsCount, 'page' => $page, 'total' => $pagesCount, 'rows' => $rows);
     $resp = new JsonResponse($result, JsonResponse::HTTP_OK);
     $resp->setCallback($callback);
     return $resp;
 }
 /**
  * Convert some data into a JSON response.
  *
  * @param mixed   $data    The response data
  * @param integer $status  The response status code
  * @param array   $headers An array of response headers
  * @return JsonResponse
  * @see JsonResponse
  */
 public function json($data = [], $status = 200, array $headers = [])
 {
     $request = $this['request_stack']->getMasterRequest();
     if ($request->query->has('fields') && !($status >= 400 && $status < 500)) {
         $fields = $this['rest.fields'];
         $fields->addParameter('id');
         $data = $this['rest.filter']->filter($data);
     }
     $flags = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT;
     if ($request->query->get('pretty', true)) {
         $flags |= JSON_PRETTY_PRINT;
     }
     $response = new JsonResponse();
     $response->headers->replace($headers);
     $response->setStatusCode($status);
     $response->setEncodingOptions($flags);
     $response->setData($data);
     if ($request->query->has('callback')) {
         $response->setCallback($request->query->get('callback'));
     }
     return $response;
 }
 /**
  * @Route("/topics_search/")
  */
 public function findTopicsAction(Request $request)
 {
     if ($request->isXmlHttpRequest()) {
         // retrieve query and page_limit
         $q = $request->query->get('term');
         $p = $request->query->get('page_limit');
         $locale = $request->getLocale();
         $topics = $this->get('em')->getRepository('Newscoop\\NewscoopBundle\\Entity\\Topic')->searchTopics($q, array(), $p, $locale)->getArrayResult();
         array_walk($topics, function (&$topic, $key) {
             $topic['term'] = $topic['title'];
             $topic = array_intersect_key($topic, array_flip(array('id', 'term')));
         });
         $arr = array('results' => array('items' => $topics));
         $response = new JsonResponse($arr);
         $response->setCallback($request->query->get('callback'));
         return $response;
     }
     throw new BadRequestHttpException('Only XHR supported');
 }
Esempio n. 13
0
 /**
  * @Route("/admin/category/jsondata", name="admin_category_jsondata")
  */
 public function JsonData(Request $request)
 {
     $sortColumn = $request->get('sidx');
     $sortDirection = $request->get('sord');
     $pageSize = $request->get('rows');
     $page = $request->get('page');
     $callback = $request->get('callback');
     $repo = $this->getDoctrineRepo('AppBundle:Category');
     $dataRows = $repo->getGridOverview($sortColumn, $sortDirection, $pageSize, $page);
     $rowsCount = $repo->countAll();
     $pagesCount = ceil($rowsCount / $pageSize);
     $rows = array();
     // rows as json result
     foreach ($dataRows as $dataRow) {
         // build single row
         $row = array();
         $row['id'] = $dataRow->getId();
         $cell = array();
         $cell[0] = null;
         $cell[1] = $dataRow->getId();
         $cell[2] = $dataRow->getName();
         $cell[3] = $dataRow->getSlug();
         $cell[4] = $dataRow->getPosition();
         $row['cell'] = $cell;
         array_push($rows, $row);
     }
     $result = array('records' => $rowsCount, 'page' => $page, 'total' => $pagesCount, 'rows' => $rows);
     $resp = new JsonResponse($result, JsonResponse::HTTP_OK);
     $resp->setCallback($callback);
     return $resp;
     /*
             
             $rows = $this->GetData($sortColumn, $sortDirection, $pageSize, $page);
             $rowsCount = $this->getDoctrineRepo('AppBundle:Category')->countAll();
             $pagesCount =   ceil($rowsCount/$pageSize);
             
             $rowsStr = "";
             $rowsTemplate = '{ "id": %s, "cell": [null, "%s", "%s", "%s", "%s" ] }';
             $i = 0;
             foreach($rows as $row){
                 if ($i > 0) {
                     $rowsStr .= ", ";
                 }
                 $rowsStr .= sprintf($rowsTemplate, $row->getId(), $row->getId(), $row->getName(), $row->getSlug(), $row->getPosition() );
                 $i .=1;
             }
             
             $json = sprintf('{ "records":%s,"page":%s ,"total":%s ,"rows": [ %s ] }', $rowsCount, $page, $pagesCount, $rowsStr );
             
             $response = new Response();
             $response->setContent('/**/
     /*'.$method.'('. $json .')');
        $response->headers->set('Content-Type', 'text/javascript');
        return $response;
       */
 }
Esempio n. 14
0
 private function errorResponse($msg, Request $request)
 {
     $response = new JsonResponse(['message' => $msg, 'success' => false]);
     return $response->setCallback($request->get('callback'));
 }
 /**
  * JSONM
  * https://github.com/lifesinger/lifesinger.github.com/issues/118
  */
 protected function createJsonmResponse($data)
 {
     $response = new JsonResponse($data);
     $response->setCallback('define');
     return $response;
 }
Esempio n. 16
0
 /**
  * Formats the data and return serialized string
  *
  * @return Response
  */
 private function format()
 {
     $request_uri = sprintf('%s %s', $this->request->getMethod(), $this->request->getBasePath() . $this->request->getPathInfo());
     $ret = ['meta' => ['api_version' => V1::VERSION, 'request' => $request_uri, 'response_time' => $this->responseTime, 'http_code' => $this->code, 'error_type' => $this->errorType, 'error_message' => $this->errorMessage, 'error_details' => $this->errorDetails, 'charset' => 'UTF-8'], 'response' => $this->data];
     switch ($this->responseType) {
         case self::FORMAT_JSON:
         default:
             return new JsonResponse($ret);
         case self::FORMAT_YAML:
             if ($ret['response'] instanceof \stdClass) {
                 $ret['response'] = [];
             }
             $dumper = new Dumper();
             return new Response($dumper->dump($ret, 8));
         case self::FORMAT_JSONP:
             $response = new JsonResponse($ret);
             $response->setCallback(trim($this->request->get('callback')));
             return $response;
             break;
     }
 }
Esempio n. 17
0
 /**
  * Send a jsonp response with given content.
  *
  * @param array $content
  * @param string $jsonCallback
  */
 public function jsonp($content = [], $jsonCallback = 'callback')
 {
     $response = new JsonResponse();
     $response->setData($content);
     $response->setCallback($jsonCallback);
     $response->send();
 }
Esempio n. 18
0
 /**
  * @Route("/admin/blog/jsondata", name="admin_blog_jsondata")
  */
 public function JsonData(Request $request)
 {
     $sortColumn = $request->get('sidx');
     $sortDirection = $request->get('sord');
     $pageSize = $request->get('rows');
     $page = $request->get('page');
     $callback = $request->get('callback');
     $repo = $this->getDoctrineRepo('AppBundle:Blog');
     $dataRows = $repo->getGridOverview($sortColumn, $sortDirection, $pageSize, $page);
     $rowsCount = $repo->countAll();
     $pagesCount = ceil($rowsCount / $pageSize);
     $rows = array();
     // rows as json result
     foreach ($dataRows as $dataRow) {
         // build single row
         $row = array();
         $row['id'] = $dataRow->getId();
         $cell = array();
         $cell[0] = null;
         $cell[1] = $dataRow->getId();
         $cell[2] = $dataRow->getTitle();
         $cell[3] = $dataRow->getCreatedAt()->format('Y-m-d H:i');
         $cell[4] = $dataRow->getModifiedAt()->format('Y-m-d H:i');
         $cell[5] = $dataRow->getPosition();
         $row['cell'] = $cell;
         array_push($rows, $row);
     }
     $result = array('records' => $rowsCount, 'page' => $page, 'total' => $pagesCount, 'rows' => $rows);
     $resp = new JsonResponse($result, JsonResponse::HTTP_OK);
     $resp->setCallback($callback);
     return $resp;
 }
Esempio n. 19
0
 /**
  * Gets the last position for ativo.
  *
  * @Route("/get_ultima_posicao", name="get_ultima_posicao")
  * @Method("GET")
  */
 public function getUltimaPosicaoAction(Request $request)
 {
     $if_id = $request->query->get('if_id');
     $ativo_id = $request->query->get('ativo_id');
     $em = $this->get('doctrine')->getManager();
     $connection = $em->getConnection();
     $statement = $connection->prepare("\n            SELECT\n                vr_bruto_total,\n                quantidade\n            FROM\n                POSICAO\n            WHERE\n                if_id = :if_id AND\n                ativo_id = :ativo_id\n            ORDER BY\n                dt_referencia\n            DESC\n            LIMIT\n                1\n            ");
     $statement->bindValue('if_id', $if_id);
     $statement->bindValue('ativo_id', $ativo_id);
     $statement->execute();
     while ($row = $statement->fetch()) {
         $data = array('vr_bruto_total' => number_format($row['vr_bruto_total'], 2, ",", ""), 'quantidade' => number_format($row['quantidade'], 0, ",", ""));
     }
     // create a JSON-response with a 200 status code
     $response = new JsonResponse($data);
     if ($request->query->get('callback')) {
         $response->setCallback($request->query->get('callback'));
     }
     return $response;
 }
 /**
  * @Route("/jsonp", name="responses_jsonp")
  */
 public function jsonpResponseAction()
 {
     $response = new JsonResponse(array('class' => '\\Symfony\\Component\\HttpFoundation\\JsonResponse', 'type' => 'jsonp'));
     $response->setCallback('handleData');
     return $response;
 }
Esempio n. 21
0
 /**
  * @Route("/isUser", name="is_user" , options={"expose" = true})
  */
 public function isUserAction()
 {
     if (!$this->getUser()) {
         $ar = array();
     } else {
         $ar['email'] = $this->getUser()->getUsername();
         $ar['lastName'] = $this->getUser()->getLastName();
         $ar['firstName'] = $this->getUser()->getFirstName();
         $ar['surName'] = $this->getUser()->getSurName();
         $ar['city'] = $this->getUser()->getCity()->getTitle();
         $ar['address'] = $this->getUser()->getAddress();
         $ar['tel'] = $this->getUser()->getPhone();
         $ar['address'] = $this->getUser()->getAddress();
     }
     $res = new JsonResponse($ar);
     $res->setCallback('myf');
     return $res;
 }
 protected function createJsonP(Request $request, $callback, $data)
 {
     $response = new JsonResponse($data);
     $response->setCallback($callback);
     return $response;
 }
Esempio n. 23
0
 /**
  * @expectedException \InvalidArgumentException
  */
 public function testSetCallbackInvalidIdentifier()
 {
     $response = new JsonResponse('foo');
     $response->setCallback('+invalid');
 }
Esempio n. 24
0
 public function testSetCallbackInvalidIdentifier()
 {
     $response = new JsonResponse('foo');
     $this->setExpectedException('InvalidArgumentException');
     $response->setCallback('+invalid');
 }
Esempio n. 25
0
 /**
  * Provides a gateway for widget requests.
  *
  * Triggers {@link \Mibew\EventDispatcher\Events::VISITOR_TRACK} event.
  *
  * @param Request $request
  * @return string Rendered page content
  */
 public function indexAction(Request $request)
 {
     $operator = array();
     $response_data = array('load' => array(), 'handlers' => array(), 'dependencies' => array(), 'data' => array());
     $tracking_allowed = Settings::get('enabletracking') == '1' && (Settings::get('trackoperators') == '1' || !$this->getOperator());
     if ($tracking_allowed) {
         $entry = $request->query->get('entry', '');
         $referer = $request->server->get('HTTP_REFERER', '');
         $user_id = $request->query->get('user_id', false);
         // Check if session was started
         if (isset($_SESSION[SESSION_PREFIX . 'visitorid']) && preg_match('/^[0-9]+$/', $_SESSION[SESSION_PREFIX . 'visitorid'])) {
             // Session was started. Just track the visitor.
             $visitor_id = track_visitor($_SESSION[SESSION_PREFIX . 'visitorid'], $entry, $referer);
             $visitor = track_get_visitor_by_id($visitor_id);
         } else {
             $visitor = track_get_visitor_by_user_id($user_id);
             if ($visitor !== false) {
                 // Session is not started but the visitor exists in
                 // database. Probably third-party cookies are disabled by
                 // the browser. Use tracking by local cookie at target site.
                 $visitor_id = track_visitor($visitor['visitorid'], $entry, $referer);
             } else {
                 // Start tracking session
                 $visitor_id = track_visitor_start($entry, $referer);
                 $visitor = track_get_visitor_by_id($visitor_id);
             }
         }
         if ($visitor_id) {
             $_SESSION[SESSION_PREFIX . 'visitorid'] = $visitor_id;
         }
         if ($user_id === false) {
             // Update local cookie value at target site
             $response_data['handlers'][] = 'updateUserId';
             $response_data['dependencies']['updateUserId'] = array();
             $response_data['data']['user']['id'] = $visitor['userid'];
         }
         // Provide an ability for others to make something on visitor
         // tracking
         $event_arguments = array('visitor' => $visitor);
         EventDispatcher::getInstance()->triggerEvent(Events::VISITOR_TRACK, $event_arguments);
         // Get invitation state
         $invitation_state = invitation_state($visitor_id);
         // Check if invitation is closed
         if (!$invitation_state['invited'] && !empty($_SESSION[SESSION_PREFIX . 'invitation_threadid'])) {
             $response_data['handlers'][] = 'invitationClose';
             $response_data['dependencies']['invitationClose'] = array();
             unset($_SESSION[SESSION_PREFIX . 'invitation_threadid']);
         }
         // Check if the visitor is just invited to chat
         $is_invited = $invitation_state['invited'] && (empty($_SESSION[SESSION_PREFIX . 'invitation_threadid']) ? true : $_SESSION[SESSION_PREFIX . 'invitation_threadid'] != $invitation_state['threadid']);
         if ($is_invited) {
             // Load invitation thread
             $thread = Thread::load($invitation_state['threadid']);
             // Get operator info
             $operator = operator_by_id($thread->agentId);
             $locale = $request->query->get('locale', '');
             $operator_name = $locale == get_home_locale() ? $operator['vclocalename'] : $operator['vccommonname'];
             $avatar_url = $operator['vcavatar'] ? $this->asset($operator['vcavatar'], AssetUrlGeneratorInterface::ABSOLUTE_URL) : false;
             // Show invitation dialog at widget side
             $response_data['handlers'][] = 'invitationCreate';
             $response_data['dependencies']['invitationCreate'] = array();
             $response_data['data']['invitation'] = array('operatorName' => htmlspecialchars($operator_name), 'avatarUrl' => htmlspecialchars($avatar_url), 'threadUrl' => $this->generateUrl('chat_user_invitation', array(), UrlGeneratorInterface::ABSOLUTE_URL), 'acceptCaption' => getlocal('Answer'));
             $_SESSION[SESSION_PREFIX . 'invitation_threadid'] = $thread->id;
         }
         // Check if the visitor rejects invitation
         if ($invitation_state['invited'] && $request->query->get('invitation_rejected')) {
             invitation_reject($visitor_id);
         }
         $event_arguments = array('visitor' => $visitor, 'request' => $request, 'response' => $response_data, 'route_url_generator' => $this->getRouter(), 'asset_url_generator' => $this->getAssetManager()->getUrlGenerator());
         EventDispatcher::getInstance()->triggerEvent(Events::WIDGET_RESPONSE_ALTER, $event_arguments);
         $response_data = $event_arguments['response'];
     }
     // Builds JSONP response
     $response = new JsonResponse($response_data);
     $response->setCallback("Mibew.Objects.widget.onResponse");
     // Add headers to overcome third-party cookies problem.
     $response->headers->set('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
     return $response;
 }