Project

General

Profile

« Previous | Next » 

Revision 417

Added by doc almost 18 years ago

Updated some core files to allow the configuration of PHPMailer via the admin settings panel instead of config.php. PHPMailer related settings are now stored in the Website Baker database. The following settings can be configured:
SMTP-host, SMTP-authentification , SMTP-password and SMTP-username.

View differences:

class.wb.php
1
<?php
2

  
3
// $Id$
4

  
5
/*
6

  
7
 Website Baker Project <http://www.websitebaker.org/>
8
 Copyright (C) 2004-2007, 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
// Include new wbmailer class (subclass of PHPmailer)
40
require_once(WB_PATH."/framework/class.wbmailer.php");
41

  
42
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
	// 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
	// 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

  
238
	// 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
		$message = preg_replace('/[\r\n]/', '<br \>', $message);
244
		
245
		/* 
246
		SOME SERVICE PROVIDERS DO NOT SUPPORT SENDING MAIL VIA PHP AS IT DOES NOT PROVIDE SMTP AUTHENTICATION
247
		NEW WBMAILER CLASS IS ABLE TO SEND OUT MESSAGES USING SMTP WHICH RESOLVE THESE ISSUE
248
		
249
		NOTE:
250
		To use SMTP for sending out mails, you have to specify the SMTP host of your domain
251
		via the variable "WBMAILER_SMTP_HOST" in the "config.php" file
252
		If variable is not defined, the WBMAILER class uses the PHP mail() function per default
253
		
254
		the mail header is automatically created by PHPMailer and therefore commented out
255
		UPDATE INTRODUCED BY DOC (C. SOMMER, 22. October 2006)
256
		*/ 
257
		
258
		/* 
259
		if ($fromaddress=='') {
260
			$fromaddress = SERVER_EMAIL;
261
		}
262
		
263
		if(defined('DEFAULT_CHARSET')) { 
264
			$charset = DEFAULT_CHARSET; 
265
		} else {
266
			$charset='utf-8';
267
		}
268
		
269
		$headers  = "MIME-Version: 1.0\n";
270
		$headers .= "Content-type: text/plain; charset=".$charset."\n";
271
		$headers .= "X-Priority: 3\n";
272
		$headers .= "X-MSMail-Priority: Normal\n";
273
		$headers .= "X-Mailer: Website Baker\n";
274
		$headers .= "From: ".$fromaddress."\n";
275
		$headers .= "Return-Path: ".$fromaddress."\n";
276
		$headers .= "Reply-To: ".$fromaddress."\n";
277
		$headers .= "\n"; // extra empty line needed??
278
		
279
		if (OPERATING_SYSTEM=='windows') {
280
			//str_replace("\n","\r\n",$headers);
281
			str_replace("\n","\r\n",$message);
282
		}	
283
		
284
		if(mail($toaddress, $subject, $message, $headers)) {
285
			return true;
286
		} else {
287
			return false;
288
		}
289
		*/
290
		
291
		// create PHPMailer object and define default settings
292
		$myMail = new wbmailer();
293
      
294
		// set user defined from address
295
		if ($fromaddress!='') {
296
			$myMail->From = $fromaddress;                           // FROM:
297
			$myMail->AddReplyTo($fromaddress);                      // REPLY TO:
298
		}
299
		
300
		// define recepient and information to send out
301
		$myMail->AddAddress($toaddress);                            // TO:
302
		$myMail->Subject = $subject;                                // SUBJECT
303
		$myMail->Body = $message;                                   // CONTENT (HTML)
304
		$myMail->AltBody = strip_tags($message);                    // CONTENT (TEXT)
305
		
306
		// check if there are any send mail errors, otherwise say successful
307
		if (!$myMail->Send()) {
308
			return false;
309
		} else {
310
			return true;
311
		}
312
	}
313

  
314
}
1
<?php
2

  
3
// $Id$
4

  
5
/*
6

  
7
 Website Baker Project <http://www.websitebaker.org/>
8
 Copyright (C) 2004-2007, 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
// Include new wbmailer class (subclass of PHPmailer)
40
require_once(WB_PATH."/framework/class.wbmailer.php");
41

  
42
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
	// 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
	// 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

  
238
	// Validate send email
239
	function mail($fromaddress, $toaddress, $subject, $message) {
240
		/* 
241
			INTEGRATED OPEN SOURCE PHPMAILER CLASS FOR SMTP SUPPORT AND MORE
242
			SOME SERVICE PROVIDERS DO NOT SUPPORT SENDING MAIL VIA PHP AS IT DOES NOT PROVIDE SMTP AUTHENTICATION
243
			NEW WBMAILER CLASS IS ABLE TO SEND OUT MESSAGES USING SMTP WHICH RESOLVE THESE ISSUE (C. Sommer)
244

  
245
			NOTE:
246
			To use SMTP for sending out mails, you have to specify the SMTP host of your domain
247
			via the Settings panel in the backend of Website Baker
248
		*/ 
249

  
250
		$fromaddress = preg_replace('/[\r\n]/', '', $fromaddress);
251
		$toaddress = preg_replace('/[\r\n]/', '', $toaddress);
252
		$subject = preg_replace('/[\r\n]/', '', $subject);
253
		$message = preg_replace('/[\r\n]/', '<br \>', $message);
254
		
255
		// create PHPMailer object and define default settings
256
		$myMail = new wbmailer();
257
      
258
		// set user defined from address
259
		if ($fromaddress!='') {
260
			$myMail->From = $fromaddress;                            // FROM:
261
			$myMail->AddReplyTo($fromaddress);                       // REPLY TO:
262
		}
263
		
264
		// define recepient and information to send out
265
		$myMail->AddAddress($toaddress);                            // TO:
266
		$myMail->Subject = $subject;                                // SUBJECT
267
		$myMail->Body = $message;                                   // CONTENT (HTML)
268
		$myMail->AltBody = strip_tags($message);                    // CONTENT (TEXT)
269
		
270
		// check if there are any send mail errors, otherwise say successful
271
		if (!$myMail->Send()) {
272
			return false;
273
		} else {
274
			return true;
275
		}
276
	}
277

  
278
}
315 279
?>

Also available in: Unified diff