FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 30-04-2012 11:12:02

pasbonte
Membre
Inscription : 09-03-2008
Messages : 19

Poster par email

Bonjour
Voici mon problème:
Nous recevons des notes de service par Mel, je veux les stocker sur un forum.
Carrière
Orientation etc....
Je vais créer des catégories etc
Je voudrais que la secrétaire puisse les poster directement de la messagerie sur le forum en transférant.
Est ce possible avec fluxbb ?
Je peux le faire avec tumblr mais c'est pas top....Evernote aussi mais pas de classement....
Postie le fait avec wordpress mais pas de catégorie.
Merci

Hors ligne

#2 01-05-2012 15:58:04

Mpok
Néo Admin
Inscription : 10-08-2006
Messages : 2 950
Site Web

Re : Poster par email

pasbonte a écrit :

Je voudrais que la secrétaire puisse les poster directement de la messagerie sur le forum en transférant.
Est ce possible avec fluxbb ?

Bonjour,
De base, NON.
Et je ne me souviens pas d'une mod le permettant…
=> donc développement spécifique…
(me semble assez compliqué).

Hors ligne

#3 01-05-2012 19:14:52

enum
Membre
Inscription : 22-03-2012
Messages : 41

Re : Poster par email

Si vous avez les fonctions imap ( et une adresse email qui serait accessible par imap, par exemple moi j'ai utilisé gmail ), vous pourriez surement ajouter ceci à la fin de include/common.php :

// Pour que le fichier soit checké juste une fois sur 20 affichages de page
if(!rand(0,20))
{
    
    $mail= array(
        // Le fichier dans lequel sera écrit la dernière date de vérification
        'file'      => PUN_ROOT.'MAIL_LAST_CHECK.txt',
        // Le host imap ou pop3, ici par exemple pour gmail
        'host'      => '{imap.gmail.com:993/imap/ssl}INBOX',
        // Le nom d'utilisateur sur le client mail
        'username'  => 'nom-utilisateur',
        // Le mot de passe sur le client mail
        'password'  => 'mot-de-passe',
        // Le numéro du forum dans lequel les nouveaux sujets devront être postés
        'forum_id'  => 13,
        // Le nombre de minute minimum ( si personne ne va sur le forum pendant 3 mois il n'y aura pas de vérif ) entre 2 vérif de nouveau mail
        'sync_min'  => 10,
        // Le nom du posteur
        'poster'    => 'Secrétaire'
    );


    // Si le fichier indiquant la dernière date de réception de mail n'existe pas on le crée avec 0 comme valeur
    if(!file_exists($mail['file']))
    {
        $fp= fopen($mail['file'],'w');
        fwrite($fp,'0');
        fclose($fp); 
    }
    // Sinon on check
    else
    {
        // On ouvre et lock le fichier avec la date de dernier check
        $fp= fopen($mail['file'],'r+');
        flock($fp,LOCK_EX);
        $mail['last_check']= intval(fread($fp, filesize($mail['file'])));

        // Si c'est plus que sync min on check les nouveaux mails
        if($mail['last_check']<time()-(60*$mail['sync_min']))
        {
            // On met à jour la date de dernier check
            rewind($fp);
            fwrite($fp,time());
            fclose($fp);

            if($inbox=@imap_open($mail['host'], $mail['username'], $mail['password']))
            {
                // On prend les emails depuis la dernière date de vérification, et on prend seulement les non lu 
                $emails= imap_search($inbox,'SINCE "'.date('Y-m-d',$mail['last_check']).'" UNSEEN');

                if($emails) foreach($emails as $email_number){

                    $message_overview = imap_fetch_overview($inbox,$email_number,0);

                    // Ce dont on a besoin pour poster le sujet
                    $cur_mail= array(
                        'subject'   => imap_utf8($message_overview[0]->subject),
                        'message'   => quoted_printable_decode(imap_fetchbody($inbox,$email_number,1)),
                        'date'      => strtotime($message_overview[0]->date),
                        'now'       => time()
                    );

                    // On insère le sujet avec la date actuel ( pour que les membres voient que c'est nouveau )
                    if($db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, sticky, forum_id) VALUES(\''.$db->escape($mail['poster']).'\', \''.$db->escape($cur_mail['subject']).'\', '.$cur_mail['now'].', '.$cur_mail['now'].', \''.$db->escape($mail['poster']).'\', 0, '.$mail['forum_id'].')'))
                    {

                        $new_tid = $db->insert_id();

                        // On insère le message avec la bonne date ( pour que la bonne date d'envoi du mail y soit )
                        if($db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($mail['poster']).'\', \'127.0.0.1\', NULL, \''.$db->escape($cur_mail['message']).'\', 1, '.$cur_mail['date'].', '.$new_tid.')'))
                        {
                            $new_pid = $db->insert_id();

                            // On met à jour le topic avec le dernier message ( qu'on vient de poster )
                            $db->query('UPDATE '.$db->prefix.'topics SET last_post_id='.$new_pid.', first_post_id='.$new_pid.' WHERE id='.$new_tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());
                            
                            if(!function_exists('update_search_index'))
		                        require PUN_ROOT.'include/search_idx.php';
                            
                            update_search_index('post', $new_pid, $cur_mail['message'], $cur_mail['subject']);

                            update_forum($mail['forum_id']);
                       }
                    }
                }
            }
        }
        else
            fclose($fp);
    }
    unset($mail);
}

donc ça prendrait les nouveaux messages ( pas encore "vu" ) et ça les mettrais dans la section voulue ( en tant qu'invité avec le pseudo voulu ), j'ai testé avec un compte gmail et ça marchait.

Hors ligne

Pied de page des forums