· 8 years ago · Jul 09, 2018, 07:46 PM
1<?php
2/**
3* @version $Id:helper.php 2012-01-16 21:00:00
4* @package JJ Shoutbox
5* @copyright Copyright (C) 2011 - 2012 JoomJunk. All rights reserved.
6* @license http://www.gnu.org/licenses/gpl-3.0.html
7*/
8
9defined('_JEXEC') or die('Restricted access');
10
11$config = JFactory::getConfig()->get('dbtype');
12
13if($config=='mysqli') {
14jimport( 'joomla.database.database.mysqli' );
15}
16else {
17jimport( 'joomla.database.database.mysql' );
18}
19
20class modShoutboxHelper {
21 function install() {
22 $db =& JFactory::getDBO();
23 $query = "CREATE TABLE IF NOT EXISTS #__shoutbox (
24 `id` int(10) unsigned NOT NULL auto_increment,
25 `name` varchar(25) NOT NULL,
26 `when` TIMESTAMP NOT NULL,
27 `ip` varchar(15) NOT NULL default '',
28 `msg` text NOT NULL,
29 PRIMARY KEY (`id`)
30 ) ; ";
31 $db->setQuery($query);
32 $db->query();
33 $query = "INSERT INTO `#__shoutbox` (`name`, `when`, `msg`) VALUES
34 ('JoomJunk', '2012-01-16 20:00:00', 'Welcome to the Shoutbox');";
35 $db->setQuery($query);
36 $db->query();
37 }
38
39 function getShouts($number, $timezone, $message) {
40 global $mainframe;
41 $shouts = array();
42 $db =& JFactory::getDBO();
43 $query = 'SELECT * FROM #__shoutbox ORDER BY id DESC';
44 $db->setQuery($query , 0 , $number);
45 $rows = $db->loadObjectList();
46 $i=0;
47 $timezone=$timezone*60*60;
48 if ($db->getErrorNum()) {
49 modShoutboxHelper::install();
50 $db =& JFactory::getDBO();
51 $query = 'SELECT * FROM #__shoutbox ORDER BY id DESC';
52 $db->setQuery($query , 0 , $number);
53 $rows = $db->loadObjectList();
54 if ($db->getErrorNum()) {
55 $shouts[$i]->name = 'Administrator';
56 $shouts[$i]->when = date( 'Y-m-d H:i:s', time()+$timezone);
57 $shouts[$i]->msg = $message;
58 $shouts[$i]->ip = 'System';
59 return $shouts;
60 }
61 }
62 foreach ( $rows as $row ) {
63 $shouts[$i]->id = $row->id;
64 $shouts[$i]->name = $row->name;
65 $adjustedtime = strtotime($row->when) + $timezone;
66 $shouts[$i]->when = date( 'Y-m-d H:i:s', $adjustedtime);
67 $shouts[$i]->ip = $row->ip;
68 $shouts[$i]->msg = $row->msg;
69 $i++;
70 }
71 return $shouts;
72 }
73
74 function postfiltering($_POST, $user, $swearcounter, $swearnumber, $extraadd, $displayname) {
75
76 if(isset($_POST['shout'])) {
77 if(!empty($_POST['message'])){
78 if($_SESSION['token'] == $_POST['token']){
79 $replace = '****';
80 $backslashreplace='\\\\';
81
82 $config = JFactory::getConfig()->get('dbtype');
83 if($config=='mysqli') {
84 $mysqli = new mysqli(JFactory::getConfig()->get('host'), JFactory::getConfig()->get('user'), JFactory::getConfig()->get('password'));
85 }
86
87 if (!$user->guest && $displayname==0) {
88 $name = $user->name;
89 $nameswears=0;
90 }
91 else if (!$user->guest && $displayname==1) {
92 $name = $user->username;
93 $nameswears=0;
94 }
95 else {
96 $_POST['name'] = modShoutboxHelper::backslashfix($_POST['name'], $backslashreplace);
97 if (get_magic_quotes_gpc()) {$_POST['name']=stripslashes($_POST['name']);}
98 if($swearcounter==0) { $before=substr_count($_POST['name'], $replace); }
99 if($config=='mysqli') {
100 $name = modShoutboxHelper::swearfilter($mysqli->real_escape_string($_POST['name']), $replace);
101 }
102 else {
103 $name = modShoutboxHelper::swearfilter(mysql_real_escape_string($_POST['name']), $replace);
104 }
105 if($swearcounter==0) {
106 $after=substr_count($name, $replace);
107 $nameswears=($after-$before);
108 }
109 else {$nameswears=0; }
110 }
111 $_POST['message'] = modShoutboxHelper::backslashfix($_POST['message'], $backslashreplace);
112 if (get_magic_quotes_gpc()) {$_POST['message']=stripslashes($_POST['message']);}
113 if($swearcounter==0) { $before=substr_count($_POST['message'], $replace); }
114 if($config=='mysqli') {
115 $message = modShoutboxHelper::swearfilter($mysqli->real_escape_string($_POST['message']), $replace);
116 }
117 else {
118 $message = modShoutboxHelper::swearfilter(mysql_real_escape_string($_POST['message']), $replace);
119 }
120 if($swearcounter==0) {
121 $after=substr_count($message, $replace);
122 $messageswears=($after-$before);
123 }
124 $ip=$_SERVER['REMOTE_ADDR'];
125
126 if($swearcounter==1 || $swearcounter==0 && (($nameswears+$messageswears)<$swearnumber)) {
127 modShoutboxHelper::addShout($name, $message, $ip, $extraadd);
128 }
129 if($config=='mysqli') {
130 $mysqli->close();
131 }
132 }
133 }
134 }
135 }
136
137 function stri_replace( $find, $replace, $string ) {
138 $parts = explode( strtolower($find), strtolower($string) );
139 $pos = 0;
140 foreach( $parts as $key=>$part )
141 {
142 $parts[ $key ] = substr($string, $pos, strlen($part));
143 $pos += strlen($part) + strlen($find);
144 }
145 return( join( $replace, $parts ) );
146 }
147
148 function smileyfilter($message) {
149 $replace = array(':)' => ' <img src="modules/mod_shoutbox/assets/images/icon_e_smile.gif" alt=":)">');
150 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
151 $replace = array(':(' => ' <img src="modules/mod_shoutbox/assets/images/icon_e_sad.gif" alt=":(">');
152 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
153 $replace = array(':D' => ' <img src="modules/mod_shoutbox/assets/images/icon_e_biggrin.gif" alt=":D">');
154 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
155 $replace = array('xD' => ' <img src="modules/mod_shoutbox/assets/images/icon_e_biggrin.gif" alt="xD">');
156 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
157 $replace = array(':p' => ' <img src="modules/mod_shoutbox/assets/images/icon_razz.gif" alt=":p">');
158 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
159 $replace = array(':P' => ' <img src="modules/mod_shoutbox/assets/images/icon_razz.gif" alt=":P">');
160 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
161 $replace = array(';)' => ' <img src="modules/mod_shoutbox/assets/images/icon_e_wink.gif" alt=";)">');
162 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
163 $replace = array(':S' => ' <img src="modules/mod_shoutbox/assets/images/icon_e_confused.gif" alt=":S">');
164 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
165 $replace = array(':@' => ' <img src="modules/mod_shoutbox/assets/images/icon_mad.gif" alt=":@">');
166 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
167 $replace = array(':O' => ' <img src="modules/mod_shoutbox/assets/images/icon_e_surprised.gif" alt=":O">');
168 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
169 $replace = array('lol' => ' <img src="modules/mod_shoutbox/assets/images/icon_lol.gif" alt="lol">');
170 foreach($replace as $old=>$new) $message = str_replace($old,$new,$message);
171 return $message;
172 }
173
174 function swearfilter($post, $replace) {
175 global $mainframe;
176 $myfile = 'modules' . DS . 'mod_shoutbox' . DS . 'swearWords.php';
177 $words = array();
178 if (!file_exists($myfile)){
179 return $post;
180 }
181 $words = file($myfile, FILE_IGNORE_NEW_LINES);
182 $i=0;
183 while($i<10) {
184 unset($words[$i]);
185 $i++;
186 }
187 $swearwords = array_values($words);
188 foreach ($swearwords as $key=>$word ) {
189 $post = modShoutboxHelper::stri_replace($word, $replace, $post);
190 }
191 return $post;
192 }
193
194 function backslashfix($post, $replace) {
195 global $mainframe;
196 $word = '\\';
197 $post = modShoutboxHelper::stri_replace($word, $replace, $post);
198 return $post;
199 }
200
201 function addShout($name, $message, $ip, $timeadd) {
202 global $mainframe;
203 $timenow = time() + ($timeadd*60*60);
204 $timesql = date('Y-m-d H:i:s',$timenow);
205 $db = JFactory::getDBO();
206 $query = "INSERT INTO `#__shoutbox` (`name`, `when`,`ip`, `msg`) VALUES
207 ('$name', '$timesql', '$ip', '$message');";
208 $db->setQuery($query);
209 $db->query();
210 }
211
212 function deletepost($id) {
213 global $mainframe;
214 $db =& JFactory::getDBO();
215 $query = "DELETE FROM #__shoutbox WHERE `id` =". (int) $id;
216 $db->setQuery($query);
217 $db->query();
218 }
219}
220?>