(no commit message)
[mailer.git] / 0.2.1 / inc / modules / member / what-holiday.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 07/24/2004 *\r
4  * ================                             Last change: 07/31/2004 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : what-holiday.php                                 *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : Holiday requests                                 *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Urlaubsschaltungen                               *\r
12  * -------------------------------------------------------------------- *\r
13  *                                                                      *\r
14  * -------------------------------------------------------------------- *\r
15  * Copyright (c) 2003 - 2007 by Roland Haeder                           *\r
16  * For more information visit: http://www.mxchange.org                  *\r
17  *                                                                      *\r
18  * This program is free software; you can redistribute it and/or modify *\r
19  * it under the terms of the GNU General Public License as published by *\r
20  * the Free Software Foundation; either version 2 of the License, or    *\r
21  * (at your option) any later version.                                  *\r
22  *                                                                      *\r
23  * This program is distributed in the hope that it will be useful,      *\r
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *\r
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *\r
26  * GNU General Public License for more details.                         *\r
27  *                                                                      *\r
28  * You should have received a copy of the GNU General Public License    *\r
29  * along with this program; if not, write to the Free Software          *\r
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *\r
31  * MA  02110-1301  USA                                                  *\r
32  ************************************************************************/\r
33 \r
34 // Some security stuff...\r
35 if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))\r
36 {\r
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";\r
38         require($INC);\r
39 }\r
40  elseif (!IS_LOGGED_IN())\r
41 {\r
42         LOAD_URL(URL."/modules.php?module=index");\r
43 }\r
44  elseif ((!EXT_IS_ACTIVE("holiday")) && (!IS_ADMIN()))\r
45 {\r
46         ADD_FATAL(EXTENSION_PROBLEM_EXT_INACTIVE, "holiday");\r
47         return;\r
48 }\r
49 \r
50 // Add description as navigation point\r
51 ADD_DESCR("member", basename(__FILE__));\r
52 \r
53 // Check for running mail orders in pool\r
54 $result1 = SQL_QUERY_ESC("SELECT timestamp FROM "._MYSQL_PREFIX."_pool\r
55 WHERE sender=%d ORDER BY timestamp DESC LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
56 \r
57 // Check for sent mail orders in stats\r
58 $result2 = SQL_QUERY_ESC("SELECT timestamp_ordered FROM "._MYSQL_PREFIX."_user_stats\r
59 WHERE userid=%d ORDER BY timestamp_ordered DESC LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
60 \r
61 if ((SQL_NUMROWS($result1) == 1) || (SQL_NUMROWS($result2) == 1))\r
62 {\r
63         // Mail order found!\r
64         list($stamp1) = SQL_FETCHROW($result1);\r
65         list($stamp2) = SQL_FETCHROW($result2);\r
66         if (empty($stamp1)) $stamp1 = 0;\r
67         if (empty($stamp2)) $stamp2 = 0;\r
68 \r
69         if ((($stamp1 + $CONFIG['holiday_lock']) > time()) || (($stamp2 + $CONFIG['holiday_lock']) > time()))\r
70         {\r
71                 // Mail order is to close away!\r
72                 unset($_POST['ok']);\r
73                 unset($_POST['stop']);\r
74 \r
75                 if (($stamp1 + $CONFIG['holiday_lock']) > time())\r
76                 {\r
77                         // Mail found in pool\r
78                         $stamp = $stamp1;\r
79                 }\r
80                  else\r
81                 {\r
82                         // Mail found in stats\r
83                         $stamp = $stamp2;\r
84                 }\r
85 \r
86                 // Display message and exit here\r
87                 LOAD_TEMPLATE("admin_settings_saved", false, HOLIDAY_MEMBER_ORDER_1.MAKE_DATETIME($stamp, "1").HOLIDAY_MEMBER_ORDER_2);\r
88                 return;\r
89         }\r
90 }\r
91 \r
92 // Free memory\r
93 SQL_FREERESULT($result1);\r
94 SQL_FREERESULT($result2);\r
95 \r
96 if (isset($_POST['ok']))\r
97 {\r
98         // Check holiday request...\r
99         $START = mktime(0, 0, 0, $_POST['start_month'], $_POST['start_day'], $_POST['start_year']);\r
100         $END   = mktime(0, 0, 0, $_POST['end_month']  , $_POST['end_day']  , $_POST['end_year']  );\r
101 \r
102         // Test both values\r
103         $TEST = $END - $START;\r
104         if (($TEST < 0) || ($TEST > (ONE_DAY * $CONFIG['holiday_max'])) || ($START < time()) || ($END < time()))\r
105         {\r
106                 // Time test failed\r
107                 unset($_POST['ok']);\r
108         }\r
109          else\r
110         {\r
111                 // Everything went okay so let's store his request and send mails\r
112                 $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_user_holidays (userid, holiday_start, holiday_end, comments) VALUES ('%s', '%s', '%s', '%s')",\r
113                  array($GLOBALS['userid'], $START, $END, $_POST['comments']), __FILE__, __LINE__);\r
114 \r
115                 // Activate holiday system\r
116                 $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data\r
117 SET holiday_active='N', holiday_activated=UNIX_TIMESTAMP()\r
118 WHERE userid=%d LIMIT 1",\r
119                  array($GLOBALS['userid']), __FILE__, __LINE__);\r
120 \r
121                 // Prepare constants\r
122                 define('_START_DAY'  , $_POST['start_day']);\r
123                 define('_START_MONTH', $MONTH_DESCR[$_POST['start_month']]);\r
124                 define('_START_YEAR' , $_POST['start_year']);\r
125                 define('_END_DAY'    , $_POST['end_day']);\r
126                 define('_END_MONTH'  , $MONTH_DESCR[$_POST['end_month']]);\r
127                 define('_END_YEAR'   , $_POST['end_year']);\r
128 \r
129                 // Send mail to member\r
130                 $msg = LOAD_EMAIL_TEMPLATE("member_holiday_request", $_POST['comments'], $GLOBALS['userid']);\r
131                 SEND_EMAIL($GLOBALS['userid'], HOLIDAY_MEMBER_SUBJECT, $msg);\r
132 \r
133                 // Send mail to all admins\r
134                 $msg = LOAD_EMAIL_TEMPLATE("admin_holiday_request", $_POST['comments'], $GLOBALS['userid']);\r
135                 if (GET_EXT_VERSION("admins") >= "0.4.1")\r
136                 {\r
137                         SEND_ADMIN_EMAILS_PRO(HOLIDAY_ADMIN_SUBJECT, "admin_holiday_request", $_POST['comments'], $GLOBALS['userid']);\r
138                 }\r
139                  else\r
140                 {\r
141                         SEND_ADMIN_EMAILS(HOLIDAY_ADMIN_SUBJECT, $msg);\r
142                 }\r
143 \r
144                 // Create task\r
145                 $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_task_system (userid, assigned_admin, status, task_type, subject, text, task_created) VALUES ('%s', '0', 'NEW', 'HOLIDAY_REQUEST', '%s', '%s', UNIX_TIMESTAMP())",\r
146                  array($GLOBALS['userid'], HOLIDAY_ADMIN_SUBJECT, addslashes($msg)), __FILE__, __LINE__);\r
147 \r
148                 // Display message\r
149                 LOAD_TEMPLATE("admin_settings_saved", false, HOLIDAY_IS_ACTIVATED_NOW);\r
150         }\r
151 }\r
152 \r
153 // Holiday shall be ended now\r
154 if (isset($_POST['stop']))\r
155 {\r
156         // Okay, end the holiday here...\r
157         $result = SQL_QUERY_ESC("SELECT holiday_active, holiday_activated FROM "._MYSQL_PREFIX."_user_data\r
158 WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
159         list($active, $locked) = SQL_FETCHROW($result);\r
160         SQL_FREERESULT($result);\r
161 \r
162         if (($active == "Y") && (($locked + $CONFIG['holiday_lock']) < time()))\r
163         {\r
164                 // Load data\r
165                 $result = SQL_QUERY_ESC("SELECT holiday_start, holiday_end FROM "._MYSQL_PREFIX."_user_holidays\r
166 WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
167                 if (SQL_NUMROWS($result) == 1)\r
168                 {\r
169                         // Data was found\r
170                         list($start, $end) = SQL_FETCHROW($result);\r
171                         SQL_FREERESULT($result);\r
172 \r
173                         // Prepare it for the template\r
174                         define('__HOLIDAY_START', MAKE_DATETIME($start, "3"));\r
175                         define('__HOLIDAY_END'  , MAKE_DATETIME($end  , "3"));\r
176 \r
177                         // Deactivate it now\r
178                         $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data\r
179 SET holiday_active='N', holiday_activated='0'\r
180 WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
181 \r
182                         // Remove entry\r
183                         $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_user_holidays\r
184 WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
185 \r
186                         // Send email to admin\r
187                         if (GET_EXT_VERSION("admins") >= "0.4.1")\r
188                         {\r
189                                 SEND_ADMIN_EMAILS_PRO(HOLIDAY_ADMIN_DEAC_SUBJ, "admin_holiday_deactivated", "", $GLOBALS['userid']);\r
190                         }\r
191                          else\r
192                         {\r
193                                 $msg = LOAD_EMAIL_TEMPLATE("admin_holiday_deactivated", "", $GLOBALS['userid']);\r
194                                 SEND_ADMIN_EMAILS(HOLIDAY_ADMIN_DEAC_SUBJ, $msg);\r
195                         }\r
196 \r
197                         // Display message to user\r
198                         LOAD_TEMPLATE("admin_settings_saved", false, HOLIDAY_MEMBER_DEACTIVATED_NOW);\r
199                 }\r
200                  else\r
201                 {\r
202                         // Display message to user\r
203                         LOAD_TEMPLATE("admin_settings_saved", false, HOLIDAY_MEMBER_CANNOT_DEACTIVATE);\r
204                 }\r
205         }\r
206          elseif ($active == "Y")\r
207         {\r
208                 // To fast!\r
209                 LOAD_TEMPLATE("admin_settings_saved", false, HOLIDAY_MEMBER_LOCKED);\r
210         }\r
211 }\r
212 \r
213 // If something is wrong or link in menu is just clicked display form\r
214 if ((!isset($_POST['ok'])) && (!isset($_POST['stop'])))\r
215 {\r
216         // Check if user is in holiday...\r
217         $result = SQL_QUERY_ESC("SELECT holiday_active, holiday_activated FROM "._MYSQL_PREFIX."_user_data\r
218 WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
219         list($active, $locked) = SQL_FETCHROW($result);\r
220         SQL_FREERESULT($result);\r
221 \r
222         // Check for lock\r
223         if (($locked + $CONFIG['holiday_lock']) < time())\r
224         {\r
225                 // User can deactivate his holiday request\r
226                 switch ($active)\r
227                 {\r
228                 case "Y": // Display deactivation form\r
229                         // Load starting and ending date\r
230                         $result = SQL_QUERY_ESC("SELECT holiday_start, holiday_end FROM "._MYSQL_PREFIX."_user_holidays\r
231 WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
232                         if (SQL_NUMROWS($result) == 1)\r
233                         {\r
234                                 // Data was found\r
235                                 list($start, $end) = SQL_FETCHROW($result);\r
236                                 SQL_FREERESULT($result);\r
237 \r
238                                 // Prepare it for the template\r
239                                 define('__HOLIDAY_START', MAKE_DATETIME($start , "3"));\r
240                                 define('__HOLIDAY_END'  , MAKE_DATETIME($end   , "3"));\r
241                                 define('__HOLIDAY_LOCK' , MAKE_DATETIME($locked, "1"));\r
242 \r
243                                 // Load template\r
244                                 LOAD_TEMPLATE("member_holiday_deactivate");\r
245                         }\r
246                          else\r
247                         {\r
248                                 // Free memory\r
249                                 SQL_FREERESULT($result);\r
250 \r
251                                 // Remove entry and reload URL\r
252                                 $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data\r
253 SET holiday_active='N'\r
254 WHERE userid=%d LIMIT 1", array($GLOBALS['userid']), __FILE__, __LINE__);\r
255                                 LOAD_URL(URL."/modules.php?module=login&amp;what=holiday");\r
256                                 return;\r
257                         }\r
258                         break;\r
259 \r
260                 case "N": // Display activation form\r
261                         // Starting day\r
262                         define('_START_DAY'  , ADD_SELECTION("day"  , date("d", (time() + ONE_DAY)), "start"));\r
263                         define('_START_MONTH', ADD_SELECTION("month", date("m", (time() + ONE_DAY)), "start"));\r
264                         define('_START_YEAR' , ADD_SELECTION("year" , date("Y", (time() + ONE_DAY)), "start"));\r
265 \r
266                         // Calcualte ending date\r
267                         $D = date("d", time() + ONE_DAY + (ONE_DAY * $CONFIG['holiday_max']));\r
268                         $M = date("m", time() + ONE_DAY + (ONE_DAY * $CONFIG['holiday_max']));\r
269                         $Y = date("Y", time() + ONE_DAY + (ONE_DAY * $CONFIG['holiday_max']));\r
270 \r
271                         // Ending day\r
272                         define('_END_DAY'  , ADD_SELECTION("day"  , $D, "end"));\r
273                         define('_END_MONTH', ADD_SELECTION("month", $M, "end"));\r
274                         define('_END_YEAR' , ADD_SELECTION("year" , $Y, "end"));\r
275 \r
276                         // Copy value from configuration\r
277                         define('__HOLIDAY_MAX', $CONFIG['holiday_max']);\r
278 \r
279                         // Output form\r
280                         LOAD_TEMPLATE("member_holiday_form");\r
281                         break;\r
282                 }\r
283         }\r
284          else\r
285         {\r
286                 // To fast!\r
287                 LOAD_TEMPLATE("admin_settings_saved", false, HOLIDAY_MEMBER_LOCKED);\r
288         }\r
289 }\r
290 //\r
291 ?>\r