{"id":3045,"date":"2018-05-20T23:58:12","date_gmt":"2018-05-20T21:58:12","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=3045"},"modified":"2018-05-21T00:42:16","modified_gmt":"2018-05-20T22:42:16","slug":"definition-des-groupes-2","status":"publish","type":"post","link":"https:\/\/blog.nebule.org\/?p=3045","title":{"rendered":"D\u00e9finition des groupes"},"content":{"rendered":"<p style=\"text-align: justify;\">La gestion des groupes est enti\u00e8rement revue et corrig\u00e9e dans la <a title=\"librairie\" href=\"http:\/\/blog.nebule.org\/?page_id=2478\" target=\"_blank\">biblioth\u00e8que<\/a> <a title=\"nebule\" href=\"www.nebule.org\" target=\"_blank\">nebule<\/a> en <a title=\"PHP\" href=\"www.php.net\" target=\"_blank\">PHP<\/a> orient\u00e9 objet et dans les <a title=\"Applications\" href=\"http:\/\/blog.nebule.org\/?page_id=2460\" target=\"_blank\">applications<\/a> (<a title=\"sylabe\" href=\"www.sylabe.org\" target=\"_blank\">sylabe<\/a>, <a title=\"klicty\" href=\"http:\/\/www.klicty.org\" target=\"_blank\">klicty<\/a>, <a title=\"messae\" href=\"www.messae.org\" target=\"_blank\">messae<\/a>).<br \/>\n<span style=\"color: #ff0000;\">Une fois les applications mises \u00e0 jour, les groupes existants dispara\u00eetront.<\/span><\/p>\n<p style=\"text-align: justify;\">Cet article invalide la d\u00e9finition de groupe telle que d\u00e9finit dans l&rsquo;article <a title=\"D\u00e9finition des groupes\" href=\"http:\/\/blog.nebule.org\/?p=2063\" target=\"_blank\">D\u00e9finition des groupes<\/a> du 14\/01\/2016.<\/p>\n<p style=\"text-align: justify;\">Cette impl\u00e9mentation des groupes sera aussi utilis\u00e9e pour les conversations contenant des messages.<\/p>\n<h2>OG \/ Groupe<\/h2>\n<p style=\"text-align: justify;\">Le groupe est un objet d\u00e9finit comme tel, c&rsquo;est \u00e0 dire qu&rsquo;il doit avoir un type mime <code>nebule\/objet\/groupe<\/code>.<\/p>\n<p style=\"text-align: justify;\">Fondamentalement, le groupe est un ensemble de plusieurs objets. C&rsquo;est \u00e0 dire, c&rsquo;est le regroupement d&rsquo;au moins deux objets. Le lien peut donc \u00e0 ce titre \u00eatre vu comme la mat\u00e9rialisation d&rsquo;un groupe. Mais la d\u00e9finition du groupe doit \u00eatre plus restrictive afin que celui-ci soit utilisable. Pour cela, dans <em>nebule<\/em>, le groupe n&rsquo;est reconnu comme tel uniquement si il est marqu\u00e9 de son type mime. Il est cependant possible d&rsquo;instancier explicitement un objet comme groupe et de l&rsquo;utiliser comme tel en cas de besoin.<\/p>\n<p style=\"text-align: justify;\">Le groupe va permettre de regrouper, et donc d&rsquo;associer et de retrouver, des objets. L&rsquo;objet du groupe va avoir des liens vers d&rsquo;autres objets afin de les d\u00e9finir comme membres du groupe.<\/p>\n<p style=\"text-align: justify;\">Un groupe peut avoir des liens de membres vers des objets d\u00e9finis aussi comme groupes. Ces objets peuvent \u00eatre vus comme des sous-groupes. La biblioth\u00e8que <em>nebule<\/em> ne prend en compte qu&rsquo;un seul niveau de groupe, c&rsquo;est \u00e0 dire que les sous-groupes sont g\u00e9r\u00e9s simplement comme des objets.<\/p>\n<p style=\"text-align: justify;\"><!--more--><\/p>\n<h2 style=\"text-align: justify;\">OGO \/ Objet<\/h2>\n<p style=\"text-align: justify;\">L&rsquo;objet du groupe peut \u00eatre de deux natures.<\/p>\n<p style=\"text-align: justify;\">Soit c&rsquo;est un objet existant qui est en plus d\u00e9finit comme un groupe. L&rsquo;objet peut avoir un contenu et a s\u00fcrement d&rsquo;autres types mime propres. Dans ce cas l&rsquo;identifiant de groupe est l&rsquo;identifiant de l&rsquo;objet utilis\u00e9.<\/p>\n<p style=\"text-align: justify;\">Soit c&rsquo;est un objet dit virtuel qui n&rsquo;a pas et n&rsquo;aura jamais de contenu. Cela n&#8217;emp\u00eache pas qu&rsquo;il puisse avoir d&rsquo;autres types mime. Dans ce cas l&rsquo;identifiant de groupe a une forme commune aux objets virtuels.<\/p>\n<p style=\"text-align: justify;\">La cr\u00e9ation d&rsquo;un objet virtuel comme groupe se fait en cr\u00e9ant pour identifiant la concat\u00e9nation d&rsquo;un hash (<em>sha256<\/em>) d&rsquo;une valeur al\u00e9atoire de 128bits et de la cha\u00eene <code>006e6562756c652f6f626a65742f67726f757065<\/code>. Soit un identifiant complet de la taille de 102 caract\u00e8res.<\/p>\n<h2 style=\"text-align: justify;\">OGN \/ Nommage<\/h2>\n<p style=\"text-align: justify;\">Le nommage \u00e0 l&rsquo;affichage du nom des groupes repose sur une seule propri\u00e9t\u00e9 :<\/p>\n<ol>\n<li>nom<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Cette propri\u00e9t\u00e9 est mat\u00e9rialis\u00e9e par un lien de type <code>l<\/code> avec comme objets m\u00e9ta :<\/p>\n<ol>\n<li><code>nebule\/objet\/nom<\/code><\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Par convention, voici le nommage des groupes :<\/p>\n<ul>\n<li><code>nom<\/code><\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\">OGP \/ Protection<\/h2>\n<p style=\"text-align: justify;\">En tant que tel le groupe ne n\u00e9cessite pas de protection puisque soit l&rsquo;objet du groupe n&rsquo;a pas de contenu soit on n&rsquo;utilise pas son contenu directement.<\/p>\n<p style=\"text-align: justify;\">La gestion de la protection est d\u00e9sactiv\u00e9e dans une instance de groupe.<\/p>\n<h2 style=\"text-align: justify;\">OGD \/ Dissimulation<\/h2>\n<p style=\"text-align: justify;\">Le groupe peut en tant que tel \u00eatre dissimul\u00e9, c&rsquo;est \u00e0 dire que l&rsquo;on dissimule l&rsquo;existence du groupe, donc sa cr\u00e9ation.<\/p>\n<p style=\"text-align: justify;\">La dissimulation devrait se faire lors de la cr\u00e9ation du groupe.<\/p>\n<p style=\"text-align: justify;\">L&rsquo;annulation de la dissimulation d&rsquo;un groupe revient \u00e0 r\u00e9v\u00e9ler le lien de cr\u00e9ation du groupe.<\/p>\n<p style=\"text-align: justify;\">La dissimulation peut se (re)faire apr\u00e8s la cr\u00e9ation du groupe mais son efficacit\u00e9 est incertaine si les liens de cr\u00e9ation ont d\u00e9j\u00e0 \u00e9t\u00e9 diffus\u00e9s. En cas de dissimulation \u00e0 posteriori, il faut g\u00e9n\u00e9rer un lien de suppression du groupe puis g\u00e9n\u00e9rer un nouveau lien dissimul\u00e9 de cr\u00e9ation du groupe \u00e0 une date post\u00e9rieure au lien de suppression.<\/p>\n<h2 style=\"text-align: justify;\">OGF \/ Fermeture<\/h2>\n<p style=\"text-align: justify;\">Le groupe va contenir un certain nombre de membres ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter le nombre des membres \u00e0 utiliser dans un groupe en restreignant artificiellement les entit\u00e9s contributrices du groupe. Ainsi on marque le groupe comme ferm\u00e9 et on filtre sur les membres uniquement ajout\u00e9s par des entit\u00e9s d\u00e9finies.<\/p>\n<p style=\"text-align: justify;\">Dans nebule, l&rsquo;objet\u00c2\u00a0r\u00e9serv\u00e9 <code>nebule\/objet\/groupe\/ferme<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des groupes ferm\u00e9s. Un groupe est consid\u00e9r\u00e9 ferm\u00e9 quand on a l&rsquo;objet\u00c2\u00a0r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID du groupe en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 prendre aussi en compte ses liens dans le groupe ferm\u00e9. Dans ce cas c&rsquo;est une entit\u00e9 contributrice.<\/p>\n<p style=\"text-align: justify;\">C&rsquo;est uniquement un affichage du groupe que l&rsquo;on a et non la suppression de membres du groupe.<\/p>\n<p style=\"text-align: justify;\">Lorsque l&rsquo;on a marqu\u00e9 un groupe comme ferm\u00e9, on doit explicitement ajouter des entit\u00e9s que l&rsquo;on veut voir contribuer.<\/p>\n<p style=\"text-align: justify;\">Il est possible ind\u00e9finiment de fermer et ouvrir un groupe.<\/p>\n<p style=\"text-align: justify;\">Il est possible de fermer un groupe qui ne nous appartient afin par exemple de le rendre plus lisible.<\/p>\n<p style=\"text-align: justify;\">Lorsque l&rsquo;on a marqu\u00e9 un groupe comme ferm\u00e9, on peut voir la liste des entit\u00e9s explicitement que l&rsquo;on veut voir contribuer. On peut aussi voir les entit\u00e9s que les autres entit\u00e9s veulent voir contribuer et d\u00e9cider ou non de les ajouter.<\/p>\n<p style=\"text-align: justify;\">Lorsqu&rsquo;un groupe est marqu\u00e9 comme ferm\u00e9, l&rsquo;interface de visualisation du groupe peut permettre de le visualiser temporairement comme un groupe ouvert.<\/p>\n<p style=\"text-align: justify;\">Le traitement des liens de fermeture d&rsquo;un groupe doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h2 style=\"text-align: justify;\">OGPM \/ Protection des membres<\/h2>\n<p style=\"text-align: justify;\">Le groupe va contenir un certain nombre de membres ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter la visibilit\u00e9 du contenu des membres utilis\u00e9s dans un groupe en restreignant artificiellement les entit\u00e9s destinataires qui pourront les consulter.<\/p>\n<p style=\"text-align: justify;\">Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/groupe\/protege<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des groupes prot\u00e9g\u00e9s. Un groupe est consid\u00e9r\u00e9 prot\u00e9g\u00e9 quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID du groupe en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 partager aussi les objets prot\u00e9g\u00e9s cr\u00e9\u00e9s pour ce groupe. Cela ne repartage pas la protection des objets d\u00e9j\u00e0 prot\u00e9g\u00e9s.<\/p>\n<p style=\"text-align: justify;\">Dans un groupe marqu\u00e9 prot\u00e9g\u00e9, tous les nouveaux membres ajout\u00e9s au groupe ont leur contenu prot\u00e9g\u00e9. Ce n&rsquo;est valable que pour l&rsquo;entit\u00e9 en cours et \u00e9ventuellement celles qui lui font confiance.<\/p>\n<p style=\"text-align: justify;\">Lorsque l&rsquo;on a marqu\u00e9 un groupe comme prot\u00e9g\u00e9, on doit explicitement ajouter des entit\u00e9s avec qui on veut partager les contenus.<\/p>\n<p style=\"text-align: justify;\">Il est possible ind\u00e9finiment de\u00c2\u00a0prot\u00e9ger et d\u00e9prot\u00e9ger un groupe.<\/p>\n<p style=\"text-align: justify;\">Il est possible de\u00c2\u00a0prot\u00e9ger un groupe qui ne nous appartient afin de masquer le contenu des membres que l&rsquo;on y ajoute.<\/p>\n<p style=\"text-align: justify;\">Lorsque l&rsquo;on a marqu\u00e9 un groupe comme prot\u00e9g\u00e9, on peut voir la liste des entit\u00e9s explicitement a qui on veut partager les contenus. On peut aussi voir les entit\u00e9s a qui les autres entit\u00e9s veulent\u00c2\u00a0partager les contenus et d\u00e9cider ou non de les ajouter.<\/p>\n<p style=\"text-align: justify;\">Le traitement des liens de protection d&rsquo;un groupe doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h2 style=\"text-align: justify;\">OGDM \/ Dissimulation des membres<\/h2>\n<p style=\"text-align: justify;\">Le groupe va contenir un certain nombre de membres ajouter par diff\u00e9rentes entit\u00e9s. Il est possible de limiter la visibilit\u00e9 de l&rsquo;appartenance des membres utilis\u00e9s dans un groupe en restreignant artificiellement les entit\u00e9s destinataires qui pourront les voir.<\/p>\n<p style=\"text-align: justify;\">Dans nebule, l&rsquo;objet r\u00e9serv\u00e9 <code>nebule\/objet\/groupe\/dissimule<\/code> est d\u00e9di\u00e9 \u00e0 la gestion des groupes dissimul\u00e9s. Un groupe est consid\u00e9r\u00e9\u00c2\u00a0dissimul\u00e9 quand on a l&rsquo;objet r\u00e9serv\u00e9 en champs m\u00e9ta, l&rsquo;entit\u00e9 en cours en champs cible et l&rsquo;ID du groupe en champs source. Si au lieu d&rsquo;utiliser l&rsquo;entit\u00e9 en cours pour le champs cible on utilise une autre entit\u00e9, cela revient \u00e0 partager aussi les objets\u00c2\u00a0dissimul\u00e9s cr\u00e9\u00e9s pour ce groupe. Cela ne repartage pas la dissimulation des objets d\u00e9j\u00e0 dissimul\u00e9s.<\/p>\n<p style=\"text-align: justify;\">Dans un groupe marqu\u00e9 dissimul\u00e9, tous les nouveaux membres ajout\u00e9s au groupe sont dissimul\u00e9s. Ce n&rsquo;est valable que pour l&rsquo;entit\u00e9 en cours et \u00e9ventuellement celles qui lui font confiance.<\/p>\n<p style=\"text-align: justify;\">Lorsque l&rsquo;on a marqu\u00e9 un groupe comme dissimul\u00e9, on doit explicitement ajouter des entit\u00e9s avec qui on veut partager les membres du groupe.<\/p>\n<p style=\"text-align: justify;\">Il est possible ind\u00e9finiment de\u00c2\u00a0dissimuler et d\u00e9-dissimuler un groupe.<\/p>\n<p style=\"text-align: justify;\">Il est possible de\u00c2\u00a0dissimuler un groupe qui ne nous appartient afin de masquer le contenu des membres que l&rsquo;on y ajoute.<\/p>\n<p style=\"text-align: justify;\">Lorsque l&rsquo;on a marqu\u00e9 un groupe comme dissimul\u00e9, on peut voir la liste des entit\u00e9s explicitement a qui on veut partager les contenus. On peut aussi voir les entit\u00e9s a qui les autres entit\u00e9s veulent\u00c2\u00a0partager les contenus et d\u00e9cider ou non de les ajouter.<\/p>\n<p style=\"text-align: justify;\">Le traitement des liens de dissimulation d&rsquo;un groupe doit \u00eatre fait exclusivement avec le traitement social <em>self<\/em>.<\/p>\n<h2 style=\"text-align: justify;\">OGL \/ Liens<\/h2>\n<p style=\"text-align: justify;\">Une entit\u00e9 doit \u00eatre d\u00e9verrouill\u00e9e pour la cr\u00e9ation de liens.<\/p>\n<p style=\"text-align: justify;\">Le lien de d\u00e9finition du groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de suppression d&rsquo;un groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe&rsquo;)<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/type&rsquo;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de dissimulation d&rsquo;un groupe est le lien de d\u00e9finition cach\u00e9 dans une lien de type <code>c<\/code>.<\/p>\n<p style=\"text-align: justify;\">Le lien de rattachement d&rsquo;un membre du groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible :\u00c2\u00a0ID de l&rsquo;objet<\/li>\n<li>m\u00e9ta : ID du groupe<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de suppression de rattachement d&rsquo;un membre du groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible :\u00c2\u00a0ID de l&rsquo;objet<\/li>\n<li>m\u00e9ta : ID du groupe<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de fermeture d&rsquo;un groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/ferme&rsquo;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de suppression de fermeture d&rsquo;un groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/ferme&rsquo;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de protection des membres d&rsquo;un groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/protege&rsquo;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de suppression de\u00c2\u00a0protection des membres d&rsquo;un groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/protege&rsquo;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de dissimulation des membres d&rsquo;un groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>l<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/dissimule&rsquo;)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le lien de suppression de\u00c2\u00a0dissimulation des membres d&rsquo;un groupe :<\/p>\n<ul>\n<li style=\"text-align: left;\">action : <code>x<\/code><\/li>\n<li>source : ID du groupe<\/li>\n<li>cible : ID de l&rsquo;entit\u00e9, par d\u00e9faut l&rsquo;entit\u00e9 signataire.<\/li>\n<li>m\u00e9ta : hash(\u00e2\u20ac\u02dcnebule\/objet\/groupe\/dissimule&rsquo;)<\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\">OGIV \/ Impl\u00e9mentation des Variables<\/h2>\n<p style=\"text-align: justify;\">Les variables sp\u00e9cifiques aux groupes :<\/p>\n<ul>\n<li style=\"text-align: justify;\"><code>permitWriteGroup<\/code> : permet toute \u00e9criture de groupes.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Les variables qui ont une influence sur les groupes :<\/p>\n<ul>\n<li style=\"text-align: justify;\"><code>permitWrite<\/code> : permet toute \u00e9criture d&rsquo;objets et de liens ;<\/li>\n<li style=\"text-align: justify;\"><code>permitWriteObject<\/code> : permet toute \u00e9criture\u00c2\u00a0d&rsquo;objets ;<\/li>\n<li style=\"text-align: justify;\"><code>permitCreateObject<\/code> : permet la cr\u00e9ation locale\u00c2\u00a0d&rsquo;objets ;<\/li>\n<li style=\"text-align: justify;\"><code>permitWriteLink<\/code> : permet toute \u00e9criture de liens ;<\/li>\n<li style=\"text-align: justify;\"><code>permitCreateLink<\/code> : permet la cr\u00e9ation locale de liens.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Il est n\u00e9cessaire \u00e0 la cr\u00e9ation d&rsquo;un groupe de pouvoir \u00e9crire des objets comme le nom du groupe, m\u00eame si l&rsquo;objet du groupe ne sera pas cr\u00e9\u00e9.<\/p>\n<h2 style=\"text-align: justify;\">OGIA \/ Impl\u00e9mentation des Actions<\/h2>\n<p style=\"text-align: justify;\">Dans les actions, on retrouve les cha\u00eenes :<\/p>\n<ul>\n<li style=\"text-align: justify;\"><code>creagrp<\/code> : Cr\u00e9e un groupe.<\/li>\n<li style=\"text-align: justify;\"><code>creagrpnam<\/code> : Nomme le groupe \u00e0 cr\u00e9er.<\/li>\n<li style=\"text-align: justify;\"><code>creagrpcld<\/code> : Marque ferm\u00e9 le groupe \u00e0 cr\u00e9er.<\/li>\n<li style=\"text-align: justify;\"><code>creagrpobf<\/code> : Dissimule les liens du groupe \u00e0 cr\u00e9er.<\/li>\n<li style=\"text-align: justify;\"><code>actdelgrp<\/code> : Supprime un groupe.<\/li>\n<li style=\"text-align: justify;\"><code>actaddtogrp<\/code> : Ajoute l&rsquo;objet\u00c2\u00a0courant membre \u00e0 groupe.<\/li>\n<li style=\"text-align: justify;\"><code>actremtogrp<\/code> : Retire l&rsquo;objet\u00c2\u00a0courant membre d&rsquo;un groupe.<\/li>\n<li style=\"text-align: justify;\"><code>actadditogrp<\/code> : Ajoute un objet membre au groupe courant.<\/li>\n<li style=\"text-align: justify;\"><code>actremitogrp<\/code> : Retire un objet membre du groupe courant.<\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\">OGIF \/ Impl\u00e9mentation des Fonctions<\/h2>\n<p style=\"text-align: justify;\">Dans la classe <code>nebule<\/code>, on trouve :<\/p>\n<ul>\n<li style=\"text-align: justify;\">La fonction <code>getListGroupsLinks()<\/code> retourne la liste des liens d\u00e9finissants les groupes.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getListGroupsID()<\/code> retourne la liste des identifiants des groupes.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Dans la classe <code>Object<\/code>, on trouve :<\/p>\n<ul>\n<li style=\"text-align: justify;\">La fonction <code>getIsGroup()<\/code> retourne si l&rsquo;objet est un groupe.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getListIsMemberOnGroupLinks()<\/code> retourne la liste des identifiants des groupes desquels l&rsquo;objet est membre.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getListIsMemberOnGroupID()<\/code> retourne la liste des identifiants des groupes desquels l&rsquo;objet est membre.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Dans la classe <code>Group<\/code>, on trouve :<\/p>\n<ul>\n<li style=\"text-align: justify;\">La fonction <code>unsetGroup()<\/code> supprime la d\u00e9finition du groupe.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getMarkClosed()<\/code> retourne si le groupe est marqu\u00e9 ferm\u00e9 ou si l&rsquo;entit\u00e9 demand\u00e9e est contributrice.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>setMarkClosed()<\/code> marque le groupe comme ferm\u00e9 ou marque l&rsquo;entit\u00e9 demand\u00e9e comme contributrice.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>unsetMarkClosed()<\/code> marque le groupe comme ouvert ou retire l&rsquo;entit\u00e9 demand\u00e9e comme contributrice.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getMarkProtected()<\/code> retourne si le groupe est marqu\u00e9 prot\u00e9g\u00e9 (ses membres).<\/li>\n<li style=\"text-align: justify;\">La fonction <code>setMarkProtected()<\/code> marque le groupe comme prot\u00e9g\u00e9 (ses membres).<\/li>\n<li style=\"text-align: justify;\">La fonction <code>unsetMarkProtected()<\/code> marque le groupe comme non prot\u00e9g\u00e9 (ses membres).<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getMarkObfuscated()<\/code> retourne si le groupe est marqu\u00e9 dissimul\u00e9 (ses membres). C&rsquo;est diff\u00e9rent de la dissimulation de la cr\u00e9ation du groupe.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>setMarkObfuscated()<\/code> marque le groupe comme dissimul\u00e9 (ses membres).<\/li>\n<li style=\"text-align: justify;\">La fonction <code>unsetMarkObfuscated()<\/code> marque le groupe comme non dissimul\u00e9 (ses membres).<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getIsMember()<\/code> retourne si un objet est membre du groupe.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>setMember()<\/code> ajout un objet comme membre.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>unsetMember()<\/code> retire l&rsquo;objet comme membre.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getListMembersLinks()<\/code> retourne les liens des objets d\u00e9finis comme membres.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getListMembersID()<\/code> retourne les identifiants des objets d\u00e9finis comme membres.<\/li>\n<li style=\"text-align: justify;\">La fonction <code>getCountMembers()<\/code> retourne le nombre d&rsquo;objets d\u00e9finis comme membres.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>La gestion des groupes est enti\u00e8rement revue et corrig\u00e9e dans la biblioth\u00e8que nebule en PHP orient\u00e9 objet et dans les applications (sylabe, klicty, messae). Une fois les applications mises \u00e0 jour, les groupes existants dispara\u00eetront. Cet article invalide la d\u00e9finition de groupe telle que d\u00e9finit dans l&rsquo;article D\u00e9finition des groupes du 14\/01\/2016. Cette impl\u00e9mentation des &hellip; <a href=\"https:\/\/blog.nebule.org\/?p=3045\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">D\u00e9finition des groupes<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[55,362,79,81,88,90,7,11,13,119,124,118,99,364,102,110,18,19,20,388,24,407,33,39],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/3045"}],"collection":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3045"}],"version-history":[{"count":17,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/3045\/revisions"}],"predecessor-version":[{"id":3062,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/3045\/revisions\/3062"}],"wp:attachment":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}