コード例 #1
0
 public function postCompleteForm()
 {
     $rules = array('email' => 'email|required', 'provider_id' => 'unique:user_providers,provider_id');
     $validator = Validator::make(Input::all(), $rules);
     if ($validator->fails()) {
         $messages = $validator->messages();
         return Redirect::to('/zaloguj')->with('alert', array('type' => 'error', 'content' => 'Niewłaściwy e-mail! Spróbuj jeszcze raz!'));
     } else {
         $user = User::where('email', '=', Input::get('email'))->first();
         if (is_null($user)) {
             $user = new User();
             $user->email = Input::get('email');
             $user->password = Hash::make(Str::random());
             $user->first_name = Input::get('first_name');
             $user->last_name = Input::get('last_name');
             $user->default_provider = Input::get('provider');
             $user->level = 2;
             $user->save();
         } else {
             $user->first_name = Input::get('first_name');
             $user->last_name = Input::get('last_name');
             $user->save();
         }
         $provider = new SocialProvider();
         $provider->user_id = $user->id;
         $provider->provider = Input::get('provider');
         $provider->provider_id = Input::get('provider_id');
         $provider->access_token = Input::get('access_token');
         if (Input::get('provider') == 'instagram') {
             $provider->profile_picture = sslInstagramProfilePic(Input::get('profile_picture'));
         } else {
             $provider->profile_picture = Input::get('profile_picture');
         }
         $provider->save();
         Session::forget('mmanos.social.pending');
         Auth::loginUsingId($user->id);
         return Redirect::to('/')->with('alert', array('type' => 'success', 'content' => 'Witamy!'));
     }
 }
コード例 #2
0
 public function showBoard($id)
 {
     $posts = array();
     $client = new \GuzzleHttp\Client();
     $count = 0;
     $board = Board::find($id);
     $hashtag = $board->hashtag;
     $config = $board->config()->first();
     $instagramKey = Config::get('laravel-social::providers.instagram.client_id');
     $googleKey = 'AIzaSyDiywW3UvpbQ5aR7f_8tLVgNCzui7Gq6ek';
     $postCount = 20;
     $googleToken = '';
     $instagramNextMaxId = '';
     $instagramMinTagId = '';
     $twitterMaxId = '';
     $twitterSinceId = '';
     $facebookSinceId = '';
     $facebookUntilId = '';
     $vineSinceId = '';
     $googleSinceId = '';
     if ($config->has_insta != -1) {
         if (Auth::check()) {
             $user = Auth::user();
             $provider = SocialProvider::where('user_id', '=', $user->id)->where('provider', '=', 'instagram')->first();
             if (is_null($provider)) {
                 $instagram = $client->get('https://api.instagram.com/v1/tags/' . $hashtag . '/media/recent?count=' . $postCount . '&client_id=' . $instagramKey);
             } else {
                 $token = $provider->access_token;
                 $instagram = $client->get('https://api.instagram.com/v1/tags/' . $hashtag . '/media/recent?count=' . $postCount . '&access_token=' . $token);
             }
         } else {
             $provider = SocialProvider::where('user_id', '=', $config->user_id)->where('provider', '=', 'instagram')->first();
             if (is_null($provider)) {
                 $instagram = $client->get('https://api.instagram.com/v1/tags/' . $hashtag . '/media/recent?count=' . $postCount . '&client_id=' . $instagramKey);
             } else {
                 $token = $provider->access_token;
                 $instagram = $client->get('https://api.instagram.com/v1/tags/' . $hashtag . '/media/recent?count=' . $postCount . '&access_token=' . $token);
             }
         }
         if ($instagram->getStatusCode() == 200) {
             $instagramData = $instagram->json();
             foreach ($instagramData['data'] as $data) {
                 if (strpos($data['caption']['text'], $hashtag) !== false) {
                     $post['user_id'] = $data['caption']['from']['id'];
                     $post['username'] = $data['caption']['from']['username'];
                     $post['url'] = $data['link'];
                     $str = $data['caption']['text'];
                     $str = preg_replace('/@([\\w-]+)/i', '', $str);
                     // #@
                     $post['caption'] = $str;
                     $post['post_id'] = $data['id'];
                     $post['vendor'] = 'instagram';
                     $post['user_img_url'] = $data['caption']['from']['profile_picture'];
                     $post['date_created'] = date("m-d-y H:i:s", $data['created_time']);
                     if (isset($data['images']) && !isset($data['videos'])) {
                         $post['img_url'] = $data['images']['standard_resolution']['url'];
                         $post['post_type'] = 'image';
                     } else {
                         if (isset($data['videos'])) {
                             //	dd($data['videos']);
                             $post['img_url'] = $data['images']['standard_resolution']['url'];
                             $post['embed'] = $data['videos']['standard_resolution']['url'];
                             $post['post_type'] = 'video';
                         }
                     }
                     array_push($posts, $post);
                     $count++;
                 }
             }
             if (isset($instagramData['pagination']['next_max_id'])) {
                 $instagramNextMaxId = $instagramData['pagination']['next_max_id'];
             }
             if (isset($instagramData['pagination']['min_tag_id'])) {
                 $instagramMinTagId = $instagramData['pagination']['min_tag_id'];
             }
         }
     }
     if ($config->has_fb == 9999) {
         $facebook = Facebook::api('/search?type=post&limit=' . $postCount . '&q=%23' . $hashtag);
         if ($facebook) {
             foreach ($facebook['data'] as $post) {
                 $post['vendor'] = 'facebook';
                 $post['post_id'] = $post['id'];
                 //$post['url'] = $post['link'];
                 $post['user_id'] = $post['from']['id'];
                 $post['username'] = $post['from']['name'];
                 $post['user_img_url'] = 'https://graph.facebook.com/' . $post['from']['id'] . '/picture?type=small';
                 if ($post['type'] == 'photo') {
                     $post['img_url'] = $post['picture'];
                     $post['post_type'] = 'image';
                 } else {
                     if ($post['type'] == 'video' && isset($post['picture'])) {
                         $post['post_type'] = 'video';
                         $post['img_url'] = $post['picture'];
                         $post['embed'] = $post['link'];
                     } else {
                         $post['post_type'] = 'text';
                     }
                 }
                 if (isset($post['message'])) {
                     $post['caption'] = $post['message'];
                 }
                 $post['date_created'] = $post['created_time'];
                 array_push($posts, $post);
                 $count++;
             }
             if (isset($facebook['paging'])) {
                 if (isset($facebook['paging']['previous'])) {
                     $prev = $facebook['paging']['previous'];
                     parse_str($prev, $arr);
                     $facebookSinceId = $arr['since'];
                 }
                 if (isset($facebook['paging']['next'])) {
                     $next = $facebook['paging']['next'];
                     parse_str($next, $arr);
                     $facebookUntilId = $arr['until'];
                 }
             }
         }
     }
     if ($config->has_tw != -1) {
         $first = true;
         $twitter = Twitter::getSearch(array('q' => '#' . $hashtag, 'include_entities' => 1, 'result_type' => 'recent', 'count' => $postCount));
         if ($twitter) {
             foreach ($twitter->statuses as $tweet) {
                 if (substr($tweet->text, 0, 2) !== "RT") {
                     if ($first) {
                         $twitterSinceId = $tweet->id . '';
                         $first = false;
                     }
                     $post['vendor'] = 'twitter';
                     $post['post_id'] = $tweet->id;
                     $post['user_id'] = $tweet->user->id;
                     $post['username'] = $tweet->user->screen_name;
                     $post['user_img_url'] = $tweet->user->profile_image_url;
                     if (isset($tweet->entities->media)) {
                         $post['img_url'] = $tweet->entities->media[0]->media_url;
                         $post['post_type'] = 'image';
                     } else {
                         $post['post_type'] = 'text';
                     }
                     $str = $tweet->text;
                     $str = preg_replace('/@([\\w-]+)/i', '', $str);
                     $post['caption'] = $str;
                     $post['date_created'] = date("m-d-y H:i:s", strtotime($tweet->created_at));
                     array_push($posts, $post);
                     $count++;
                 }
             }
             if (isset($twitter->search_metadata->next_results)) {
                 $next = $twitter->search_metadata->next_results;
                 parse_str($next, $arr);
                 $twitterMaxId = $arr['?max_id'];
             } else {
                 $twitterMaxId = '';
             }
         }
     }
     if ($config->has_google != -1) {
         $first = true;
         $google = $client->get('https://www.googleapis.com/plus/v1/activities?maxResults=2&query=' . $hashtag . '&key=' . $googleKey);
         if ($google->getStatusCode() == 200) {
             $data = $google->json();
             foreach ($data['items'] as $item) {
                 if ($first) {
                     $googleSinceId = $item['id'] . '';
                     $first = false;
                 }
                 $post['vendor'] = 'google-plus';
                 $post['post_id'] = $item['id'];
                 $post['user_id'] = $item['actor']['id'];
                 $post['username'] = $item['actor']['displayName'];
                 $post['date_created'] = $item['published'];
                 $post['user_img_url'] = $item['actor']['image']['url'];
                 $post['post_type'] = 'text';
                 if (isset($item['object']['attachments'][0]['objectType'])) {
                     if ($item['object']['attachments'][0]['objectType'] == 'photo') {
                         $post['img_url'] = $item['object']['attachments'][0]['fullImage']['url'];
                         $post['post_type'] = 'image';
                     }
                     if ($item['object']['attachments'][0]['objectType'] == 'video') {
                         $post['img_url'] = $item['object']['attachments'][0]['image']['url'];
                         $post['post_type'] = 'video';
                         $post['embed'] = $item['object']['attachments'][0]['url'];
                     }
                     if ($item['object']['attachments'][0]['objectType'] == 'article') {
                         if (isset($item['object']['attachments'][0]['fullImage']['url'])) {
                             $post['img_url'] = $item['object']['attachments'][0]['fullImage']['url'];
                         }
                         $post['post_type'] = 'article';
                         $post['article_url'] = $item['object']['attachments'][0]['url'];
                     }
                 } else {
                     $post['post_type'] = 'text';
                 }
                 $post['caption'] = $item['title'];
                 $post['url'] = $item['url'];
                 array_push($posts, $post);
                 $count++;
             }
             if (isset($data['nextPageToken'])) {
                 $googleToken = $data['nextPageToken'];
             }
         }
     }
     if ($config->has_vine != -1) {
         $vine = $client->get('https://api.vineapp.com/timelines/tags/' . $hashtag . '?limit=5');
         $vineCount = 0;
         $first = true;
         if ($vine->getStatusCode() == 200) {
             $data = $vine->json();
             if ($data['data']['count'] !== 0) {
                 foreach ($data['data']['records'] as $item) {
                     if ($first) {
                         $vineSinceId = $item['postId'] . '';
                         $first = false;
                     }
                     $post['vendor'] = 'vine';
                     $post['post_id'] = $item['postId'];
                     $post['user_id'] = $item['userId'];
                     $post['username'] = $item['username'];
                     $post['date_created'] = Carbon::parse($item['created'])->addHours(2);
                     $post['user_img_url'] = $item['avatarUrl'];
                     $post['img_url'] = $item['thumbnailUrl'];
                     $post['post_type'] = 'video';
                     $post['url'] = $item['permalinkUrl'];
                     $post['embed'] = $item['videoLowURL'];
                     $post['caption'] = $item['description'];
                     array_push($posts, $post);
                     $count++;
                     $vineCount++;
                     if ($vineCount == 5) {
                         break;
                     }
                 }
             }
         }
     }
     if ($count > 0) {
         $html = $this->postsToHtml($posts, $board->id, true);
         return Response::json(array('posts' => $html, 'endpoints' => array('google_token' => $googleToken, 'google_since_id' => $googleSinceId, 'twitter_max_id' => $twitterMaxId, 'twitter_since_id' => $twitterSinceId, 'instagram_max_id' => $instagramNextMaxId, 'instagram_min_tag' => $instagramMinTagId, 'facebook_until_id' => $facebookUntilId, 'facebook_since_id' => $facebookSinceId, 'vine_since_id' => $vineSinceId), 'count' => $count));
     } else {
         return Response::json(array('message' => 'No posts'));
     }
 }