/// <summary>
        /// Retrieve the <see cref="T:Tridion.ContentManager.IdentifiableObject" /> published information
        /// </summary>
        /// <param name="identifiableObject"><see cref="T:Tridion.ContentManager.IdentifiableObject" /></param>
        /// <returns><see cref="T:Tridion.ContentManager.Publishing.PublishInfo" /></returns>
        public static IEnumerable <PublishInfo> PublishInfo(this IdentifiableObject identifiableObject)
        {
            if (identifiableObject != null)
            {
                return(PublishEngine.GetPublishInfo(identifiableObject));
            }

            return(new PublishInfo[] { });
        }
        private static DateTime?GetPublishedDate(Page page, TargetType targetType)
        {
            PublishInfo publishInfo = PublishEngine.GetPublishInfo(page).FirstOrDefault(pi => pi.TargetType == targetType);

            if (publishInfo == null)
            {
                return(null);
            }
            return(publishInfo.PublishedAt);
        }
        private static string GetPublishedDate(Page page, PublicationTarget target)
        {
            ICollection <PublishInfo> publishInfos = PublishEngine.GetPublishInfo(page);

            foreach (PublishInfo publishInfo in publishInfos)
            {
                if (publishInfo.PublicationTarget == target)
                {
                    return(publishInfo.PublishedAt.GetIso8601Date());
                }
            }
            return("");
        }
        /// <summary>
        /// Retrieve the <see cref="T:Tridion.ContentManager.IdentifiableObject" /> published information
        /// </summary>
        /// <param name="identifiableObject"><see cref="T:Tridion.ContentManager.IdentifiableObject" /></param>
        /// <param name="publicationTarget">Publication target <see cref="T:Tridion.ContentManager.CommunicationManagement.PublicationTarget"/> to filter on.</param>
        /// <returns>
        ///   <see cref="T:Tridion.ContentManager.Publishing.PublishInfo" />
        /// </returns>
        public static IEnumerable <PublishInfo> PublishInfo(this IdentifiableObject identifiableObject, PublicationTarget publicationTarget)
        {
            if (identifiableObject != null && publicationTarget != null)
            {
                ICollection <PublishInfo> publishInfos = PublishEngine.GetPublishInfo(identifiableObject);

                if (publishInfos != null && publishInfos.Count > 0)
                {
                    return(publishInfos.Where(x => x.PublicationTarget.Id == publicationTarget.Id));
                }
            }

            return(new PublishInfo[] { });
        }