FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 28/04/2010
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
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 29/04/2010
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
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 29/04/2010
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>';
FEmessages : messagerie entre groupe d'utilisateur -
bess - 29/04/2010
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
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 29/04/2010
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
FEmessages : messagerie entre groupe d'utilisateur -
bess - 29/04/2010
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
voilà fin de l'aparté sur la présentation de tes modifs, bon courage pour la suite de tes recherches
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 29/04/2010
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
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 30/04/2010
Toujours rien ...
FEmessages : messagerie entre groupe d'utilisateur -
bess - 30/04/2010
en haut bouton documentation
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 30/04/2010
Oui oui, j'ai vu pour le guide
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?
FEmessages : messagerie entre groupe d'utilisateur -
bess - 30/04/2010
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.
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 30/04/2010
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
FEmessages : messagerie entre groupe d'utilisateur -
bess - 30/04/2010
ma foi oui... je ne vois pas le soucis
edit : a la rigueur on peut imaginer que les première lignes sur le registerRoute ne dispatch pas ta variable non ?
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 30/04/2010
Boh ... Ca sert à quoi exactement le registerRoute?
Y'a une doc la dessus quelque part?
FEmessages : messagerie entre groupe d'utilisateur -
bess - 30/04/2010
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.
FEmessages : messagerie entre groupe d'utilisateur - ceadreak - 30/04/2010
Ok je regarde ca. Merci
Dès que j'ai la solution je clos le poste et mettrai la variante du module à disposition.
A+
FEmessages : messagerie entre groupe d'utilisateur -
Superpink - 12/12/2013
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.
FEmessages : messagerie entre groupe d'utilisateur -
bess - 12/12/2013
je t'en prie
http://pastebin.com/