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); }
// 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)); }