private static void DeleteBlobs(IEnumerable <ContentReference> contentReferences, IContentRepository repo, StringBuilder sb,
                                        IBlobFactory blobFactory)
        {
            foreach (ContentReference reference in contentReferences)
            {
                ImageFile file = null;
                try
                {
                    file = repo.Get <ImageFile>(reference);
                }
                catch
                {
                }
                if (file != null)
                {
                    IContentVersionRepository    versionRepo = ServiceLocator.Current.GetInstance <IContentVersionRepository>();
                    IEnumerable <ContentVersion> versions    = versionRepo.List(file.ContentLink);
                    foreach (ContentVersion version in versions)
                    {
                        var versionOfFile = repo.Get <ImageFile>(version.ContentLink);
                        if (versionOfFile != null)
                        {
                            DeleteBlobInstances(sb, blobFactory, versionOfFile);
                        }
                    }

                    sb.AppendFormat("{0}<br>", file.Name);

                    // Delete old versions
                    DeleteOldVersions(file, sb);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Get all content version of current exported content in all languages.
        /// </summary>
        /// <param name="contentToExport"></param>
        /// <returns></returns>
        protected virtual IEnumerable <IContent> GetContentVersions(
            ContentReference contentToExport, RawContentInfo rawContentInfo, out ContentVersion latestPublishedMasterVersion)
        {
            var versionFilter = new VersionFilter
            {
                ContentLink    = contentToExport,
                Languages      = rawContentInfo.Languages.Select(x => CultureInfo.GetCultureInfo(x)),
                ExcludeDeleted = true
            };

            if (_transferExportOptionsEx.VersionStatuses != null)
            {
                versionFilter.Statuses = _transferExportOptionsEx.VersionStatuses;
            }

            int totalCount;
            var versions = _contentVersionRepository
                           .List(versionFilter, 0, int.MaxValue, out totalCount);

            latestPublishedMasterVersion = versions.FirstOrDefault(x =>
                                                                   x.Status == VersionStatus.Published &&
                                                                   x.LanguageBranch == rawContentInfo.MasterLanguage);

            versions = FilterVersions(versions);

            return(versions
                   .OrderBy(x => x.LanguageBranch == rawContentInfo.MasterLanguage ? 1 : 2)
                   .ThenBy(x => x.Saved)
                   .Select(x => GetContent(x))
                   .Where(x => x != null));
        }
예제 #3
0
        public ActionResult Index(HomePage currentPage)
        {
            /* Implementation of action. You can create your own view model class that you pass to the view or
             * you can pass the page type for simpler templates */

            var list = _contentRepository.GetChildren <NewsItemPage>(ContentReference.StartPage);

            var versions = _contentVersionRepository.List(list.Last().ContentLink);

            var links = _contentSoftLinkRepository.Load(ContentReference.StartPage, true);


            return(View(currentPage));
        }
        /// <summary>
        /// Returns content version by date
        /// </summary>
        /// <param name="contentLink">Version agnostic content id</param>
        /// <param name="date">Date of version</param>
        /// <returns>ContentReference to version available at <see cref="date"/></returns>
        public RestResultBase GetContentVersionByDate(ContentReference contentLink, DateTime date, string language)
        {
            if (ContentReference.IsNullOrEmpty(contentLink))
            {
                return(new RestStatusCodeResult(HttpStatusCode.Conflict));
            }

            if (string.IsNullOrWhiteSpace(language))
            {
                language = _languageResolver.GetPreferredCulture().Name;
            }

            var contentVersions = _contentVersionRepository.List(contentLink.ToReferenceWithoutVersion(), language).ToList();

            if (!contentVersions.Any())
            {
                return(Rest(null));
            }

            var version = contentVersions.Where(x => x.Saved < date).OrderByDescending(x => x.Saved).FirstOrDefault();

            if (version == null)
            {
                var oldestVersion = contentVersions.OrderBy(x => x.Saved).First();
                if (date <= oldestVersion.Saved)
                {
                    return(Rest(oldestVersion.ContentLink));
                }
                var newestVersion = contentVersions.OrderByDescending(x => x.Saved).First();
                if (date <= newestVersion.Saved)
                {
                    return(Rest(newestVersion.ContentLink));
                }
            }

            return(Rest(version?.ContentLink));
        }
        private static void DeleteOldVersions(ImageFile file, StringBuilder sb)
        {
            IContentVersionRepository    versionRepo = ServiceLocator.Current.GetInstance <IContentVersionRepository>();
            IEnumerable <ContentVersion> versions    = versionRepo.List(file.ContentLink);

            foreach (ContentVersion version in versions)
            {
                if (version.Status != VersionStatus.Published)
                {
                    sb.AppendFormat("Deleting version: {0}", version.ContentLink);

                    versionRepo.Delete(version.ContentLink);
                }
            }
        }
 public IList <UiTemplateVersion> GetAllVersions(ContentReference contentRef, string virtualPath)
 {
     return(_contentVersionRepo.List(contentRef)
            .OrderByDescending(x => x.Saved)
            .Take(5)
            .Select(x => new UiTemplateVersion()
     {
         VirtualPath = virtualPath,
         Reference = x.ContentLink,
         ChangedBy = x.SavedBy,
         ChangeDate = x.Saved,
         Status = x.Status,
         StatusText = _localization.GetString("/versionstatus/" + x.Status.ToString(), x.Status.ToString())
     }).ToList());
 }
        private void PublishItem(ContentReference contentLink)
        {
            //  get the latest published version, not the latest saved version.
            var versions      = ContentVersionRepository.List(contentLink).OrderByDescending(p => p.Saved);
            var latestVersion = versions.FirstOrDefault(p => p.Status == VersionStatus.CheckedOut);

            if (latestVersion != null)
            {
                var pageUnpublished = ContentLoader.Get <PageData>(latestVersion.ContentLink).CreateWritableClone();

                //var action = pageUnpublished.CheckPublishedStatus(PagePublishedStatus.Published)
                //    ? SaveAction.Publish
                //    : SaveAction.Save;

                var action = SaveAction.Publish;
                action = action | SaveAction.ForceCurrentVersion;

                ContentRepository.Save(pageUnpublished, action, AccessLevel.NoAccess);
            }
        }