<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Philippe Vialatte &#187; API</title>
	<atom:link href="https://blog.developpez.com/philippe/pcategory/sharepoint/api/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/philippe</link>
	<description></description>
	<lastBuildDate>Fri, 03 Jan 2014 15:12:09 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>[Sharepoint] Gérer les formules d&#8217;une liste</title>
		<link>https://blog.developpez.com/philippe/p7709/sharepoint/api/sharepoint_gerer_les_formules_d_une_list</link>
		<comments>https://blog.developpez.com/philippe/p7709/sharepoint/api/sharepoint_gerer_les_formules_d_une_list#comments</comments>
		<pubDate>Fri, 05 Jun 2009 07:17:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[API]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Que se passe-t&#8217;il quand, alors que 150 sites ont été déployés a partir d&#8217;un Template, on se rends compte qu&#8217;une formule ne fonctionne pas correctement ? (Ne pas répondre: t&#8217;avais qu&#8217;a utiliser des types de contenu, pour un ensemble de raisons, c&#8217;était exclus&#8230; ) Parce grosso modo, c&#8217;était mon petit truc rigolo de la semaine&#8230; Donc, comme d&#8217;habitude, je passe une petite heure dans la msdn, jusqu&#8217;a trouver *the* solution, dans les champs de la [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Que se passe-t&rsquo;il quand, alors que 150 sites ont été déployés a partir d&rsquo;un Template, on se rends compte qu&rsquo;une formule ne fonctionne pas correctement ?</p>
<p>(Ne pas répondre: t&rsquo;avais qu&rsquo;a utiliser des types de contenu, pour un ensemble de raisons, c&rsquo;était exclus&#8230; <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> )</p>
<p>Parce grosso modo, c&rsquo;était mon petit truc rigolo de la semaine&#8230;</p>
<p>Donc, comme d&rsquo;habitude, je passe une petite heure dans la msdn, jusqu&rsquo;a trouver *the* solution, dans les champs de la classe SPFieldCalculated.</p>
<p>Pour ceux qui seraient intéressés par ce genre de manip, cela se fait simplement comme cela :</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"><span>    </span><font color="#800000">SPList</font><font color="#000000"> </font><font color="#008080">list</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">web</font><font color="#000080">.</font><font color="#008080">Lists</font><font color="#000000">[</font><font color="#0000ff">&laquo;&nbsp;Liste1&Prime;</font><font color="#000000">];            <br />    </font><font color="#800000">SPFieldCalculated</font><font color="#000000"> </font><font color="#008080">calc</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">list</font><font color="#000080">.</font><font color="#008080">Fields</font><font color="#000000">[</font><font color="#0000ff">&laquo;&nbsp;Column3&Prime;</font><font color="#000000">] </font><font color="#000080">as</font><font color="#000000"> </font><font color="#800000">SPFieldCalculated</font><font color="#000000">;            <br />    </font><font color="#008080">calc</font><font color="#000080">.</font><font color="#008080">Formula</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#0000ff">&laquo;&nbsp;=IF(Column1=Column2, \&nbsp;&raquo;OK\&nbsp;&raquo;, \&nbsp;&raquo;Not OK\&nbsp;&raquo;)&nbsp;&raquo;</font><font color="#000000">;            <br />    </font><font color="#008080">calc</font><font color="#000080">.</font><font color="#008080">Update</font><font color="#000000">(); </font></font></font></div>
</p></div>
<p>Il faut convertir le champ en SPFieldCalculated, car Fields renvoie une collection de SPField, lesquels n&rsquo;ont pas la colonne Formula.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Créer des sites et des collections de sites avec l&#8217;API Sharepoint</title>
		<link>https://blog.developpez.com/philippe/p7621/net/creer_des_sites_et_des_collections_de_si</link>
		<comments>https://blog.developpez.com/philippe/p7621/net/creer_des_sites_et_des_collections_de_si#comments</comments>
		<pubDate>Tue, 19 May 2009 08:41:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[(Si une personne suit, oui, je suis en train de me taper un petit outil pour automatiser la création de mes sites&#8230;et ca commence a bien marcher) Dans mes aventures avec l&#8217;API, encore un gros arrachage de cheveux en vue Cela fait déjà quelques mois que j&#8217;ai un système a peu prés stable pour créer automatiquement des webs, leur appliquer un modèle, des customisations de listes et Co. Récemment, les exigences on t changes, il [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>(Si une personne suit, oui, je suis en train de me taper un petit outil pour automatiser la création de mes sites&#8230;et ca commence a bien marcher)</p>
<p>Dans mes aventures avec l&rsquo;API, encore un gros arrachage de cheveux en vue <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p><span id="more-111"></span></p>
<p>Cela fait déjà quelques mois que j&rsquo;ai un système a peu prés stable pour créer automatiquement des webs, leur appliquer un modèle, des customisations de listes et Co.</p>
<p>Récemment, les exigences on t changes, il faut maintenant créer des collections de sites.</p>
<p>Première réaction, ok, facile, il suffit de trouver la &laquo;&nbsp;bonne ligne de commande ©T&nbsp;&raquo;</p>
<p>&#8230;en fait, c&rsquo;est loin d&rsquo;être aussi simple.</p>
<p>Premièrement, la ou on doit simplement ajouter notre site a la liste des modèles de sites pour créer un modèle de site, pour les modèles de collection de site, il faut aussi ajouter le modèle aux modèles disponibles. Pour cela, ca se passe cote serveur, avec stsadm&#8230;</p>
<p>Il faut donc:</p>
<ol>
<li>Créer le modèle de site (dans les actions du site, sauver en tant que modèle) </li>
<li>Copier le modèle sur le serveur physique hébergeant l&rsquo;application web (admettons, sur c:\montemplate.stp) </li>
<li>Lancer un coup de stsadm      <br /><strong>stsadm -o addtemplate -filename &laquo;&nbsp;C:\montemplate.stp&nbsp;&raquo; -title &laquo;&nbsp;mon site projet&nbsp;&raquo; -description &laquo;&nbsp;mon modèle de site projet&nbsp;&raquo;</strong> </li>
<li>Vérifier que le modèle a bien été ajouté, avec stsadm      <br /><strong>stsadm -o enumtemplates</strong>       <br />-> <em>&laquo;&nbsp;mon site projet&nbsp;&raquo; &#8211; Language: 1033 &#8211; Site Template: _GLOBAL_#0 &#8211; Template Id: 1</em> </li>
</ol>
<p>(Note, pour revenir sur mes exemples avec la base de contenu, si le modèle est bien ajouté, ou le retrouvera aussi dans la base de Configuration, dans la table <strong>CustomTemplates </strong>)</p>
<p>Ok, maintenant, mon modèle est au bon endroit&#8230;ne reste qu&rsquo;a l&rsquo;exploiter &#8230;</p>
<p>Pour créer une nouvelle collection de sites, je vais simplement remonter au niveau de ma web application, récupérer la liste des Sites (Sites étant une collection de site, et pas des webs&#8230;), et ajouter un nouveau SPSite.</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#000080"><span>using</span><font color="#000000"> (</font><font color="#800000">SPSite</font><font color="#000000"> </font><font color="#008080">parentSite</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#000080">new</font><font color="#000000"> </font><font color="#800000">SPSite</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;http://monserveur&nbsp;&raquo;</font><font color="#000000">)) {            <br />    </font><font color="#800000">SPSiteCollection</font><font color="#000000"> </font><font color="#008080">allSites</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">parentSite</font><font color="#000080">.</font><font color="#008080">WebApplication</font><font color="#000080">.</font><font color="#008080">Sites</font><font color="#000000">;            </p>
<p>    </font><font color="#800000">SPSite</font><font color="#000000"> </font><font color="#008080">newSite</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">allSites</font><font color="#000080">.</font><font color="#008080">Add</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;sites/nouveau site&nbsp;&raquo;</font><font color="#000000">, </font><font color="#0000ff">&laquo;&nbsp;nom du site&nbsp;&raquo;</font><font color="#000000">,            <br />        </font><font color="#0000ff">&laquo;&nbsp;description du site&nbsp;&raquo;</font><font color="#000000">, </font><font color="#ff0000">1033</font><font color="#000000">, </font><font color="#008080">templateID</font><font color="#000000">, </font><font color="#0000ff">&laquo;&nbsp;MonDomaine\\MonUser&nbsp;&raquo;</font><font color="#000000">,            <br />        </font><font color="#0000ff">&laquo;&nbsp;mon nom a moi&nbsp;&raquo;</font><font color="#000000">, </font><font color="#0000ff">&laquo;&nbsp;philippe.vialatte@monserveuremail.com&nbsp;&raquo;</font><font color="#000000">);            <br />}</font></font></font> </div>
</p></div>
<p>&#8230;sauf que ce n&rsquo;est pas si simple&#8230;En effet, la ou, pour les SPWeb, on passe directement un template, comme ca :</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#000080"><span>using</span><font color="#000000"> (</font><font color="#800000">SPSite</font><font color="#000000"> </font><font color="#008080">parentSite</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#000080">new</font><font color="#000000"> </font><font color="#800000">SPSite</font><font color="#000000">(</font><font color="#008080">siteUrl</font><font color="#000000">)) {            </p>
<p>    </font><font color="#800000">SPWeb</font><font color="#000000"> </font><font color="#008080">parentWeb</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">parentSite</font><font color="#000080">.</font><font color="#008080">OpenWeb</font><font color="#000000">();            <br />    </font><font color="#800000">SPWebTemplateCollection</font><font color="#000000"> </font><font color="#008080">templates</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">parentSite</font><font color="#000080">.</font><font color="#008080">GetCustomWebTemplates</font><font color="#000000">(</font><font color="#008080">_localeU</font><font color="#000000">);            <br />    </font><font color="#800000">SPWebTemplate</font><font color="#000000"> </font><font color="#008080">siteTemplate</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">templates</font><font color="#000000">[</font><font color="#008080">siteTemplateName</font><font color="#000000">];  </p>
<p></font><font color="#000000">    </font><font color="#000080">return</font><font color="#000000"> </font><font color="#008080">parentWeb</font><font color="#000080">.</font><font color="#008080">Webs</font><font color="#000080">.</font><font color="#008080">Add</font><font color="#000000">(</font><font color="#008080">webName</font><font color="#000000">, </font><font color="#008080">webName</font><font color="#000000">, </font><font color="#0000ff">&laquo;&nbsp;&nbsp;&raquo;</font><font color="#000000">, </font><font color="#008080">_localeU</font><font color="#000000">, </font><font color="#008080">siteTemplate</font><font color="#000000">, </font><font color="#000080">false</font><font color="#000000">, </font><font color="#000080">false</font><font color="#000000">);            <br />}</font></font></font> </div>
</p></div>
<p>Pour les SPSite, il faut l&rsquo;ID interne du modèle, qui est généré directement par Sharepoint (je vous laisse imaginer le bonheur si il faut maintenir un ID genre _GLOBAL_#1)</p>
<p>Une solution, si on connait le nom du fichier STP, ou si on se base sur le titre du modèle, est de passer par la collection des modèles </p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><span><font color="#000080">string</font><font color="#000000"> </font><font color="#008080">templateID</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#000080">null</font><font color="#000000">;            </p>
<p></font><font color="#000080">foreach</font><font color="#000000"> (</font><font color="#800000">SPWebTemplate</font><font color="#000000"> </font><font color="#008080">template</font><font color="#000000"> </font><font color="#000080">in</font><font color="#000000"> </font><font color="#008080">parentSite</font><font color="#000080">.</font><font color="#008080">GetWebTemplates</font><font color="#000000">(</font><font color="#ff0000">1033</font><font color="#000000">)) {            <br />   </font><font color="#000080">if</font><font color="#000000"> (</font><font color="#008080">template</font><font color="#000080">.</font><font color="#008080">Title</font><font color="#000080">.</font><font color="#008080">ToLowerInvariant</font><font color="#000000">()</font><font color="#000080">.</font><font color="#008080">Equals</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;mon site projet&nbsp;&raquo;</font><font color="#000000">)) {            <br />      </font><font color="#008080">templateID</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">template</font><font color="#000080">.</font><font color="#008080">Name</font><font color="#000000">; // _GLOBAL_#0            <br />   }             <br />}</font></span></font> </div>
</p></div>
</p>
<p>Attention, il faut bien préciser le bon ID pour la locale, sinon, pas moyen de retrouver le modèle.</p>
<p>Si ca intéresse du monde, je rajouterais un projet un peu plus complet, pour montrer le procédé plus en détail <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Petites finesses de l&#8217;API Sharepoint</title>
		<link>https://blog.developpez.com/philippe/p7613/sharepoint/petites_finesses_de_l_api_sharepoint</link>
		<comments>https://blog.developpez.com/philippe/p7613/sharepoint/petites_finesses_de_l_api_sharepoint#comments</comments>
		<pubDate>Mon, 18 May 2009 09:10:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ca faisait un moment que je n&#8217;avais plus fait de développement avec Sharepoint, et en m&#8217;y remettant, j&#8217;avais oublie deux petites finesses, qui peuvent éventuellement provoquer l&#8217;apparition spontanée de cheveux blancs, alors&#8230;pour ne plus les oublier 1. BreakRoleInheritance et AllowUnsafeUpdates Lorsque l&#8217;on appelle BreakRoleInheritance, la référence au SPWeb courant est invalidée, ce qui provoque un reset de AllowUnsafeUpdates a false. Ce sera aussi le cas lorsque l&#8217;on changera le nom ou l&#8217;URL du site (après [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ca faisait un moment que je n&rsquo;avais plus fait de développement avec Sharepoint, et en m&rsquo;y remettant, j&rsquo;avais oublie deux petites finesses, qui peuvent éventuellement provoquer l&rsquo;apparition spontanée de cheveux blancs, alors&#8230;pour ne plus les oublier</p>
<p><strong><u>1. BreakRoleInheritance et AllowUnsafeUpdates</u></strong></p>
<p>Lorsque l&rsquo;on appelle <strong>BreakRoleInheritance</strong>, la référence au <strong>SPWeb</strong> courant est invalidée, ce qui provoque un reset de <strong>AllowUnsafeUpdates</strong> a false. Ce sera aussi le cas lorsque l&rsquo;on changera le nom ou l&rsquo;URL du site (après avoir appelé Update), ou lorsque l&rsquo;on appellera <strong>BreakInheritance</strong>(),<strong>ResetRoleInheritance</strong>(). Par conséquent, a chaque appel a <strong>BreakRoleInheritance</strong>, il faut penser a sauvegarder préalablement la valeur de dans un booléen, et le remettre a sa valeur d&rsquo;origine après.</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"><span> </span><font color="#000080">bool</font><font color="#000000"> </font><font color="#008080">updateRights</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">_web</font><font color="#000080">.</font><font color="#008080">AllowUnsafeUpdates</font><font color="#000000">;            <br /> </font><font color="#008080">_web</font><font color="#000080">.</font><font color="#008080">BreakRoleInheritance</font><font color="#000000">(</font><font color="#000080">false</font><font color="#000000">);            <br /> </font><font color="#008080">_web</font><font color="#000080">.</font><font color="#008080">AllowUnsafeUpdates</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">updateRights</font><font color="#000000">;</font></font></font> </div>
</p></div>
<p><strong><u>2. RunWithElevatedPrivileges et le site courant</u></strong></p>
<p><strong>RunWithElevatedPrivileges</strong> est super utile comme fonction lorsque l&rsquo;on doit exécuter une portion de code avec des privilèges admin. Le seul petit piège de cette fonction, qui va exécuter une portion de code comme si elle tournait avec l&rsquo;identifiant du pool d&rsquo;application, est que, si on essaye de manipuler une référence a un site, a un web ou a une liste récupérée depuis l&rsquo;extérieur de la zone de privilèges élevés, cette référence aura toujours les droits qu&rsquo;avaient l&rsquo;utilisateur <u><strong>AVANT</strong> <strong>RunWithElevatedPrivileges</strong></u>.</p>
<p>Donc, pour que cela fonctionne correctement, il faudra recharger les sites, web, listes et compagnie depuis l&rsquo;intérieur de la zone impersonnée&#8230;</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><span><font color="#800000">SPSecurity</font><font color="#000080">.</font><font color="#008080">RunWithElevatedPrivileges</font><font color="#000000">(</font><font color="#000080">delegate</font><font color="#000000"> {   <br /></font><font color="#000080">   using</font><font color="#000000"> (</font><font color="#800000">SPSite</font><font color="#000000"> </font><font color="#008080">site</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#000080">new</font><font color="#000000"> </font><font color="#800000">SPSite</font><font color="#000000">(</font><font color="#008080">siteUrl</font><font color="#000000">)) {            <br />      </font><font color="#000080">using</font><font color="#000000"> (</font><font color="#800000">SPWeb</font><font color="#000000"> </font><font color="#008080">tmpWeb</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">site</font><font color="#000080">.</font><font color="#008080">OpenWeb</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;/&nbsp;&raquo;</font><font color="#000000">)) {            <br />         </font><font color="#800000">SPList</font><font color="#000000"> </font><font color="#008080">MaListe</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">tmpWeb</font><font color="#000080">.</font><font color="#008080">Lists</font><font color="#000000">[</font><font color="#0000ff">&laquo;&nbsp;MaListe&nbsp;&raquo;</font><font color="#000000">]);            <br />      }             <br />   }             <br />});</font></span></font> </div>
</p></div>
<p>ou sinon, si on préfère :</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#800000"><span>Guid</span><font color="#000000"> </font><font color="#008080">currentWebId</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">web</font><font color="#000080">.</font><font color="#008080">ID</font><font color="#000000">;            <br /></font><font color="#800000">Guid</font><font color="#000000"> </font><font color="#008080">currentSiteId</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">web</font><font color="#000080">.</font><font color="#008080">Site</font><font color="#000080">.</font><font color="#008080">ID</font><font color="#000000">;            </p>
<p></font><font color="#800000">SPSecurity</font><font color="#000080">.</font><font color="#008080">RunWithElevatedPrivileges</font><font color="#000000">(</font><font color="#000080">delegate</font><font color="#000000"> {    <br /></font>   <font color="#000080">using</font><font color="#000000"> (</font><font color="#800000">SPSite</font><font color="#000000"> </font><font color="#008080">site</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#000080">new</font><font color="#000000"> </font><font color="#800000">SPSite</font><font color="#000000">(</font><font color="#008080">currentSiteId</font><font color="#000000">)) {            <br /></font>      <font color="#000080">using</font><font color="#000000"> (</font><font color="#800000">SPWeb</font><font color="#000000"> </font><font color="#008080">tmpWeb</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">site</font><font color="#000080">.</font><font color="#008080">OpenWeb</font><font color="#000000">(</font><font color="#008080">currentWebId</font><font color="#000000">)) {            <br /></font>         <font color="#800000">SPList</font><font color="#000000"> </font><font color="#008080">MaListe</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">tmpWeb</font><font color="#000080">.</font><font color="#008080">Lists</font><font color="#000000">[</font><font color="#0000ff">&laquo;&nbsp;MaListe&nbsp;&raquo;</font><font color="#000000">]);            <br />      }             <br />   }             <br />});</font></font></font> </div>
</p></div>
<p>Voila, avec un peu de chance, j&rsquo;y penserais tout de suite la prochaine fois (mais bien sur&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Sharepoint]Gérer les pièces jointes d&#8217;un SPListItem</title>
		<link>https://blog.developpez.com/philippe/p7565/sharepoint/sharepoint_gerer_les_pieces_jointes_d_un</link>
		<comments>https://blog.developpez.com/philippe/p7565/sharepoint/sharepoint_gerer_les_pieces_jointes_d_un#comments</comments>
		<pubDate>Mon, 04 May 2009 11:29:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Comme la question avait été posée sur le forum, une petite fonction pour gérer les pièces jointes a un Item. Avec Sharepoint, les objets de type SPListItem ont une propriété en lecture seule Attachments, qui retourne un objet de type SPAttachmentCollection public SPAttachmentCollection Attachments { get; } Ajouter ou supprimer une nouvelle pièce jointe se fait assez simplement, du moment que l&#8217;on a un tableau de byte, soit :     SPListItem item;     byte[] content;     string name;     [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Comme la question avait été posée sur le forum, une petite fonction pour gérer les pièces jointes a un Item.</p>
<p>Avec Sharepoint, les objets de type <strong>SPListItem</strong> ont une propriété en lecture seule <strong>Attachments</strong>, qui retourne un objet de type <strong>SPAttachmentCollection</strong></p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#000080"><span>public</span><font color="#000000"> </font><font color="#800000">SPAttachmentCollection</font><font color="#000000"> </font><font color="#008080">Attachments</font><font color="#000000"> { </font><font color="#000080">get</font><font color="#000000">; }</font></font></font> </div>
</p></div>
<p>Ajouter ou supprimer une nouvelle pièce jointe se fait assez simplement, du moment que l&rsquo;on a un tableau de byte, soit :</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"><span>    </span><font color="#800000">SPListItem</font><font color="#000000"> </font><font color="#008080">item</font><font color="#000000">;            <br />    </font><font color="#000080">byte</font><font color="#000000">[] </font><font color="#008080">content</font><font color="#000000">;            <br />    </font><font color="#000080">string</font><font color="#000000"> </font><font color="#008080">name</font><font color="#000000">;            </p>
<p>    </font><font color="#008080">item</font><font color="#000080">.</font><font color="#008080">Attachments</font><font color="#000080">.</font><font color="#008080">AddNow</font><font color="#000000">(</font><font color="#008080">name</font><font color="#000000">, </font><font color="#008080">content</font><font color="#000000">);            <br />    </font><font color="#808080">// utiliser AddNow permets de ne pas avoir à appeler item.Update();  <br /></font><font color="#000000">    </font><font color="#008080">item</font><font color="#000080">.</font><font color="#008080">Attachments</font><font color="#000080">.</font><font color="#008080">DeleteNow</font><font color="#000000">(</font><font color="#008080">name</font><font color="#000000">);            <br />    </font><font color="#808080">// utiliser DeleteNow permets de ne pas avoir à appeler item.Update(); </font></font></font></div>
</p></div>
<p>Attacher le contenu d&rsquo;un fichier venant du site Sharepoint se fait aussi assez simplement :</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#800000"><span>   SPFile</span><font color="#000000"> </font><font color="#008080">file</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">myWeb</font><font color="#000080">.</font><font color="#008080">Folders</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;monDossier&nbsp;&raquo;</font><font color="#000000">)</font><font color="#000080">.</font><font color="#008080">Files</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;Monfichier&nbsp;&raquo;</font><font color="#000000">);            <br /></font><font color="#000080">   string</font><font color="#000000"> </font><font color="#008080">fileName</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">file</font><font color="#000080">.</font><font color="#008080">Name</font><font color="#000000">;            <br /></font><font color="#000080">   byte</font><font color="#000000">[] </font><font color="#008080">fileContent</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">file</font><font color="#000080">.</font><font color="#008080">OpenBinary</font><font color="#000000">();</font></font></font> </div>
</p></div>
<p>La ou cela devient beaucoup plus rigolo, c&rsquo;est lorsque l&rsquo;on veut lister les attachments&#8230;</p>
<p>En effet, si on fais un foreach sur les attachements, on ne vas pas retourner des objets SPAttachment (par exemple), ni même <strong>SPFile</strong>, mais&#8230;le nom du fichier :-\</p>
<p>Apres un peu de recherche, ces items sont stockés dans un sous-répertoire de la liste, nommé Attachments, les fichiers étant exactement stockes dans un répertoire identifié par l&rsquo;ID de l&rsquo;item de la liste concerné. On peut donc y accéder ainsi :</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"><span>    </span><font color="#800000">SPFolder</font><font color="#000000"> </font><font color="#008080">folder</font><font color="#000000"> </font><font color="#000080">=</font><font color="#000000"> </font><font color="#008080">site</font><font color="#000080">.</font><font color="#008080">Folders</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;Lists&nbsp;&raquo;</font><font color="#000000">)</font><font color="#000080">.            <br /></font><font color="#000000">        </font><font color="#008080">SubFolders</font><font color="#000000">(</font><font color="#008080">listItem</font><font color="#000080">.</font><font color="#008080">ParentList</font><font color="#000080">.</font><font color="#008080">Title</font><font color="#000000">)</font><font color="#000080">.            <br /></font><font color="#000000">        </font><font color="#008080">SubFolders</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;Attachments&nbsp;&raquo;</font><font color="#000000">)</font><font color="#000080">.            <br /></font><font color="#000000">        </font><font color="#008080">SubFolders</font><font color="#000000">(</font><font color="#008080">listItem</font><font color="#000080">.</font><font color="#008080">ID</font><font color="#000080">.</font><font color="#008080">ToString</font><font color="#000000">());            </p>
<p>    </font><font color="#000080">foreach</font><font color="#000000"> (</font><font color="#800000">SPFile</font><font color="#000000"> </font><font color="#008080">file</font><font color="#000000"> </font><font color="#000080">in</font><font color="#000000"> </font><font color="#008080">folder</font><font color="#000080">.</font><font color="#008080">Files</font><font color="#000000">) {            <br />        </font><font color="#808080">// manipulations diverses et variées sur les fichiers            <br /></font><font color="#000000">    } </font></font></font></div>
</p></div>
<p>(NB. : Ca a l&rsquo;air trivial comme ca, mais à l&rsquo;époque, ca m&rsquo;a couté pas mal de cheveux <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> )</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Sharepoint] Enumérer les répertoires d&#8217;une liste documentaire</title>
		<link>https://blog.developpez.com/philippe/p7421/sharepoint/sharepoint_enumerer_les_repertoires_d_un</link>
		<comments>https://blog.developpez.com/philippe/p7421/sharepoint/sharepoint_enumerer_les_repertoires_d_un#comments</comments>
		<pubDate>Mon, 30 Mar 2009 09:22:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je me suis récemment un peu pris la tête sur un problème, en apparence simple, mais pour lequel l&#8217;API m&#8217;a enduit d&#8217;erreur. Mon problème  de base était simple, je voulais juste lister les répertoires d&#8217;une liste de documents (pour supprimer des droits, si vous voulez tout savoir ). Pour cela, je jettes un oeil a l&#8217;API, je vois un joli list.Folders&#8230;sauf que List.Folders renvoie une liste&#8230;d&#8217;items :-\. Après quelques essais, la bonne propriété est donc [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je me suis récemment un peu pris la tête sur un problème, en apparence simple, mais pour lequel l&rsquo;API m&rsquo;a enduit d&rsquo;erreur.</p>
<p>Mon problème  de base était simple, je voulais juste lister les répertoires d&rsquo;une liste de documents (pour supprimer des droits, si vous voulez tout savoir <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> ).</p>
<p>Pour cela, je jettes un oeil a l&rsquo;API, je vois un joli <strong>list.Folders</strong>&#8230;sauf que <strong>List.Folders</strong> renvoie une liste&#8230;d&rsquo;items :-\.</p>
<p>Après quelques essais, la bonne propriété est donc la propriété <strong>SubFolders</strong> du <strong>RootFolder</strong> de notre liste, pour un résultat final ressemblant a cela:</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#000080"><span>foreach</span><font color="#000000"> (</font><font color="#800000">SPList</font><font color="#000000"> </font><font color="#008080">list</font><font color="#000000"> </font><font color="#000080">in</font><font color="#000000"> </font><font color="#800000">SPContext</font><font color="#000080">.</font><font color="#008080">Current</font><font color="#000080">.</font><font color="#008080">Web</font><font color="#000080">.</font><font color="#008080">Lists</font><font color="#000000">) {            <br />    </font><font color="#000080">if</font><font color="#000000"> (</font><font color="#008080">list</font><font color="#000080">.</font><font color="#008080">BaseType</font><font color="#000000"> </font><font color="#000080">==</font><font color="#000000"> </font><font color="#800000">SPBaseType</font><font color="#000080">.</font><font color="#008080">DocumentLibrary</font><font color="#000000">) {            <br />        </font><font color="#000080">if</font><font color="#000000"> (</font><font color="#008080">list</font><font color="#000080">.</font><font color="#008080">Title</font><font color="#000000"> </font><font color="#000080">==</font><font color="#000000"> </font><font color="#008080">reportsLib</font><font color="#000000"> </font><font color="#000080">||</font><font color="#000000"> </font><font color="#008080">list</font><font color="#000080">.</font><font color="#008080">Title</font><font color="#000000"> </font><font color="#000080">==</font><font color="#000000"> </font><font color="#008080">importLib</font><font color="#000000">) {            <br />            </font><font color="#000080">foreach</font><font color="#000000"> (</font><font color="#800000">SPFolder</font><font color="#000000"> </font><font color="#008080">folder</font><font color="#000000"> </font><font color="#000080">in</font><font color="#000000"> </font><font color="#008080">list</font><font color="#000080">.</font><font color="#008080">RootFolder</font><font color="#000080">.</font><font color="#008080">SubFolders</font><font color="#000000">) {            <br />                </font><font color="#000080">try</font><font color="#000000"> {  <br />                    </font><font color="#008080">RemoveFolderPermissionsForGroup</font><font color="#000000">(</font><font color="#008080">siteAddress</font><font color="#000000">, </font><font color="#008080">folder</font><font color="#000000">, </font><font color="#008080">groupName</font><font color="#000000">);            <br />                } </font><font color="#000080">catch</font><font color="#000000"> (</font><font color="#800000">Exception</font><font color="#000000"> </font><font color="#008080">ex</font><font color="#000000">) {            <br />                    </font><font color="#800000">LogFactory</font><font color="#000080">.</font><font color="#008080">LogError</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;Could not remove &laquo;&nbsp;</font><font color="#000000"> </font><font color="#000080">+</font><font color="#000000"> </font><font color="#008080">groupName</font><font color="#000000"> </font><font color="#000080">+</font><font color="#000000"> </font><font color="#0000ff">&nbsp;&raquo; from folder&nbsp;&raquo;</font><font color="#000000">, </font><font color="#008080">ex</font><font color="#000000">);            <br />                }             <br />            }             <br />        }             <br />    }             <br />}</font></font></font> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Sharepoint] mise a jour des droits des utilisateurs sur n sites</title>
		<link>https://blog.developpez.com/philippe/p7212/net/sharepoint_mise_a_jour_des_droits_des_ut</link>
		<comments>https://blog.developpez.com/philippe/p7212/net/sharepoint_mise_a_jour_des_droits_des_ut#comments</comments>
		<pubDate>Wed, 11 Feb 2009 12:41:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Admin]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Mon petit problème de la semaine en SharePoint a été le suivant&#8230; A 9h du matin, le lundi, un ensemble d&#8217;utilisateurs a&#8230;change de groupe AD&#8230; Attention, leur groupe AD n&#8217;a pas été renommé, mais pour des raisons d&#8217;organisation, ces utilisateurs ont été bougés d&#8217;un groupe AD a l&#8217;autre. Or, ce groupe AD avait la responsabilité d&#8217;administrer n sites Sharepoint&#8230;joie Ma mission, que je n&#8217;avais pas d&#8217;autre choix que d&#8217;accepter, a donc été de supprimer le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Mon petit problème de la semaine en SharePoint a été le suivant&#8230;</p>
<p>A 9h du matin, le lundi, un ensemble d&rsquo;utilisateurs a&#8230;change de groupe AD&#8230;</p>
<p>Attention, leur groupe AD n&rsquo;a pas été renommé, mais pour des raisons d&rsquo;organisation, ces utilisateurs ont été bougés d&rsquo;un groupe AD a l&rsquo;autre. Or, ce groupe AD avait la responsabilité d&rsquo;administrer n sites Sharepoint&#8230;joie</p>
<p>Ma mission, que je n&rsquo;avais pas d&rsquo;autre choix que d&rsquo;accepter, a donc été de supprimer le groupe précédent du groupe défini comme owner des sites, et de le remplacer par un autre groupe&#8230;sur une cinquantaine de sites&#8230;</p>
<p><span id="more-38"></span></p>
<p>Ma matinée de Lundi a donc été consacrée a gribouiller ce petit script, si cela peut aider quelqu&rsquo;un, un jour <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>L&rsquo;idée est la suivante, dans un premier temps, on ouvre le Web correspondant au Site principal (et avec un using, SVP&#8230;), et on cherche le SPUser correspondant au groupe (que l&rsquo;on passe par ligne de commande, réusabilité oblige&#8230;)</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"><span style="background-color: #dcdcdc">  </span><font color="#000096">using</font><font color="#000000"> (</font><font color="#0080c0">SPWeb</font><font color="#000000"> </font><font color="#0080c0">parentWeb</font><font color="#000000"> </font><font color="#000096">=</font><font color="#000000"> </font><font color="#000096">new</font><font color="#000000"> </font><font color="#0080c0">SPSite</font><font color="#000000">(</font><font color="#0080c0">args</font><font color="#000000">[</font><font color="#ff0000">0</font><font color="#000000">])</font><font color="#000096">.</font><font color="#0080c0">OpenWeb</font><font color="#000000">()) {            </p>
<p>  </font><font color="#000000"></font><font color="#0080c0">SPUser</font><font color="#000000"> </font><font color="#0080c0">userToRemove</font><font color="#000000"> </font><font color="#000096">=</font><font color="#000000"> </font><font color="#0080c0">FindUserFromLogin</font><font color="#000000">(</font><font color="#0080c0">args</font><font color="#000000">[</font><font color="#ff0000">1</font><font color="#000000">], </font><font color="#0080c0">parentWeb</font><font color="#000000">);            <br />   </font><font color="#0080c0">SPUser</font><font color="#000000"> </font><font color="#0080c0">userToAdd</font><font color="#000000"> </font><font color="#000096">=</font><font color="#000000"> </font><font color="#0080c0">FindUserFromLogin</font><font color="#000000">(</font><font color="#0080c0">args</font><font color="#000000">[</font><font color="#ff0000">2</font><font color="#000000">], </font><font color="#0080c0">parentWeb</font><font color="#000000">);            <br /></font></font></font></div>
</p></div>
<p>Le FindUserFromLogin est une petite routine maison, pour retrouver un SPUser depuis un login&#8230;ca coute pas cher</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#000096"><span style="background-color: #dcdcdc">private</span><font color="#000000"> </font><font color="#000096">static</font><font color="#000000"> </font><font color="#0080c0">SPUser</font><font color="#000000"> </font><font color="#0080c0">FindUserFromLogin</font><font color="#000000">(</font><font color="#000096">string</font><font color="#000000"> </font><font color="#0080c0">userLogin</font><font color="#000000">, </font><font color="#0080c0">SPWeb</font><font color="#000000"> </font><font color="#0080c0">web</font><font color="#000000">) {            </p>
<p>   </font><font color="#000096">foreach</font><font color="#000000"> (</font><font color="#0080c0">SPUser</font><font color="#000000"> </font><font color="#0080c0">user</font><font color="#000000"> </font><font color="#000096">in</font><font color="#000000"> </font><font color="#0080c0">web</font><font color="#000096">.</font><font color="#0080c0">SiteUsers</font><font color="#000000">) {            </p>
<p>      </font><font color="#000096">if</font><font color="#000000"> (</font><font color="#0080c0">user</font><font color="#000096">.</font><font color="#0080c0">LoginName</font><font color="#000096">.</font><font color="#0080c0">Equals</font><font color="#000000">(</font><font color="#0080c0">userLogin</font><font color="#000000">, </font><font color="#800000">StringComparison</font><font color="#000096">.</font><font color="#0080c0">InvariantCultureIgnoreCase</font><font color="#000000">)) {            <br />         </font><font color="#000096">return</font><font color="#000000"> </font><font color="#0080c0">user</font><font color="#000000">;            <br />      }             <br />   }             <br /></font><font color="#000096">   return</font><font color="#000000"> </font><font color="#000096">null</font><font color="#000000">;            <br />}</font></font></font> </div>
</p></div>
<p>Et après, pour chaque web dans le site, on va chercher le groupe des propriétaires du site, que l&rsquo;on trouvera dans la propriété vti_associateownergroup</p>
</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#000096"><span style="background-color: #dcdcdc">foreach</span><font color="#000000"> (</font><font color="#0080c0">SPWeb</font><font color="#000000"> </font><font color="#0080c0">web</font><font color="#000000"> </font><font color="#000096">in</font><font color="#000000"> </font><font color="#0080c0">parentWeb</font><font color="#000096">.</font><font color="#0080c0">Webs</font><font color="#000000">) {            <br /></font><font color="#000000">           <br />    </font><font color="#000096">int</font><font color="#000000"> </font><font color="#0080c0">groupId</font><font color="#000000">;            </p>
<p>    </font><font color="#000096">if</font><font color="#000000"> (</font><font color="#000096">int.</font><font color="#0080c0">TryParse</font><font color="#000000">(</font><font color="#0080c0">web</font><font color="#000096">.</font><font color="#0080c0">Properties</font><font color="#000000">[</font><font color="#0000ff">&laquo;&nbsp;vti_associateownergroup&nbsp;&raquo;</font><font color="#000000">], </font><font color="#000096">out</font><font color="#000000"> </font><font color="#0080c0">groupId</font><font color="#000000">)) {            <br /></font></font></font> </div>
</p></div>
<p>On notera le TryParse (on sait jamais <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> )</p>
<p>Une fois qu&rsquo;on a le groupe, on regarde si l&rsquo;utilisateur à supprimer existe :</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#0080c0"><span style="background-color: #dcdcdc">SPUser</span><font color="#000000"> </font><font color="#0080c0">test</font><font color="#000000"> </font><font color="#000096">=</font><font color="#000000"> </font><font color="#000096">null</font><font color="#000000">;            </p>
<p></font><font color="#000096">try</font><font color="#000000"> {            <br />    </font><font color="#0080c0">test</font><font color="#000000"> </font><font color="#000096">=</font><font color="#000000"> </font><font color="#0080c0">group</font><font color="#000096">.</font><font color="#0080c0">Users</font><font color="#000096">.</font><font color="#0080c0">GetByID</font><font color="#000000">(</font><font color="#0080c0">userToRemove</font><font color="#000096">.</font><font color="#0080c0">ID</font><font color="#000000">);            <br />} </font><font color="#000096">catch</font><font color="#000000"> {            <br />    </font><font color="#800000">Console</font><font color="#000096">.</font><font color="#0080c0">WriteLine</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;user : &laquo;&nbsp;</font><font color="#000000"> </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0080c0">userToRemove</font><font color="#000096">.</font><font color="#0080c0">Name            <br /></font><font color="#000000">        </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0000ff">&nbsp;&raquo; was not found in web :&nbsp;&raquo;</font><font color="#000000"> </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0080c0">web</font><font color="#000096">.</font><font color="#0080c0">Name</font><font color="#000000">);            <br />}</font></font></font> </div>
</p></div>
</p>
<p>Berkk&#8230;pas trouvé de méthode plus propre, en dehors d&rsquo;itérer sur tous les utilisateurs, ce qui ne me plaisait pas non plus&#8230;</p>
<p>Et enfin, il n&rsquo;y a plus qu&rsquo;à ajouter le nouvel utilisateur, à enlever le vieux, et à mettre le groupe a jour.</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Consolas"><font size="2"></font><font color="#000096"><span style="background-color: #dcdcdc">if</span><font color="#000000"> (</font><font color="#0080c0">test</font><font color="#000000"> </font><font color="#000096">!=</font><font color="#000000"> </font><font color="#000096">null</font><font color="#000000">) {            </p>
<p>    </font><font color="#800000">Console</font><font color="#000096">.</font><font color="#0080c0">WriteLine</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;Adding user&nbsp;&raquo;</font><font color="#000000">);            <br />    </font><font color="#000096">if</font><font color="#000000"> (</font><font color="#0080c0">userToAdd</font><font color="#000000"> </font><font color="#000096">!=</font><font color="#000000"> </font><font color="#000096">null</font><font color="#000000">) {            <br />        </font><font color="#0080c0">group</font><font color="#000096">.</font><font color="#0080c0">AddUser</font><font color="#000000">(</font><font color="#0080c0">userToAdd</font><font color="#000000">);            <br />    } </font><font color="#000096">else</font><font color="#000000"> {            <br />        </font><font color="#0080c0">group</font><font color="#000096">.</font><font color="#0080c0">AddUser</font><font color="#000000">(</font><font color="#0080c0">args</font><font color="#000000">[</font><font color="#ff0000">2</font><font color="#000000">], </font><font color="#0000ff">&laquo;&nbsp;&nbsp;&raquo;</font><font color="#000000">, </font><font color="#0000ff">&laquo;&nbsp;&nbsp;&raquo;</font><font color="#000000">, </font><font color="#0000ff">&laquo;&nbsp;&nbsp;&raquo;</font><font color="#000000">);            <br />    }             </p>
<p>    </font><font color="#800000">Console</font><font color="#000096">.</font><font color="#0080c0">WriteLine</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;Removing user&nbsp;&raquo;</font><font color="#000000">);            <br />    </font><font color="#0080c0">group</font><font color="#000096">.</font><font color="#0080c0">RemoveUser</font><font color="#000000">(</font><font color="#0080c0">userToRemove</font><font color="#000000">);            <br />    </font><font color="#0080c0">group</font><font color="#000096">.</font><font color="#0080c0">Update</font><font color="#000000">();            <br />    </font><font color="#800000">Console</font><font color="#000096">.</font><font color="#0080c0">WriteLine</font><font color="#000000">(</font><font color="#0000ff">&laquo;&nbsp;user : &laquo;&nbsp;</font><font color="#000000"> </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0080c0">userToRemove</font><font color="#000096">.</font><font color="#0080c0">Name            <br /></font><font color="#000000">        </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0000ff">&nbsp;&raquo; was replaced by user : &laquo;&nbsp;</font><font color="#000000"> </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0080c0">userToAdd</font><font color="#000096">.</font><font color="#0080c0">Name</font><font color="#000000"> </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0000ff">&nbsp;&raquo;  in web :&nbsp;&raquo;</font><font color="#000000"> </font><font color="#000096">+</font><font color="#000000"> </font><font color="#0080c0">web</font><font color="#000096">.</font><font color="#0080c0">Name</font><font color="#000000">);            <br />}</font></font></font> </div>
</p></div>
<p>comme quoi, le bonheur, c&rsquo;est simple comme un coup d&rsquo;API <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Si il y&rsquo;avait une meilleure solution (oui, je sais, on aurait du avoir un groupe d&rsquo;administration décorrélé de l&rsquo;active directory&#8230;), n&rsquo;hésitez pas a m&rsquo;en faire part, j&rsquo;aime bien avoir tort, ca permets de progresser <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
