ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilChatroomAdminSmileyTask.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
13{
14
15 private $gui;
16
23 {
24 $this->gui = $gui;
25 }
26
32 public function executeDefault($method)
33 {
34 //include_once 'Modules/Chatroom/classes/class.ilChatroomSmilies.php';
35 //ilChatroomSmilies::_initial();
36 $this->view();
37 }
38
44 public function view()
45 {
46 include_once 'Modules/Chatroom/classes/class.ilChatroom.php';
47
48 ilChatroom::checkUserPermissions('read', $this->gui->ref_id);
49
50 $this->gui->switchToVisibleMode();
51
53
54 $this->editSmiliesObject();
55 }
56
64 {
65 global $rbacsystem, $tpl, $lng;
66
67 $this->gui->switchToVisibleMode();
68
69 if(!$rbacsystem->checkAccess('read', $this->gui->ref_id))
70 {
71 $this->ilias->raiseError(
72 $lng->txt('msg_no_perm_read'), $this->ilias->error_obj->MESSAGE
73 );
74 }
75
76 include_once "Modules/Chatroom/classes/class.ilChatroomSmilies.php";
77
78 $smiley = ilChatroomSmilies::_getSmiley($_REQUEST["smiley_id"]);
79
80 $form_data = array(
81 "chatroom_smiley_id" => $smiley["smiley_id"],
82 "chatroom_smiley_keywords" => $smiley["smiley_keywords"],
83 "chatroom_current_smiley_image_path" => $smiley["smiley_fullpath"],
84 );
85
86 $form = $this->initSmiliesEditForm($form_data);
87
88 $tpl_form = new ilTemplate(
89 "tpl.chatroom_edit_smilies.html", true, true, "Modules/Chatroom"
90 );
91
92 $tpl_form->setVariable("SMILEY_FORM", $form->getHTML());
93
94 $tpl->setContent($tpl_form->get());
95 }
96
101 public function showDeleteSmileyFormObject()
102 {
109 global $rbacsystem, $lng, $ilCtrl, $tpl;
110
111 $this->gui->switchToVisibleMode();
112
113 if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
114 {
115 $this->ilias->raiseError(
116 $lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
117 );
118 }
119
120 include_once 'Modules/Chatroom/classes/class.ilChatroomSmilies.php';
121 $smiley = ilChatroomSmilies::_getSmiley((int)$_REQUEST['smiley_id']);
122
123 require_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
124 $confirmation = new ilConfirmationGUI();
125 $confirmation->setFormAction($ilCtrl->getFormAction($this->gui, 'smiley'));
126 $confirmation->setHeaderText($lng->txt('chatroom_confirm_delete_smiley'));
127 $confirmation->addButton($lng->txt('confirm'), 'smiley-deleteSmileyObject');
128 $confirmation->addButton($lng->txt('cancel'), 'smiley');
129 $confirmation->addItem('chatroom_smiley_id', $smiley['smiley_id'], ilUtil::img($smiley['smiley_fullpath'], $smiley['smiley_keywords']) . ' ' . $smiley['smiley_keywords']);
130
131 $tpl->setContent($confirmation->getHTML());
132 }
133
139 public function deleteSmileyObject()
140 {
141 global $rbacsystem, $ilCtrl, $lng;
142
143 if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
144 {
145 $this->ilias->raiseError(
146 $lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
147 );
148 }
149
150 include_once 'Modules/Chatroom/classes/class.ilChatroomSmilies.php';
151
152 ilChatroomSmilies::_deleteSmiley($_REQUEST["chatroom_smiley_id"]);
153
154 $ilCtrl->redirect($this->gui, "smiley");
155 }
156
164 public function editSmiliesObject()
165 {
166 global $rbacsystem, $lng, $tpl;
167
168 if(!$rbacsystem->checkAccess('read', $this->gui->ref_id))
169 {
170 $this->ilias->raiseError(
171 $lng->txt('msg_no_perm_read'), $this->gui->ilias->error_obj->MESSAGE
172 );
173 }
174
175 include_once 'Modules/Chatroom/classes/class.ilChatroomSmilies.php';
176
178
179 if(!$this->form_gui)
180 {
181 $form = $this->initSmiliesForm();
182 }
183 else
184 {
185 $form = $this->form_gui;
186 }
187
188 include_once "Modules/Chatroom/classes/class.ilChatroomSmiliesGUI.php";
189
191
192 $tpl_smilies = new ilTemplate(
193 "tpl.chatroom_edit_smilies.html", true, true, "Modules/Chatroom"
194 );
195 $tpl_smilies->setVariable("SMILEY_TABLE", $table);
196 $tpl_smilies->setVariable("SMILEY_FORM", $form->getHtml());
197
198 $tpl->setContent($tpl_smilies->get());
199 }
200
208 public function updateSmiliesObject()
209 {
210 global $rbacsystem, $ilCtrl, $tpl, $lng;
211
212 if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
213 {
214 $this->ilias->raiseError(
215 $lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
216 );
217 }
218
219 include_once('./Services/Form/classes/class.ilPropertyFormGUI.php');
220 $this->form_gui = new ilPropertyFormGUI();
221
222 // $this->initSmiliesEditForm();
223
224 include_once "Modules/Chatroom/classes/class.ilChatroomSmilies.php";
225
227 ilUtil::stripSlashes($_REQUEST["chatroom_smiley_keywords"])
228 );
229
230 $keywordscheck = count($keywords) > 0;
231
232 if(!$this->form_gui->checkInput() || !$keywordscheck)
233 {
234 $tpl->setContent($this->form_gui->getHtml());
235 ilUtil::sendFailure('test', true);
236 return $this->view();
237 }
238 else
239 {
240 $data = array();
241 $data["smiley_keywords"] = join("\n", $keywords);
242 $data["smiley_id"] = $_REQUEST["smiley_id"];
243
244 if($_FILES["chatroom_image_path"])
245 {
247 $_FILES["chatroom_image_path"]["tmp_name"],
248 $_FILES["chatroom_image_path"]["name"],
249 ilChatroomSmilies::_getSmiliesBasePath() . $_FILES["chatroom_image_path"]["name"]
250 );
251
252 $data["smiley_path"] = $_FILES["chatroom_image_path"]["name"];
253 }
254
256 }
257
258 $ilCtrl->redirect($this->gui, "smiley");
259 }
260
267 public function initSmiliesForm()
268 {
269 global $ilCtrl, $lng;
270
271 include_once('./Services/Form/classes/class.ilPropertyFormGUI.php');
272
273 $this->form_gui = new ilPropertyFormGUI();
274
275 $table_nav = $_REQUEST["_table_nav"] ? "&_table_nav=" . $_REQUEST["_table_nav"] : "";
276 $this->form_gui->setFormAction(
277 $ilCtrl->getFormAction($this->gui, 'smiley-uploadSmileyObject') . $table_nav
278 );
279
280 // chat server settings
281 $sec_l = new ilFormSectionHeaderGUI();
282
283 $sec_l->setTitle($lng->txt('chatroom_add_smiley'));
284 $this->form_gui->addItem($sec_l);
285
286 $inp = new ilImageFileInputGUI(
287 $lng->txt('chatroom_image_path'), 'chatroom_image_path'
288 );
289 $inp->setSuffixes(array("jpg", "jpeg", "png", "gif", "svg"));
290
291 $inp->setRequired(true);
292 $this->form_gui->addItem($inp);
293
294 $inp = new ilTextAreaInputGUI(
295 $lng->txt('chatroom_smiley_keywords'), 'chatroom_smiley_keywords'
296 );
297
298 $inp->setRequired(true);
299 $inp->setUseRte(false);
300 $inp->setInfo($lng->txt('chatroom_smiley_keywords_one_per_line_note'));
301 $this->form_gui->addItem($inp);
302 $this->form_gui->addCommandButton(
303 'smiley-uploadSmileyObject', $lng->txt('chatroom_upload_smiley')
304 );
305
306 return $this->form_gui;
307 }
308
313 public function deleteMultipleObject()
314 {
321 global $rbacsystem, $lng, $ilCtrl, $tpl;
322
323 $this->gui->switchToVisibleMode();
324
325 if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
326 {
327 $this->ilias->raiseError(
328 $this->lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
329 );
330 }
331
332 $items = (array)$_REQUEST['smiley_id'];
333 if(count($items) == 0)
334 {
335 ilUtil::sendInfo($lng->txt('select_one'), true);
336 $ilCtrl->redirect($this->gui, 'smiley');
337 }
338
339 include_once 'Modules/Chatroom/classes/class.ilChatroomSmilies.php';
340 $smilies = ilChatroomSmilies::_getSmiliesById($items);
341 if(count($smilies) == 0)
342 {
343 ilUtil::sendInfo($lng->txt('select_one'), true);
344 $ilCtrl->redirect($this->gui, 'smiley');
345 }
346
347 require_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
348 $confirmation = new ilConfirmationGUI();
349 $confirmation->setFormAction($ilCtrl->getFormAction($this->gui, 'smiley'));
350 $confirmation->setHeaderText($lng->txt('chatroom_confirm_delete_smiley'));
351 $confirmation->addButton($lng->txt('confirm'), 'smiley-confirmedDeleteMultipleObject');
352 $confirmation->addButton($lng->txt('cancel'), 'smiley');
353
354 foreach($smilies as $s)
355 {
356 $confirmation->addItem('sel_ids[]', $s['smiley_id'], ilUtil::img($s['smiley_fullpath'], $s['smiley_keywords']) . ' ' . $s['smiley_keywords']);
357 }
358
359 $tpl->setContent($confirmation->getHTML());
360 }
361
365 public function confirmedDeleteMultipleObject()
366 {
371 global $rbacsystem, $ilCtrl;
372
373 if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
374 {
375 $this->ilias->raiseError(
376 $this->lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
377 );
378 }
379
380 $parts = $_POST["sel_ids"];
381 if(count($parts) == 0)
382 {
383 $ilCtrl->redirect($this->gui, "smiley");
384 }
385
386 include_once "Modules/Chatroom/classes/class.ilChatroomSmilies.php";
388
389 $ilCtrl->redirect($this->gui, "smiley");
390 }
391
398 public function initSmiliesEditForm($form_data)
399 {
400 global $ilCtrl, $lng;
401
402 include_once('./Services/Form/classes/class.ilPropertyFormGUI.php');
403
404 $this->form_gui = new ilPropertyFormGUI();
405
406 $this->form_gui->setValuesByArray($form_data);
407
408 $table_nav = $_REQUEST["_table_nav"] ? "&_table_nav=" . $_REQUEST["_table_nav"] : "";
409
410 $ilCtrl->saveParameter($this->gui, 'smiley_id');
411
412 $this->form_gui->setFormAction(
413 $ilCtrl->getFormAction($this->gui, 'smiley-updateSmiliesObject') . $table_nav
414 );
415
416 $sec_l = new ilFormSectionHeaderGUI();
417
418 $sec_l->setTitle($lng->txt('chatroom_edit_smiley'));
419 $this->form_gui->addItem($sec_l);
420
421 include_once "Modules/Chatroom/classes/class.ilChatroomSmiliesCurrentSmileyFormElement.php";
422
424 $lng->txt('chatroom_current_smiley_image_path'),
425 'chatroom_current_smiley_image_path'
426 );
427
428 $inp->setValue($form_data['chatroom_current_smiley_image_path']);
429 $this->form_gui->addItem($inp);
430
431 $inp = new ilImageFileInputGUI(
432 $lng->txt('chatroom_image_path'), 'chatroom_image_path'
433 );
434 $inp->setSuffixes(array("jpg", "jpeg", "png", "gif", "svg"));
435
436 $inp->setRequired(false);
437 $inp->setInfo($lng->txt('chatroom_smiley_image_only_if_changed'));
438 $this->form_gui->addItem($inp);
439
440 $inp = new ilTextAreaInputGUI(
441 $lng->txt('chatroom_smiley_keywords'), 'chatroom_smiley_keywords'
442 );
443
444 $inp->setValue($form_data['chatroom_smiley_keywords']);
445 $inp->setUseRte(false);
446 $inp->setRequired(true);
447 $inp->setInfo($lng->txt('chatroom_smiley_keywords_one_per_line_note'));
448 $this->form_gui->addItem($inp);
449
450 $inp = new ilHiddenInputGUI('chatroom_smiley_id');
451
452 $this->form_gui->addItem($inp);
453 $this->form_gui->addCommandButton(
454 'smiley-updateSmiliesObject', $lng->txt('submit')
455 );
456 $this->form_gui->addCommandButton('smiley', $lng->txt('cancel'));
457 return $this->form_gui;
458 }
459
466 public function uploadSmileyObject()
467 {
468 global $rbacsystem, $ilCtrl, $tpl, $lng;
469
470 if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
471 {
472 $this->ilias->raiseError(
473 $lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
474 );
475 }
476
477 $this->initSmiliesForm();
478
479 include_once "Modules/Chatroom/classes/class.ilChatroomSmilies.php";
480 include_once('./Services/Form/classes/class.ilPropertyFormGUI.php');
481
482 //$this->form_gui = new ilPropertyFormGUI();
483
484 $this->form_gui->setValuesByPost();
485
487 ilUtil::stripSlashes($_REQUEST["chatroom_smiley_keywords"])
488 );
489
490 $keywordscheck = count($keywords) > 0;
491
492 if(!$this->form_gui->checkInput())
493 {
494 $tpl->setContent($this->form_gui->getHtml());
495 return $this->view();
496 }
497
498 $pathinfo = pathinfo($_FILES["chatroom_image_path"]["name"]);
499 $target_file = md5(time() + $pathinfo['basename']) . "." . $pathinfo['extension'];
500
502 $_FILES["chatroom_image_path"]["tmp_name"],
503 $target_file,
505 );
506
507 ilChatroomSmilies::_storeSmiley(join("\n", $keywords), $target_file);
508
509 $ilCtrl->redirect($this->gui, "smiley");
510 }
511
512 private static function _insertDefaultValues()
513 {
514 global $ilDB;
515
516 $values = array(
517 array("icon_smile.gif", ":)\n:-)\n:smile:"),
518 array("icon_wink.gif", ";)\n;-)\n:wink:"),
519 array("icon_laugh.gif", ":D\n:-D\n:laugh:\n:grin:\n:biggrin:"),
520 array("icon_sad.gif", ":(\n:-(\n:sad:"),
521 array("icon_shocked.gif", ":o\n:-o\n:shocked:"),
522 array("icon_tongue.gif", ":p\n:-p\n:tongue:"),
523 array("icon_cool.gif", ":cool:"),
524 array("icon_eek.gif", ":eek:"),
525 array("icon_angry.gif", ":||\n:-||\n:angry:"),
526 array("icon_flush.gif", ":flush:"),
527 array("icon_idea.gif", ":idea:"),
528 array("icon_thumbup.gif", ":thumbup:"),
529 array("icon_thumbdown.gif", ":thumbdown:"),
530 );
531
532 $stmt = $ilDB->prepare("
533 INSERT INTO chatroom_smilies (smiley_id, smiley_keywords, smiley_path)
534 VALUES (?, ?, ?)",
535 array("integer", "text", "text")
536 );
537
538 foreach($values as $val)
539 {
540 $row = array(
541 $ilDB->nextID("chatroom_smilies"),
542 $val[1],
543 $val[0]
544 );
545 $stmt->execute($row);
546 }
547 }
548
552 private static function _setupFolder()
553 {
555
556 if(!is_dir($path))
557 {
558 mkdir($path, 0755, true);
559 }
560 }
561
565 public static function _getSmileyDir()
566 {
567 return ilUtil::getWebspaceDir() . '/chatroom/smilies';
568 }
569
570 public static function _checkSetup()
571 {
572 global $lng;
573
575
576 if(!is_dir($path))
577 {
578 ilUtil::sendInfo($lng->txt('chat_smilies_dir_not_exists'));
580
581 if(!is_dir($path))
582 {
583 ilUtil::sendFailure($lng->txt('chat_smilies_dir_not_available'));
584 return false;
585 }
586 else
587 {
588 $smilies = array
589 (
590 "icon_smile.gif",
591 "icon_wink.gif",
592 "icon_laugh.gif",
593 "icon_sad.gif",
594 "icon_shocked.gif",
595 "icon_tongue.gif",
596 "icon_cool.gif",
597 "icon_eek.gif",
598 "icon_angry.gif",
599 "icon_flush.gif",
600 "icon_idea.gif",
601 "icon_thumbup.gif",
602 "icon_thumbdown.gif",
603 );
604
605 foreach($smilies as $smiley)
606 {
607 copy("templates/default/images/emoticons/$smiley", $path . "/$smiley");
608 }
609
611
612 ilUtil::sendSuccess($lng->txt('chat_smilies_initialized'));
613 }
614
615 }
616
617 if(!is_writable($path))
618 {
619 ilUtil::sendInfo($lng->txt('chat_smilies_dir_not_writable'));
620 }
621
622 return true;
623 }
624}
625
626?>
global $tpl
Definition: ilias.php:8
Class ilChatroomSmileyTask Provides methods to show, add, edit and delete smilies consisting of icon ...
uploadSmileyObject()
Uploads and stores a new smiley with keywords from $_REQUEST["chatroom_smiley_keywords"] @global ilRb...
initSmiliesForm()
Initializes smilies form and returns it.
executeDefault($method)
Default execute command.
deleteSmileyObject()
Deletes a smiley by $_REQUEST["chatroom_smiley_id"] @global ilRbacSystem $rbacsystem @global ilCtrl2 ...
updateSmiliesObject()
Updates a smiley and/or its keywords Updates a smiley icon and/or its keywords by $_REQUEST["chatroom...
__construct(ilChatroomObjectGUI $gui)
Constructor Sets $this->gui.
view()
Switches GUI to visible mode and calls editSmiliesObject method which prepares and displays the table...
editSmiliesObject()
Shows existing smilies table Prepares existing smilies table and displays it.
initSmiliesEditForm($form_data)
Initializes SmiliesEditForm and returns it.
showEditSmileyEntryFormObject()
Shows EditSmileyEntryForm Prepares EditSmileyEntryForm and displays it.
static _getExistingSmiliesTable($a_ref)
Instantiates ilChatroomSmiliesTableGUI and returns its table's HTML.
static _storeSmiley($keywords, $path)
Stores smiley with given keywords and path in database.
static _getSmiliesBasePath()
Returns smilies basepath.
static _getSmiliesById($ids=array())
Fetches smilies from database by id.
static _getSmiley($a_id)
Looks up and returns smiley with id, throws exception if id is not found.
static _checkSetup()
Checks if smiley folder is available; if not it will try to create folder and performs actions for an...
static _deleteMultipleSmilies($ids=array())
Deletes multiple smilies by given id array.
static _prepareKeywords($words)
Trims given keywords and returns them in one array.
static _deleteSmiley($a_id)
Deletes smiliey by given id from database.
static _updateSmiley($data)
Updates smiley in DB by keyword and id from given array ($data["smiley_keywords"],...
static checkUserPermissions($permissions, $ref_id, $send_info=true)
Checks user permissions by given array and ref_id.
Confirmation screen class.
This class represents a section header in a property form.
This class represents a hidden form property in a property form.
This class represents an image file property in a property form.
This class represents a property form user interface.
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static getWebspaceDir($mode="filesystem")
get webspace directory
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static img($a_src, $a_alt="", $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static makeDirParents($a_dir)
Create a new directory and all parent directories.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
$_POST['username']
Definition: cron.php:12
$data
global $ilCtrl
Definition: ilias.php:18
redirection script todo: (a better solution should control the processing via a xml file)
global $lng
Definition: privfeed.php:40
$path
Definition: index.php:22
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
global $ilDB