Esempio n. 1
0
        private void CreateRepository(Site site, CreateSiteOptions options)
        {
            var repositoryName = Get(site).Repository;

            //如果用户没有指定新的内容名称,直接使用站点原来使用的名称。(有可能是导入的情况)
            if (!string.IsNullOrEmpty(options.RepositoryName))
            {
                //如果有父站点,新的子站点的内容名称使用 指定的名称+"_"+子站点的名称
                if (site.Parent != null)
                {
                    repositoryName = options.RepositoryName + "_" + site.Name;
                }
                else
                {
                    repositoryName = options.RepositoryName;
                }
            }
            site.Repository = repositoryName;
            if (!string.IsNullOrEmpty(repositoryName))
            {
                var repository = new Repository(repositoryName).AsActual();
                if (repository == null)
                {
                    var repositoryFile = GetSiteRelatedFile(site, new[] { ContentDatabaseFileName, site.Repository });
                    if (!string.IsNullOrEmpty(repositoryFile) && File.Exists(repositoryFile))
                    {
                        using (FileStream fs = new FileStream(repositoryFile, FileMode.Open, FileAccess.Read))
                        {
                            _repositoryManager.Create(repositoryName, fs);
                        }
                        try
                        {
                            File.Delete(repositoryFile);
                        }
                        catch (Exception e)
                        {
                            Kooboo.HealthMonitoring.Log.LogException(e);
                        }
                        site.Repository = repositoryName;
                    }
                    else if (site.Parent != null && !string.IsNullOrEmpty(site.Repository))
                    {
                        site.Repository = Get(site.Parent).Repository;
                    }
                }
            }
            //Save the repository change.
            Save(site);
            foreach (var childSite in ChildSites(site))
            {
                CreateRepository(childSite, options);
            }
        }