Hello,
okay the script below, will be run as a cron job, and should send out emails for events which the user has set a "reminder" for but at the moment, it sends them out for all time periods. and not just the next down if that makes sense.
PHP Code:
<?php include('../../includes/includes.php'); $result = $db->query("SELECT * FROM event_reminders") or $db->query_error(); while($row=$db->fetch_row($result)) { $event_res = $db->query("SELECT * FROM events WHERE id='{$row['event_id']}'") or $db->query_error(); $event = $db->fetch_row($event_res); $user_res = $db->query("SELECT * FROM users WHERE id='{$row['user_id']}'") or $db->query_error(); $user = $db->fetch_row($user_res); $headers = "FROM: [CALM CMS CRON] <$from_email> \r\n"; $headers.= "Message-ID: <".time()."-$from_email>\r\n"; $headers.= "X-Mailer: PHP v".phpversion()." CALM CMS Cron Bot.\r\n"; $headers.= 'MIME-Version: 1.0'."\r\n"; $headers.= "Content-type: text/html; charset=iso-8859-1 \n\n"; $headers.= "\n\n"; $body = ""; $body.= "Hello ".$user['fullname'].",<br />\r\n"; $body.= "You are recieving this email because you have set a reminder for ".$event['event'].".<br /><br />\r\n\r\n"; $body.= $event['event']." will be happening on ".date('l jS F y \a\t H:i', strtotime($event['date'])) ."<br /><br />\r\n\r\n"; $body.= "You may recieve future reminders for this event depending on your settings.<br />\r\n"; $body.= "To view, edit and delete this and other event reminders you have set, please visit: <a href='http://calmcharity.org/user/'>calmcharity.org/user/</a><br /><br />\r\n\r\n"; $body.= "Hope to see you there!<br /><br />\r\n\n"; $body.= "Regards,<br />\r\n"; $body.= "CALM<br /><br />\r\n\r\n"; $body.= "<em>This email was automatically generated. If you do not want to recieve event reminders,<br />\r\n please review your event reminder options in the user area, and do not subscribe to any more events.</em><br /> \n\r"; // If reminder set for month before event, and event email NOT sent. if($row['month'] == 1 && $row['month_sent'] == 0) { // If 30days is MORE than current time minus the event date. if(60*60*24*30 > (date('U') - strtotime($event['date']))) { mail($user['email'], "[CALM] Reminder for: ".$event['event'], $body, $headers); $db->query("UPDATE event_reminders SET month_sent='1' WHERE id='{$row['id']}'"); echo 'Month email sent<br />'; } } // If reminder set for month before event, and event email NOT sent. if($row['2weeks'] == 1 && $row['2weeks_sent'] == 0) { // If 14days is MORE than current time minus the event date. if(60*60*24*14 > (date('U') - strtotime($event['date']))) { mail($user['email'], "[CALM] Reminder for: ".$event['event'], $body, $headers); $db->query("UPDATE event_reminders SET 2weeks_sent='1' WHERE id='{$row['id']}'"); echo '2 Week email sent<br />'; } } // If reminder set for month before event, and event email NOT sent. if($row['week'] == 1 && $row['week_sent'] == 0) { // If 14days is MORE than current time minus the event date. if(60*60*24*7 > (date('U') - strtotime($event['date']))) { mail($user['email'], "[CALM] Reminder for: ".$event['event'], $body, $headers); $db->query("UPDATE event_reminders SET weeks_sent='1' WHERE id='{$row['id']}'"); echo 'Week email sent<br />'; } } // If reminder set for month before event, and event email NOT sent. if($row['3days'] == 1 && $row['3days_sent'] == 0) { // If 14days is MORE than current time minus the event date. if(60*60*24*3 > (date('U') - strtotime($event['date']))) { mail($user['email'], "[CALM] Reminder for: ".$event['event'], $body, $headers); $db->query("UPDATE event_reminders SET 3days_sent='1' WHERE id='{$row['id']}'"); echo '3 day email sent<br />'; } } } // End while. ?>
The person who can tell me what im doing wrong will get some nice green rep. 
__________________
Discounted Web Hosting With XDnet! >> Get 25% of hosting~ Promo: Webmaster-talk <<
|