Monday, November 7, 2011

Create MySite On Server

bool CreateMySiteOnServer(string serverUrl)
{
bool returnValue = false;
Logger.LogVerbose("CreateMySiteOnServer for URL:" + serverUrl);

try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPSite lowPrivilegeSite = new SPSite(serverUrl);
SPSite site = new SPSite(serverUrl, lowPrivilegeSite.UserToken);
lowPrivilegeSite.Dispose();
using (site)
{
Logger.LogVerbose("Using Site:" + site.Url);

bool allowUnsafeUpdates = site.AllowUnsafeUpdates;
bool contextAllowUnsafeUpdates = SPContext.Current.Web.AllowUnsafeUpdates;
UserProfile profile;
try
{
site.AllowUnsafeUpdates = true;
SPContext.Current.Web.AllowUnsafeUpdates = true;
SPServiceContext serviceContext = SPServiceContext.GetContext(site);
UserProfileManager profileManager = new UserProfileManager(serviceContext);
if (false == profileManager.UserExists(GetCurrentUser()))
{
Logger.LogVerbose("Creating User Profile.");
profile = profileManager.CreateUserProfile(GetCurrentUser());
}
else
{
Logger.LogVerbose("Getting User Profile.");
profile = profileManager.GetUserProfile(GetCurrentUser());
}
// Create Personal Site
Logger.LogVerbose("Creating Personal Site.");
profile.CreatePersonalSite();
// If success, we set return value - failure to CreatePersonalSite will throw an exception
returnValue = true;
}
catch (Exception ex)
{
Logger.LogException("CreateMySite.CreatePersonalSite (inner try)", ex);
}

site.AllowUnsafeUpdates = allowUnsafeUpdates;
SPContext.Current.Web.AllowUnsafeUpdates = contextAllowUnsafeUpdates;
}
}
);
}

catch (Exception ex)
{
Logger.LogException("CreateMySite.CreatePersonalSite (outer try) ", ex);
}

return returnValue;
}

Thursday, November 3, 2011

Get Taxonomy Term by ID

static bool GetTermById(Guid idToMatch, TaxonomySession spTaxonomySession, ref Term result)
{

foreach (TermStore ts in spTaxonomySession.TermStores)
{
if (0 == ts.Id.CompareTo(idToMatch))
{
Console.WriteLine(" - matched TermStore: '" + ts.Name + "'");
return false;
}

foreach (Group group in ts.Groups)
{
if (0 == group.Id.CompareTo(idToMatch))
{
Console.WriteLine(" - matched Group: '" + group.Name + "'");
return false;
}
foreach (TermSet set in group.TermSets)
{
if (0 == set.Id.CompareTo(idToMatch))
{
Console.WriteLine(" - matched TermSet: '" + set.Name + "'");
return false;
}
foreach (Term term in set.Terms)
{
if (0 == idToMatch.CompareTo(term.Id))
{
result = term;
return true;
}
}
}
}
}
Console.WriteLine("FAILED - NOT FOUND");
return false;
}