var feedArray = ArrayNew(1);
var feedData = StructNew();
var feedStream = ArrayNew(1);
var postQty = arguments.maxPosts;
var userData = StructNew();
var dt = "";
var d = 1;
var feedAuthorName = "";
var lnk = 1;
var PostID = "";
var thmbArray = ArrayNew(1);
var thmb = 1;
// Get the the YouTube feeds from the registered URL
feedInfo = application.ptSocialMedia.youTubeFeedsDAO.getYouTubeChannel(arguments.feedCriteria);
feedStream = application.ptSocialMedia.youTubeFeedsDAO.getYouTubeChannelUploads(arguments.feedCriteria,arguments.maxPosts);
if ( arguments.showFeedDump ) {
application.ptSocialMedia.utils.doDUMP(feedInfo,"YouTube-feedInfo (#arguments.FeedID#)",0);
application.ptSocialMedia.utils.doDUMP(feedStream,"YouTube-feedStream (#arguments.FeedID#)",0);
}
// Make sure the feedStream data contains an Array
if ( IsArray(feedStream) ) {
if ( ArrayLen(feedStream) LTE arguments.maxPosts )
postQty = ArrayLen(feedStream);
for ( d=1; d LTE postQty; d++ ) {
// Get the YouTube Video ID (as PostID)
PostID = "";
if ( StructKeyExists(feedStream[d],"media$group")
AND StructKeyExists(feedStream[d].media$group,"yt$videoid")
AND StructKeyExists(feedStream[d].media$group.yt$videoid,"$t") ) {
PostID = feedStream[d].media$group.yt$videoid.$t;
}
// Do not Build a Feed Data Struct for Posts that are part of the Excluded Posts List
if ( ListFindNoCase(arguments.excludedPostIDs,PostID) EQ 0 ) {
// Build the empty feed data structure
feedData = Application.ptSocialMedia.feedController.buildFeedDataFormat();
// Fill in the feedData structure with the post info
// General Post Metadata
feedService = Application.ptSocialMedia.youTubeFeedsDAO.getYouTubeMetadata();
StructAppend(feedData,feedService,true);
// Feed ID
feedData.FeedID = arguments.FeedID;
// Feed Type
feedData.FeedType = "channel uploads";
// Channel Page Name (from Channel Feed)
if ( StructKeyExists(feedInfo,"title") AND StructKeyExists(feedInfo.title,"$t") )
feedData.FeedName = feedInfo.title.$t;
// Channel Image (from Channel Feed)
if ( StructKeyExists(feedInfo,"media$thumbnail") AND StructKeyExists(feedInfo.media$thumbnail,"url") )
feedData.FeedImage = feedInfo.media$thumbnail.url;
// Channel Link (from Channel Feed)
if ( StructKeyExists(feedInfo,"link") AND ArrayLen(feedInfo.Link) ) {
for ( lnk=1; lnk LTE ArrayLen(feedInfo.Link); lnk=lnk+1 ) {
if ( StructKeyExists(feedInfo.link[lnk],"rel") AND feedInfo.link[lnk].rel EQ "alternate" ) {
feedData.FeedLink = feedInfo.link[lnk].href;
break;
}
}
}
// feed author name
//if ( StructKeyExists(feedInfo,"author")
//AND ArrayLen(feedInfo.author)
//AND StructKeyExists(feedInfo.author[1],"name")
//AND StructKeyExists(feedInfo.author[1].name,"$t") )
//feedAuthorName = feedInfo.author[1].name.$t;
// Published Dates
if ( StructKeyExists(feedStream[d],"published")
AND StructKeyExists(feedStream[d].published,"$t") ) {
dt = Application.ptSocialMedia.date.ISOToDateTimeStruct(feedStream[d].published.$t);
// Feed Pub Dates
feedData.PublishedDate = dt.ISO8601DateTime;
feedData.csFormattedPublishedDate = dt.csDateTime;
// Content Pub Dates
feedData.Content.Date = dt.ISO8601DateTime;
feedData.Content.CSFormattedDate = dt.csDateTime;
}
// Source Info (Complete Info Not needed for YouTube)
/* if ( StructKeyExists(feedStream[d],"author")
AND ArrayLen(feedStream[d].author) ) {
// Source User Name, User ID and Name
if ( StructKeyExists(feedStream[d].author[1],"name")
AND StructKeyExists(feedStream[d].author[1].name,"$t") ) {
// Source User Name
feedData.Source.UserName = feedStream[d].author[1].name.$t;
// Source Name
feedData.Source.Name = feedStream[d].author[1].name.$t;
// Source User ID
feedData.Source.UserID = feedStream[d].author[1].name.$t;
}
} */
// Post Content
// Content Post ID (PostID)
if ( LEN(TRIM(PostID)) )
feedData.Content.PostID = PostID;
// Content Title ( title.$t or media$group.media$title.$t )
if ( StructKeyExists(feedStream[d],"title") AND StructKeyExists(feedStream[d].title,"$t") )
feedData.Content.Title = feedStream[d].title.$t;
if ( StructKeyExists(feedStream[d],"media$group") ) {
// Content Thumbnail (media$group.media$thumbnail[1].url)
if ( StructKeyExists(feedStream[d].media$group,"media$thumbnail") AND IsArray(feedStream[d].media$group.media$thumbnail) ) {
thmbArray = feedStream[d].media$group.media$thumbnail;
for ( thmb=1; thmb LTE ArrayLen(thmbArray); thmb=thmb+1 ) {
if ( StructKeyExists(thmbArray[thmb],"yt$name") AND thmbArray[thmb].yt$name EQ "default" ) {
feedData.Content.Thumbnail = thmbArray[thmb].url;
break;
}
}
}
if ( LEN(TRIM(feedData.Content.Thumbnail)) AND LEN(TRIM(PostID)) ) {
// TODO: Add Thumb URL to config element
feedData.Content.Thumbnail = "http://i.ytimg.com/vi/" & PostID & "/default.jpg";
}
// Content Link (media$group.media$player.url)
if ( StructKeyExists(feedStream[d].media$group,"media$player") AND StructKeyExists(feedStream[d].media$group.media$player,"url") ) {
feedData.Content.Link = feedStream[d].media$group.media$player.url;
}
if ( LEN(TRIM(feedData.Content.Link)) AND LEN(TRIM(PostID)) ) {
// TODO: Add Link URL to config element
feedData.Content.Link = "http://www.youtube.com/watch?v=" & PostID;
}
// Content Description (media$description.$t)
if ( StructKeyExists(feedStream[d].media$group,"media$description") AND StructKeyExists(feedStream[d].media$group.media$description,"$t") )
feedData.Content.Description = feedStream[d].media$group.media$description.$t;
}
// Post Source Info
// published = feedStream[1].published.$t
// title = feedStream[1].title.$t
// link = feedStream[1].media$group.media$player.url
// image = feedStream[1].media$group.media$thumbnail[1].url
// description = feedStream[1].media$description.$t
// contentid = feedStream[1].media$group.yt$videoid.$t
// feedStream[1].link[1].rel EQ "alternate"
// feedStream[1].link[1].href
// category = feedData.media$group.media$category[1].label ("People & Blogs")
// large player = content.src
// FB Like and Twitter Tweet Buttons
if ( LEN(TRIM(feedData.Content.Link)) ) {
feedData.FBLikeBtn.link = feedData.Content.Link;
feedData.TweetBtn.link = feedData.Content.Link;
} else if ( LEN(TRIM(feedData.Source.Link)) ) {
feedData.FBLikeBtn.link = feedData.Source.Link;
feedData.TweetBtn.link = feedData.Source.Link;
} else {
feedData.FBLikeBtn.link = feedData.FEEDLINK;
feedData.TweetBtn.link = feedData.FEEDLINK;
}
// Twitter Tweet Text
if ( LEN(TRIM(feedData.Content.Title)) )
feedData.TweetBtn.message = Left(feedData.Content.Title,120);
else if ( LEN(TRIM(feedData.Content.message)) )
feedData.TweetBtn.message = Left(feedData.Content.message,120);
else if ( LEN(TRIM(feedData.Content.description)) )
feedData.TweetBtn.message = Left(feedData.Content.description,120);
ArrayAppend(feedArray,feedData);
}
}
}
return feedArray;
feedData = application.ptSocialMedia.feedController.buildFeedDataFormat();
// General Post Metadata
feedService = Application.ptSocialMedia.youTubeFeedsDAO.getYouTubeMetadata();
StructAppend(feedData,feedService,true);
feedData.PublishedDate = currPubDateTimeStruct.ISO8601DateTime;
feedData.csFormattedPublishedDate = currPubDateTimeStruct.csDateTime;
feedData.FeedID = arguments.channelID; // Unique custom element record ID
//feedData.FeedID = 180029; // Unique custom element record ID
feedData.FeedType = "channel uploads";
feedData.FeedImage = videoData.ThumbnailImageURL;
feedData.FeedName = mmcListQuery.name;
// Content Info
feedData.Content.postid = videoData.extReferenceID;
feedData.Content.title = videoData.title;
feedData.Content.link = "https://www.youtube.com/watch?v=" & videoData.extReferenceID;
feedData.Content.thumbnail = videoData.ThumbnailImageURL;
feedData.Content.description = videoData.description;
feedData.Content.date = currPubDateTimeStruct.ISO8601DateTime;
feedData.Content.csFormattedDate = currPubDateTimeStruct.csDateTime;
// Facebook Like Button
feedData.FBLikeBtn.link = feedData.Content.Link;
// Twitter Tweet Button
feedData.TweetBtn.link = feedData.Content.Link;
feedData.TweetBtn.message = Left(feedData.Content.Title,120);
arrayAppend(feedArray,feedData,true);
var reHTML = "";
var appConfigStruct = application.ptSocialMedia.getAppConfig();
var uiTheme = 'redmond';
var appStyleSheet = "/ADF/apps/pt_social_media/style/socialmedia.css";
// Set the UI theme from the Configuration Element
if ( structKeyExists(appConfigStruct,"ui_theme") AND LEN(TRIM(appConfigStruct['ui_theme'])) )
uiTheme = appConfigStruct['ui_theme'];
// load jQuery headers
application.ptSocialMedia.scripts.loadJQuery(noconflict=1);
application.ptSocialMedia.scripts.loadJQueryUI(themeName=UItheme);
// load headers for jQuery light box
application.ptSocialMedia.scripts.loadADFLightbox();
application.ADF.scripts.addFooterJS(hideHelpFooterJS,"TERTIARY");