/** * @param Request $req * @param Application $app * * @return bool */ public function addAction(Request $req, Application $app) { $error = ''; $ok = false; if ($app['odbc_aster'] !== false) { if (!is_null($req->request->get('action'))) { // get parameters $userid = $app['security.token_storage']->getToken()->getUser()->getId(); $city = $req->request->get('city', ''); $state = $req->request->get('state', ''); $country = $req->request->get('country', ''); $zip = $req->request->get('zip', ''); $startt = $req->request->get('startt', ''); $title = $req->request->get('title', ''); $descr = $req->request->get('description', ''); $hashtag = $req->request->get('hashtag', ''); //checks if ($startt != '') { /**@var $eventProvider EventProvider */ $eventProvider = new EventProvider($app['odbc_aster']); $eventid = uniqid(rand() . '_'); $event = new Event($eventid, $userid, $startt, $city, $state, $zip, $country, $title, $descr); if ($eventProvider->addEvent($event)) { $ok = true; } else { $error = 'The event is already present. Please change some values'; } if ($hashtag != '') { /**@var $tweetProvider TweetProvider */ $tweetProvider = new TweetProvider($app['odbc_aster']); // get tweets with an API call $twitterManager = new TwitterManager($app['twitter.config']); try { $tweets = $twitterManager->search($hashtag); if (count($tweets) != 0) { $count = 0; // for each tweet foreach ($tweets as $tweet) { if ($count == 10) { break; } $id = $tweet["ID"]; $text = $tweet["TEXT"]; $date = $tweet["CREATED_AT"]; $userName = $tweet["USER_NAME"]; $userImage = $tweet["IMAGE_PROFILE"]; $url = $tweet["URL"]; $rc = $tweet["RTWEET_COUNT"]; $lang = $tweet["LANG"]; $tweet = new Tweet($id, $eventid, $text, $userName, $userImage, $url, $date, $lang, $rc); if (!$tweetProvider->addTweet($tweet)) { $error = 'Cannot add the tweet. Continue.'; } ++$count; } } else { $error = 'No tweet found for the given hashtag: ' . $hashtag; } } catch (\Exception $e) { $error = 'Cannot retrieve tweets for this event: no connection available.'; } } } else { $error = 'Invalid start time.'; } } } else { $error = 'Could not connect to the database! Please retry soon.'; } // forward to 'myevents' $subRequest = Request::create($app['url_generator']->generate('myevents'), 'GET', array('add_was_ok' => $ok, 'error' => $error)); return $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST); }