Project

General

Profile

1 1475 Luisehahne
<?php
2
/**
3
 *
4
 * @category        modules
5
 * @package         output_filter
6 1520 darkviper
 * @author          Christian Sommer, WB-Project, Werner v.d. Decken
7 1907 Luisehahne
 * @copyright       2013, WebsiteBaker Org. e.V.
8 1898 Luisehahne
 * @link            http://www.websitebaker.org/
9 1475 Luisehahne
 * @license         http://www.gnu.org/licenses/gpl.html
10 1907 Luisehahne
 * @platform        WebsiteBaker 2.8.4
11 1475 Luisehahne
 * @requirements    PHP 5.2.2 and higher
12
 * @version         $Id$
13 1898 Luisehahne
 * @filesource      $HeadURL$
14 1475 Luisehahne
 * @lastmodified    $Date$
15
 *
16
 */
17 1626 darkviper
/* -------------------------------------------------------- */
18
// Must include code to stop this file being accessed directly
19
require_once( dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
20
if(!defined('WB_PATH')) { throw new IllegalFileException(); }
21
/* -------------------------------------------------------- */
22 1475 Luisehahne
23 1626 darkviper
/* ************************************************************************** */
24
/**
25
 * execute the frontend output filter to modify email addresses
26
 * @param string actual content
27
 * @return string modified content
28
 */
29
	function executeFrontendOutputFilter($content) {
30
		// get output filter settings from database
31
		$filter_settings = getOutputFilterSettings();
32
		$sFilterDirectory = str_replace('\\', '/', dirname(__FILE__)).'/filters/';
33
		$output_filter_mode = 0;
34
		$output_filter_mode |= ($filter_settings['email_filter'] * pow(2, 0));  // n | 2^0
35
		$output_filter_mode |= ($filter_settings['mailto_filter'] * pow(2, 1)); // n | 2^1
36
		define('OUTPUT_FILTER_AT_REPLACEMENT', $filter_settings['at_replacement']);
37
		define('OUTPUT_FILTER_DOT_REPLACEMENT', $filter_settings['dot_replacement']);
38
39 1905 darkviper
/* ### filter type: replace MediaRel placeholder ############################ */
40
		if (file_exists($sFilterDirectory.'filterMediaRel.php')) {
41
			require_once($sFilterDirectory.'filterMediaRel.php');
42
			$content = doFilterMediaRel($content);
43
		}
44
/* ### filter type: change [wblinkxx] into real URLs ######################## */
45
		if (file_exists($sFilterDirectory.'filterWbLink.php')) {
46
			require_once($sFilterDirectory.'filterWbLink.php');
47
			$content = doFilterWbLink($content);
48
		}
49 1626 darkviper
/* ### filter type: execute droplets filter ################################# */
50
		if (file_exists($sFilterDirectory.'filterDroplets.php')) {
51 1905 darkviper
			require_once($sFilterDirectory.'filterDroplets.php');
52 1626 darkviper
			$content = doFilterDroplets($content);
53
		}
54
/* ### filter type: protect email addresses ################################# */
55
		if( ($output_filter_mode & pow(2, 0)) || ($output_filter_mode & pow(2, 1)) ) {
56
			if (file_exists($sFilterDirectory.'filterEmail.php')) {
57 1905 darkviper
				require_once($sFilterDirectory.'filterEmail.php');
58 1626 darkviper
				$content = doFilterEmail($content, $output_filter_mode);
59
			}
60
		}
61 1905 darkviper
/* ### filter type: replace MediaRel placeholder ############################ */
62
		if (file_exists($sFilterDirectory.'filterMediaRel.php')) {
63
			require_once($sFilterDirectory.'filterMediaRel.php');
64
			$content = doFilterMediaRel($content);
65
		}
66 1626 darkviper
/* ### filter type: change [wblinkxx] into real URLs ######################## */
67
		if (file_exists($sFilterDirectory.'filterWbLink.php')) {
68 1905 darkviper
			require_once($sFilterDirectory.'filterWbLink.php');
69 1626 darkviper
			$content = doFilterWbLink($content);
70
		}
71
/* ### filter type: full qualified URLs to relative URLs##################### */
72
        if($filter_settings['sys_rel'] == 1){
73
			if (file_exists($sFilterDirectory.'filterRelUrl.php')) {
74 1905 darkviper
				require_once($sFilterDirectory.'filterRelUrl.php');
75 1626 darkviper
				$content = doFilterRelUrl($content);
76
			}
77
		}
78
/* ### filter type: moves css definitions from <body> into <head> ########### */
79
		if (file_exists($sFilterDirectory.'filterCssToHead.php')) {
80 1905 darkviper
			require_once($sFilterDirectory.'filterCssToHead.php');
81 1626 darkviper
			$content = doFilterCssToHead($content);
82
		}
83
84
/* ### end of filters ####################################################### */
85
		return $content;
86
	}
87
/* ************************************************************************** */
88
/**
89
 * function to read the current filter settings
90
 * @global object $database
91
 * @global object $admin
92
 * @param void
93
 * @return array contains all settings
94
 */
95
	function getOutputFilterSettings() {
96
		global $database, $admin;
97
	// set default values
98
		$settings = array(
99
			'sys_rel'         => 0,
100
			'email_filter'    => 0,
101
			'mailto_filter'   => 0,
102
			'at_replacement'  => '(at)',
103
			'dot_replacement' => '(dot)'
104
		);
105
	// be sure field 'sys_rel' is in table
106
		$database->field_add( TABLE_PREFIX.'mod_output_filter', 'sys_rel', 'INT NOT NULL DEFAULT \'0\' FIRST');
107
	// request settings from database
108 1898 Luisehahne
		$sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_output_filter` ';
109 1626 darkviper
		if(($res = $database->query($sql))) {
110
			if(($rec = $res->fetchRow())) {
111
				$settings = $rec;
112
				$settings['at_replacement']  = $admin->strip_slashes($settings['at_replacement']);
113
				$settings['dot_replacement'] = $admin->strip_slashes($settings['dot_replacement']);
114
			}
115
		}
116
	// return array with filter settings
117
		return $settings;
118
	}
119
/* ************************************************************************** */