PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web);
PublishingPageCollection pages = publishingWeb.GetPublishingPages();
/// Check if the Page exists, null if not exists
PublishingPage page = pages.SingleOrDefault(p => p.Name == pageName);
if (page != null)
{
SPWebparts.WebPart wpProvider = null;
SPWebparts.WebPart wpConsumer = null;
/// Get SPFile because it's necessary for Publish and Approve(This one if
/// PagesList.EnableModeration is true)
SPFile aspx = web.GetFile(page.Url.ToString());
aspx.CheckOut();
SPLimitedWebPartManager webPartManager =
aspx.GetLimitedWebPartManager(PersonalizationScope.Shared);
SPLimitedWebPartCollection webparts =
webPartManager.WebParts;
wpProvider = (SPWebparts.WebPart)webPartManager.WebParts[webpart.ID];
wpConsumer = (SPWebparts.WebPart)webPartManager.WebParts[webpart.ID];
/// Creates the connection
if (wpProvider != null &&
wpConsumer != null)
{
ConsumerConnectionPointCollection consumerConnection
= webPartManager.GetConsumerConnectionPoints(wpConsumer);
ProviderConnectionPointCollection providerConnection
= webPartManager.GetProviderConnectionPoints(wpProvider);
SPWebPartConnection webPartConnection =
webPartManager.SPConnectWebParts(wpProvider,
providerConnection[0],
wpConsumer,
consumerConnection[0]);
webPartManager.SPWebPartConnections.Add(webPartConnection);
}
aspx.CheckIn(String.Empty);
aspx.Publish(String.Empty);
if (publishingWeb.PagesList.EnableModeration)
{
aspx.Approve(String.Empty);
}
}