示例#1
0
文件: galleries.php 项目: anqh/anqh
 /**
  * Get newsfeed item as HTML
  *
  * @param   Model_NewsfeedItem  $item
  * @return  string
  */
 public static function get(Model_NewsfeedItem $item)
 {
     $link = $item->is_aggregate() ? implode('<br>', self::get_links($item)) : self::get_link($item);
     if (!$link) {
         return '';
     }
     $text = '';
     switch ($item->type) {
         case self::TYPE_COMMENT:
             $text = $item->is_aggregate() ? __('commented photos') : __('commented a photo');
             break;
         case self::TYPE_COMMENT_FLYER:
             $text = $item->is_aggregate() ? __('commented flyers') : __('commented a flyer');
             break;
         case self::TYPE_FLYER_EDIT:
             $text = $item->is_aggregate() ? __('updated flyers') : __('updated a flyer');
             break;
         case self::TYPE_NOTE:
             $user = Model_User::find_user($item->data['user_id']);
             if ($link && $user->loaded()) {
                 $text = __('tagged :user to a photo', array(':user' => HTML::user($user)));
             }
             break;
         case self::TYPE_UPLOAD:
             $text = __('added new photos to a gallery');
             break;
     }
     return $text . '<br />' . $link;
 }
示例#2
0
文件: blog.php 项目: anqh/anqh
 /**
  * Get newsfeed item as HTML
  *
  * @param   Model_NewsfeedItem  $item
  * @return  string
  */
 public static function get(Model_NewsfeedItem $item)
 {
     $link = $item->is_aggregate() ? implode('<br>', self::get_links($item)) : self::get_link($item);
     if (!$link) {
         return '';
     }
     $text = '';
     switch ($item->type) {
         case self::TYPE_COMMENT:
             $text = $item->is_aggregate() ? __('commented to blogs') : __('commented to a blog');
             break;
         case self::TYPE_ENTRY:
             $text = $item->is_aggregate() ? __('wrote new blog entries') : __('wrote a new blog entry');
             break;
     }
     return $text . '<br>' . $link;
 }
示例#3
0
文件: music.php 项目: anqh/anqh
 /**
  * Get newsfeed item as HTML
  *
  * @param   Model_NewsfeedItem  $item
  * @return  string
  */
 public static function get(Model_NewsfeedItem $item)
 {
     $link = $item->is_aggregate() ? implode('<br>', self::get_links($item)) : self::get_link($item);
     if (!$link) {
         return '';
     }
     $text = '';
     switch ($item->type) {
         case self::TYPE_MIX:
             $text = $item->is_aggregate() ? __('added new mixtapes') : __('added a new mixtape');
             break;
         case self::TYPE_TRACK:
             $text = $item->is_aggregate() ? __('added new tracks') : __('added a new track');
             break;
     }
     return $text . '<br>' . $link;
 }
示例#4
0
文件: newsfeed.php 项目: anqh/anqh
 /**
  * Aggregate repeating items, daily.
  *
  * @param   Model_NewsfeedItem[]  $items
  * @return  Model_NewsfeedItem[]
  */
 protected function aggregate($items = null)
 {
     $aggregated = array();
     $aggregate_types = array();
     foreach ($items as $item) {
         // Check if item type is aggregateable
         $class = 'Newsfeeditem_' . $item->class;
         if (!isset($aggregate_types[$class])) {
             $aggregate_types[$class] = class_exists($class) ? Arr::get(get_class_vars($class), 'aggregate', array()) : array();
         }
         if (!in_array($item->type, $aggregate_types[$class])) {
             // Not aggregateable
             $aggregated[] = $item;
             continue;
         }
         // Generate key
         $key = $item->user_id . $item->class . $item->type . date('Ymd', $item->stamp);
         if (isset($aggregated[$key])) {
             // Aggregate to existing key
             /** @var  Model_NewsfeedItem  $aggregate */
             $aggregate = clone $aggregated[$key];
             // Make it aggregated pseudo item if necessary
             if (!$aggregate->is_aggregate()) {
                 $_aggregate = new Model_NewsfeedItem();
                 $_aggregate->is_aggregate(true);
                 $_aggregate->set_fields(array('user_id' => $aggregate->user_id, 'stamp' => $aggregate->stamp, 'class' => $aggregate->class, 'type' => $aggregate->type, 'data' => array(clone $aggregate)));
                 $aggregate = $_aggregate;
             }
             // Add current item
             $data = $aggregate->data;
             $duplicate = false;
             foreach ($data as $_item) {
                 if ($_item->data == $item->data) {
                     $duplicate = true;
                     break;
                 }
             }
             if (!$duplicate) {
                 $data[] = $item;
                 $aggregate->data = $data;
                 $aggregated[$key] = $aggregate;
             }
         } else {
             // New aggregateable key
             $aggregated[$key] = $item;
         }
     }
     return $aggregated;
 }