<?php
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller as BaseController;
|
|
use Log;
|
|
use App\Player, App\Team, App\Tweet, App\TransitCenter, App\TransitLine, App\Document, App\Mission;
|
|
use App\Events\NewTweetEvent;
|
|
|
|
class TwitterController extends BaseController
|
|
{
|
|
|
|
public function input(Request $request)
|
|
{
|
|
$data = $request->all();
|
|
|
|
// Find the user who tweeted this
|
|
$twitter_user_id = $data['user']['id_str'];
|
|
|
|
$player = Player::where('twitter_user_id', $twitter_user_id)->first();
|
|
|
|
if(isset($data['extended_tweet']['full_text']))
|
|
$text = $data['extended_tweet']['full_text'];
|
|
else
|
|
$text = $data['text'];
|
|
|
|
// Unshorten URLs
|
|
if(isset($data['entities']['urls'])) {
|
|
foreach($data['entities']['urls'] as $url) {
|
|
$text = str_replace($url['url'], $url['expanded_url'], $text);
|
|
}
|
|
}
|
|
|
|
// Remove media URLs from tweet text
|
|
$photos = [];
|
|
if(isset($data['extended_entities']['media'])) {
|
|
foreach($data['extended_entities']['media'] as $media) {
|
|
$text = str_replace($media['url'], '', $text);
|
|
$photos[] = $media['media_url_https'];
|
|
}
|
|
$text = trim($text);
|
|
}
|
|
|
|
// Find the mission hashtag
|
|
$mission_id = 0;
|
|
foreach(Mission::all() as $mission) {
|
|
if(strpos($text, $mission->hashtag) !== false) {
|
|
$mission_id = $mission->id;
|
|
}
|
|
}
|
|
|
|
$tweet = new Tweet;
|
|
$tweet->tweet_id = $data['id_str'];
|
|
$tweet->player_id = $player ? $player->id : 0;
|
|
$tweet->team_id = $player ? $player->team->id : 0;
|
|
$tweet->text = $text;
|
|
$tweet->photo = json_encode($photos, JSON_UNESCAPED_SLASHES);
|
|
$tweet->mission_id = $mission_id;
|
|
$tweet->tweet_date = date('Y-m-d H:i:s', strtotime($data['created_at']));
|
|
$tweet->author_username = $data['user']['screen_name'];
|
|
$tweet->author_photo = $data['user']['profile_image_url_https'];
|
|
if(isset($data['geo']))
|
|
$tweet->geo = json_encode($data['geo']);
|
|
if(isset($data['place']))
|
|
$tweet->place = json_encode($data['place']);
|
|
$tweet->json = json_encode($data);
|
|
$tweet->save();
|
|
|
|
if($tweet->mission_id && $tweet->team_id) {
|
|
event(new NewTweetEvent($tweet));
|
|
}
|
|
|
|
return $data['id_str'];
|
|
}
|
|
|
|
|
|
}
|