Connectix Boards

Bienvenue, vous n'êtes pas connecté. ( Se connecter - S'enregistrer )

Dernière version sortie: 0.8.4!
Venez tester la version 1.0 beta :)

Connectix Boards > Zone développement > Programmation > Envoi automatique de MP

RSS >  Envoi automatique de MP
Muse_stream #1 08/02/2010 - 21h42

Groupe : Habitué
Messages : 78
Enregistré le : 22/12/2006

Hors ligne Site Web

Hello !

Je cherche à envoyer automatiquement un MP lors de certaines actions.  L'idée serait de ne pas tenir compte de si la boîte est pleine ou pas car ce MP est considéré comme important (envoyé à partir d'une action sur mon site dont l'espace membre est basé sur un forum connectix board dernière version).
Le message est standardisé sans que le membre n'ait la possibilité d'ajouter quoi que ce soit : bref, on peut sauter une série de contrôles de sécurité sans doute.

Sur base d'une ancienne version du forum, j'avais ceci :

$GLOBALS['cb_db']->query("INSERT INTO `".$GLOBALS['cb_db']->prefix."mp` VALUES('','".clean($mp_subj)."','".bbcleanmess($to_mp)."','0',".$gr_coid.",'1','0','0','".time()."')") or die (mysql_error());

$GLOBALS['cb_db']->query("UPDATE ".$GLOBALS['cb_db']->prefix."users SET usr_nbmp=usr_nbmp+1,usr_mpadv=1 WHERE usr_id=".$gr_coid) or die (mysql_error());

$_SESSION['cb_user']->reloadnext = true;

qui fonctionnait très bien.

Manifestement, ça ne marche plus avec la dernière version  ^^

Alors je vois bien le fichier include/parts/part.mps.php  et je tente avec genre ceci :

$GLOBALS['cb_db']->query('INSERT INTO '.$GLOBALS['cb_db']->prefix.'mp(mp_subj,mp_content,mp_read,mp_to,mp_from,mp_to_del,mp_from_del,mp_timestamp) VALUES(\''.$mp_subj.'\',\''.clean($to_mp,STR_MULTILINE + STR_PARSEBB).'\',0,'.$gr_coid.',1,0,0,'.time().')');
$GLOBALS['cb_db']->query('UPDATE '.$GLOBALS['cb_db']->prefix.'users SET usr_nbmp=usr_nbmp+1,usr_mpadv=1 WHERE usr_id='.$gr_coid);       


Mais ça ne marche pas.
Je l'ai un peu bidouillée genre :
mysql_query("INSERT INTO cb_mp(mp_subj,mp_content,mp_read,mp_to,mp_from,mp_to_del,mp_from_del,mp_timestamp) VALUES('".$mp_subj."','".$to_mp."',0,'".$gr_coid."',1,0,0,'".time()."')");
mysql_query('UPDATE cb_users SET usr_nbmp=usr_nbmp+1,usr_mpadv=1 WHERE usr_id='.$gr_coid);   


... et rien  :(

Bref, y ' a un truc qui m'échappe et je vois pas trop quoi... Si quelqu'un a une idée, merci d'avance !

Bonne soirée  :rolleyes:
Intéressé(e) de près ou de loin par les mangas et le monde de l'animation asiatique ? cliquez-ici !   : l o l :
Et si vous voulez proposer une fiche sur un manga ou un amine que vous avez lu/vu : ici   ; )
kristoch #2 09/02/2010 - 00h33

Groupe : Acharné
Messages : 255
Enregistré le : 05/08/2009

Hors ligne Site Web

et à la création du pseudo, et à son anniversaire, par exemple aussi, et pourquoi pas au passage de grade supérieur et là je reviens en boucle sur toi puisque ça dépend là du nombre de messages non pas en MP mais en forum!

en fait tu parles de taux de remplissage en % d'après la limite définie en administration, selon les groupes car ça compte.
Muse_stream #3 12/02/2010 - 20h14

Groupe : Habitué
Messages : 78
Enregistré le : 22/12/2006

Hors ligne Site Web

kristoch : j'ai rien pigé à ta réponse  :pinch:  mais merci d'avoir participé !

Bon, je l'admets : j'attendais un peu la réponse toute faite  :gene:
Voici le minimum requis à ma connaissance :



/* Fonction qui renvoie le nombre de messages total de l'utilisateur. */
function getTotMp($id) {
    return $GLOBALS['cb_db']->single_result('SELECT COUNT(*) FROM '.$GLOBALS['cb_db']->prefix.'mp WHERE (mp_to='.(int)$id.' AND mp_to_del=0) OR (mp_from='.(int)$id.' AND mp_from_del=0)');
}

/* Fonction qui renvoie si l'utilisateur $id_user peut avoir encore des mp ou si sa boite est pleine. */
function canHaveNewMp ($id_user,$totnbmp,$maxmp=false) {
    if ($maxmp===false) {
        $maxmp = $GLOBALS['cb_db']->single_result('SELECT gr_mps FROM '.$GLOBALS['cb_db']->prefix.'users LEFT JOIN '.$GLOBALS['cb_db']->prefix.'groups ON gr_id=usr_class WHERE usr_id='.(int)$id_user);
        if ($maxmp===false) return false;
    }
    return $totnbmp<$maxmp;
}

// le contenu du message CB personnalisé :

$to_mp="Bonjour bla bla bla ";
$mp_subj="Sujet du MP...";


// le mp en question

$_SESSION['totnbmp'] = getTotMp($_SESSION['cb_user']->userid);

                                $rq = $GLOBALS['cb_db']->query('SELECT usr_name,usr_email,usr_pref_mailmp FROM '.$GLOBALS['cb_db']->prefix.'users WHERE usr_id='.(int)$touserid);
                                $dt = $GLOBALS['cb_db']->fetch_assoc($rq);
                   
                               
    if (canHaveNewMp($_SESSION['cb_user']->userid,$_SESSION['totnbmp'],$_SESSION['cb_user']->gr_mps)) {
         
            $touserid=$gr_coid;   // $touserid = destinataire de votre choix (chez moi : $gr_coid)
           
            if ($touserid!=0) {
                if (canHaveNewMp($touserid,getTotMp($touserid))) {
                    if ($touserid!==$_SESSION['cb_user']->userid) {

                            $GLOBALS['cb_db']->query('INSERT INTO '.$GLOBALS['cb_db']->prefix.'mp(mp_subj,mp_content,mp_read,mp_to,mp_from,mp_to_del,mp_from_del,mp_timestamp) VALUES(\''.clean($mp_subj).'\',\''.clean($to_mp,STR_MULTILINE + STR_PARSEBB).'\',0,'.(int)$touserid.','.$_SESSION['cb_user']->userid.',0,0,'.time().')');
                                $GLOBALS['cb_db']->query('UPDATE '.$GLOBALS['cb_db']->prefix.'users SET usr_nbmp=usr_nbmp+1,usr_mpadv=1 WHERE usr_id='.(int)$touserid);


                                if ($dt['usr_pref_mailmp']) {
                                    require_once(CB_PATH.'include/lib/lib.mails.php');
                                    ob_start();
                                    sendMail($aqui,$sujet,$content);
                                    ob_end_clean();
                                }

                                                  
                    } else trigger_error(lang('error_user_automess'),E_USER_WARNING);
                } else sendTextHtmlAtLeast($dt['usr_email'],$pseuco,$_SESSION['cb_user']->username);  // appel d'une fonction perso pour au moins envoyer un mail à l'utilisateur pour qu'il soit averti même si sa boîte mp est pleine
            } else trigger_error(lang('error_user_noexist'),E_USER_WARNING);
    } else sendTextHtmlAtLeast($dt['usr_email'],$pseuco,$_SESSION['cb_user']->username);  // appel d'une fonction perso pour au moins envoyer un mail à l'utilisateur pour qu'il soit averti même si sa boîte mp est pleine


Voilà voilà...
Si vous avez des questions ou des remarques n'hésitez pas !  :)
Intéressé(e) de près ou de loin par les mangas et le monde de l'animation asiatique ? cliquez-ici !   : l o l :
Et si vous voulez proposer une fiche sur un manga ou un amine que vous avez lu/vu : ici   ; )
Martin #4 14/02/2010 - 23h13

Groupe : Administrateur
Messages : 3628
Enregistré le : 01/02/2005

Hors ligne Site Web

Ton code ne me parait pas vraiment foireux, es-tu sur qu'il est correctement exécuté, ou que les variables utilisées sont bien initialisées? Tu n'as rien modifié dans ton code depuis le moment où ça fonctionnait? Y a-t-il des erreurs affichées?
Posted Image
« Entre une mauvaise cuisinière et une empoisonneuse il n'y a qu'une différence d'intention. » - P. Desproges
Muse_stream #5 15/02/2010 - 10h43

Groupe : Habitué
Messages : 78
Enregistré le : 22/12/2006

Hors ligne Site Web

Je me suis peut être mal exprimé  :gene:
mais le dernier code affiché fonctionne parfaitement  ^^
Je comprends pas trop pourquoi une version raccourcie ne fonctionnait pas, mais ... ok tant que le résultat est là  ;)  ;)

Merci, et bonne journée - semaine  :)
Intéressé(e) de près ou de loin par les mangas et le monde de l'animation asiatique ? cliquez-ici !   : l o l :
Et si vous voulez proposer une fiche sur un manga ou un amine que vous avez lu/vu : ici   ; )

 >  Réponse rapide

Composez votre message

Connectix Boards > Zone développement > Programmation > Envoi automatique de MP

 >  Informations du forum

1 personne(s) présente(s) durant une période de 15 minutes (0 membre(s) et 1 invité(s)).