Cheetah
ChWsbRssFactory.php
Go to the documentation of this file.
1 <?php
2 
9 {
10  // default constructor of factory pattern
11  function __construct() {}
12 
13  /*
14  * params is:
15  * 1. $aRssData, fields:
16  'UnitID'
17  'OwnerID'
18  'UnitTitle'
19  'UnitLink'
20  'UnitDesc'
21  'UnitDateTimeUTS'
22  'UnitIcon'
23  */
24  function GenRssByData($aRssData, $sUnitTitleC, $sMainLink)
25  {
26  return $this->GenRssByCustomData($aRssData, $sUnitTitleC, $sMainLink, array(
27  'Guid' => 'UnitLink',
28  'Link' => 'UnitLink',
29  'Title' => 'UnitTitle',
30  'DateTimeUTS' => 'UnitDateTimeUTS',
31  'Desc' => 'UnitDesc',
32  'Image' => 'UnitIcon'
33  ));
34  }
35 
49  function GenRssByCustomData($aRssData, $sUnitTitleC, $sMainLink, $aFields, $sImage = '', $iPID = 0)
50  {
51  global $site;
52 
53  $sRSSLast = '';
54  if(!empty($aRssData) && is_array($aRssData)) {
55  reset($aRssData);
56  $aUnitFirst = current($aRssData);
57 
58  $sRSSLast = ch_time_utc($aUnitFirst[$aFields['DateTimeUTS']]);
59  }
60 
61  if ($iPID > 0)
62  $aPIDOwnerInfo = getProfileInfo($iPID);
63 
64  $iUnitLimitChars = 2000;//(int)getParam('max_blog_preview');
65  $sUnitRSSFeed = '';
66  if ($aRssData) {
67  $sTxtReadMore = _t('_Read more');
68 
69  foreach ($aRssData as $aUnitInfo) {
70  $sUnitUrl = $aUnitInfo[$aFields['Link']];
71  $sUnitGuid = $aUnitInfo[$aFields['Guid']];
72 
73  $sUnitTitle = strip_tags($aUnitInfo[$aFields['Title']]);
74  $sUnitDate = ch_time_utc($aUnitInfo[$aFields['DateTimeUTS']]);
75 
76  $sUnitDesc = '';
77  if(isset($aFields['Desc']) && !empty($aUnitInfo[$aFields['Desc']])) {
78  $sLinkMore = '';
79  if ( strlen( $aUnitInfo[$aFields['Desc']]) > $iUnitLimitChars )
80  $sLinkMore = "... <a href=\"".$sUnitUrl."\">" . $sTxtReadMore . "</a>";
81 
82  $sUnitDesc = "<p>" . mb_substr(strip_tags($aUnitInfo[$aFields['Desc']]), 0, $iUnitLimitChars) . $sLinkMore . "</p>";
83  }
84 
85  if(isset($aFields['Image']) && !empty($aUnitInfo[$aFields['Image']]))
86  $sUnitDesc .= "<img src=\"" . $aUnitInfo[$aFields['Image']] . "\" />";
87 
88  $sUnitRSSFeed .= "<item><title><![CDATA[{$sUnitTitle}]]></title><link><![CDATA[{$sUnitUrl}]]></link><guid><![CDATA[{$sUnitGuid}]]></guid><description><![CDATA[{$sUnitDesc}]]></description><pubDate>{$sUnitDate}</pubDate></item>";
89  }
90  }
91 
92  $sRSSTitle = _t('_RSS_Feed_Title_Common', $sUnitTitleC);
93  if ($iPID > 0) {
94  $sRSSTitle = _t('_RSS_Feed_Title_Profile', $aPIDOwnerInfo['NickName'], $sUnitTitleC);
95  }
96 
97  if(substr($sMainLink, 0, 7) != 'http://' && substr($sMainLink, 0, 8) != 'https://')
98  $sMainLink = CH_WSB_URL_ROOT . $sMainLink;
99 
100  $sRSSImage = '';
101  if ($sImage) {
102  $sRSSImage = "<image><url>{$sImage}</url><title>{$sRSSTitle}</title><link>{$sMainLink}</link></image>";
103  }
104 
105  return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><rss version=\"2.0\"><channel><title>{$sRSSTitle}</title><link><![CDATA[{$sMainLink}]]></link><description>{$sRSSTitle}</description><lastBuildDate>{$sRSSLast}</lastBuildDate>{$sRSSImage}{$sUnitRSSFeed}</channel></rss>";
106  }
107 
108  function SetRssHeader()
109  {
110  header('Content-Type: text/xml; charset=UTF-8');
111  }
112 }
header
</code > Be careful enabling this directive if you have a redirector script that does not use the< code > Location</code > HTTP header
Definition: URI.MungeResources.txt:10
php
ChWsbRssFactory\SetRssHeader
SetRssHeader()
Definition: ChWsbRssFactory.php:108
ChWsbRssFactory\GenRssByData
GenRssByData($aRssData, $sUnitTitleC, $sMainLink)
Definition: ChWsbRssFactory.php:24
ChWsbRssFactory\GenRssByCustomData
GenRssByCustomData($aRssData, $sUnitTitleC, $sMainLink, $aFields, $sImage='', $iPID=0)
Definition: ChWsbRssFactory.php:49
ChWsbRssFactory\__construct
__construct()
Definition: ChWsbRssFactory.php:11
$aFields
$aFields
Definition: preValues.php:19
ChWsbRssFactory
Definition: ChWsbRssFactory.php:9
$site
$site['ver']
Definition: version.inc.php:8
global
if(!defined("GLOBAL_MODULE")) define("GLOBAL_MODULE" global
Definition: header.inc.php:25
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
getProfileInfo
getProfileInfo($iProfileID=0, $checkActiveStatus=false, $forceCache=false)
Definition: profiles.inc.php:249
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
ch_time_utc
ch_time_utc($iUnixTimestamp)
Definition: utils.inc.php:116