Hi everybody
I have a case that I need to add "I like it" tag programmatically but for another user (not the logged in one).
impersonation seems not working!
private void SetILikeIt(string userLoginName) { Uri myUri = new Uri("http://epm10:2011/Pages/test.aspx"); HttpContext tempCtx = HttpContext.Current; SPUser usr = SPContext.Current.Web.AllUsers[userLoginName]; HttpContext.Current = null; using (SPSite site = new SPSite("http://epm10:2011", usr.UserToken)) { using (SPWeb spWeb = site.OpenWeb()) { GetServiceContext(); //SPServiceContext context = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default); //SocialTagManager stm = new SocialTagManager(context); //Retrieve the taxonomy session from the SocialTagManager. //Term myTerm = new Term(); stm.TaxonomySession.DefaultKeywordsTermStore.KeywordsTermSet.Terms["I like it"]; TaxonomySession txs = stm.TaxonomySession; TermStore ts = txs.DefaultKeywordsTermStore; //Term term = null; TermCollection terms = ts.KeywordsTermSet.GetTerms("I like it", ts.DefaultLanguage, true); Term t = null; if (terms.Count == 0) { t = ts.KeywordsTermSet.CreateTerm("I like it",ts.DefaultLanguage); ts.CommitAll(); } else t = terms[0]; // SPSecurity.RunWithElevatedPrivileges(delegate() { t.Owner = usr.LoginName; }); stm.AddTag(myUri, t, myUri.AbsoluteUri); } } HttpContext.Current = tempCtx; }
it still adding the tag for the current logged in user?