EventsManager + NMS + (CMSMS)events -
pidou46 - 05/12/2012
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.3
#~ Url du site :
#~ Hébergeur / Soft : lighttpd debian squeeze
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.3
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ CMSPrinting: 1.0.3
#~ FileManager: 1.4.2
#~ MenuManager: 1.8.4
#~ MicroTiny: 1.2.4
#~ ModuleManager: 1.5.5
#~ News: 2.12.10
#~ Search: 1.7.7
#~ ThemeManager: 1.1.7
#~ Gallery: 1.6
#~ CGExtensions: 1.31.2
#~ FrontEndUsers: 1.21
#~ Captcha: 0.4.5
#~ SelfRegistration: 1.7.2
#~ CustomContent: 1.8.3
#~ FormBuilder: 0.7.3
#~ CMSForms: 1.0.1
#~ CGCalendar: 1.10.0.1
#~ Uploads: 1.14.3
#~ AireLibs: 1.3.2
#~ EventsManager: 1.2.7
#~ CGJobMgr: 1.2.11
#~ NMS: 2.7
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ output_compression:
#~ max_upload_size: 10000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.3.3-7+squeeze3
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 128M
#~ max_execution_time: 60
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 10M
#~ upload_max_filesize: 10M
#~ session_save_path: /var/lib/php5 (1733)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 5.1.49
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour,
Dans l'onglet "Examples and tips" de la doc du module EventsManager, il est précisé qu'il est possible d'envoyer un email à toutes les personne inscrites a un evenement.
Mon besoin est légèrement différent: je voudrais envoyer un email à une liste de diffusion issue d'un groupe FEU lorsqu'un nouvel événement est créé.
Voila ou j'en suis:
- l'extension gestion des évenements inclus dans CMSMS permet de déclencher une action sur un événement
- l'événement "EventsManagerEventAdded" correspond à la création d'un nouvel événement
- J'ai créé une liste de diffusion dans NMS récupérée de FEU
- J'ai créé un message dans NMS
- J'ai essayé d'ajouter une ligne NMS dans la gestion de l'événement "EventsManagerEventAdded" sans résultat
- J'ai cru comprendre qu'il fallait créer un UDT, mais je ne sais pas quoi mettre dedans pour lacer une tache NMS
Bref, je bloque sur l’exécution d'un tache NMS sur l'événement "EventsManagerEventAdded" du module EventsManager.
Quelqu'un peut-il m'aider la dessus ?
EventsManager + NMS + (CMSMS)events -
Jean le Chauve - 05/12/2012
Tu peux t'inspirer de cette udt qui sert à envoyer des mails lors de la déconnexion d'un utilisateur :
Code :
[== Indéfini ==]
global $smarty;
$db = cmsms()->GetDb();
$dateformat = '%x %X';
$limit = 5;// nombre de lignes à afficher
$username = "admin"; // nom d'utilisateur à éviter
$destinataire = "dest@domaine.fr";
$expediteur = "exp@domaine.fr";
$result = $db->Execute("SELECT * FROM ".cms_db_prefix()."adminlog ORDER BY timestamp DESC LIMIT $limit");
if ($result && $result->fields["username"] != $username){
$output = "<html><head></head><body>";
$output .= "<table border>";
$output .= "<thead>";
$output .= "<tr>";
$output .= "<th>Utilisateur</th>";
$output .= "<th>id de l'item </th>";
$output .= "<th>nom de l'item</th>";
$output .= "<th>action</th>";
$output .= "<th>date</th>";
$output .= "</tr>";
$output .= "</thead>";
$output .= "<tbody>";
$currow = "row1";
while ($row = $result->FetchRow()) {
$output .= "<tr class=\"$currow\">";
$output .= "<td>".$row["username"]."</td>";
$output .= "<td>".($row["item_id"]!=-1?$row["item_id"]:" ")."</td>";
$output .= "<td>".$row["item_name"]."</td>";
$output .= "<td>".$row["action"]."</td>";
$output .= "<td>".strftime($dateformat,$row['timestamp'])."</td>";
$output .= "</tr>";
($currow == "row1"?$currow="row2":$currow="row1");
}
$output .= '</tbody>';
$output .= '</table>';
$output .= '</body></html>';
$cmsmailer = cms_utils::get_module('CMSMailer');
$cmsmailer->AddAddress($destinataire);
$cmsmailer->SetFrom($expediteur);
$cmsmailer->SetBody($output);
$cmsmailer->IsHTML(true);
$cmsmailer->SetSubject('Compte-rendu après connexion d\'un utilisateur sur le site');
$cmsmailer->Send();
}
Cette udt s'appelle "connexion" et est raccordée à l'événement "LogoutPost"
EventsManager + NMS + (CMSMS)events -
pidou46 - 05/12/2012
Merci pour cet exemple:
L'algorithme que j'imagine serait le suivant:
===========
Je créé un email suivant l'exemple udt connexion.
Récupérer la liste des utilisateurs d'un groupe:
{$feu_smarty->get_users_by_groupname($groupname,$assign)}
Pour chaque utilisateur utilisateur
Récupérer l'adresse email:
{$feu_smarty->get_user_properties($uid,$assign)}
Envoie l'email a l'adresse de l'utilisateur avec cmsmailer
Reboucle
===========================
Il ne me reste plus qu'a apprendre langage php...
EventsManager + NMS + (CMSMS)events -
bess - 05/12/2012
bonne lecture pidou46
il y a aussi le site du zéro qui est très bien pour démarrer le php
EventsManager + NMS + (CMSMS)events -
pidou46 - 05/12/2012
Merci pour la literature
En analysant le "udt_to_nms" j'ai vu qu'on faisait appel a la fonction AddUser de NMS
Code :
[== Indéfini ==]
$nms->AddUser($feu->GetUserPropertyFull('email', $params['id']), array(1), $feu_user[1]['username'],0
Si je pouvait appeler la fonction NMS qui exécute une tache j'aurais résolu mon problème de manière plus simple encore qu'avec mon algorithme.
Ou est-ce que je peut trouver les informations sur le fonctions de NMS ? code source sur la forge ?
EventsManager + NMS + (CMSMS)events -
pidou46 - 05/12/2012
Je n'ai pas trouvé une fonction pour exécuter une tache dans le code de NMS mais j'ai trouvé une fonction qui envoie un message (NMS) a une liste d'adresses email.
Code :
[== PHP ==]
/*---------------------------------------------------------
SendMessageToExternalUsers
-
Send a specified message to a supplied list of
email addresses.
---------------------------------------------------------*/
function SendMessageToExternalUsers($id,$messageid,$addresses)
{
// destrow
// email
// uniqueid
// username
$db = $this->GetDb();
$query = 'SELECT * FROM '.NMS_MESSAGES_TABLE.' WHERE messageid = ?';
$message = $db->GetRow($query,array($messageid));
if( !$message ) return false;
if( !is_array($addresses) ) return false;
foreach( $addresses as $email ) {
$tmp = array();
$tmp['email'] = $email;
$this->_ProcessOneEmail($id,$message,$tmp);
}
}
Maintenant il me faut trouver un moyen de récupérer la liste des adresses email d'un groupe FEU
EventsManager + NMS + (CMSMS)events -
Jean le Chauve - 05/12/2012
Suivant le paramétrage :
$query = "SELECT `username` FROM `cms_module_feusers_users`";
EventsManager + NMS + (CMSMS)events -
airelibre - 07/12/2012
Bonsoir,
En effet, je n'ai pas prévu de fonction pour écrire à une liste FEU dans EventsManager
Regarde du côté du fonctionnement de CGJobMgr qui est le nouveau module sur lequel se repose NMS à présent.
Bon courage
EventsManager + NMS + (CMSMS)events -
pidou46 - 15/01/2013
Bonsoir a tous,
Bon, j'essaie de m'y remettre maintenant que mon site est en ligne.
Premierement: j'ai rempli une demande de feature sur la forge... oui je sais c'est un peut facile, j'ai honte
Deuxiemement: je sais que je peux créer un UDT et récupérer l'objet événement qui vient d'être créé (j'ai vu ça dans l'aide de l'événement "EventsManagerEventAdded".)
De cette façon j'espere récuperer URL de la page d'inscription pour la mettre dans l'email a envoyer.
Ensuite il me faudrait créer un job NMS y associer une liste de diffusion (que j'ai déjà crée grace a l'export CSV entre les modules) et l'executer.
Et la je cale...
EventsManager + NMS + (CMSMS)events -
airelibre - 15/01/2013
Bonsoir,
Pas de soucis pour la demande de fonction, c'est plus simple de faire comme ça, cela me permet de toutes les avoir au même endroit quand je bosserai dessus
Pour ton problème, as-tu absolument besoin d'utiliser NMS ? Est-ce qu'un envoi via un UDT ne ferait pas l'affaire ?
EventsManager + NMS + (CMSMS)events -
pidou46 - 17/01/2013
Un envoi via UDT ferait tout à fait l'affaire pour moi, si c'est plus simple à mettre en œuvre.
Je pense avoir à peut prêt toutes les briques pour construire cet UDT, sauf la maitrise de php/smarty...
Merci pour votre aide