Esempio n. 1
0
        internal static int GetAppIdFromGuidName(int zoneId, string appName, bool alsoCheckFolderName = false)
        {
            var baseCache = (BaseCache)DataSource.GetCache(Eav.Constants.DefaultZoneId, Eav.Constants.MetaDataAppId);
            // ReSharper disable once UnusedVariable
            var dummy = baseCache.CacheTimestamp;

            if (String.IsNullOrEmpty(appName))
            {
                return(0);
            }

            var appId = baseCache.ZoneApps[zoneId].Apps
                        .Where(p => p.Value == appName).Select(p => p.Key).FirstOrDefault();

            // optionally check folder names
            if (appId == 0 && alsoCheckFolderName)
            {
                var nameLower = appName.ToLower();
                foreach (var p in baseCache.ZoneApps[zoneId].Apps)
                {
                    var mds         = DataSource.GetMetaDataSource(zoneId, p.Key);
                    var appMetaData = mds
                                      .GetMetadata(SystemRuntime.MetadataType(Eav.Constants.AppAssignmentName), p.Key,
                                                   AppConstants.TypeAppConfig)
                                      .FirstOrDefault();
                    var folder = appMetaData?.GetBestValue("Folder").ToString();
                    if (!String.IsNullOrEmpty(folder) && folder.ToLower() == nameLower)
                    {
                        return(p.Key);
                    }
                }
            }
            return(appId > 0 ? appId : Settings.DataIsMissingInDb);
        }
Esempio n. 2
0
        internal static int GetAppIdFromGuidName(int zoneId, string appName, bool alsoCheckFolderName = false)
        {
            // ToDo: Fix issue in EAV (cache is only ensured when a CacheItem-Property is accessed like LastRefresh)
            var baseCache = ((BaseCache)DataSource.GetCache(Constants.DefaultZoneId, Constants.MetaDataAppId));
            // ReSharper disable once UnusedVariable
            var dummy = baseCache.CacheLastRefresh;

            if (IsNullOrEmpty(appName))
            {
                return(0);
            }

            var appId = baseCache.ZoneApps[zoneId].Apps
                        .Where(p => p.Value == appName).Select(p => p.Key).FirstOrDefault();

            // optionally check folder names
            if (appId == 0 && alsoCheckFolderName)
            {
                var nameLower = appName.ToLower();
                foreach (var p in baseCache.ZoneApps[zoneId].Apps)
                {
                    var mds         = DataSource.GetMetaDataSource(zoneId, p.Key);
                    var appMetaData = mds
                                      .GetMetadata(SystemRuntime.MetadataType(Constants.AppAssignmentName), p.Key,
                                                   AppConstants.AttributeSetStaticNameApps)
                                      .FirstOrDefault();
                    string folder = appMetaData?.GetBestValue("Folder").ToString();
                    if (!IsNullOrEmpty(folder) && folder.ToLower() == nameLower)
                    {
                        return(p.Key);
                    }
                }
            }
            return(appId > 0 ? appId : Settings.DataIsMissingInDb);
        }
Esempio n. 3
0
        /// <summary>
        /// Assign all kinds of metadata / resources / settings (App-Mode only)
        /// </summary>
        private void InitializeResourcesSettingsAndMetadata(bool allowSideEffects)
        {
            Log.Add($"init app resources allowSE:{allowSideEffects}");
            _env = new Environment.DnnEnvironment(Log);

            if (allowSideEffects)
            {
                // if it's a real App (not content/default), do more
                AppManagement.EnsureAppIsConfigured(ZoneId, AppId, parentLog: Log); // make sure additional settings etc. exist
            }
            // Get app-describing entity
            var appAssignmentId = SystemRuntime.MetadataType(Eav.Constants.AppAssignmentName);
            var mds             = DataSource.GetMetaDataSource(ZoneId, AppId);
            var appMetaData     = mds
                                  .GetMetadata(appAssignmentId, AppId,
                                               SexyContent.Settings.AttributeSetStaticNameApps)
                                  .FirstOrDefault();
            var appResources = mds
                               .GetMetadata(appAssignmentId, AppId,
                                            SexyContent.Settings.AttributeSetStaticNameAppResources)
                               .FirstOrDefault();
            var appSettings = mds
                              .GetMetadata(appAssignmentId, AppId,
                                           SexyContent.Settings.AttributeSetStaticNameAppSettings)
                              .FirstOrDefault();

            dynamic appMetaDataDynamic = appMetaData != null
                ? new DynamicEntity(appMetaData, new[] { Thread.CurrentThread.CurrentCulture.Name }, null)
                : null;

            Name          = appMetaDataDynamic?.DisplayName ?? "Error";
            Folder        = appMetaDataDynamic?.Folder ?? "Error";
            Configuration = appMetaDataDynamic;
            Resources     = appResources != null
                ? new DynamicEntity(appResources, new[] { Thread.CurrentThread.CurrentCulture.Name }, null)
                : null;
            Settings = appResources != null
                ? new DynamicEntity(appSettings, new[] { Thread.CurrentThread.CurrentCulture.Name }, null)
                : null;
            Hidden = appMetaDataDynamic?.Hidden ?? false;
        }
Esempio n. 4
0
        /// <summary>
        /// Create app-describing entity for configuration and add Settings and Resources Content Type
        /// </summary>
        internal static void EnsureAppIsConfigured(int zoneId, int appId, Log parentLog, string appName = null)
        {
            var appAssignment = SystemRuntime.MetadataType(Constants.AppAssignmentName);
            var scope         = Settings.AttributeSetScopeApps;
            var mds           = DataSource.GetMetaDataSource(zoneId, appId);
            var appMetaData   = mds.GetMetadata(appAssignment, appId, Settings.AttributeSetStaticNameApps).FirstOrDefault();
            var appResources  = mds.GetMetadata(appAssignment, appId, Settings.AttributeSetStaticNameAppResources).FirstOrDefault();
            var appSettings   = mds.GetMetadata(appAssignment, appId, Settings.AttributeSetStaticNameAppSettings).FirstOrDefault();

            // Get appName from cache - stop if it's a "Default" app
            var eavAppName = new ZoneRuntime(zoneId, parentLog).GetName(appId);// State.GetAppName(zoneId, appId);

            if (eavAppName == Eav.Constants.DefaultAppName)
            {
                return;
            }

            var appMan = new AppManager(zoneId, appId);

            if (appMetaData == null)
            {
                appMan.MetadataEnsureTypeAndSingleEntity(scope,
                                                         Settings.AttributeSetStaticNameApps,
                                                         "App Metadata",
                                                         appAssignment,
                                                         new Dictionary <string, object>()
                {
                    { "DisplayName", IsNullOrEmpty(appName) ? eavAppName : appName },
                    { "Folder", IsNullOrEmpty(appName) ? eavAppName : RemoveIllegalCharsFromPath(appName) },
                    { "AllowTokenTemplates", "False" },
                    { "AllowRazorTemplates", "False" },
                    { "Version", "00.00.01" },
                    { "OriginalId", "" }
                });
            }


            // Add new (empty) ContentType for Settings
            if (appSettings == null)
            {
                appMan.MetadataEnsureTypeAndSingleEntity(scope,
                                                         Settings.AttributeSetStaticNameAppSettings,
                                                         "Stores settings for an app",
                                                         appAssignment,
                                                         null);
            }

            // add new (empty) ContentType for Resources
            if (appResources == null)
            {
                appMan.MetadataEnsureTypeAndSingleEntity(scope,
                                                         Settings.AttributeSetStaticNameAppResources,
                                                         "Stores resources like translations for an app",
                                                         appAssignment,
                                                         null);
            }

            if (appMetaData == null || appSettings == null || appResources == null)
            {
                SystemManager.Purge(zoneId, appId);
            }
        }