Forum CMS Made Simple FR

Version complète : FEmessages : messagerie entre groupe d'utilisateur
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

ceadreak

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS : N/A
#~ Version du MLE si existante :
#~ Informations Système :
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
Bonjour,

J'aimerais installer sur mon site, une messagerie interne entre groupe.
J'ai donc 2 groupes d'utilisateurs : le groupe A et le groupe B
Il faudrait que le groupe A puisse envoyer des messages (style messagerie facebook, pas le shoutbox) au groupe B et vice versa.

Je suis tombé sur le module FEmessages qui fait ce qu'il faut, par contre seul un groupe peut disposer des apports de ce module et s'envoyer des messages aux membres du groupe ...

J'ai regardé et on ne sais pas paramétrer le nombre de groupe...

Je cherche à faire un appel au module en fonction du groupe de l'utilisateur
genre :
{if group="groupe_A"}
Appel du module FEmessages avec un paramètre qui dit que seul des message au groupe B peuvent être envoyé
{else}
Appel du module FEmessages avec un paramètre qui dit que seul des message au groupe A peuvent être envoyé
{/if}

Est-ce que vous avez une idée de comment je pourrais faire?


Merci de votre aide.

A+
Cédric

ceadreak

Pas de solutions? ...
Je suis entrain de revoir le code du module pour l'adapter mais, n'ayant jamais développé de modules cmsms je bloque un peu ...

Dan le fichier action.defaultadmin.php, j'ai remplacé cette ligne

Code :
echo '<tr><td>'.$this->Lang("pref_pmgroup").'</td><td>'.$this->CreateInputDropdown($id,"pmgroup",$this->getGroupsCombo(),-1,$pmgroup).'</td></tr>';
Par celle-ci

Code :
echo '<tr><td>'.$this->Lang("pref_pmgroup").'</td><td>'.$this->CreateInputSelectList($id,"pmgroup",$this->getGroupsCombo(),$pmgroup).'</td></tr>';
Ce qui me crée bien une liste multichoix pour mes groupes.

J'ai rajouté (enfin j'ai juste rajouté les [ ] pour en faire un array) ceci aussi à la récupération des paramètres :

Code :
$pmgroup[] = $this->GetPreference("pmgroup",false);
Tant que j'y suis, voici le code du submit

Code :
if(isset($params["submitpref"])){

    foreach($this->getSettings() as $row){

        $value = isset($params[$row[0]])?$params[$row[0]]:0;

        if($row[1] == "number")    $value = (int) $value;

        $this->SetPreference($row[0],$value);

        $settings[$row[0]] = array($value,$row[1]);

    }

    $this->SetPreference("pmgroup",isset($params["pmgroup"])?$params["pmgroup"]:0);

    echo $this->ShowMessage($this->Lang("message_modified"));

}else{

    foreach($this->getSettings() as $row)    $settings[$row[0]] = array($this->GetPreference($row[0],$row[2]),$row[1]);

}
Par contre, quand je sélectionne 2 groupes, c'est toujours le dernier qui est sélectionné ...
Manque un foreach sans doute, mais où ...


Merci pour votre aide

ceadreak

Bon ben je m'auto réponds et je mets ce post en résolu.

Pour ceux que ca intéresse, voici la manip à faire pour pouvoir sélectionner plusieurs groupes dans le module FrontEnd Messages

Fichier action.defaultadmin.php :

Code :
if(isset($params["submitpref"])){

    foreach($this->getSettings() as $row){

        $value = isset($params[$row[0]])?$params[$row[0]]:0;

        if($row[1] == "number")    $value = (int) $value;

        $this->SetPreference($row[0],$value);

        $settings[$row[0]] = array($value,$row[1]);

    }

    $this->SetPreference("pmgroups",isset($params["pmgroups"])?implode(',',$params["pmgroups"]):0);

    echo $this->ShowMessage($this->Lang("message_modified"));

}else{

    foreach($this->getSettings() as $row)    $settings[$row[0]] = array($this->GetPreference($row[0],$row[2]),$row[1]);

}
.
.
.
.
//echo '<tr><td>'.$this->Lang("pref_pmgroup").'</td><td>'.$this->CreateInputDropdown($id,"pmgroup",$this->getGroupsCombo(),-1,$pmgroup).'</td></tr>';
        echo '<tr><td>'.$this->Lang("pref_pmgroup").'</td><td>'.$this->CreateInputSelectList($id,"pmgroups[]",$this->getGroupsCombo(),$pmgroups).'</td></tr>';
merci pour ton retour ceadreak mais je me pose une question sur ton dernier message :

ton code, tu le claque ou dans la page php ? a la place de quel code ou après quelle partie ?

c'est un peu flou

ceadreak

En fait je remplace le code existant qui ne prend en compte qu'un seul groupe.
Avant c'était une liste déroulante simple et j'en ai fait une liste a choix multiple.
Au choix des groupes, une insertion ou update est fait dans le table cms_siteprefs.
Si c'est plusieurs groupes, je les sépares par une virgule, d'ou le explode(','...) et le implode(','...)

Par contre maintenant j'ai un autre soucis...

J'ai rajouté un paramètre dans le module à son appel pour spécifier à quel groupe on veut envoyer un message. Le paramètre group=group_A par exemple.
Je l'ai défini comme suit dans le fichier FEmessages.module.php :
Code :
$this->CreateParameter("group", "", $this->lang("phelp_group"));
$this->SetParameterType("group",CLEAN_STRING);
Par contre je me demande comment le récupérer dans ma fonction qui liste les utilisateurs à qui on peut envoyer le message ...
Je réouvre mon post pour espérer avoir une réponse...

Je serais ravi de mettre cette mise à jour de ce module à disposition car c'est quand même un usage assez essentiel que de ne pas limiter qu'à un seul groupe son utilisation.

Merci
tu as tout a fait raison de vouloir pousser le module dans cet optique. Mais un conseil si tu donne du bon code, en règle général on présente la chose ainsi

ouvrez fichier toto.php

cherchez

Code :
//Commentaire bidon
    echo("truc");
ajoutez après

Code :
echo("mon nouveau code");
cherchez


Code :
echo("ancien code foireux");
remplacer par

Code :
echo("code bien mieux :)");
tout ca permets aux lecteurs de comprendre OU modifier le code et COMMENT Wink

voilà fin de l'aparté sur la présentation de tes modifs, bon courage pour la suite de tes recherches

ceadreak

Ah ben ok, mais ca me dit toujours pas comment récupérer mon groupe que je passe dans le tag
{cms_module module="FEmessages" group="group_A"}
Je suis développeur mais nouveau sous cmsms donc un peu de mal pour l'instant !
Il faut juste que je récupère le groupe que j'envois dans le tag pour pouvoir l'utiliser dans le code du module.
Une idée?

Tks Smile

ceadreak

Toujours rien ...
en haut bouton documentation Wink

ceadreak

Oui oui, j'ai vu pour le guide Smile
Mais j'ai pas vu dedans pour le passage de paramètre ...
j'ai un peu passer en revue la classe class.module.inc.php et de ce que j'ai compris, tous les paramètres sont envoyée dans un tableau $params.

J'ai fait un var_dump de $params et voici ce que ca sort :
Code :
array(3) { ["show"]=>  string(4) "send" ["returnid"]=>  int(58) ["action"]=>  string(7) "default" }
Aucune trace de mon paramètre group ...
Il n'y a pas un truc pour l'initialiser ou quoi?
il y a un filtre pour éviter l'envoi de paramètres non désiré. Regarde dans le fichier principal de ton module, il doit se trouver une fonction ou ils déclarent les variables et leur type (principe de sécurité)

ajoute y la déclaration de ton propre paramètre + son type. Ca doit se trouver dans le fichier FEmessages.module.php ou équivalent.

ceadreak

Bin c'est ce que je disais plus haut justement quand je parlais de la déclaration de ma variable.
Voici la fonction SetParameters() du module

Code :
function SetParameters(){

        $defparams = array("action"=>"default");

        $this->RegisterRoute("/[mM]essages\/(?P<show>[^\/]+)\/(?P<returnid>[0-9]+)$/", $defparams);

        $this->RegisterRoute("/[mM]essages\/(?P<show>inbox|outbox)\/(?P<pageindex>[0-9]+)\/(?P<returnid>[0-9]+)$/", $defparams);

        $this->RegisterRoute("/[mM]essages\/(?P<show>[^\/]+)\/(?P<msgid>[0-9]+)\/(?P<returnid>[0-9]+)$/", $defparams);

        // Any change to the registered routes should also be made in function BuildPrettyUrls below

        

        $this->RestrictUnknownParams();



        $this->CreateParameter("show", "summary", $this->Lang("phelp_show"));

        $this->SetParameterType("show",CLEAN_STRING);

        $this->CreateParameter("detailpage", "", $this->Lang("phelp_detailpage"));

        $this->SetParameterType("detailpage",CLEAN_STRING);

        $this->CreateParameter("template", "", $this->lang("phelp_template"));

        $this->CreateParameter("inline", 0, $this->lang("phelp_inline"));

        $this->SetParameterType("inline",CLEAN_STRING);

        $this->CreateParameter("group", "", $this->lang("phelp_group"));
        $this->SetParameterType("group",CLEAN_STRING);


        $this->SetParameterType("submit",CLEAN_STRING);

        $this->SetParameterType("msgid",CLEAN_INT);

        $this->SetParameterType("to",CLEAN_STRING);

        $this->SetParameterType("subject",CLEAN_STRING);

        $this->SetParameterType("message",CLEAN_STRING);

        $this->SetParameterType("pageindex",CLEAN_INT);

    }
Je pense que je la déclare correctement.

Merci de ton aide
ma foi oui... je ne vois pas le soucis Sad

edit : a la rigueur on peut imaginer que les première lignes sur le registerRoute ne dispatch pas ta variable non ?

ceadreak

Boh ... Ca sert à quoi exactement le registerRoute?
Y'a une doc la dessus quelque part?
j'ai rien à te filer. faut voir la doc de l'API de CMSMS http://www.cmsmadesimple.org/api/

a ma connaissance ca sert justement a récupérer une url complexe et a dispatcher les valeurs dans les variables.

dans ce module visiblement il y a 3 type d'url différentes, et il précise pour chaque type d'url comment renseigner les variables.

ceadreak

Ok je regarde ca. Merci

Dès que j'ai la solution je clos le poste et mettrai la variante du module à disposition.

A+
Salut à tous,

bientôt 4 ans après, je tombe sur ce post car je recherchais la même chose. En repartant du code de ceadreak, j'ai modifié quelques autres fichiers pour rendre ce module accessible par plusieurs groupes. Si cela vous intéresse je peux poster la modif.