Файл: concrete5.7.5.6/concrete/src/Gathering/DataSource/TwitterDataSource.php
Строк: 88
<?php
namespace ConcreteCoreGatheringDataSource;
use ConcreteCoreGatheringDataSourceConfigurationConfiguration as GatheringDataSourceConfiguration;
use ConcreteCoreUrlUrl;
use OAuthCommonConsumerCredentials;
use OAuthCommonStorageMemory;
use OAuthCommonStorageSymfonySession;
use OAuthOAuth1TokenStdOAuth1Token;
class TwitterDataSource extends DataSource
{
const TWITTER_SEARCH_URL = 'http://api.flickr.com/services/feeds/photos_public.gne';
public function createConfigurationObject(Gathering $ag, $post)
{
$o = new TwitterGatheringDataSourceConfiguration();
$o->setTwitterUsername($post['twitterUsername']);
return $o;
}
private function getTwitterService()
{
$key = TWITTER_APP_CONSUMER_KEY;
$secret = TWITTER_APP_CONSUMER_SECRET;
$access_token = TWITTER_APP_ACCESS_TOKEN;
$access_secret = TWITTER_APP_ACCESS_SECRET;
/** @var OAuthServiceFactory $factory */
$factory = Core::make('oauth/factory/service');
// Initialize the token
$token = new StdOAuth1Token($access_token);
$token->setAccessTokenSecret($access_secret);
// Store the token in memory
$storage = new Memory();
$storage->storeAccessToken('Twitter', $token);
// Create the twitter service
return $factory->createService('twitter', new Credentials($key, $secret, ''), $storage);
}
public function createGatheringItems(GatheringDataSourceConfiguration $configuration)
{
$twitter = $this->getTwitterService();
$url = Url::createFromUrl('');
$url->setPath('/statuses/user_timeline.json');
$url->setQuery(array(
'screen_name' => $configuration->getTwitterUsername(),
'count' => 50
));
$tweets = json_decode($twitter->request($url));
if (!empty($tweets->errors[0])) {
throw new Exception($tweets->errors[0]->message);
}
$gathering = $configuration->getGatheringObject();
$lastupdated = 0;
if ($gathering->getGatheringDateLastUpdated()) {
$lastupdated = strtotime($gathering->getGatheringDateLastUpdated());
}
$items = array();
foreach ($tweets as $tweet) {
$item = TwitterGatheringItem::add($configuration, $tweet);
if (is_object($item)) {
$items[] = $item;
}
}
return $items;
}
}