/// <summary>Retrieves various pieces of information related to SharePoint Central Administration and /// the SPSite-to-LearningStore mappings. </summary> /// <param name="adminWebService">The SharePoint Central Administrationt web service.</param> /// <returns>Set to the collection of <c>SlkSPSiteMapping</c> objects /// stored in SharePoint's configuration database.</returns> static SlkSPSiteMappingCollection GetMappingInfo(SPWebService adminWebService) { if (adminWebService == null) { adminWebService = SlkAdministration.GetAdminWebService(); } return(new SlkSPSiteMappingCollection(adminWebService)); }
/// <summary>Loads SLK configuration information from WSS and LearningStore, in a form that's /// suitable for copying to Configure.aspx form fields. </summary> /// /// <param name="spSiteGuid">The GUID of the SPSite to retrieve configuration information /// from.</param> /// /// <returns>An AdministrationConfiguration.</returns> /// /// <remarks> /// This method is static so it can used outside the context of IIS. Only SharePoint /// administrators can perform this function. /// </remarks> /// /// <exception cref="SafeToDisplayException"> /// An error occurred that can be displayed to a browser user. /// </exception> /// public static AdministrationConfiguration LoadConfiguration(Guid spSiteGuid) { AdministrationConfiguration configuration = new AdministrationConfiguration(spSiteGuid); // only SharePoint administrators can perform this action CheckPermissions(); // set <mapping> to the mapping between <spSiteGuid> and the LearningStore connection // information for that SPSite SlkSPSiteMapping mapping = SlkSPSiteMapping.GetMapping(spSiteGuid); // set "out" parameters based on <mappingExists> and <mapping> if (mapping != null) { // the mapping exists -- set "out" parameters based on <mapping> configuration.DatabaseServer = mapping.DatabaseServer; configuration.DatabaseName = mapping.DatabaseName; configuration.InstructorPermission = mapping.InstructorPermission; configuration.LearnerPermission = mapping.LearnerPermission; // The below given condition will be true only during the migration of SLK from // 'SLK without Observer role' to 'SLK with Observer role' implementation if (mapping.ObserverPermission == null) { mapping.ObserverPermission = LoadCulture(spSiteGuid).Resources.DefaultSlkObserverPermissionName; } configuration.ObserverPermission = mapping.ObserverPermission; } else { SlkCulture siteCulture = LoadCulture(spSiteGuid); AppResourcesLocal adminResources = SlkCulture.GetResources(); configuration.IsNewConfiguration = true; mapping = SlkSPSiteMapping.CreateMapping(spSiteGuid); // the mapping doesn't exist -- set "out" parameters to default values SPWebService adminWebService = SlkAdministration.GetAdminWebService(); configuration.DatabaseServer = adminWebService.DefaultDatabaseInstance.Server.Address; configuration.DatabaseName = adminResources.DefaultSlkDatabaseName; mapping.DatabaseServer = configuration.DatabaseServer; mapping.DatabaseName = configuration.DatabaseName; configuration.InstructorPermission = siteCulture.Resources.DefaultSlkInstructorPermissionName; configuration.LearnerPermission = siteCulture.Resources.DefaultSlkLearnerPermissionName; configuration.ObserverPermission = siteCulture.Resources.DefaultSlkObserverPermissionName; } // set "out" parameters that need to be computed bool createDatabaseResult = false; SlkUtilities.ImpersonateAppPool(delegate() { createDatabaseResult = !DatabaseExists(mapping.DatabaseServerConnectionString, mapping.DatabaseName); }); configuration.CreateDatabase = createDatabaseResult; return(configuration); }
int GetSiteConfiguration(Guid guid, out string output) { AdministrationConfiguration configuration = SlkAdministration.LoadConfiguration(guid); if (configuration.IsNewConfiguration) { output = FormatString(culture.Resources.StsInvalidGuid, guid); return((int)ErrorCodes.GeneralError); } else { output = FormatString(culture.Resources.StsGetSiteConfiguration, configuration.DatabaseServer, configuration.DatabaseName, configuration.InstructorPermission, configuration.LearnerPermission); return(0); } }
/// <summary>Creates a new mapping.</summary> /// <param name="spSiteGuid">The site the mapping is for.</param> public static SlkSPSiteMapping CreateMapping(Guid spSiteGuid) { string persistedObjectName = String.Format(CultureInfo.InvariantCulture, PersistedObjectNameFormat, spSiteGuid); return(new SlkSPSiteMapping(persistedObjectName, SlkAdministration.GetAdminWebService(), spSiteGuid)); }
int Configure(out string output) { // parse parameters bool forApplication = BooleanValue("application"); string url = Value("url"); string databaseServer = Value("databaseServer"); string databaseName = Value("databaseName"); bool createDatabase = BooleanValue("createDatabase"); string instructorPermission = Value("instructorPermission"); string learnerPermission = Value("learnerPermission"); string observerPermission = Value("observerPermission"); bool createPermissions = BooleanValue("createPermissions"); string settingsFileName = Value("settingsFileName"); if (string.IsNullOrEmpty(settingsFileName)) { settingsFileName = Value("uploadSlkSettings"); } bool defaultSlkSettings = BooleanValue("defaultSlkSettings"); if (string.IsNullOrEmpty(url)) { output = FormatString(culture.Resources.StsMissingParameter, "url"); return((int)ErrorCodes.SyntaxError); } // -- can't specify both -uploadslksettings and -defaultslksettings if (settingsFileName != null && defaultSlkSettings) { output = FormatString(culture.Resources.StsSettingsError, "settingsFileName", "defaultSlkSettings"); return((int)ErrorCodes.SyntaxError); } Guid id; string userName; // perform the operation if (forApplication) { SPWebApplication application = SPWebApplication.Lookup(new Uri(url)); id = application.Id; userName = application.ApplicationPool.Username; } else { using (SPSite site = new SPSite(url)) { id = site.ID; url = site.Url; userName = site.WebApplication.ApplicationPool.Username; } } AdministrationConfiguration configuration = SlkAdministration.LoadConfiguration(id); databaseServer = ValueIfMissing(databaseServer, configuration.DatabaseServer); databaseName = ValueIfMissing(databaseName, configuration.DatabaseName); instructorPermission = ValueIfMissing(instructorPermission, configuration.InstructorPermission); learnerPermission = ValueIfMissing(learnerPermission, configuration.LearnerPermission); observerPermission = ValueIfMissing(observerPermission, configuration.ObserverPermission); // load SlkSchema.sql if the parameters specify creating the database; // SlkSchema.sql is in the same directory as this .exe file string schemaFileContents = null; if (createDatabase) { schemaFileContents = culture.Resources.SlkSchemaSql; } // load the default SLK Settings file into <defaultSettingsFileContents> string defaultSettingsFileContents = culture.Resources.SlkSettingsFile; // load the SLK Settings file to upload into <settingsFileContents> if specified by the parameters. string settingsFileContents = null; if (settingsFileName != null) { settingsFileContents = System.IO.File.ReadAllText(settingsFileName); } else if (defaultSlkSettings) { settingsFileContents = defaultSettingsFileContents; } // Save the configuration SlkAdministration.SaveConfiguration(id, databaseServer, databaseName, schemaFileContents, instructorPermission, learnerPermission, observerPermission, createPermissions, settingsFileContents, defaultSettingsFileContents, userName); if (forApplication) { output = FormatString(culture.Resources.StsConfiguringSlkForApplication, url, id); } else { output = FormatString(culture.Resources.StsConfiguringSlkForSite, url, id); } return(0); }