public static int CreateZone(string name) { var zoneId = DbDataController.Instance().Zone.AddZone(name); SystemManager.PurgeZoneList(); return(zoneId); }
/// <summary> /// Create a simple data controller to create, update and delete entities. /// </summary> /// <param name="zoneId">Zone ID</param> /// <param name="appId">App ID</param> ///// <param name="userName">Name of user loged in</param> /// <param name="defaultLanguageCode">Default language of system</param> public SimpleDataController(int zoneId, int appId, string defaultLanguageCode) { //_zoneId = zoneId; _appId = appId; _defaultLanguageCode = defaultLanguageCode; _context = DbDataController.Instance(zoneId, appId); _appManager = new AppManager(zoneId, appId); }
/// <summary> /// Creates an app and then imports the xml /// </summary> /// <returns>AppId of the new imported app</returns> public bool ImportApp(int zoneId, XDocument doc, out int?appId) { // Increase script timeout to prevent timeouts //HttpContext.Current.Server.ScriptTimeout = 300; appId = new int?(); if (!IsCompatible(doc)) { ImportLog.Add(new Message("The import file is not compatible with the installed version of 2sxc.", Message.MessageTypes.Error)); return(false); } // Get root node "SexyContent" var xmlSource = doc.Element(XmlConstants.RootNode); var xApp = xmlSource?.Element(XmlConstants.Header)?.Element(XmlConstants.App); var appGuid = xApp?.Attribute(XmlConstants.Guid)?.Value; if (appGuid == null) { ImportLog.Add(new Message("Something is wrong in the xml structure, can't get an app-guid", Message.MessageTypes.Error)); return(false); } if (appGuid != XmlConstants.AppContentGuid) { // Build Guid (take existing, or create a new) if (String.IsNullOrEmpty(appGuid) || appGuid == new Guid().ToString()) { appGuid = Guid.NewGuid().ToString(); } // Adding app to EAV var eavDc = DbDataController.Instance(zoneId); var app = eavDc.App.AddApp(null, appGuid); eavDc.SqlDb.SaveChanges(); appId = app.AppId; } else { appId = AppId; } if (appId <= 0) { ImportLog.Add(new Message("App was not created. Please try again or make sure the package you are importing is correct.", Message.MessageTypes.Error)); return(false); } DataSource.GetCache(null).PurgeGlobalCache(); // must do this, to ensure that the app-id exists now return(ImportXml(zoneId, appId.Value, doc)); }
protected void Constructor(int zoneId, int appId, string appStaticName, bool appExport, string[] attrSetIds, string[] entityIds) { ZoneId = zoneId; AppPackage = new Efc11Loader(DbDataController.Instance(zoneId, appId).SqlDb).AppPackage(appId); Serializer = new XmlSerializer(); Serializer.Initialize(AppPackage); _appStaticName = appStaticName; _isAppExport = appExport; AttributeSetIDs = attrSetIds; EntityIDs = entityIds; }
/// <summary> /// Create a xml import. The data stream passed will be imported to memory, and checked /// for errors. If no error could be found, the data can be persisted to the repository. /// </summary> /// <param name="zoneId">ID of 2SexyContent zone</param> /// <param name="appId">ID of 2SexyContent application</param> /// <param name="contentTypeId">ID of 2SexyContent type</param> /// <param name="dataStream">Xml data stream to import</param> /// <param name="languages">Languages that can be imported (2SexyContent languages enabled)</param> /// <param name="documentLanguageFallback">Fallback document language</param> /// <param name="deleteSetting">How to handle entities already in the repository</param> /// <param name="resolveReferenceMode">How value references to files and pages are handled</param> public ToRefactorXmlImportVTable(int zoneId, int appId, int contentTypeId, Stream dataStream, IEnumerable <string> languages, string documentLanguageFallback, ImportDeleteUnmentionedItems deleteSetting, ImportResourceReferenceMode resolveReferenceMode) { ImportEntities = new List <Entity>(); ErrorLog = new ImportErrorLog(); _appId = appId; _zoneId = zoneId; DbContext = DbDataController.Instance(zoneId, appId); ContentType = DbContext.AttribSet.GetDbAttribSet(contentTypeId); if (ContentType == null) { ErrorLog.AppendError(ImportErrorCode.InvalidContentType); return; } AttributesOfType = DbContext.AttributesDefinition.GetAttributeDefinitions(contentTypeId).ToList(); ExistingEntities = DbContext.Entities.GetEntitiesByType(ContentType).ToList(); _languages = languages; if (_languages == null || !_languages.Any()) { _languages = new[] { string.Empty } } ; _documentLanguageFallback = documentLanguageFallback; _deleteSetting = deleteSetting; _resolveReferenceMode = resolveReferenceMode; Timer.Start(); try { if (!LoadStreamIntoDocumentElement(dataStream)) { return; } if (!RunDocumentValidityChecks()) { return; } ValidateAndImportToMemory(); } catch (Exception exception) { ErrorLog.AppendError(ImportErrorCode.Unknown, exception.ToString()); } Timer.Stop(); TimeForMemorySetup = Timer.ElapsedMilliseconds; }
/// <summary> /// Do the import /// </summary> public bool ImportXml(int zoneId, int appId, XDocument doc, bool leaveExistingValuesUntouched = true) { _eavContext = DbDataController.Instance(zoneId, appId); AppId = appId; ZoneId = zoneId; if (!IsCompatible(doc)) { ImportLog.Add(new Message("The import file is not compatible with the installed version of 2sxc.", Message.MessageTypes.Error)); return(false); } // Get root node "SexyContent" var xmlSource = doc.Element(XmlConstants.RootNode); if (xmlSource == null) { ImportLog.Add(new Message("Xml doesn't have expected root node: " + XmlConstants.RootNode, Message.MessageTypes.Error)); return(false); } PrepareFolderIdCorrectionListAndCreateMissingFolders(xmlSource); PrepareFileIdCorrectionList(xmlSource); #region Prepare dimensions (languages) based on header... var sourceDimensions = BuildSourceDimensionsList(xmlSource); var sourceDefaultLanguage = xmlSource.Element(XmlConstants.Header)?.Element(XmlConstants.Language)?.Attribute(XmlConstants.LangDefault)?.Value; if (sourceDimensions == null || sourceDefaultLanguage == null) { ImportLog.Add(new Message("Cant find source dimensions or source-default language.", Message.MessageTypes.Error)); return(false); } var sourceDefaultDimensionId = sourceDimensions.Any() ? sourceDimensions.FirstOrDefault(p => p.Matches(sourceDefaultLanguage))?.DimensionId : new int?(); _targetDimensions = new ZoneRuntime(zoneId).Languages(true); _xmlBuilder = new XmlToEntity(AppId, sourceDimensions, sourceDefaultDimensionId, _targetDimensions, DefaultLanguage); #endregion var atsNodes = xmlSource.Element(XmlConstants.AttributeSets)?.Elements(XmlConstants.AttributeSet); var entNodes = xmlSource.Elements(XmlConstants.Entities).Elements(XmlConstants.Entity); var importAttributeSets = GetImportAttributeSets(atsNodes); var importEntities = GetImportEntities(entNodes, Constants.NotMetadata); var import = new Import(ZoneId, AppId, leaveExistingValuesUntouched); import.ImportIntoDb(importAttributeSets, importEntities.Cast <Entity>()); SystemManager.Purge(ZoneId, AppId); ImportLog.AddRange(GetExportImportMessagesFromImportLog(import.Storage.Log)); if (xmlSource.Elements(XmlConstants.Templates).Any()) { ImportXmlTemplates(xmlSource); } return(true); }