Renamed ifSqlHasZeroNums() to ifSqlHasZeroNumRows() and improved some queries.
[mailer.git] / inc / daily / daily_birthday.php
index da2c57f9ee20eb76ab400c3abc98da2132ca96fa..2b6bcc195215858acb3717086b5d9cacd50dbe58 100644 (file)
  * -------------------------------------------------------------------- *
  * Kurzbeschreibung  : Versendet Geburtstagsmails beim Reset            *
  * -------------------------------------------------------------------- *
- * $Revision::                                                        $ *
- * $Date::                                                            $ *
- * $Tag:: 0.2.1-FINAL                                                 $ *
- * $Author::                                                          $ *
- * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
- * Copyright (c) 2009 - 2012 by Mailer Developer Team                   *
+ * Copyright (c) 2009 - 2015 by Mailer Developer Team                   *
  * For more information visit: http://mxchange.org                      *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
 // Some security stuff...
 if (!defined('__SECURITY')) {
        die();
-} elseif ((!isHtmlOutputMode()) || (!isResetModeEnabled())) {
-       // Do not execute when script is in CSS mode
+} elseif ((!isHtmlOutputMode()) || (!isDailyResetEnabled())) {
+       // Do not execute when script is in non-HTML mode
        return;
 } elseif (!isExtensionActive('birthday')) {
        // Extension not active/installed
-       logDebugMessage(__FILE__, __LINE__, 'Not resetting, needed extension ext-birthday disabled');
+       if (isDebugModeEnabled()) logDebugMessage(__FILE__, __LINE__, 'Not resetting, needed extension ext-birthday disabled.');
        return;
 }
 
 // Debug line
-//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset started');
+//* 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();
 
-// Init variable
+// Init variables
 $lastOnline = '';
+$excludeSql = '';
 
 // Shall I include only active members?
+// @TODO Move this out to an extension
 if ((getConfig('birthday_active')  == 'Y') && (isExtensionActive('autopurge')) && ((getApInactiveSince() > 0))) {
-       $add = ' AND (UNIX_TIMESTAMP() - `last_online`) < {?ap_inactive_since?}';
+       $excludeSql = ' AND (UNIX_TIMESTAMP() - `d`.`last_online`) < {?ap_inactive_since?}';
 } // END - if
 
 // Only confirmed members shall receive birthday mails...
-$result_birthday = SQL_QUERY_ESC("SELECT
-       `userid`,
-       `email`,
-       `birth_year`
+$result_birthday = sqlQueryEscaped("SELECT
+       `d`.`userid`,
+       `d`.`email`,
+       `d`.`birth_year`
 FROM
-       `{?_MYSQL_PREFIX?}_user_data`
+       `{?_MYSQL_PREFIX?}_user_data` AS `d`
 WHERE
-       `status`='CONFIRMED'
-       " . runFilterChain('user_exclusion_sql', ' ') . " AND
-       `birth_day`=%s AND
-       `birth_month`=%s AND
-       `birthday_sent` < (UNIX_TIMESTAMP() - ({?ONE_DAY?} * 364))
-       ".$lastOnline."
+       `d`.`status`='CONFIRMED'
+       " . runFilterChain('user_exclusion_sql', ' ' . $excludeSql) . " AND
+       `d`.`birth_day`=%s AND
+       `d`.`birth_month`=%s AND
+       `d`.`birthday_sent` < (UNIX_TIMESTAMP() - ({?ONE_DAY?} * 364))
+       " . $lastOnline . "
 ORDER BY
-       `userid` ASC",
+       `d`.`userid` ASC",
        array($day, $month), __FILE__, __LINE__);
 
-if (!SQL_HASZERONUMS($result_birthday)) {
+if (!ifSqlHasZeroNumRows($result_birthday)) {
        // Start sending out birthday mails
-       while ($content = SQL_FETCHARRAY($result_birthday)) {
+       while ($content = sqlFetchArray($result_birthday)) {
                // Calculate own timestamp for birthday and today
                $bd  = $content['birth_year'] + 12 * $month + 365 * $day;
                $now = $year  + 12 * $month + 365 * $day;
@@ -96,13 +93,13 @@ if (!SQL_HASZERONUMS($result_birthday)) {
                        $content['age']    = $age;
                        $content['check']  = '';
 
-                       // @TODO 4 is hard-coded here, should we move it out in config?
+                       // Generate long random code
                        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' )",
+                       sqlQueryEscaped("INSERT INTO `{?_MYSQL_PREFIX?}_user_birthday` (`userid`, `points`, `chk_value`) VALUES (%s,{?birthday_points?},'%s' )",
                                array(
                                        bigintval($content['userid']),
                                        $content['check']
@@ -119,16 +116,16 @@ if (!SQL_HASZERONUMS($result_birthday)) {
                sendEmail($content['userid'], '{--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",
+               sqlQueryEscaped("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);
+       sqlFreeResult($result_birthday);
 } // END - if
 
 // Debug line
-//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset ended');
+//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset ended.');
 
 // [EOF]
 ?>