Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Script exécuté le premier du Mois
- * Récupération des données CDR et mise en page sur un CSV
- * suivit de l'envoi d'un email.
- **/
- /**
- * Les Erreurs et Succès sont ajoutés au syslog du serveur.
- **/
- /**
- * --- Définition des Fonctions ---
- **/
- // Fonction pour l'envoi de l'email avec une pièce jointe
- /*
- function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
- $file = $path.$filename;
- $file_size = filesize($file);
- $handle = fopen($file, "r");
- $content = fread($handle, $file_size);
- fclose($handle);
- $content = chunk_split(base64_encode($content));
- $uid = md5(uniqid(time()));
- $header = "From: ".$from_name." <".$from_mail.">\r\n";
- $header .= "Reply-To: ".$replyto."\r\n";
- $header .= "MIME-Version: 1.0\r\n";
- $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
- $header .= "This is a multi-part message in MIME format.\r\n";
- $header .= "--".$uid."\r\n";
- $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
- $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
- $header .= $message."\r\n\r\n";
- $header .= "--".$uid."\r\n";
- $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
- $header .= "Content-Transfer-Encoding: base64\r\n";
- $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
- $header .= $content."\r\n\r\n";
- $header .= "--".$uid."--";
- openlog('email', LOG_NDELAY, LOG_USER);
- if (mail($mailto, $subject, "", $header)) {
- syslog(LOG_NOTICE, "Email Send! (".$mailto.")");
- } else {
- syslog(LOG_ERR, "Email Error!");
- }
- }
- */
- // Fonction pour l'envoi de l'email avec une pièce jointe avec phpmailer
- function send_email_with_attachment($from,$destination,$subject,$body,$file=null){
- // Function Working: send_email_with_attachment(MAIL SRC, MAIL DEST, SUBJECT, MAIL BODY, OPTIONAL ATTACHMENT FILE);
- require 'mail/PHPMailerAutoload.php'; // user phpmailer to send emails
- $mail = new PHPMailer;
- $mail->isSMTP();
- $mail->Host = '172.16.101.19';
- $mail->SMTPAuth = true;
- $mail->Username = 'EMAIL LOGIN';
- $mail->Password = 'EMAIL PASSWORD';
- $mail->SMTPSecure = 'tls';
- $mail->Port = 587;
- $mail->setFrom($from);
- $mail->addAddress($destination);
- if (!isset($file)) {$mail->addAttachment($file);} // Si un fichier est présent
- $mail->isHTML(true);
- $mail->Subject = $subject;
- $mail->Body = $body;
- if(!$mail->send()){syslog(LOG_ERR, "Email Error!");}else{syslog(LOG_NOTICE, "Email Send! (".$mailto.")");} // Ajout du status dans syslog
- }
- // Fonction pour executer une requête SQL
- function sql_request($request,$database){
- // SQL Connexion
- $db = mysql_connect('localhost', 'root', 'debian');
- // SQL Selection de la database
- mysql_select_db($database,$db);
- // SQL Exécution de la requête
- if (empty($request)) {
- syslog(LOG_ERR, "No Data in SQL Request. script abort");
- die("No SQL Data");
- }
- return mysql_query($request) or die(syslog(LOG_ERR, "SQL Request Error: ".mysql_error()));
- }
- // Fonction pour réupérer le mois précédent
- function get_month($value){ // +X / -X
- date_default_timezone_set('Europe/Paris');
- $month = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
- return $month[date("n").$value];
- }
- // Fonction pour ranger les informations récupérées dans un tableau
- function traitement_sql($arg1,$arg2=null,$arg3=null,$arg4=null,$arg5=null,$arg6=null,$arg7=null,$arg8=null,$arg9=null,$arg10=null){
- for ($i=1; $i < func_num_args(); $i++) {
- $argX = "arg".$i;
- if (preg_match("/DEFINE(.*)/", ${$argX},$content)){
- if (preg_match("/month(.*)/", ${$argX},$valueGetMonth)){
- $month = get_month($valueGetMonth);
- }
- ${$argX} = ${$content[1]};
- }
- }
- while($data = mysql_fetch_assoc($req)){
- $data[] =
- array(
- $data[$arg1],
- $data[$arg2],
- $data[$arg3],
- $data[$arg4],
- $data[$arg5],
- $data[$arg6],
- $data[$arg7],
- $data[$arg8],
- $data[$arg9],
- $data[$arg10],
- );
- }
- $data = array_map('array_filter', $data);
- $data = array_filter($data);
- // Fermeture de la connexion sql
- mysql_close();
- // Return multidimensional tab with content values
- return array_filter($data);
- }
- // Fonction pour creer un fichier csv à partir des données précédentes
- function create_csv_file($data,$filename,$delimiter){
- // Creation du fichier CSV
- $csv_file = fopen($filename, 'w+');
- // Si le fichier existe, vider le contenu:
- ftruncate($csv_file,0);
- fprintf($csv_file, chr(0xEF).chr(0xBB).chr(0xBF));
- fputcsv($csv_file, "TYPE D'APPEL", $delimiter);
- fputcsv($csv_file, "DATE", $delimiter);
- fputcsv($csv_file, "MOIS", $delimiter);
- fputcsv($csv_file, "DUREE", $delimiter);
- fputcsv($csv_file, "N° APPELE", $delimiter);
- foreach($data as $ligne){
- fputcsv($csv_file, $ligne, $delimiter);
- }
- fclose($csv_file);
- return $filename;
- }
- /**
- * --- Mise en Oeuvre des Fonctions ---
- **/
- // Requête SQL: INCOMPLETE
- $previous_month = get_month('-1');
- $sql = "SELECT clid,src,dst,duration,cnum,cnam,outbound_cnum,outbound_cnam
- FROM cdr
- WHERE calldate
- BETWEEN ((
- SELECT DATE_SUB(curdate(),INTERVAL (DAY(curdate()).$previous_month) DAY)
- ))
- AND CURDATE()
- ORDER BY calldate DESC";
- // function sql_request: (arg1: request, arg2: database)
- sql_request($sql,'asteriskcdrdb');
- // Traitement des données (préparation pour création d'un fichier CSV) => DEFINE définit une Valeur hors SQL, déjà implémenté.
- // Pour récupérer le mois : DEFINEmonth suivi de + / - la valeur.
- $tab_result = traitement_sql('clid','src','DEFINEmonth-1','dst','duration','cnum','cnam','outbound_cnum','outbound_cnam');
- // Appel de la fonction de création
- $return_csv = create_csv_file($tab_result,'Rapport-'.$previous_month.'-Standard CFPR Dinard',',');
- // Exécution de la fonction d'envoi de mails
- $from = "Asterisk.server@roullier.com";
- $destination;
- $subject = "Rapport Standard Accueil CFP Dinard - ".$previous_month;
- $body = "Mail automatique:\n\n\nVous trouverez ci-joint le rapport du mois de ".$previous_month." pour le Standard téléphonique de l'accueil CFPR de Dinard.";
- $file = $return_csv;
- send_email_with_attachment($from,$destination,$subject,$body,$file);
- /**
- * Espace Commentaires / Modifications
- ***
- Creation du CSV dans l'ordre:
- Type d'appel (Retranscrire entrant vers...)
- Date
- Mois
- Durée
- CallerID
- Modifier liste exécution CSV après test sur serveur
- Envoi du mail via phpmailer? sendmail? mail? => qui demande de modifier une fichier de conf (impact sur asterisk?)
- Placement du Fichier: /var/www/ et phpmailer dans /var/wwww/mail
- Droit du fichier : apache2
- ***************************************/
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement