none
[MOSS2007] Lister les billets des blogs créés sur les MySite RRS feed

  • Question

  •  

    Bonjour à tous,

    J'espère que le titre est assez parlant.

    Ca m'avait pas l'air bien compliqué, mais c'est plus ardu qu'il n'y parait. Surtout que je n'arrive à trouver de documentation réellement complète traitant sur le sujet.

    Voici un peu mon bout code à l'heure actuelle, celui la même qu'il faudrait que je complète :

     

    DataTable listResults = null;
    using (SPSite site = web.Site)
    {

    ServerContext cont = ServerContext.GetContext(site);
    UserProfileManager prof = new UserProfileManager(cont);

                       

    foreach (UserProfile profUser in prof)

    {

    if (profUser.PersonalSite.Url != null || profUser.PersonalSite.Url != "http://")
    {
        //...                   

    }

    }

    }

     

    Donc en gros pour le moment j'arrive bien à scanner l'ensemble des users ayant un site personnel (un bon début)

     

    Je cherche donc une manière "élégante" pour ensuite pouvoir ouvrir le blog perso de chaque user (si ces derniers existent).

     

    J'ai bien essayé de concaténer PersonalSite.Url avec "/Blog" mais bien évidemment, si le blog n'existe pas ça m'ouvre le PersonalSite.Url sans me poser de question. 

    Autre problème, le nom de la liste varie suivant la langue : Lists/Posts en anglais, Lists/Billets en français, etc. , mais pour le moment je vais partir sur du Français.

     

    Merci d'avance.

    Alexis

    vendredi 5 décembre 2008 11:26

Réponses

  • Bonjour,

    voici un extrait de code qui devrait vous permettre d'y arriver facilement.

    il vous permet de récupérer tous les blogs créer par un utilisateur sur son "My Site".

     

    Code Snippet

    private static List<SPWeb> GetBlogsOnMySite(string account) {

      List<SPWeb> blogs = new List<SPWeb>();

      using (SPSite siteColl = new SPSite(http://ws2008dc01)) {

        UserProfileManager profileMan = new UserProfileManager(ServerContext.GetContext(siteColl));

        if (profileMan.UserExists(account)) {

          UserProfile user = profileMan.GetUserProfile(account);

          using (SPSite mySite = user.PersonalSite) {

            if (mySite != null) {

              foreach (SPWeb web in mySite.AllWebs) {

                if (web.WebTemplate == SPWebTemplate.WebTemplateBLOG) blogs.Add(web);

              }

            }

          }

        }

      }

      return blogs;

    }

     

     

    le second extrait vous montre comment utiliser la methode ci-dessous, et récupérer les billets, et ceci quelle que soit la langue de votre serveur.

     

    Code Snippet

    string account = @"demo-coforcert0\administrator";

    foreach (var v in GetBlogsOnMySite(account)) {

      Console.WriteLine("*** Bienvenue sur le blog de {0} ***", account);

      foreach (SPList posts in v.Lists) {

        if (posts.BaseTemplate == SPListTemplateType.Posts) {

          foreach (SPListItem post in posts.Items) {

            Console.WriteLine(post[SPBuiltInFieldId.Body].ToString());

          }

        }

      }

    }

     

     

    Enjoy !

    vendredi 5 décembre 2008 14:28