+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 10/24/2009 *
+ * =================== Last change: 06/20/2010 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : daily_birthday.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Sends out birthday mails on reset *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Versendet Geburtstagsmails beim Reset *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009, 2010 by Mailer Developer Team *
+ * For more information visit: http://www.mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} elseif ((!isHtmlOutputMode()) || (!isResetModeEnabled())) {
+ // Do not execute when script is in CSS mode
+ return;
+} elseif (!isExtensionActive('birthday')) {
+ logDebugMessage(__FILE__, __LINE__, 'Not resetting, needed extension disabled.');
+ return;
+}
+
+// Debug line
+//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset started.');
+
+// Get current day (01 to 31), month (01 to 12) and year (4-digits year)
+$day = getDay();
+$month = getMonth();
+$year = getYear();
+
+// Shall I include only active members?
+$add = '%s'; $value = '';
+if ((getConfig('birthday_active')) && (isExtensionActive('autopurge')) && (getConfig('autopurge_inactive') == 'Y') && (getApInactiveSince() > 0)) {
+ $add = " AND `last_online` >= (UNIX_TIMESTAMP() - {?ap_inactive_since?})";
+} // END - if
+
+// Only confirmed members shall receive birthday mails...
+$result_birthday = SQL_QUERY_ESC("SELECT `userid`, `email`, `birth_year`
+FROM
+ `{?_MYSQL_PREFIX?}_user_data`
+WHERE
+ `status`='CONFIRMED' AND
+ `birth_day`=%s AND
+ `birth_month`=%s AND
+ `birthday_sent` < (UNIX_TIMESTAMP() - ({?ONE_DAY?} * 364))
+ ".$add."
+ORDER BY
+ `userid` ASC",
+ array($day, $month, $value), __FILE__, __LINE__);
+
+if (!SQL_HASZERONUMS($result_birthday)) {
+ // Start sending out birthday mails
+ while ($content = SQL_FETCHARRAY($result_birthday)) {
+ // Calculate own timestamp for birthday and today
+ $bd = $content['birth_year'] + 12 * $month + 365 * $day;
+ $now = $year + 12 * $month + 365 * $day;
+
+ // Simply subtract both values and you got the age... :)
+ $age = $now - $bd;
+
+ if (getConfig('birthday_points') > 0) {
+ // Add more entries to the array
+ $content['age'] = $age;
+ $content['check'] = '';
+
+ // @TODO 4 is hard-coded here, should we move it out in config?
+ for ($idx = '0'; $idx < 4; $idx++) {
+ $content['check'] .= generateRandomCode('8', mt_rand(0, $month . $day), $content['userid'], ($age * ($idx + 1)));
+ } // END - for
+
+ // Insert row into database
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_birthday` (`userid`, `points`, `chk_value`) VALUES (%s,{?birthday_points?},'%s' )",
+ array(
+ bigintval($content['userid']),
+ $content['check']
+ ), __FILE__, __LINE__);
+
+ // Load email template with confirmation link
+ $message = loadEmailTemplate('member_birthday_confirm', $content, bigintval($content['userid']));
+ } else {
+ // Load default email template and fill in the age
+ $message = loadEmailTemplate('member_birthday', $age, $content['userid']);
+ }
+
+ // Send email
+ sendEmail($content['email'], '{--MEMBER_HAPPY_BIRTHDAY_SUBJECT--}', $message);
+
+ // Remember him that he has received a birthday mail
+ SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `birthday_sent`=UNIX_TIMESTAMP() WHERE `userid`=%s LIMIT 1",
+ array(bigintval($content['userid'])), __FILE__, __LINE__);
+ } // END - while
+
+ // Free memory
+ SQL_FREERESULT($result_birthday);
+} // END - if
+
+// Debug line
+//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset ended.');
+
+// [EOF]
+?>