Renamed ifSqlHasZeroNums() to ifSqlHasZeroNumRows() and improved some queries.
[mailer.git] / inc / daily / daily_holiday.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 12/10/2005 *
4  * ===================                          Last change: 06/20/2010 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : daily_holiday.php                                *
8  * -------------------------------------------------------------------- *
9  * Short description : Things to be done on daily reset                 *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Dinge, die beim taeglichen Reset erledigt werden *
12  * -------------------------------------------------------------------- *
13  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
14  * Copyright (c) 2009 - 2015 by Mailer Developer Team                   *
15  * For more information visit: http://mxchange.org                      *
16  *                                                                      *
17  * This program is free software; you can redistribute it and/or modify *
18  * it under the terms of the GNU General Public License as published by *
19  * the Free Software Foundation; either version 2 of the License, or    *
20  * (at your option) any later version.                                  *
21  *                                                                      *
22  * This program is distributed in the hope that it will be useful,      *
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
25  * GNU General Public License for more details.                         *
26  *                                                                      *
27  * You should have received a copy of the GNU General Public License    *
28  * along with this program; if not, write to the Free Software          *
29  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
30  * MA  02110-1301  USA                                                  *
31  ************************************************************************/
32
33 // Some security stuff...
34 if (!defined('__SECURITY')) {
35         die();
36 } elseif ((!isHtmlOutputMode()) || ((!isDailyResetEnabled()) && (getConfig('holiday_mode') == 'RESET'))) {
37         // Do not execute when script is in non-HTML mode or no daily reset
38         return;
39 } elseif (!isExtensionActive('holiday')) {
40         if (isDebugModeEnabled()) logDebugMessage(__FILE__, __LINE__, 'Not resetting, needed extension ext-holiday disabled.');
41         return;
42 }
43
44 // Debug line
45 //* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset started.');
46
47 // Check for holidays we need to enable and send email to user
48 $result_main = sqlQuery("SELECT
49         `userid`,
50         `holiday_activated`
51 FROM
52         `{?_MYSQL_PREFIX?}_user_data`
53 WHERE
54         `holiday_activated` > 0 AND
55         `holiday_activated` < UNIX_TIMESTAMP() AND
56         `holiday_active`='N'
57 ORDER BY
58         `holiday_activated` ASC",
59 __FILE__, __LINE__);
60
61 // Entries found?
62 if (!ifSqlHasZeroNumRows($result_main)) {
63         // Init SQLs
64         initSqls();
65
66         // We have found at least one useraccount so let's check it...
67         while ($content = sqlFetchArray($result_main)) {
68                 // Check if his holiday can be activated
69                 $result_holiday = sqlQueryEscaped("SELECT
70         `holiday_start`,
71         `holiday_end`
72 FROM
73         `{?_MYSQL_PREFIX?}_user_holidays`
74 WHERE
75         `userid`=%s AND
76         `holiday_start` <= UNIX_TIMESTAMP() AND
77         `holiday_end` > UNIX_TIMESTAMP()
78 LIMIT 1",
79                         array(bigintval($content['userid'])), __FILE__, __LINE__);
80
81                 // Is there an entry?
82                 if (sqlNumRows($result_holiday) == 1) {
83                         // Okay, this user can be send away to holiday...
84                         $content = merge_array($content, sqlFetchArray($result_holiday));
85
86                         // Prepare all data for the template
87                         $content = merge_array($content, array(
88                                 'activated' => generateDateTime($content['holiday_activated'], 1),
89                                 'start'     => generateDateTime($content['holiday_start']    , 1),
90                                 'end'       => generateDateTime($content['holiday_end']      , 1)
91                         ));
92
93                         // Send email to user
94                         $message = loadEmailTemplate('member_holiday_activated', $content, $content['userid']);
95                         sendEmail($content['userid'], '{--MEMBER_HOLIDAY_ACTIVATED_SUBJECT--}', $message);
96
97                         // Update account
98                         addSql(sqlQueryEscaped("UPDATE
99         `{?_MYSQL_PREFIX?}_user_data`
100 SET
101         `holiday_active`='Y'
102 WHERE
103         `userid`=%s
104 LIMIT 1",
105                                 array(bigintval($content['userid'])), __FILE__, __LINE__, FALSE));
106                 } // END - if
107
108                 // Free memory
109                 sqlFreeResult($result_holiday);
110         } // END - while
111
112         // Run all SQLs
113         runFilterChain('run_sqls');
114 } // END - if
115
116 // Free memory
117 sqlFreeResult($result_main);
118
119 // Stop currently activated holidays
120 stopHolidays();
121
122 // Debug line
123 //* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset ended.');
124
125 // [EOF]
126 ?>