831 |
florian |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
if(!defined("PHORUM_ADMIN")) return;
|
|
|
4 |
|
|
|
5 |
require_once("./include/admin/PhorumInputForm.php");
|
|
|
6 |
require_once("./mods/smileys/smileyslib.php");
|
|
|
7 |
require_once("./mods/smileys/defaults.php");
|
|
|
8 |
|
|
|
9 |
// The definition of the possible uses for a smiley.
|
|
|
10 |
$PHORUM_MOD_SMILEY_USES = array(
|
|
|
11 |
|
|
|
12 |
1 => "Subject",
|
|
|
13 |
2 => "Body + Subject",
|
|
|
14 |
);
|
|
|
15 |
|
|
|
16 |
// ---------------------------------------------------------------------------
|
|
|
17 |
// Handle actions for sent form data.
|
|
|
18 |
// ---------------------------------------------------------------------------
|
|
|
19 |
|
|
|
20 |
// The action to perform.
|
|
|
21 |
$action = isset($_POST["action"]) ? $_POST["action"] : "";
|
|
|
22 |
|
|
|
23 |
// Keep track if the settings must be saved in the database.
|
|
|
24 |
$do_db_update = false;
|
|
|
25 |
|
|
|
26 |
// Keep track of error and success messages.
|
|
|
27 |
$error="";
|
|
|
28 |
$okmsg = "";
|
|
|
29 |
|
|
|
30 |
// Initialize smiley_id parameter.
|
|
|
31 |
$smiley_id = isset($_POST["smiley_id"]) ? $_POST["smiley_id"] : "NEW";
|
|
|
32 |
|
|
|
33 |
// ACTION: Changing the mod_smileys settings.
|
|
|
34 |
if (empty($error) && $action == "edit_settings") {
|
|
|
35 |
$_POST["prefix"] = trim($_POST["prefix"]);
|
|
|
36 |
// Is the field filled in?
|
|
|
37 |
if (empty($_POST["prefix"])) {
|
|
|
38 |
$error = "Please, fill in the smiley prefix path";
|
|
|
39 |
// Deny absolute paths.
|
|
|
40 |
} elseif (preg_match(MOD_SMILEYS_ABSPATH_MATCH, $_POST["prefix"])) {
|
|
|
41 |
$error = "The smiley path must be a path, relative to Phorum's " .
|
|
|
42 |
"installation directory";
|
|
|
43 |
// Is the specified prefix a directory?
|
|
|
44 |
} elseif (!is_dir($_POST["prefix"])) {
|
|
|
45 |
$error = "The smiley prefix path " .
|
|
|
46 |
'"' . htmlspecialchars($_POST["prefix"]) . '" ' .
|
|
|
47 |
" does not exist";
|
|
|
48 |
}
|
|
|
49 |
|
|
|
50 |
// All is okay. Set the prefix path in the config.
|
|
|
51 |
if (empty($error))
|
|
|
52 |
{
|
|
|
53 |
// Make sure the prefix path ends with a "/".
|
|
|
54 |
if (substr($_POST["prefix"], -1, 1) != '/') {
|
|
|
55 |
$_POST["prefix"] .= "/";
|
|
|
56 |
}
|
|
|
57 |
|
|
|
58 |
$PHORUM["mod_smileys"]["prefix"] = $_POST["prefix"];
|
|
|
59 |
|
|
|
60 |
$okmsg = "The smiley settings have been saved successfully";
|
|
|
61 |
$do_db_update = true;
|
|
|
62 |
}
|
|
|
63 |
}
|
|
|
64 |
|
|
|
65 |
// ACTION: Adding or updating smileys.
|
|
|
66 |
if (empty($error) && $action == "edit_smiley")
|
|
|
67 |
{
|
|
|
68 |
// Trim whitespace from form input fields.
|
|
|
69 |
foreach (array("search","smiley","alt") as $field) {
|
|
|
70 |
if (isset($_POST[$field])) $_POST[$field] = trim($_POST[$field]);
|
|
|
71 |
}
|
|
|
72 |
|
|
|
73 |
// Check if the search string is entered.
|
|
|
74 |
if (empty($_POST["search"]))
|
|
|
75 |
$error = "Please enter the string to match";
|
|
|
76 |
// Check if a replace smiley is selected.
|
|
|
77 |
elseif (empty($_POST["smiley"]))
|
|
|
78 |
$error = "Please, select a smiley to replace the string " .
|
|
|
79 |
htmlspecialchars($_POST["search"]) . " with";
|
|
|
80 |
// Check if the smiley doesn't already exist.
|
|
|
81 |
if (empty($error)) {
|
|
|
82 |
foreach ($PHORUM["mod_smileys"]["smileys"] as $id => $smiley) {
|
|
|
83 |
if ($smiley["search"] == $_POST["search"] &&
|
|
|
84 |
$_POST["smiley_id"] != $id) {
|
|
|
85 |
$error = "The smiley " .
|
|
|
86 |
'"' . htmlspecialchars($_POST["search"]) . '" ' .
|
|
|
87 |
"already exists";
|
|
|
88 |
break;
|
|
|
89 |
}
|
|
|
90 |
}
|
|
|
91 |
}
|
|
|
92 |
|
|
|
93 |
// All fields are okay. Update the smiley list.
|
|
|
94 |
if (empty($error))
|
|
|
95 |
{
|
|
|
96 |
$item = array(
|
|
|
97 |
"search" => $_POST["search"],
|
|
|
98 |
"smiley" => $_POST["smiley"],
|
|
|
99 |
"alt" => $_POST["alt"],
|
|
|
100 |
"uses" => $_POST['uses']
|
|
|
101 |
);
|
|
|
102 |
|
|
|
103 |
if ($smiley_id == "NEW") {
|
|
|
104 |
$PHORUM["mod_smileys"]["smileys"][]=$item;
|
|
|
105 |
$okmsg = "The smiley has been added successfully";
|
|
|
106 |
} else {
|
|
|
107 |
$PHORUM["mod_smileys"]["smileys"][$smiley_id]=$item;
|
|
|
108 |
$okmsg = "The smiley has been updated successfully";
|
|
|
109 |
}
|
|
|
110 |
|
|
|
111 |
$do_db_update = true;
|
|
|
112 |
}
|
|
|
113 |
}
|
|
|
114 |
|
|
|
115 |
// GET based actions.
|
|
|
116 |
if (empty($error) && isset($_GET["smiley_id"]))
|
|
|
117 |
{
|
|
|
118 |
// ACTION: Deleting a smiley from the list.
|
|
|
119 |
if (isset($_GET["delete"])) {
|
|
|
120 |
unset($PHORUM["mod_smileys"]["smileys"][$_GET["smiley_id"]]);
|
|
|
121 |
$do_db_update = true;
|
|
|
122 |
$okmsg = "The smiley has been deleted successfully";
|
|
|
123 |
}
|
|
|
124 |
|
|
|
125 |
// ACTION: Startup editing a smiley from the list.
|
|
|
126 |
if (isset($_GET["edit"])) {
|
|
|
127 |
$smiley_id = $_GET["smiley_id"];
|
|
|
128 |
}
|
|
|
129 |
}
|
|
|
130 |
|
|
|
131 |
|
|
|
132 |
// ---------------------------------------------------------------------------
|
|
|
133 |
// Do database updates.
|
|
|
134 |
// ---------------------------------------------------------------------------
|
|
|
135 |
|
|
|
136 |
// Changes have been made to the smileys configuration.
|
|
|
137 |
// Store these changes in the database.
|
|
|
138 |
if (empty($error) && $do_db_update)
|
|
|
139 |
{
|
|
|
140 |
list($modinfo, $message) = phorum_mod_smileys_store($PHORUM["mod_smileys"]);
|
|
|
141 |
if ($modinfo == NULL) {
|
|
|
142 |
$error = $message;
|
|
|
143 |
} else {
|
|
|
144 |
if (empty($okmsg)) $okmsg = $message;
|
|
|
145 |
$PHORUM["mod_smileys"] = $modinfo;
|
|
|
146 |
|
|
|
147 |
// Back to the startscreen
|
|
|
148 |
unset($_POST);
|
|
|
149 |
$smiley_id = 'NEW';
|
|
|
150 |
}
|
|
|
151 |
}
|
|
|
152 |
|
|
|
153 |
|
|
|
154 |
// ---------------------------------------------------------------------------
|
|
|
155 |
// Display the settings page
|
|
|
156 |
// ---------------------------------------------------------------------------
|
|
|
157 |
|
|
|
158 |
// Get the current list of available smiley images.
|
|
|
159 |
$available_smileys = phorum_mod_smileys_available();
|
|
|
160 |
|
|
|
161 |
// Javascript for displaying a smiley preview when a smiley image
|
|
|
162 |
// is selected from the drop down box.
|
|
|
163 |
?>
|
|
|
164 |
<script type="text/javascript">
|
|
|
165 |
function change_image(new_image) {
|
|
|
166 |
var div = document.getElementById("preview_div");
|
|
|
167 |
var img = document.getElementById("preview_image");
|
|
|
168 |
if (new_image.length == 0) {
|
|
|
169 |
new_image = "./images/trans.gif";
|
|
|
170 |
div.style.display = 'none';
|
|
|
171 |
} else {
|
|
|
172 |
new_image = "<?php print $PHORUM["mod_smileys"]["prefix"]?>" + new_image;
|
|
|
173 |
div.style.display = 'block';
|
|
|
174 |
}
|
|
|
175 |
img.src =new_image;
|
|
|
176 |
}
|
|
|
177 |
</script>
|
|
|
178 |
<?php
|
|
|
179 |
|
|
|
180 |
// Display the result message.
|
|
|
181 |
if (! empty($error)) {
|
|
|
182 |
phorum_admin_error($error);
|
|
|
183 |
} elseif (! empty($okmsg)) {
|
|
|
184 |
phorum_admin_okmsg($okmsg);
|
|
|
185 |
}
|
|
|
186 |
|
|
|
187 |
// Count things.
|
|
|
188 |
$total_smileys = 0;
|
|
|
189 |
$inactive_smileys = 0;
|
|
|
190 |
foreach ($PHORUM["mod_smileys"]["smileys"] as $id => $smiley) {
|
|
|
191 |
$total_smileys ++;
|
|
|
192 |
if (! $smiley["active"]) $inactive_smileys ++;
|
|
|
193 |
}
|
|
|
194 |
|
|
|
195 |
// Display a warning in case there are no smiley images available.
|
|
|
196 |
if (! count($available_smileys)) {
|
|
|
197 |
phorum_admin_error(
|
|
|
198 |
"<strong>Warning:</strong><br/>" .
|
|
|
199 |
"No smiley images were found in your current smiley prefix " .
|
|
|
200 |
"path. Please place some smileys in the directory " .
|
|
|
201 |
htmlspecialchars($PHORUM["mod_smileys"]["prefix"]) .
|
|
|
202 |
" or change your prefix path to point to a directory " .
|
|
|
203 |
"containing smiley images.");
|
|
|
204 |
} elseif ($inactive_smileys) {
|
|
|
205 |
phorum_admin_error(
|
|
|
206 |
"<strong>Warning:</strong><br/>" .
|
|
|
207 |
"You have $inactive_smileys smiley(s) configured for which the " .
|
|
|
208 |
"image file was not found (marked as \"UNAVAILBLE\" in the list " .
|
|
|
209 |
"below). Delete the smiley(s) from the list or place the missing " .
|
|
|
210 |
"images in the directory \"" .
|
|
|
211 |
htmlspecialchars($PHORUM["mod_smileys"]["prefix"]) . "\". After " .
|
|
|
212 |
"placing new smiley images, click \"Save settings\" to update " .
|
|
|
213 |
"the smiley settings.");
|
|
|
214 |
}
|
|
|
215 |
|
|
|
216 |
// Create the smiley settings form.
|
|
|
217 |
if ($smiley_id == "NEW")
|
|
|
218 |
{
|
|
|
219 |
$frm = new PhorumInputForm ("", "post", 'Save settings');
|
|
|
220 |
$frm->hidden("module", "modsettings");
|
|
|
221 |
$frm->hidden("mod", "smileys");
|
|
|
222 |
$frm->hidden("action", "edit_settings");
|
|
|
223 |
$frm->addbreak("Smiley Settings");
|
|
|
224 |
$row = $frm->addrow("Smiley Prefix Path", $frm->text_box("prefix", $PHORUM["mod_smileys"]["prefix"], 50));
|
|
|
225 |
$frm->addhelp($row,
|
|
|
226 |
"Set the smiley image prefix path",
|
|
|
227 |
"This option can be used to set the path to the directory where
|
|
|
228 |
you have stored your smileys. This path must be relative to the
|
|
|
229 |
directory in which you installed the Phorum software. Absolute
|
|
|
230 |
paths cannot be used here.");
|
|
|
231 |
$frm->show();
|
|
|
232 |
}
|
|
|
233 |
|
|
|
234 |
// No smiley images in the current prefix path? Then do not show the
|
|
|
235 |
// rest of the forms. Let the admin fix this issue first.
|
|
|
236 |
if (!count($available_smileys)) return;
|
|
|
237 |
|
|
|
238 |
// Create the smiley adding and editing form.
|
|
|
239 |
if (isset($_POST["smiley_id"])) {
|
|
|
240 |
$search = $_POST["search"];
|
|
|
241 |
$smiley = $_POST["smiley"];
|
|
|
242 |
$alt = $_POST["alt"];
|
|
|
243 |
$uses = $_POST["uses"];
|
|
|
244 |
}
|
|
|
245 |
if ($smiley_id == "NEW") {
|
|
|
246 |
$title = "Add a new smiley";
|
|
|
247 |
$submit = "Add smiley";
|
|
|
248 |
|
|
|
249 |
// Fill initial form data for creating smileys.
|
|
|
250 |
if (! isset($_POST["smiley_id"])) {
|
|
|
251 |
$search = "";
|
|
|
252 |
$smiley = "";
|
|
|
253 |
$alt = "";
|
|
|
254 |
$uses = 2;
|
|
|
255 |
}
|
|
|
256 |
} else {
|
|
|
257 |
$title = "Update a smiley";
|
|
|
258 |
$submit = "Update smiley";
|
|
|
259 |
|
|
|
260 |
// Fill initial form data for editing smileys.
|
|
|
261 |
if (! isset($_POST["smiley_id"])) {
|
|
|
262 |
$smileydata = $PHORUM["mod_smileys"]["smileys"][$smiley_id];
|
|
|
263 |
$search = $smileydata["search"];
|
|
|
264 |
$smiley = $smileydata["smiley"];
|
|
|
265 |
$alt = $smileydata["alt"];
|
|
|
266 |
$uses = $smileydata["uses"];
|
|
|
267 |
}
|
|
|
268 |
}
|
|
|
269 |
$frm = new PhorumInputForm ("", "post", $submit);
|
|
|
270 |
$frm->hidden("module", "modsettings");
|
|
|
271 |
$frm->hidden("mod", "smileys");
|
|
|
272 |
$frm->hidden("smiley_id", $smiley_id);
|
|
|
273 |
$frm->hidden("action", "edit_smiley");
|
|
|
274 |
$frm->addbreak($title);
|
|
|
275 |
$frm->addrow("Smiley string to match", $frm->text_box("search", $search, 20));
|
|
|
276 |
$row = $frm->addrow("Image to replace the string with", $frm->select_tag("smiley", array_merge(array(''=>'Select smiley ...'),$available_smileys), $smiley, "onChange=\"change_image(this.options[this.selectedIndex].value);\"") . " <div style=\"display:none;margin-top:5px\" id=\"preview_div\"><strong>Preview: </strong><img src=\"images/trans.gif\" id=\"preview_image\" /></div>");
|
|
|
277 |
$frm->addhelp($row,
|
|
|
278 |
"Smiley replacement image",
|
|
|
279 |
"The drop down list shows all images that were found in your
|
|
|
280 |
smiley prefix path. If you want to add your own smileys, simply place
|
|
|
281 |
them in \"" . htmlspecialchars($PHORUM["mod_smileys"]["prefix"]) . "\"
|
|
|
282 |
and reload this page.");
|
|
|
283 |
$frm->addrow("ALT tag for the image", $frm->text_box("alt", $alt, 40));
|
|
|
284 |
$frm->addrow("Used for", $frm->select_tag("uses", $PHORUM_MOD_SMILEY_USES, $uses));
|
|
|
285 |
$frm->show();
|
|
|
286 |
|
|
|
287 |
// Make the preview image visible in case a $smiley is set.
|
|
|
288 |
if (!empty($smiley)) {?>
|
|
|
289 |
<script type="text/javascript">
|
|
|
290 |
change_image('<?php print addslashes($smiley) ?>');
|
|
|
291 |
</script><?php
|
|
|
292 |
}
|
|
|
293 |
|
|
|
294 |
// Show the configured list of smileys.
|
|
|
295 |
if ($smiley_id == "NEW")
|
|
|
296 |
{
|
|
|
297 |
print "<hr class=\"PhorumAdminHR\" />";
|
|
|
298 |
|
|
|
299 |
if (count($PHORUM["mod_smileys"]["smileys"]))
|
|
|
300 |
{ ?>
|
|
|
301 |
<table cellspacing="1" class="PhorumAdminTable" width="100%">
|
|
|
302 |
<tr>
|
|
|
303 |
<td class="PhorumAdminTableHead">String</td>
|
|
|
304 |
<td class="PhorumAdminTableHead">Image file</td>
|
|
|
305 |
<td class="PhorumAdminTableHead">Image</td>
|
|
|
306 |
<td class="PhorumAdminTableHead">ALT tag</td>
|
|
|
307 |
<td class="PhorumAdminTableHead">Used for</td>
|
|
|
308 |
<td class="PhorumAdminTableHead"> </td>
|
|
|
309 |
</tr>
|
|
|
310 |
<?php
|
|
|
311 |
|
|
|
312 |
foreach ($PHORUM["mod_smileys"]["smileys"] as $id => $item)
|
|
|
313 |
{
|
|
|
314 |
$used_for_txt = $PHORUM_MOD_SMILEY_USES[$item['uses']];
|
|
|
315 |
foreach ($item as $key => $val) {
|
|
|
316 |
$item[$key] = htmlspecialchars($val);
|
|
|
317 |
}
|
|
|
318 |
$action_url = "$_SERVER[PHP_SELF]?module=modsettings&mod=smileys&smiley_id=$id";
|
|
|
319 |
|
|
|
320 |
print "<tr>\n";
|
|
|
321 |
print " <td class=\"PhorumAdminTableRow\">{$item["search"]}</td>\n";
|
|
|
322 |
print " <td class=\"PhorumAdminTableRow\">{$item["smiley"]}</td>\n";
|
|
|
323 |
print " <td class=\"PhorumAdminTableRow\" align=\"center\">";
|
|
|
324 |
if ($item["active"]) {
|
|
|
325 |
print "<img src=\"{$PHORUM["mod_smileys"]["prefix"]}{$item["smiley"]}\"/></td>\n";
|
|
|
326 |
} else {
|
|
|
327 |
print "<div style=\"color:red\">UNAVAILBLE</div>";
|
|
|
328 |
}
|
|
|
329 |
print " <td class=\"PhorumAdminTableRow\">{$item["alt"]}</td>\n";
|
|
|
330 |
print " <td class=\"PhorumAdminTableRow\" style=\"white-space:nowrap\">$used_for_txt</td>\n";
|
|
|
331 |
print " <td class=\"PhorumAdminTableRow\">" .
|
|
|
332 |
"<a href=\"$action_url&edit=1\">Edit</a> • " .
|
|
|
333 |
"<a href=\"$action_url&delete=1\">Delete</a></td>\n";
|
|
|
334 |
print "</tr>\n";
|
|
|
335 |
}
|
|
|
336 |
|
|
|
337 |
print "</table>\n";
|
|
|
338 |
|
|
|
339 |
} else {
|
|
|
340 |
|
|
|
341 |
print "Currently, you have no smiley replacements configured.";
|
|
|
342 |
|
|
|
343 |
}
|
|
|
344 |
|
|
|
345 |
// For a more clear end of page.
|
|
|
346 |
print "<br/><br/><br/>";
|
|
|
347 |
}
|
|
|
348 |
|
|
|
349 |
?>
|