Project

General

Profile

1 317 stefan
<?php
2
3
// $Id$
4
5
/*
6
7
 Website Baker Project <http://www.websitebaker.org/>
8
 Copyright (C) 2004-2006, Ryan Djurovich
9
10
 Website Baker is free software; you can redistribute it and/or modify
11
 it under the terms of the GNU General Public License as published by
12
 the Free Software Foundation; either version 2 of the License, or
13
 (at your option) any later version.
14
15
 Website Baker is distributed in the hope that it will be useful,
16
 but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 GNU General Public License for more details.
19
20
 You should have received a copy of the GNU General Public License
21
 along with Website Baker; if not, write to the Free Software
22
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
23
24
*/
25
26
/*
27
28
wb class
29
30
This class is the basis for admin and frontend classes.
31
32
*/
33
34
// Include PHPLIB template class
35
require_once(WB_PATH."/include/phplib/template.inc");
36
37
require_once(WB_PATH.'/framework/class.database.php');
38
39 386 Ruebenwurz
// Include new wbmailer class (subclass of PHPmailer)
40
require_once(WB_PATH."/framework/class.wbmailer.php");
41
42 317 stefan
class wb
43
{
44
	// General initialization function
45
	// performed when frontend or backend is loaded.
46
	function wb() {
47
	}
48
49
	// Check whether we should show a page or not (for front-end)
50
	function show_page($page) {
51
		// First check if the page is set to private
52
		if($page['visibility'] == 'private' OR $page['visibility'] == 'registered') {
53
			// Check if the user is logged in
54
			if($this->is_authenticated() == true) {
55
				// Now check if the user has perms to view it
56
				$viewing_groups = explode(',', $page['viewing_groups']);
57
				$viewing_users = explode(',', $page['viewing_users']);
58
				if(is_numeric(array_search($this->get_group_id(), $viewing_groups)) OR is_numeric(array_search($this->get_user_id(), $viewing_users))) {
59
					return true;
60
				} else {
61
					return false;
62
				}
63
			} else {
64
				return false;
65
			}
66
		} elseif($page['visibility'] == 'public') {
67
			return true;
68
		} else {
69
			return false;
70
		}
71
	}
72
73
	// Check if the user is already authenticated or not
74
	function is_authenticated() {
75
		if(isset($_SESSION['USER_ID']) AND $_SESSION['USER_ID'] != "" AND is_numeric($_SESSION['USER_ID'])) {
76
			return true;
77
		} else {
78
			return false;
79
		}
80
	}
81
	// Modified addslashes function which takes into account magic_quotes
82
	function add_slashes($input) {
83
		if ( get_magic_quotes_gpc() || ( !is_string($input) ) ) {
84
			return $input;
85
		}
86
		$output = addslashes($input);
87
		return $output;
88
	}
89
90
	// Ditto for stripslashes
91
	function strip_slashes($input) {
92
		if ( !get_magic_quotes_gpc() || ( !is_string($input) ) ) {
93
			return $input;
94
		}
95
		$output = stripslashes($input);
96
		return $output;
97
	}
98
99
	// Escape backslashes for use with mySQL LIKE strings
100
	function escape_backslashes($input) {
101
		return str_replace("\\","\\\\",$input);
102
	}
103
104
	function page_link($link){
105
		// Check for :// in the link (used in URL's) as well as mailto:
106
		if(strstr($link, '://') == '' AND substr($link, 0, 7) != 'mailto:') {
107
			return WB_URL.PAGES_DIRECTORY.$link.PAGE_EXTENSION;
108
		} else {
109
			return $link;
110
		}
111
	}
112
113
	// Get POST data
114
	function get_post($field) {
115
		if(isset($_POST[$field])) {
116
			return $_POST[$field];
117
		} else {
118
			return null;
119
		}
120
	}
121
122 364 stefan
	// Get POST data and escape it
123
	function get_post_escaped($field) {
124
		$result = $this->get_post($field);
125
		return (is_null($result)) ? null : $this->add_slashes($result);
126
	}
127
128 317 stefan
	// Get GET data
129
	function get_get($field) {
130
		if(isset($_GET[$field])) {
131
			return $_GET[$field];
132
		} else {
133
			return null;
134
		}
135
	}
136
137
	// Get SESSION data
138
	function get_session($field) {
139
		if(isset($_SESSION[$field])) {
140
			return $_SESSION[$field];
141
		} else {
142
			return null;
143
		}
144
	}
145
146
	// Get SERVER data
147
	function get_server($field) {
148
		if(isset($_SERVER[$field])) {
149
			return $_SERVER[$field];
150
		} else {
151
			return null;
152
		}
153
	}
154
155
	// Get the current users id
156
	function get_user_id() {
157
		return $_SESSION['USER_ID'];
158
	}
159
160
	// Get the current users group id
161
	function get_group_id() {
162
		return $_SESSION['GROUP_ID'];
163
	}
164
165
	// Get the current users group name
166
	function get_group_name() {
167
		return $_SESSION['GROUP_NAME'];
168
	}
169
170
	// Get the current users username
171
	function get_username() {
172
		return $_SESSION['USERNAME'];
173
	}
174
175
	// Get the current users display name
176
	function get_display_name() {
177
		return ($_SESSION['DISPLAY_NAME']);
178
	}
179
180
	// Get the current users email address
181
	function get_email() {
182
		return $_SESSION['EMAIL'];
183
	}
184
185
	// Get the current users home folder
186
	function get_home_folder() {
187
		return $_SESSION['HOME_FOLDER'];
188
	}
189
190
	// Get the current users timezone
191
	function get_timezone() {
192
		if(!isset($_SESSION['USE_DEFAULT_TIMEZONE'])) {
193
			return $_SESSION['TIMEZONE'];
194
		} else {
195
			return '-72000';
196
		}
197
	}
198
199
	// Validate supplied email address
200
	function validate_email($email) {
201
		if(eregi("^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$", $email)) {
202
			return true;
203
		} else {
204
			return false;
205
		}
206
	}
207
208
	// Print a success message which then automatically redirects the user to another page
209
	function print_success($message, $redirect = 'index.php') {
210
		global $TEXT;
211
		$success_template = new Template(ADMIN_PATH.'/interface');
212
		$success_template->set_file('page', 'success.html');
213
		$success_template->set_block('page', 'main_block', 'main');
214
		$success_template->set_var('MESSAGE', $message);
215
		$success_template->set_var('REDIRECT', $redirect);
216
		$success_template->set_var('NEXT', $TEXT['NEXT']);
217
		$success_template->parse('main', 'main_block', false);
218
		$success_template->pparse('output', 'page');
219
	}
220
221
	// Print an error message
222
	function print_error($message, $link = 'index.php', $auto_footer = true) {
223
		global $TEXT;
224
		$success_template = new Template(ADMIN_PATH.'/interface');
225
		$success_template->set_file('page', 'error.html');
226
		$success_template->set_block('page', 'main_block', 'main');
227
		$success_template->set_var('MESSAGE', $message);
228
		$success_template->set_var('LINK', $link);
229
		$success_template->set_var('BACK', $TEXT['BACK']);
230
		$success_template->parse('main', 'main_block', false);
231
		$success_template->pparse('output', 'page');
232
		if($auto_footer == true) {
233
			$this->print_footer();
234
		}
235
		exit();
236
	}
237 386 Ruebenwurz
238 317 stefan
	// Validate send email
239
	function mail($fromaddress, $toaddress, $subject, $message) {
240
		$fromaddress = preg_replace('/[\r\n]/', '', $fromaddress);
241
		$toaddress = preg_replace('/[\r\n]/', '', $toaddress);
242
		$subject = preg_replace('/[\r\n]/', '', $subject);
243 386 Ruebenwurz
		$message = preg_replace('/[\r\n]/', '<br \>', $message);
244
245
		/*
246
		SOME PROVIDERS (LIKE GMX) DOES NOT DELIVER MAILS VIA DEFAULT PHP mail() FUNCTION AS
247
		THIS FUNCTION DOES NOT PROVIDE SMTP AUTHENTIFICATION
248
		NEW WBMAILER CLASS IS ABLE TO SEND OUT MESSAGES USING SMTP WHICH RESOLVE THESE ISSUE
249
250
		NOTE:
251
		To use SMTP for sending out mails, you have to specify the SMTP host of your domain
252
		via the variable "WBMAILER_SMTP_HOST" in the "config.php" file
253
		If variable is not defined, the WBMAILER class uses the PHP mail() function per default
254
255
		the mail header is automatically created by PHPMailer and therefore commented out
256
		UPDATE INTRODUCED BY DOC (C. SOMMER, 22. October 2006)
257
		*/
258
259
		/*
260 317 stefan
		if ($fromaddress=='') {
261
			$fromaddress = SERVER_EMAIL;
262
		}
263 386 Ruebenwurz
264 317 stefan
		if(defined('DEFAULT_CHARSET')) {
265
			$charset = DEFAULT_CHARSET;
266
		} else {
267
			$charset='utf-8';
268
		}
269 386 Ruebenwurz
270 317 stefan
		$headers  = "MIME-Version: 1.0\n";
271
		$headers .= "Content-type: text/plain; charset=".$charset."\n";
272
		$headers .= "X-Priority: 3\n";
273
		$headers .= "X-MSMail-Priority: Normal\n";
274
		$headers .= "X-Mailer: Website Baker\n";
275
		$headers .= "From: ".$fromaddress."\n";
276
		$headers .= "Return-Path: ".$fromaddress."\n";
277
		$headers .= "Reply-To: ".$fromaddress."\n";
278
		$headers .= "\n"; // extra empty line needed??
279 386 Ruebenwurz
280 317 stefan
		if (OPERATING_SYSTEM=='windows') {
281 386 Ruebenwurz
			//str_replace("\n","\r\n",$headers);
282 317 stefan
			str_replace("\n","\r\n",$message);
283
		}
284 386 Ruebenwurz
285 324 stefan
		if(mail($toaddress, $subject, $message, $headers)) {
286 317 stefan
			return true;
287
		} else {
288
			return false;
289
		}
290 386 Ruebenwurz
		*/
291
292
		// create PHPMailer object and define default settings
293
		$myMail = new wbmailer();
294
295
		// set user defined from address
296
		if ($fromaddress!='') {
297
			$myMail->From = $fromaddress;                           // FROM:
298
			$myMail->AddReplyTo($fromaddress);                      // REPLY TO:
299
		}
300
301
		// define recepient and information to send out
302
		$myMail->AddAddress($toaddress);                            // TO:
303
		$myMail->Subject = $subject;                                // SUBJECT
304
		$myMail->Body = $message;                                   // CONTENT (HTML)
305
		$myMail->AltBody = strip_tags($message);                    // CONTENT (TEXT)
306
307
		// check if there are any send mail errors, otherwise say successful
308
		if (!$myMail->Send()) {
309
			return false;
310
		} else {
311
			return true;
312
		}
313 317 stefan
	}
314
315
}
316 242 stefan
?>