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.

Reply via email to