13 $delegate =& $record->_table->getDelegate();
14 if ( isset($delegate) and method_exists($delegate,
'getFeedItem') ){
15 $res = $delegate->getFeedItem($record);
19 if ( !isset($res[
'title']) ) $res[
'title'] = $this->
getItemTitle($record);
20 if ( !isset($res[
'description']) ) $res[
'description'] = $this->
getItemDescription($record);
21 if ( !isset($res[
'link']) ) $res[
'link'] = $this->
getItemLink($record);
22 if ( !isset($res[
'date']) ) $res[
'date'] = $this->
getItemDate($record);
23 if ( !isset($res[
'author']) ) $res[
'author'] = $this->
getItemAuthor($record);
24 if ( !isset($res[
'source']) ) $res[
'source'] = $this->
getItemSource($record);
33 $appDelegate =&
$app->getDelegate();
34 if ( !isset($query) ){
36 $query =
$app->getQuery();
39 $delegate =&
$table->getDelegate();
41 if ( isset($query[
'-relationship']) ){
43 $record =&
$app->getRecord();
44 if ( isset($delegate) and method_exists($delegate,
'getRelatedFeed') ){
45 $feed = $delegate->getRelatedFeed($record, $query[
'-relationship']);
46 }
else if ( isset($appDelegate) and method_exists($appDelegate,
'getRelatedFeed') ){
47 $feed = $appDelegate->getRelatedFeed($record, $query[
'-relationship']);
52 if ( !isset($feed[
'title']) ) $feed[
'title'] =$this->
getRelatedTitle($record, $query[
'-relationship']);
53 if ( !isset($feed[
'description']) ) $feed[
'description'] = $this->
getRelatedDescription($record, $query[
'-relationship']);
54 if ( !isset($feed[
'link']) ) $feed[
'link'] = $this->
getRelatedLink($record, $query[
'-relationship']);
55 if ( !isset($feed[
'syndicationURL']) ) $feed[
'syndicationURL'] = $this->
getRelatedSyndicationURL($record, $query[
'-relationship']);
61 if ( isset($delegate) and method_exists($delegate,
'getFeed') ){
62 $feed = $delegate->getFeed($query);
63 }
else if ( isset($appDelegate) and method_exists($appDelegate,
'getFeed') ){
64 $feed = $appDelegate->getFeed($query);
69 if ( !isset($feed[
'title']) ) $feed[
'title'] = $this->
getTitle($query);
70 if ( !isset($feed[
'description']) ) $feed[
'description'] = $this->
getDescription($query);
71 if ( !isset($feed[
'link']) ) $feed[
'link'] = $this->
getLink($query);
72 if ( !isset($feed[
'syndicationURL']) ) $feed[
'syndicationURL'] = $this->
getSyndicationURL($query);
83 if ( isset($conf[$name]) ) {
84 return $app->parseString($conf[$name], $context);
95 $searchparams = preg_grep(
'/^-/', array_keys($query), PREG_GREP_INVERT);
96 if ( count($searchparams) > 0 ){
98 foreach ($searchparams as $key){
99 $parts = explode(
'/', $key);
100 if ( count($parts) > 1 and
$table->hasRelationship($parts[0]) ){
101 $temp[] = $parts[0].
'/'.$parts[1].
': '.$query[$key];
104 if ( !
$table->hasField($key) )
continue;
105 $temp[] = $key.
': '.$query[$key];
107 if ( count($temp) > 0 ){
108 $search_params =
'['.implode(
', ', $temp).
']';
116 if ( @$query[
'-search'] ){
117 $search_params =
' search for "'.$query[
'-search'].
'" '.$search_params;
123 $title=
$app->getSiteTitle().
' | '.
$table->getLabel().
' '.$search_params;
129 return ucwords($relationshipName).
" of ".$record->getTitle();
134 if ( !$description ){
135 $description =
"Feed Description";
139 return "Related records for ".$record->getTitle();
145 if ( $query[
'-action'] ==
'feed' ) $query[
'-action'] =
'list';
146 $link =
$app->url($query);
151 return $record->getURL(
'-relationship='.urlencode($relationshipName).
'&-action=related_records_list');
159 return $record->getURL(
'-relationship='.urlencode($relationshipName).
'&-action=related_records_list');
163 return $record->getPublicLink();
167 $delegate =& $record->_table->getDelegate();
168 if ( isset($delegate) and method_exists($delegate,
'getRSSDescription') ){
169 return $delegate->getRSSDescription($record);
171 $out =
'<table><thead><tr><th>Field</th><th>Value</th></tr></thead>';
173 foreach ( $record->_table->fields() as
$field){
174 if ( !$record->checkPermission(
'view') )
continue;
175 if ( @
$field[
'visibility'][
'feed'] ==
'hidden' )
continue;
176 if ( $disp = @$record->val(
$field[
'name']) ){
177 $out .=
'<tr><td valign="top">'.htmlspecialchars(
$field[
'widget'][
'label']).
'</td>';
178 $out .=
'<td valign="top">'.@$record->htmlValue(
$field[
'name']).
'</td></tr>';
181 $out .=
'</tbody></table>';
190 return $record->getTitle();
194 $mod = $record->getLastModified();
196 $mod = $record->getCreated();
202 $creator = $record->getCreator();
206 if ( !$creator ) $creator =
"Site administrator";
211 $delegate =& $record->_table->getDelegate();
212 if ( isset($delegate) && method_exists($delegate,
'getFeedSource') ){
213 return $delegate->getFeedSource($record);
216 if ( isset($conf[
'source']) ){
218 return $app->parseString($conf[
'source'], $record);
220 return $_SERVER[
'HOST_URI'].DATAFACE_SITE_HREF;
225 $item =
new FeedItem();
226 $item->title = $data[
'title'];
227 $item->link = $data[
'link'];
228 $item->description = $data[
'description'];
234 $item->date = $data[
'date'];
236 $item->source = $data[
'source'];
237 $item->author = $data[
'author'];
244 if ( !isset(
$app->_conf[
'_feed']) ){
245 $app->_conf[
'_feed'] = array();
247 return $app->_conf[
'_feed'];
251 import(
'feedcreator.class.php');
253 if ( !isset($query) ){
254 $query =
$app->getQuery();
258 $rss =
new UniversalFeedCreator();
259 $rss->encoding =
$app->_conf[
'oe'];
261 $rss->title = $feed_data[
'title'];
262 $rss->description = $feed_data[
'description'];
268 $rss->link = htmlentities($feed_data[
'link']);
269 $rss->syndicationURL = htmlentities($feed_data[
'syndicationURL']);
271 if ( isset($query[
'-relationship']) ){
273 $record =&
$app->getRecord();
274 $query[
'-related:start'] = 0;
275 $rrecords =& df_get_related_records(array_merge($query, array(
'-related:limit'=>1)));
276 if ( count($rrecords) > 0 ){
277 $testRec =& $rrecords[0]->toRecord();
278 $lastUpdatedColumn = $testRec->_table->getLastUpdatedField();
279 if ( $lastUpdatedColumn ){
281 $query[
'-related:limit'] = 30;
282 $query[
'-related:sort'] = $lastUpdatedColumn.
' desc';
283 $rrecords =& df_get_related_records($query);
288 $query[
'-related:limit'] = 30;
289 $rrecords =& df_get_related_records($query);
293 foreach ($rrecords as $rrec){
295 $dfRecord =& $rrec->toRecord();
296 if ( $dfRecord->checkPermission(
'view', array(
'recordmask'=>array(
'view'=>1) ) ) ){
297 $records[] =& $dfRecord;
307 $records =& df_get_records_array($query[
'-table'], $query);
312 foreach ($records as $record){
313 if ( !$record->checkPermission(
'view') )
continue;
314 if ( !$record->checkPermission(
'view in rss') )
continue;
316 $del =& $record->_table->getDelegate();
317 if ( isset($del) and method_exists($del,
'canAddToFeed') and !$del->canAddToFeed($record, $rss) ){
322 $rss->addItem($item);
332 return $feed->createFeed($format);