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 
52  self::_checkSetup();
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  {
554  $path = self::_getSmileyDir();
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 
574  $path = self::_getSmileyDir();
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 
610  self::_insertDefaultValues();
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 ?>
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static makeDirParents($a_dir)
Create a new directory and all parent directories.
$_POST['username']
Definition: cron.php:12
This class represents a property form user interface.
static _getExistingSmiliesTable($a_ref)
Instantiates ilChatroomSmiliesTableGUI and returns its table&#39;s HTML.
This class represents a section header in a property form.
static _deleteSmiley($a_id)
Deletes smiliey by given id from database.
setValue($a_value)
Set Value.
deleteSmileyObject()
Deletes a smiley by $_REQUEST["chatroom_smiley_id"] ilRbacSystem $rbacsystem ilCtrl2 $ilCtrl...
executeDefault($method)
Default execute command.
global $tpl
Definition: ilias.php:8
setValue($a_value)
Sets given value as $this->value in ilChatroomSmiliesCurrentSmileyFormElement.
global $ilCtrl
Definition: ilias.php:18
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
This class represents a hidden form property in a property form.
__construct(ilChatroomObjectGUI $gui)
Constructor Sets $this->gui.
static _updateSmiley($data)
Updates smiley in DB by keyword and id from given array ($data["smiley_keywords"], $data["smiley_id"])
$data
editSmiliesObject()
Shows existing smilies table Prepares existing smilies table and displays it.
static checkUserPermissions($permissions, $ref_id, $send_info=true)
Checks user permissions by given array and ref_id.
initSmiliesEditForm($form_data)
Initializes SmiliesEditForm and returns it.
Class ilChatroomSmileyTask Provides methods to show, add, edit and delete smilies consisting of icon ...
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
special template class to simplify handling of ITX/PEAR
redirection script todo: (a better solution should control the processing via a xml file) ...
static _storeSmiley($keywords, $path)
Stores smiley with given keywords and path in database.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static _getSmiliesBasePath()
Returns smilies basepath.
static _getSmiliesById($ids=array())
Fetches smilies from database by id.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static _checkSetup()
Checks if smiley folder is available; if not it will try to create folder and performs actions for an...
This class represents an image file property in a property form.
static img($a_src, $a_alt="", $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
initSmiliesForm()
Initializes smilies form and returns it.
global $lng
Definition: privfeed.php:40
$path
Definition: index.php:22
This class represents a text area property in a property form.
uploadSmileyObject()
Uploads and stores a new smiley with keywords from $_REQUEST["chatroom_smiley_keywords"] ilRbacSyste...
static _getSmiley($a_id)
Looks up and returns smiley with id, throws exception if id is not found.
static _prepareKeywords($words)
Trims given keywords and returns them in one array.
global $ilDB
updateSmiliesObject()
Updates a smiley and/or its keywords Updates a smiley icon and/or its keywords by $_REQUEST["chatroom...
view()
Switches GUI to visible mode and calls editSmiliesObject method which prepares and displays the table...
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
showEditSmileyEntryFormObject()
Shows EditSmileyEntryForm Prepares EditSmileyEntryForm and displays it.
static getWebspaceDir($mode="filesystem")
get webspace directory
setSuffixes($a_suffixes)
Set Accepted Suffixes.
setRequired($a_required)
Set Required.
static _deleteMultipleSmilies($ids=array())
Deletes multiple smilies by given id array.
Confirmation screen class.