📄 notifybirthdays.php
字号:
<?phprequire_once("../inc/constants.inc.php");require_once("../inc/properties.inc.php");require_once("../inc/tools.inc.php");require_once("../inc/db.inc.php");header('Content-type: text/plain;');function booleanValue($val) { if ($val) return "1"; else return "0";}function formatEmailOrURL($value) { if (strpos($value, "@") != false) return "<a href=\"mailto:$value\">$value</a>"; else if (strstr($value, "http") != false) return "<a href=\"$value\">$value</a>"; else return $value;}$emailSent = 0;$today = getdate();$headers = "MIME-Version: 1.0\n";$headers .= "Content-type: text/html; charset=UTF-8\n";$headers .= "X-Priority: 3\n";$headers .= "X-MSMail-Priority: Normal\n";$headers .= "X-Mailer: GContact\n";$headers .= "From: \"".EMAIL_FROM_NAME."\" <".EMAIL_FROM_ADDRESS.">\n";$sqlUsers = "SELECT * FROM `user` WHERE notifybirthday != 0 AND lastmailsent != '". $today["year"] ."-". $today["mon"] ."-". $today["mday"] ."'";echo "[SQL USERS: $sqlUsers]\r\n";$resultUsers = mysql_query($sqlUsers) or die("Error in SQL : " . $sqlUsers);if ($resultUsers && mysql_num_rows($resultUsers) > 0) { while ($lineUser = mysql_fetch_assoc($resultUsers)) { $userId = $lineUser['id']; $userEmail = $lineUser['email']; $userNotify = $lineUser['notifybirthday']; $userSendDuringTheDay = ($userNotify & NOTIFY_BIRTHDAYS_DURING_THE_DAY) == NOTIFY_BIRTHDAYS_DURING_THE_DAY; $userSend1DayBefore = ($userNotify & NOTIFY_BIRTHDAYS_1_DAY_BEFORE) == NOTIFY_BIRTHDAYS_1_DAY_BEFORE; $userSend2DaysBefore = ($userNotify & NOTIFY_BIRTHDAYS_2_DAYS_BEFORE) == NOTIFY_BIRTHDAYS_2_DAYS_BEFORE; $userSend5DaysBefore = ($userNotify & NOTIFY_BIRTHDAYS_5_DAYS_BEFORE) == NOTIFY_BIRTHDAYS_5_DAYS_BEFORE; $userMailSent = false; echo "=> USER [id:$userId] [email:$userEmail] [notifyBirthdays:$userNotify]" . "[values {Today:". booleanValue($userSendDuringTheDay) ."} {1 Day before:". booleanValue($userSend1DayBefore) ."}" . " {2 Day before:". booleanValue($userSend2DaysBefore) ."} {5 Day before:". booleanValue($userSend5DaysBefore) ."}]\r\n"; $sqlBirthdays = "SELECT P.* FROM `person` P, `user_person` UP " . " WHERE P.id = UP.idperson AND UP.role != 1 AND P.birthdate != '0000-00-00' AND UP.iduser = '$userId'" . " ORDER BY DATE_FORMAT(P.birthdate, '%m'), DATE_FORMAT(P.birthdate, '%d'), P.firstname, P.lastname"; echo "[SQL BIRTHDAYS: $sqlBirthdays]\r\n"; $resultBirthdays = mysql_query($sqlBirthdays) or die("Error in SQL : " . $sqlBirthdays); $b = 0; $birthdays = getBirthdays($resultBirthdays, $b, $begin); $i = (!isset($begin)) ? 0 : $begin; $nb = 0; $dayDiff = 0; while (($nb < $b) && ($dayDiff < 6)) { $id = $birthdays[$i][ID]; $firstname = $birthdays[$i][FIRSTNAME]; $lastname = $birthdays[$i][LASTNAME]; $age = $birthdays[$i][AGE]; $birthdayDay = $birthdays[$i][BIRTHDATE_DAY]; $birthdayMonth = $birthdays[$i][BIRTHDATE_MONTH]; $birthdayYear = $birthdays[$i][BIRTHDATE_YEAR]; echo "\r\n\tLooking $firstname $lastname, $birthdayDay/$birthdayMonth/$birthdayYear [$age]\r\n"; $tsNow = time(); $year = $today["year"]; // If the birthday is next year, we must add an year if ($birthdayMonth <= $today["month"] && $birthdayDay < $today["mday"]) $year++; $tsBirtday = mktime (0, 0, 0, $birthdayMonth, $birthdayDay, $year); echo "\t[today : ".$today["mday"]."/".$today["mon"]."/".$today["year"]."] [Next Birthday : $birthdayDay/$birthdayMonth/$year]"; $tsDiff = $tsBirtday - $tsNow; $dayDiff = ceil( $tsDiff / SECONDS_IN_A_DAY); echo " [Difference in day : $dayDiff]\r\n"; $send = false; $msgBeforeBirthday = ""; if ($userSendDuringTheDay && $dayDiff == 0) { $send = true; $msgBeforeBirthday = "[AUJOURD'HUI]"; } if ($userSend1DayBefore && $dayDiff == 1) { $send = true; $msgBeforeBirthday = "[DEMAIN]"; } if ($userSend2DaysBefore && $dayDiff == 2) { $send = true; $msgBeforeBirthday = "[APRES-DEMAIN]"; } if ($userSend5DaysBefore && $dayDiff == 5) { $send = true; $msgBeforeBirthday = "[DANS 5 JOURS]"; } if ($send) { $mailSubject = "$msgBeforeBirthday Anniversaire de \"$lastname $firstname\" le ". $birthdayDay ."/". $birthdayMonth; if ($birthdayYear != "" && $birthdayYear != "0000") $mailSubject .= ", n茅(e) en $birthdayYear"; if ($age != "") $mailSubject .= ". Il ou elle fetera ses $age an" . (($age == 1) ? "" : "s"); $mailSubject .= "."; /* First line */ $mailContent = "<html>" . "<head>" . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />" . "<style>" . "body { margin: 10px; background-color: white; } " . "* { font-family: } " . "a,a:link,a:visited { color: #03006D; text-decoration: underline; } " . "a:hover { color: white; background-color: #03006D; text-decoration: underline; } " . "h1 { font-size: larger; margin-bottom: 5px; } " . "h2 { font-size: medium; margin: 10px 0px 0px 0px; border-bottom: 1px dashed black; } " . "h3 { font-size: small; margin: 10px 0px 0px 0px; font-size: 15px; border-bottom: 1px solid black; } " . "ul { margin: 0px; padding: 0px; padding-left: 20px; list-style-type: square; line-height: 20px; } " . "</style>" . "</head>" . "<body>" . "<h1>$mailSubject</h1>"; /* Adding contacts */ $sqlContacts = "SELECT * FROM contact WHERE idperson = $id"; $resultContacts = mysql_query($sqlContacts); if ($resultContacts && mysql_num_rows($resultContacts) > 0) { $mailContent .= "<h2>Contacts :</h2><ul>"; while ($lineCt = mysql_fetch_assoc($resultContacts)) { $mailContent .= "<li>". prepShowValue($lineCt['type']) ." : ". formatEmailOrURL(prepShowValue($lineCt['value'])) ."</li>"; } $mailContent .= "</ul>"; } /* Adding addresses */ $sqlAddress = "SELECT * FROM address WHERE idperson = $id"; $resultAddress = mysql_query($sqlAddress); if ($resultAddress && mysql_num_rows($resultAddress) > 0) { $mailContent .= "<h2>Adresses :</h2><ul>"; while ($lineAd = mysql_fetch_assoc($resultAddress)) { $mailContent .= "<li>". prepShowValue($lineAd['title']) ." : ". prepShowValue($lineAd['street']) ." ". prepShowValue($lineAd['zipcode']) ." ". prepShowValue($lineAd['town']) ." ". prepShowValue($lineAd['country']); if (isset($lineAd['note'])) $mailContent .= "<br/>". prepShowValue($lineAd['note']); $mailContent .= "</li>"; } $mailContent .= "</ul>"; } /* footer */ $mailContent .= "<h3>GContact / ". formatEmailOrURL( ("http". ((SSL) ? "s" : "") ."://". URL) ) . "</h3>" . "</body></html>"; echo "\t==> Sending email [to:$userEmail] [Subject: $mailSubject]\r\n[body: $mailContent]\r\n-------------------------------------\r\n"; if (mail($userEmail, $mailSubject, $mailContent, $headers)) { echo "\t[X] MAIL SENT !!!\r\n"; $emailSent++; if ($userMailSent == false) { $sqlUpdateUser = "UPDATE `user` SET lastmailsent = '". $today["year"] ."-". $today["mon"] ."-". $today["mday"] ."' WHERE id='$userId'"; echo "\t[SQL UPDATE USER (Last email sent): $sqlUpdateUser]\r\n"; $resultUpdateUser = mysql_query($sqlUpdateUser) or die("Error in SQL : " . $sqlUpdateUser); $userMailSent = !$userMailSent; } } else echo "\t[-] ERROR WHILE SENDING EMAIL !"; } else { echo "\t--- Ignoring $firstname $lastname"; } $i++; $nb++; if ($i >= $b) $i = 0; } }}echo "\r\n\r\n=========================================\r\n";echo "======= NUMBER OF EMAILS SENT : $emailSent =======\r\n";echo "=========================================\r\n";?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -