<?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>Are you agile ? &#187; elgg</title>
	<atom:link href="http://www.areyouagile.com/tag/elgg/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.areyouagile.com</link>
	<description>Nudge, Nudge, wink wink, n&#039;en dites pas plus</description>
	<lastBuildDate>Sun, 29 Jan 2012 10:46:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Elgg, REST API</title>
		<link>http://www.areyouagile.com/2009/10/elgg-rest-api/</link>
		<comments>http://www.areyouagile.com/2009/10/elgg-rest-api/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:57:05 +0000</pubDate>
		<dc:creator>pablo</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[technologies]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.areyouagile.com/?p=212</guid>
		<description><![CDATA[Petit retour sur Elgg. A l&#8217;occasion d&#8217;une petite (mini) mission je me suis penché sur l&#8217;API REST. L&#8217;objectif étant de brancher Elgg et son moteur (engine/lib) en utilisant son API REST à un service WS Soap tiers pour l&#8217;alimenter. En quelques mots : brouillon mais prometteur. Pour rentrer plus précisément sur le sujet je devais [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 4px;" title="Elgg Rest Api" src="http://www.areyouagile.com/media/image/elgg_logo.jpg" alt="" width="119" height="98" /></p>
<p>Petit retour sur Elgg. A l&#8217;occasion d&#8217;une petite (mini) mission je me suis penché sur l&#8217;API REST. L&#8217;objectif étant de brancher Elgg et son moteur (engine/lib) en utilisant son <a title="Elgg Rest Api" href="http://docs.elgg.org/wiki/API" target="_blank">API REST</a> à un service WS Soap tiers pour l&#8217;alimenter. En quelques mots : brouillon mais prometteur.</p>
<p>Pour rentrer plus précisément sur le sujet je devais générer des groupes dynamiquement en puisant les infos dans un WebService SOAP externe. Ce que mon proto met en avant : il est tout à fait possible d&#8217;&#8221;exposer&#8221; (selon la terminologie elgg) toutes les fonctions liées aux entités de Elgg. C&#8217;est à dire que l&#8217;on rend accessible via une API REST les fonctionnalités des briques de Elgg. Pour cela il faut créer un plugin (du moins je m&#8217;y suis pris ainsi). Créer un plugin c&#8217;est deux coups de cuillère à pot :  un fichier manifest.xml qui dit qui/licence/version, un fichier start.php qui permet de générer ses fonctions et surtout de les enregister au sein du fonctionnement de Elgg. Je n&#8217;ai pas creusé l&#8217;aspect MVC du produit mais après si je regarde les autres plugins tout semble couler assez de source : dossier view, dossier action, etc. Le fait de manipuler les librairies Elgg depuis son infrastructure rend tout plus simple : on accède à toutes les librairies tous les objets/entités, toutes les fonctions. Y&#8217;a plus qu&#8217;à.</p>
<p>Il ressort cependant que l&#8217;API n&#8217;est pas très propre au niveau du codage et que pas mal de petits bugs sont présents.J&#8217;adore à ce sujet le passage du wiki :</p>
<blockquote><p><strong>Note: Elgg&#8217;s REST API has many bugs so developers need to beware that development with it will take longer than expected as you run up against these bugs</strong></p></blockquote>
<p>Par exemple dans mon code, j&#8217;ai eu besoin de faire un accès direct  à  la base de données (ce qui n&#8217;est pas vraiment conseillé&#8230;) l&#8217;API de l&#8217;entité &#8220;group&#8221; ne fonctionnant pas pour l&#8217;attribut <a title="Owner Guid bug " href="http://community.elgg.org/mod/groups/topicposts.php?topic=41488&amp;group_guid=23300" target="_blank">owner_guid</a>.  Enfin j&#8217;ai aussi par exemple supprimé des validations de paramètres dans  l&#8217;API REST qui fonctionnaient de manières incohérentes. Enfin si il semble dans la documentation que les questions  de sécurité soient bien prises en charge, j&#8217;ai eu la surprise de noter  que suite à mon installation on pouvait déclencher la fonctionnalité  sans aucune restriction via un url / méthode GET (alors que j&#8217;avais préparé un  script mettant en place des headers/entêtes http spécifiques pour  palier à cette question d&#8217;authentification). Alors soit c&#8217;est un leurre (la sécurité de l&#8217;API). Soit j&#8217;ai raté un épisode et j&#8217;ai pas compris ou activé la sécurisation de l&#8217;API (la bonne hypothèse probablement). A fouiller donc.</p>
<p>Ces divers désagréments ne sont cependant pas bloquants. Elgg et son &#8220;engine&#8221; et API REST sont très prometteurs. Le code va aller en  s&#8217;améliorant, il est déjà correct. Les questions de sécurité peuvent être traitées à un autre niveau : sécurisation des urls REST via Apache par exemple.</p>
<p>Pour tout cela il s&#8217;agit de développement php/mysql relativement classique, donc efficace et productif. Il faut cependant mettre un bémol sur cette productivité en raison de la jeunesse de la plate-forme Elgg et des anomalies qu&#8217;on y trouve toujours encore régulièrement.</p>
<p>quelques urls intéressants :<br />
des exemples de codes et infos concernant l&#8217;API :<br />
<a href="http://trac.elgg.org/elgg/browser/trunk/mod/apitest/start.php?rev=430" target="_blank">http://trac.elgg.org/elgg/browser/trunk/mod/apitest/start.php?rev=430</a><br />
<a href="http://www.danielansari.com/wordpress/2008/12/how-to-use-the-rest-api-in-elgg-11/" target="_blank">http://www.danielansari.com/wordpress/2008/12/how-to-use-the-rest-api-in-elgg-11/</a></p>
<p>Quelques bouts de code :</p>
<p><a title="elgg plugin dev" href="http://docs.elgg.org/wiki/Plugin_development" target="_blank">le plugin</a> :fichier start.php</p>
<pre>&lt;?php</pre>
<pre>function haras_init()
 {
 /** j'expose ma fonction  au travers de l'api REST */
 expose_function(
 'group.create', //method
 'createGroup', //function
 array (
  "user_guid" =&gt; array('type'=&gt;'string'),
 "montrucnumber" =&gt; array('type'=&gt;'string')
   ), // parameters
 elgg_echo('group.create'),  // description
 "GET", // call_method
 false, // auth token
 true // anonymous   &lt;-- sûrement cette ligne mes questions sur l'authentification <img src='http://www.areyouagile.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <img src='http://www.areyouagile.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
  );
  }</pre>
<pre>function getMontruc($montruc)
 {</pre>
<pre>  /** je récupère l'objet vers le service SOAP tiers */</pre>
<pre>}</pre>
<pre>function createGroup($user_guid, $numtruc)
 {</pre>
<pre>[...]

 $montruc = getMontruc($numtruc)</pre>
<pre>/** je crée dynamiquement un groupe */</pre>
<pre> $group = new ElggGroup();

 $user = get_entity((int)$user_guid);

 $group-&gt;name = $montruc-&gt;name;
 $group-&gt;description = $description;
 $group-&gt;access_id = 2;
 $group-&gt;membership = ACCESS_PUBLIC;
 $group-&gt;files_enable = get_input('files_enable', 'yes');
 $group-&gt;pages_enable = get_input('pages_enable', 'yes');
 $group-&gt;forum_enable = get_input('forum_enable', 'yes');

 $group-&gt;save();

 $group-&gt;join($user); // toujours créer un utilisateur après la création du groupe

 /** l'API ne fonctionne pas je dois manipuler
 // sale mais nécessaire, api bugguée
 $dblink = get_db_link('write');
 $query = "update elggentities set owner_guid =" . $user_guid . " where guid=" . $group-&gt;guid;
 $result = execute_query("$query", $dblink); 

 return 'group ' . $group-&gt;name . ' ' . $group-&gt;owner_guid . ' created';  // ouh là là le proto
 }</pre>
<pre>/** très important, on enregistre le service/handler auprès de Elgg */
 register_elgg_event_handler('init','system','haras_init');</pre>
<pre>?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.areyouagile.com/2009/10/elgg-rest-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elgg, plate-forme opensource de réseaux sociaux</title>
		<link>http://www.areyouagile.com/2009/09/elgg-plate-forme-opensource-de-reseaux-sociaux/</link>
		<comments>http://www.areyouagile.com/2009/09/elgg-plate-forme-opensource-de-reseaux-sociaux/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 07:48:36 +0000</pubDate>
		<dc:creator>pablo</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technologies]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[réseau social]]></category>
		<category><![CDATA[social network]]></category>

		<guid isPermaLink="false">http://www.areyouagile.com/?p=175</guid>
		<description><![CDATA[Depuis 2 ou 3 jours je test sous l&#8217;impulsion de Yves (a qui je laisse la paternité de la sentence suivant : &#8220;On ne fait d&#8217;elgg sans casser des oeufs&#8221;) Elgg, la plate-forme opensource de réseaux sociaux. Inutile d&#8217;expliquer pourquoi les réseaux sociaux sont en plein boum, mais c&#8217;est le cas. Du coup, grande force [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 4px;" title="Elgg" src="http://www.areyouagile.com/media/image/elgg_logo.gif" alt="" width="121" height="72" /> Depuis 2 ou 3 jours je test sous l&#8217;impulsion de <a href="http://www.viadeo.com/recherche/profil/?memberId=0021mbw2bo3j4pmw" target="_blank">Yves</a> (a qui je laisse la paternité de la sentence suivant : &#8220;On ne fait d&#8217;elgg sans casser des oeufs&#8221;) <a href="http://www.elgg.org" target="_blank">Elgg</a>, la plate-forme opensource de réseaux sociaux. Inutile d&#8217;expliquer pourquoi les réseaux sociaux sont en plein boum, mais c&#8217;est le cas. Du coup, grande force de la communauté opensource, qui peut en irriter certains sur le plan idéologique, elle a décidé (la communauté) de sortir sa propre plate-forme (la meilleure R&amp;D étant de lorgner chez le voisin). Elgg donc.</p>
<p>Basé sur PHP, a première vue le code parait surprenant, on ne voit pas immédiatement dans l&#8217;arborescence projet où se trouve quoi, et à quoi sert tel ou tel dossier. Tout ce qui se conçoit clairement se déploie clairement, et cette première impression reste mitigée. Je vous en dirais plus lorsque j&#8217;aurai vraiment essayé de toucher au code. Je suppose que cela est du au modèle de données : apparemment il a été prévu un modèle très malléable : j&#8217;introduis un nouveau type d&#8217;élément (une entité), je lui donne telle ou telle propriété avec telle ou telle valeur. Du coup demain si j&#8217;ai un élément de type nouveau, pas de problème, pas de modification de la structure des tables, ça roule. Bon, pour l&#8217;instant mon analyse est très superficielle donc sujette à caution. Je compte creuser et vous informer. Je ne sais pas si ce modèle n&#8217;a pas un impact sur les performances aussi, que je trouve un chouïa poussives (ils ont cependant prévu l&#8217;utilisation de <a href="http://www.danga.com/memcached/" target="_blank">memcached</a> ou autre pour optimiser celles-ci). Idem pour le design, et le système de templates, je n&#8217;ai rien vu de concret jusqu&#8217;à présent. Enfin, un dernier petit point : l&#8217;installation se fait cahin-caha : il faut nécessairement activer le <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html" target="_blank">mod_rewrite</a> de Apache. J&#8217;aurais préféré avoir le choix d&#8217;utiliser le rewrite ou non, cela pourrait faciliter le debug.</p>
<p>Bref il me faut creuser, car c&#8217;est malgré tout très prometteur (ah j&#8217;oubliais aussi de signaler  une API REST qui permet à l&#8217;accès à toutes les fonctions de l&#8217;outil, même si un warning indique qu&#8217;elle peut encore secouer un peu).</p>
<p>J&#8217;ai pu assez (très) rapidement monter une plate-forme, activer tout un tas de plugins à la facebook, twitter, pages, blog, albums photos, fichiers, etc. C&#8217;est du PHP/MySQL/Apache, donc cela reste simple (dans le bon sens du terme), efficace et productif. Aujourd&#8217;hui avec l&#8217;évolution des pratiques des internautes, et plus globalement des gens (voir des <em>mobilonautes</em> ou des <em>iphonautes</em>)  il parait évident que c&#8217;est le genre d&#8217;outil à déployer : communauté d&#8217;utilisateurs d&#8217;un logiciel, d&#8217;un produit, événementiel : par exemple un festival de musique, ou la convention des maraichers, ou l&#8217;université d&#8217;été du xxx (mettez le parti qui vous embauche)  : 3 mois avant la plate-forme est disponible, on chat, on blog avec les intervenants, avec les organisateurs, etc. durant l&#8217;événement c&#8217;est un vecteur en temps réel de l&#8217;actualité,<em> a posteriori</em>, c&#8217;est un outil de rétrospective (fichiers liés, blogs,images, etc.).</p>
<p>Bref, pas mal de projets assez excitants autour en perspective, j&#8217;espère du moins. Si vous souhaitez tester un peu la plate-forme vous pouvez aller chez <a href="http://www.elgg.org" target="_blank">Elgg.org</a> ou me demander de vous créer un compte pour <a href="http://elgg.areyouagile.com" target="_blank">elgg.areyouagile.com</a> (en me contactant pablo point pernot arboase gmail point com). C&#8217;est la plate-forme de test dont je vous parlais. Attention actuellement vu de l&#8217;extérieur elle paraît très creuse car nous avons ajouté un pluggin (walledgarden) qui interdit l&#8217;accès du public aux infos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.areyouagile.com/2009/09/elgg-plate-forme-opensource-de-reseaux-sociaux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

