Skip to content

Commit

Permalink
Improved support for itune podcast in feed tool.
Browse files Browse the repository at this point in the history
  • Loading branch information
shannah committed Oct 19, 2021
1 parent 10fb599 commit 74987e1
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 11 deletions.
9 changes: 9 additions & 0 deletions Dataface/FeedTool.php
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,9 @@ function createFeedItem(&$record){
$item->title = $data['title'];
$item->link = $data['link'];
$item->description = $data['description'];
if (!empty($data['itunes'])) {
$item->itunes = $data['itunes'];
}

//optional
//item->descriptionTruncSize = 500;
Expand Down Expand Up @@ -303,6 +306,12 @@ function createFeed($query=null){
if (!empty($feed_data['itunes'])) {
$rss->itunes = $feed_data['itunes'];
}
if (!empty($feed_data['copyright'])) {
$rss->copyright = $feed_data['copyright'];
}
if (!empty($feed_data['language'])) {
$rss->language = $feed_data['language'];
}
//optional
//$rss->descriptionTruncSize = 500;
//$rss->descriptionHtmlSyndicated = true;
Expand Down
4 changes: 3 additions & 1 deletion Dataface/Record.php
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,9 @@ function callDelegateFunction($function, $fallback=null, $param=null){
}



function tablename() {
return $this->_table->tablename;
}


/**
Expand Down
94 changes: 84 additions & 10 deletions lib/feedcreator.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ class FeedItem extends HtmlDescribable {
/**
* Optional attributes of an item.
*/
var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator, $enclosure, $podcast;
var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator, $enclosure, $podcast, $itunes;

/**
* Publishing date of an item. May be in one of the following formats:
Expand Down Expand Up @@ -926,15 +926,40 @@ function createFeed() {
if (is_array($this->itunes)) {
foreach ($this->itunes as $k=>$v) {
if (is_array($v)) {
foreach ($v as $vi) {
if ($k == 'category') {
$feed .= " <itunes:$k text=\"".df_escape($vi)."\"/>\n";
} else {
$feed .= " <itunes:$k>".df_escape($vi)."</itunes:$k>\n";
if ($k == 'owner') {
$feed .= " <itunes:$k>\n";
foreach ($v as $ki=>$vi) {
$feed .= " <itunes:$ki>".df_escape($vi)."</itunes:$ki>\n";
}
$feed .= " </itunes:$k>\n";

} else {
foreach ($v as $vi) {
if ($k == 'category') {
$feed .= " <itunes:$k text=\"".df_escape($vi)."\"/>\n";
} else {
$feed .= " <itunes:$k>".df_escape($vi)."</itunes:$k>\n";
}
}
}

} else {
if ($k == 'category') {
if ($k == 'explicit') {
if (empty($v) or $v === false or $v === '0' or $v === 0) {
$v = 'False';
} else if ($v === '1' or $v === 1 or $v === true) {
$v = 'True';
}
} else if ($k == 'block' or $k == 'complete') {
if (empty($v) or $v === false or $v === '0' or $v === 0) {
$v = 'No';
} else if ($v === true or $v === '1' or $v === 1) {
$v = 'Yes';
}
}
if ($k == 'image') {
$feed .= " <itunes:$k href=\"".df_escape($v)."\"/>\n";
} else if ($k == 'category') {
$feed .= " <itunes:$k text=\"".df_escape($v)."\"/>\n";
} else {
$feed .= " <itunes:$k>".df_escape($v)."</itunes:$k>\n";
Expand All @@ -949,17 +974,17 @@ function createFeed() {
}
if ($this->image!=null) {
$feed.= " <image>\n";
$feed.= " <url>".$this->image->url."</url>\n";
$feed.= " <url>".df_escape($this->image->url)."</url>\n";
$feed.= " <title>".FeedCreator::iTrunc(df_escape($this->image->title),100)."</title>\n";
$feed.= " <link>".$this->image->link."</link>\n";
$feed.= " <link>".df_escape($this->image->link)."</link>\n";
if (!empty($this->image->width)) {
$feed.= " <width>".$this->image->width."</width>\n";
}
if (!empty($this->image->height)) {
$feed.= " <height>".$this->image->height."</height>\n";
}
if (!empty($this->image->description)) {
$feed.= " <description>".$this->image->getDescription()."</description>\n";
$feed.= " <description>".df_escape($this->image->getDescription())."</description>\n";
}
$feed.= " </image>\n";
}
Expand Down Expand Up @@ -1041,6 +1066,55 @@ function createFeed() {
}

}
}
if (!empty($this->items[$i]->itunes)) {
if (is_array($this->items[$i]->itunes)) {
foreach ($this->items[$i]->itunes as $k=>$v) {
if (is_array($v)) {
if ($k == 'owner') {
$feed .= " <itunes:$k>\n";
foreach ($v as $ki=>$vi) {
$feed .= " <itunes:$ki>".df_escape($vi)."</itunes:$ki>\n";
}
$feed .= " </itunes:$k>\n";

} else {
foreach ($v as $vi) {
if ($k == 'category') {
$feed .= " <itunes:$k text=\"".df_escape($vi)."\"/>\n";
} else {
$feed .= " <itunes:$k>".df_escape($vi)."</itunes:$k>\n";
}
}
}

} else {
if ($k == 'explicit') {
if (empty($v) or $v === false or $v === '0' or $v === 0) {
$v = 'False';
} else if ($v === '1' or $v === 1 or $v === true) {
$v = 'True';
}
} else if ($k == 'block' or $k == 'complete') {
if (empty($v) or $v === false or $v === '0' or $v === 0) {
$v = 'No';
} else if ($v === true or $v === '1' or $v === 1) {
$v = 'Yes';
}
}
if ($k == 'image') {
$feed .= " <itunes:$k href=\"".df_escape($v)."\"/>\n";
} else if ($k == 'category') {
$feed .= " <itunes:$k text=\"".df_escape($v)."\"/>\n";
} else {
$feed .= " <itunes:$k>".df_escape($v)."</itunes:$k>\n";
}
}

}
} else {
$feed .= " " . $this->items[$i]->itunes ."\n";
}
}
$feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
$feed.= " </item>\n";
Expand Down
3 changes: 3 additions & 0 deletions plone.css
Original file line number Diff line number Diff line change
Expand Up @@ -3293,6 +3293,9 @@ div.xf-button-bar-actions > ul > li.featured-action,
display:flex;
}

.record-nav-actions {
padding-top: 10px;
}

.record-nav-actions > ul {
list-style-type: none;
Expand Down
3 changes: 3 additions & 0 deletions xf/actions/BaseAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ public function handle($params) {
$res = null;
try {
$res = $this->handleImpl($params);
if (\PEAR::isError($res)) {
return $res;
}

} catch (\Exception $ex) {
if ($ex->getCode() === 401) {
Expand Down

0 comments on commit 74987e1

Please sign in to comment.