ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE3/plugins/opBlogPlugin/trunk/lib/model/BlogPeer.php @ 10605

Last change on this file since 10605 was 10605, checked in by nagasawa, 11 years ago

#3557:fixed changed SimpleXML to SimplePie?

File size: 3.5 KB
Line 
1<?php
2
3/**
4 * This file is part of the OpenPNE package.
5 * (c) OpenPNE Project (http://www.openpne.jp/)
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file and the NOTICE file that were distributed with this source code.
9 */
10
11class BlogPeer
12{
13  public static function getFeedByUrl($url)
14  {
15    if (is_null($url))
16    {
17      return false;
18    }
19    $feed = new SimplePie();
20    $dir = sfConfig::get('sf_app_cache_dir') . '/plugins';
21    if (!file_exists($dir))
22    {
23      mkdir($dir);
24    }
25    $dir .= '/opBlogPlugin';
26    if (!file_exists($dir))
27    {
28      mkdir($dir);
29    }
30    $feed->set_cache_location($dir);
31    $feed->set_feed_url($url);
32    if(!@$feed->init())
33    {
34      return false;
35    }
36    $feed->handle_content_type();
37
38    return $feed;
39  }
40
41  public static function getBlogListByMemberId($member_id, &$list)
42  {
43    $member = MemberPeer::retrieveByPk($member_id);
44    if (!$member || !$member->getIsActive())
45    {
46      return;
47    }
48
49    $feed = self::getFeedByUrl($member->getConfig('blog_url'));
50    if (!$feed)
51    {
52      return;
53    }
54
55    foreach ($feed->get_items() as $item)
56    {
57      $list[] = self::setBlog(
58        strtotime(@$item->get_date()),
59        @$item->get_title(),
60        @$item->get_link(),
61        $member->getName()
62      ); 
63    }
64  }
65
66  protected static function setBlog($date, $title, $link, $name)
67  {
68    return array(
69      'date' => $date,
70      'title' => htmlspecialchars_decode($title),
71      'link_to_external' => $link,
72      'name' => $name
73    );
74  }
75
76  public static function sortBlogList(&$list, $size = 20)
77  {
78    foreach ($list as $aKey => $a)
79    {
80      $pickKey = $aKey;
81      for ($bKey = $aKey + 1; $bKey < count($list); $bKey++)
82      {
83        if ($list[$bKey]['date'] > $list[$pickKey]['date'])
84        {
85          $pickKey = $bKey;
86        }
87      }
88      if ($aKey != $pickKey)
89      {
90        $list[$aKey] = $list[$pickKey];
91        $list[$pickKey] = $a;
92      }
93    }
94    return array_splice($list, 0, $size);
95  }
96
97  public static function limitBlogTitle(&$list)
98  {
99    foreach($list as &$res)
100    {
101      $res['title'] = mb_strcut($res['title'], 0, 30);
102    }
103  }
104
105  public static function getBlogListOfFriend($member_id, $size = 20, $limitTitle = false)
106  {
107    $c = new Criteria();
108    $c->add(MemberRelationshipPeer::MEMBER_ID_TO, $member_id);
109    $c->add(MemberRelationshipPeer::IS_FRIEND, true);
110    $c->addSelectColumn(MemberRelationshipPeer::MEMBER_ID_FROM);
111    $stmt = MemberRelationshipPeer::doSelectStmt($c);
112    $list = array();
113    while($id = $stmt->fetchColumn(0))
114    {
115      self::getBlogListByMemberId($id, $list);
116    }
117    $list = self::sortBlogList($list, $size);
118    if ($limitTitle)
119    {
120      self::limitBlogTitle($list);
121    }
122   
123    return $list;
124  }
125
126  public static function getBlogListOfMember($member_id, $size = 20, $limitTitle = false)
127  {
128    $list = array();
129    self::getBlogListByMemberId($member_id, $list);
130    $list = self::sortBlogList($list, $size);
131    if ($limitTitle)
132    {
133      self::limitBlogTitle($list);
134    }
135   
136    return $list;
137  }
138
139  public static function getBlogListOfAllMember($size = 20, $limitTitle = false)
140  {
141    $c = new Criteria();
142    $c->addSelectColumn(MemberPeer::ID);
143    $stmt = MemberPeer::doSelectStmt($c);
144    $list = array();
145    while($id = $stmt->fetchColumn(0))
146    {
147      self::getBlogListByMemberId($id, $list);
148    }
149    $list = self::sortBlogList($list, $size);
150    if ($limitTitle)
151    {
152      self::limitBlogTitle($list);
153    }
154   
155    return $list;
156  }
157}
Note: See TracBrowser for help on using the repository browser.