public void DeployToSubscription(Data.Guid userGuid, Data.Guid siteGuid, Data.Guid packageGuid, IPackageStatusNotifier notifier) { maxSteps = DeployUserSiteSteps; if (!IsPackageValidForUser(userGuid, packageGuid)) throw new ArgumentException("The specified package is not valid for the currently logged in user and may not be applied."); Package package = GetPackage(packageGuid); DoNotify(notifier, "Reading Package From Archive"); //Deploy the package into the demo site IStorageClient client = StorageHelper.GetStorageClient(); byte[] zipped = client.Open(PackageContainer, PackageDirectory, package.Guid + PackageExtension); Compression.ZipHandler zip = new Compression.ZipHandler(zipped); byte[] serialized = zip.Decompress()[0].Data; SitePackage sitepackage = Serializer.ToObject<SitePackage>(serialized); Data.Guid guid = siteGuid; if (package.PackageType == PackageTypes.Site) { DoNotify(notifier, "Erasing existing site data"); SubscriptionManager.Erase(siteGuid); } DoNotify(notifier, "Deploying Package Themes To Site"); DeployThemes(sitepackage, guid, notifier); if (package.PackageType == PackageTypes.Site) { DoNotify(notifier, "Deploying Package Pages To Site"); DeployPages(sitepackage, guid, notifier); DoNotify(notifier, "Deploying Package Content Types To Site"); DeployContentTypes(sitepackage, guid); DoNotify(notifier, "Deploying Package Content To Site"); DeployContent(sitepackage, guid); } }
public void DeployDemoPackage(Data.Guid packageGuid, IPackageStatusNotifier notifier) { DoNotify(notifier, "Deploying Demo Package"); PackageDao dao = new PackageDao(); Package package = dao.FindByPackageGuid(packageGuid); if (package != null) { //Get the owner's subscription for this package CmsSubscription owner = SubscriptionManager.GetSubscription(package.OwnerSubscriptionId); DoNotify(notifier, "Creating Demo Account"); //Check if our demo account exists MembershipUserWrapper wrapper = MembershipUtil.FindByUsername(MembershipUtil.DemoAccountUsername); if (!wrapper.IsValid()) wrapper = MembershipUtil.CreateDemoAccount(); //Find a free subdomain name String subdomain = "demo-" + owner.Subdomain; Boolean isAvailable = SubscriptionManager.IsSubdomainAvailable(subdomain); int i = 1; while (!isAvailable) { i++; subdomain = "demo" + i.ToString() + "-" + owner.Subdomain; isAvailable = SubscriptionManager.IsSubdomainAvailable(subdomain); } //Create a new subscription for the demo account CmsSubscription subscription = new CmsSubscription(); subscription.Guid = package.Guid; subscription.Created = UtcDateTime.Now; subscription.Subdomain = subdomain; subscription.StagingDomain = subscription.Subdomain + GooeyConfigManager.DefaultCmsDomain; subscription.SubscriptionPlan = SubscriptionManager.GetSubscriptionPlan(SubscriptionPlans.Demo); subscription.PrimaryUser= wrapper.UserInfo; subscription.IsDemo = true; subscription.IsCampaignEnabled = true; subscription.Expires = DateTime.MaxValue; subscription.Culture = GooeyConfigManager.DefaultCulture; SubscriptionManager.Create(wrapper, subscription); DoNotify(notifier, "Reading Package From Archive"); //Deploy the package into the demo site IStorageClient client = StorageHelper.GetStorageClient(); byte [] zipped = client.Open(PackageContainer, PackageDirectory, package.Guid + PackageExtension); Compression.ZipHandler zip = new Compression.ZipHandler(zipped); byte [] serialized = zip.Decompress()[0].Data; SitePackage sitepackage = Serializer.ToObject<SitePackage>(serialized); Data.Guid guid = Data.Guid.New(subscription.Guid); DoNotify(notifier, "Deploying Package Themes To Site"); DeployThemes(sitepackage, guid, notifier); DoNotify(notifier, "Deploying Package Pages To Site"); DeployPages(sitepackage, guid, notifier); DoNotify(notifier, "Deploying Package Content Types To Site"); DeployContentTypes(sitepackage, guid); DoNotify(notifier, "Deploying Package Content To Site"); DeployContent(sitepackage, guid); } }