Author: ornicar2
Date: 2010-01-22 23:29:41 +0100 (Fri, 22 Jan 2010)
New Revision: 27075
Added:
plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineForm.php
plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineView.php
plugins/dmWidgetTwitterPlugin/modules/dmWidget/templates/_dmWidgetTwitterTimeline.php
Modified:
plugins/dmWidgetTwitterPlugin/config/dm/widget_types.yml
plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchForm.php
plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchView.php
Log:
[Diem][dmWidgetTwitterPlugin]
- added the timeline widget
- changed max tweets from 100 to 200 for all widgets
Modified: plugins/dmWidgetTwitterPlugin/config/dm/widget_types.yml
===================================================================
--- plugins/dmWidgetTwitterPlugin/config/dm/widget_types.yml 2010-01-22
20:43:56 UTC (rev 27074)
+++ plugins/dmWidgetTwitterPlugin/config/dm/widget_types.yml 2010-01-22
22:29:41 UTC (rev 27075)
@@ -1,4 +1,7 @@
dmWidgetTwitter:
search:
+ cache: false
+
+ timeline:
cache: false
\ No newline at end of file
Modified: plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchForm.php
===================================================================
--- plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchForm.php
2010-01-22 20:43:56 UTC (rev 27074)
+++ plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchForm.php
2010-01-22 22:29:41 UTC (rev 27075)
@@ -13,7 +13,7 @@
$this->widgetSchema['nb_tweets'] = new sfWidgetFormInputText();
$this->validatorSchema['nb_tweets'] = new sfValidatorInteger(array(
'min' => 0,
- 'max' => 100
+ 'max' => 200
));
$this->widgetSchema['life_time'] = new sfWidgetFormInputText();
Modified: plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchView.php
===================================================================
--- plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchView.php
2010-01-22 20:43:56 UTC (rev 27074)
+++ plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterSearchView.php
2010-01-22 22:29:41 UTC (rev 27075)
@@ -28,12 +28,12 @@
$tweets[] = $tweet['text'];
}
- return implode(', ', $tweets);
+ return $vars['query'].' '.implode(', ', $tweets);
}
protected function searchTweets($query, $nb, $lifeTime)
{
- $cache =
$this->context->get('cache_manager')->getCache('dm_widget_twitter');
+ $cache =
$this->getService('cache_manager')->getCache('dm_widget_twitter_search');
$cacheKey = md5($query.$nb);
if ($cache->has($cacheKey))
Added: plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineForm.php
===================================================================
--- plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineForm.php
(rev 0)
+++ plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineForm.php
2010-01-22 22:29:41 UTC (rev 27075)
@@ -0,0 +1,37 @@
+<?php
+
+class dmWidgetTwitterTimelineForm extends dmWidgetPluginForm
+{
+ public function configure()
+ {
+ $this->widgetSchema['user'] = new sfWidgetFormInputText();
+ $this->validatorSchema['user'] = new sfValidatorString(array(
+ 'required' => true,
+ 'min_length' => 3
+ ));
+
+ $this->widgetSchema['nb_tweets'] = new sfWidgetFormInputText();
+ $this->validatorSchema['nb_tweets'] = new sfValidatorInteger(array(
+ 'min' => 0,
+ 'max' => 200
+ ));
+
+ $this->widgetSchema['life_time'] = new sfWidgetFormInputText();
+ $this->validatorSchema['life_time'] = new sfValidatorInteger(array(
+ 'min' => 0
+ ));
+ $this->widgetSchema->setHelp('life_time', 'Cache life time in seconds');
+
+ if(!$this->getDefault('nb_tweets'))
+ {
+ $this->setDefault('nb_tweets', 10);
+ }
+
+ if(!$this->getDefault('life_time'))
+ {
+ $this->setDefault('life_time', 3600);
+ }
+
+ parent::configure();
+ }
+}
\ No newline at end of file
Added: plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineView.php
===================================================================
--- plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineView.php
(rev 0)
+++ plugins/dmWidgetTwitterPlugin/lib/dmWidgetTwitterTimelineView.php
2010-01-22 22:29:41 UTC (rev 27075)
@@ -0,0 +1,68 @@
+<?php
+
+class dmWidgetTwitterTimelineView extends dmWidgetPluginView
+{
+
+ public function configure()
+ {
+ parent::configure();
+
+ $this->addRequiredVar(array('user', 'nb_tweets', 'life_time'));
+ }
+
+ protected function filterViewVars(array $vars = array())
+ {
+ $vars = parent::filterViewVars($vars);
+
+ $vars['tweets'] = $this->getUserTweets($vars['user'], $vars['nb_tweets'],
$vars['life_time']);
+
+ return $vars;
+ }
+
+ protected function doRenderForIndex()
+ {
+ $tweets = array();
+
+ foreach($this->compiledVars['tweets'] as $tweet)
+ {
+ $tweets[] = $tweet['text'];
+ }
+
+ return $vars['user'].' '.implode(', ', $tweets);
+ }
+
+ protected function getUserTweets($user, $nb, $lifeTime)
+ {
+ $cache =
$this->getService('cache_manager')->getCache('dm_widget_twitter_timeline');
+ $cacheKey = md5($user.$nb);
+
+ if ($cache->has($cacheKey))
+ {
+ $tweets = $cache->get($cacheKey);
+ }
+ else
+ {
+ $tweets = array();
+ $api = new TwitterApiClient();
+ $collection = $api->getUserTimeline($user, null, null, $nb);
+
+ foreach($collection as $tweet)
+ {
+ $tweets[] = array(
+ 'text' => $tweet->text,
+ 'created_at' => strtotime($tweet->created_at)
+ );
+ }
+
+ $tweets = $this->context->getEventDispatcher()->filter(
+ new sfEvent($this, 'dm.widget_twitter_timeline.tweets', array('user'
=> $user)),
+ $tweets
+ )->getReturnValue();
+
+ $cache->set($cacheKey, $tweets, $lifeTime);
+ }
+
+ return $tweets;
+ }
+
+}
\ No newline at end of file
Added:
plugins/dmWidgetTwitterPlugin/modules/dmWidget/templates/_dmWidgetTwitterTimeline.php
===================================================================
---
plugins/dmWidgetTwitterPlugin/modules/dmWidget/templates/_dmWidgetTwitterTimeline.php
(rev 0)
+++
plugins/dmWidgetTwitterPlugin/modules/dmWidget/templates/_dmWidgetTwitterTimeline.php
2010-01-22 22:29:41 UTC (rev 27075)
@@ -0,0 +1,24 @@
+<?php use_helper('Text'); use_helper('Date');
+
+/*
+ * A $tweet is an array containing:
+ * - text: text of the tweet
+ * - created_at: when the tweet was posted, timestamp
+ */
+
+echo £o('ul');
+
+foreach($tweets as $tweet)
+{
+ echo £('li',
+
+ // render tweet text
+ £('p.tweet_text', auto_link_text($tweet['text'])).
+
+ // render tweet date
+ £('p.tweet_date', format_date($tweet['created_at'], 'D'))
+
+ );
+}
+
+echo £c('ul');
\ No newline at end of file
--
You received this message because you are subscribed to the Google Groups
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-svn?hl=en.