Example #1
0
            private static PluginInstance ActiveAndAdd(PackageMetadata metadata, Type type)
            {
                if (metadata == null || type == null)
                {
                    return(null);
                }

                if (StringUtils.EqualsIgnoreCase(metadata.Id, "SS.Home"))
                {
                    return(null);
                }

                var s = Stopwatch.StartNew();

                //var plugin = (IPlugin)Activator.CreateInstance(type);

                var plugin = (PluginBase)Activator.CreateInstance(type);

                plugin.Initialize(metadata);

                var service = new ServiceImpl(metadata);

                plugin.Startup(service);

                PluginContentTableManager.SyncContentTable(service);
                PluginDatabaseTableManager.SyncTable(service);

                return(new PluginInstance(metadata, service, plugin, s.ElapsedMilliseconds));
            }
        public static List <ServiceImpl> GetContentPlugins(ChannelInfo channelInfo, bool includeContentTable)
        {
            var list      = new List <ServiceImpl>();
            var pluginIds = TranslateUtils.StringCollectionToStringList(channelInfo.ContentRelatedPluginIds);

            if (!string.IsNullOrEmpty(channelInfo.ContentModelPluginId))
            {
                pluginIds.Add(channelInfo.ContentModelPluginId);
            }

            foreach (var service in PluginManager.Services)
            {
                if (!pluginIds.Contains(service.PluginId))
                {
                    continue;
                }

                if (!includeContentTable && PluginContentTableManager.IsContentTable(service))
                {
                    continue;
                }

                list.Add(service);
            }

            return(list);
        }
        public static List <IMetadata> GetAllContentRelatedPlugins(bool includeContentTable)
        {
            var list = new List <IMetadata>();

            foreach (var service in PluginManager.Services)
            {
                var isContentModel = PluginContentTableManager.IsContentTable(service);

                if (!includeContentTable && isContentModel)
                {
                    continue;
                }

                if (isContentModel)
                {
                    list.Add(service.Metadata);
                }
                else if (service.ContentMenuFuncs != null)
                {
                    list.Add(service.Metadata);
                }
                else if (service.ContentColumns != null && service.ContentColumns.Count > 0)
                {
                    list.Add(service.Metadata);
                }
            }

            return(list);
        }
        public static List <IMetadata> GetContentModelPlugins()
        {
            var list = new List <IMetadata>();

            foreach (var service in PluginManager.Services)
            {
                if (PluginContentTableManager.IsContentTable(service))
                {
                    list.Add(service.Metadata);
                }
            }

            return(list);
        }
        public static List <string> GetContentTableNameList()
        {
            var list = new List <string>();

            foreach (var service in PluginManager.Services)
            {
                if (PluginContentTableManager.IsContentTable(service))
                {
                    if (!StringUtils.ContainsIgnoreCase(list, service.ContentTableName))
                    {
                        list.Add(service.ContentTableName);
                    }
                }
            }

            return(list);
        }
Example #6
0
            // TODO: 增加SINGLETON约束
            private static PluginInfo ActiveAndAdd(PackageMetadata metadata, Type type)
            {
                if (metadata == null || type == null)
                {
                    return(null);
                }

                var s = Stopwatch.StartNew();

                //var plugin = (IPlugin)Activator.CreateInstance(type);

                var plugin = (PluginBase)Activator.CreateInstance(type);

                plugin.Initialize(metadata, Environment, new PluginApiCollection
                {
                    AdminApi   = new AdminApi(metadata),
                    ConfigApi  = new ConfigApi(metadata),
                    ContentApi = ContentApi.Instance,
                    DataApi    = DataProvider.DataApi,
                    FilesApi   = FilesApi.Instance,
                    ChannelApi = ChannelApi.Instance,
                    ParseApi   = ParseApi.Instance,
                    PluginApi  = new PluginApi(metadata),
                    SiteApi    = SiteApi.Instance,
                    UserApi    = UserApi.Instance
                });

                var service = new PluginService(metadata);

                plugin.Startup(service);

                PluginContentTableManager.SyncContentTable(service);
                PluginDatabaseTableManager.SyncTable(service);

                return(new PluginInfo(metadata, service, plugin, s.ElapsedMilliseconds));
            }