ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilChatroomSmileyTask.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  {
246  move_uploaded_file(
247  $_FILES["chatroom_image_path"]["tmp_name"],
249  $_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 
290  $inp->setRequired(true);
291  $this->form_gui->addItem($inp);
292 
293  $inp = new ilTextAreaInputGUI(
294  $lng->txt('chatroom_smiley_keywords'), 'chatroom_smiley_keywords'
295  );
296 
297  $inp->setRequired(true);
298  $inp->setUseRte(false);
299  $inp->setInfo($lng->txt('chatroom_smiley_keywords_one_per_line_note'));
300  $this->form_gui->addItem($inp);
301  $this->form_gui->addCommandButton(
302  'smiley-uploadSmileyObject', $lng->txt('chatroom_upload_smiley')
303  );
304 
305  return $this->form_gui;
306  }
307 
312  public function deleteMultipleObject()
313  {
320  global $rbacsystem, $lng, $ilCtrl, $tpl;
321 
322  $this->gui->switchToVisibleMode();
323 
324  if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
325  {
326  $this->ilias->raiseError(
327  $this->lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
328  );
329  }
330 
331  $items = (array)$_REQUEST['smiley_id'];
332  if(count($items) == 0)
333  {
334  ilUtil::sendInfo($lng->txt('select_one'), true);
335  $ilCtrl->redirect($this->gui, 'smiley');
336  }
337 
338  include_once 'Modules/Chatroom/classes/class.ilChatroomSmilies.php';
339  $smilies = ilChatroomSmilies::_getSmiliesById($items);
340  if(count($smilies) == 0)
341  {
342  ilUtil::sendInfo($lng->txt('select_one'), true);
343  $ilCtrl->redirect($this->gui, 'smiley');
344  }
345 
346  require_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
347  $confirmation = new ilConfirmationGUI();
348  $confirmation->setFormAction($ilCtrl->getFormAction($this->gui, 'smiley'));
349  $confirmation->setHeaderText($lng->txt('chatroom_confirm_delete_smiley'));
350  $confirmation->addButton($lng->txt('confirm'), 'smiley-confirmedDeleteMultipleObject');
351  $confirmation->addButton($lng->txt('cancel'), 'smiley');
352 
353  foreach($smilies as $s)
354  {
355  $confirmation->addItem('sel_ids[]', $s['smiley_id'], ilUtil::img($s['smiley_fullpath'], $s['smiley_keywords']) . ' ' . $s['smiley_keywords']);
356  }
357 
358  $tpl->setContent($confirmation->getHTML());
359  }
360 
364  public function confirmedDeleteMultipleObject()
365  {
370  global $rbacsystem, $ilCtrl;
371 
372  if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
373  {
374  $this->ilias->raiseError(
375  $this->lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
376  );
377  }
378 
379  $parts = $_POST["sel_ids"];
380  if(count($parts) == 0)
381  {
382  $ilCtrl->redirect($this->gui, "smiley");
383  }
384 
385  include_once "Modules/Chatroom/classes/class.ilChatroomSmilies.php";
387 
388  $ilCtrl->redirect($this->gui, "smiley");
389  }
390 
397  public function initSmiliesEditForm($form_data)
398  {
399  global $ilCtrl, $lng;
400 
401  include_once('./Services/Form/classes/class.ilPropertyFormGUI.php');
402 
403  $this->form_gui = new ilPropertyFormGUI();
404 
405  $this->form_gui->setValuesByArray($form_data);
406 
407  $table_nav = $_REQUEST["_table_nav"] ? "&_table_nav=" . $_REQUEST["_table_nav"] : "";
408 
409  $ilCtrl->saveParameter($this->gui, 'smiley_id');
410 
411  $this->form_gui->setFormAction(
412  $ilCtrl->getFormAction($this->gui, 'smiley-updateSmiliesObject') . $table_nav
413  );
414 
415  $sec_l = new ilFormSectionHeaderGUI();
416 
417  $sec_l->setTitle($lng->txt('chatroom_edit_smiley'));
418  $this->form_gui->addItem($sec_l);
419 
420  include_once "Modules/Chatroom/classes/class.ilChatroomSmiliesCurrentSmileyFormElement.php";
421 
423  $lng->txt('chatroom_current_smiley_image_path'),
424  'chatroom_current_smiley_image_path'
425  );
426 
427  $inp->setValue($form_data['chatroom_current_smiley_image_path']);
428  $this->form_gui->addItem($inp);
429 
430  $inp = new ilImageFileInputGUI(
431  $lng->txt('chatroom_image_path'), 'chatroom_image_path'
432  );
433 
434  $inp->setRequired(false);
435  $inp->setInfo($lng->txt('chatroom_smiley_image_only_if_changed'));
436  $this->form_gui->addItem($inp);
437 
438  $inp = new ilTextAreaInputGUI(
439  $lng->txt('chatroom_smiley_keywords'), 'chatroom_smiley_keywords'
440  );
441 
442  $inp->setValue($form_data['chatroom_smiley_keywords']);
443  $inp->setUseRte(false);
444  $inp->setRequired(true);
445  $inp->setInfo($lng->txt('chatroom_smiley_keywords_one_per_line_note'));
446  $this->form_gui->addItem($inp);
447 
448  $inp = new ilHiddenInputGUI('chatroom_smiley_id');
449 
450  $this->form_gui->addItem($inp);
451  $this->form_gui->addCommandButton(
452  'smiley-updateSmiliesObject', $lng->txt('submit')
453  );
454  $this->form_gui->addCommandButton('smiley', $lng->txt('cancel'));
455  return $this->form_gui;
456  }
457 
464  public function uploadSmileyObject()
465  {
466  global $rbacsystem, $ilCtrl, $tpl, $lng;
467 
468  if(!$rbacsystem->checkAccess('write', $this->gui->ref_id))
469  {
470  $this->ilias->raiseError(
471  $lng->txt('msg_no_perm_write'), $this->ilias->error_obj->MESSAGE
472  );
473  }
474 
475  $this->initSmiliesForm();
476 
477  include_once "Modules/Chatroom/classes/class.ilChatroomSmilies.php";
478  include_once('./Services/Form/classes/class.ilPropertyFormGUI.php');
479 
480  //$this->form_gui = new ilPropertyFormGUI();
481 
482  $this->form_gui->setValuesByPost();
483 
485  ilUtil::stripSlashes($_REQUEST["chatroom_smiley_keywords"])
486  );
487 
488  $keywordscheck = count($keywords) > 0;
489 
490  if(!$this->form_gui->checkInput())
491  {
492  $tpl->setContent($this->form_gui->getHtml());
493  return $this->view();
494  }
495 
496  $pathinfo = pathinfo($_FILES["chatroom_image_path"]["name"]);
497  $target_file = md5(time() + $pathinfo['basename']) . "." . $pathinfo['extension'];
498 
499  move_uploaded_file(
500  $_FILES["chatroom_image_path"]["tmp_name"],
502  );
503 
504  ilChatroomSmilies::_storeSmiley(join("\n", $keywords), $target_file);
505 
506  $ilCtrl->redirect($this->gui, "smiley");
507  }
508 
509  private static function _insertDefaultValues()
510  {
511  global $ilDB;
512 
513  $values = array(
514  array("icon_smile.gif", ":)\n:-)\n:smile:"),
515  array("icon_wink.gif", ";)\n;-)\n:wink:"),
516  array("icon_laugh.gif", ":D\n:-D\n:laugh:\n:grin:\n:biggrin:"),
517  array("icon_sad.gif", ":(\n:-(\n:sad:"),
518  array("icon_shocked.gif", ":o\n:-o\n:shocked:"),
519  array("icon_tongue.gif", ":p\n:-p\n:tongue:"),
520  array("icon_cool.gif", ":cool:"),
521  array("icon_eek.gif", ":eek:"),
522  array("icon_angry.gif", ":||\n:-||\n:angry:"),
523  array("icon_flush.gif", ":flush:"),
524  array("icon_idea.gif", ":idea:"),
525  array("icon_thumbup.gif", ":thumbup:"),
526  array("icon_thumbdown.gif", ":thumbdown:"),
527  );
528 
529  $stmt = $ilDB->prepare("
530  INSERT INTO chatroom_smilies (smiley_id, smiley_keywords, smiley_path)
531  VALUES (?, ?, ?)",
532  array("integer", "text", "text")
533  );
534 
535  foreach($values as $val)
536  {
537  $row = array(
538  $ilDB->nextID("chat_smilies"),
539  $val[1],
540  $val[0]
541  );
542  $stmt->execute($row);
543  }
544  }
545 
549  private static function _setupFolder()
550  {
551  $path = self::_getSmileyDir();
552 
553  if(!is_dir($path))
554  {
555  mkdir($path, 0755, true);
556  }
557  }
558 
562  public static function _getSmileyDir()
563  {
564  return ilUtil::getWebspaceDir() . '/chatroom/smilies';
565  }
566 
567  public static function _checkSetup()
568  {
569  global $lng;
570 
571  $path = self::_getSmileyDir();
572 
573  if(!is_dir($path))
574  {
575  ilUtil::sendInfo($lng->txt('chat_smilies_dir_not_exists'));
577 
578  if(!is_dir($path))
579  {
580  ilUtil::sendFailure($lng->txt('chat_smilies_dir_not_available'));
581  return false;
582  }
583  else
584  {
585  $smilies = array
586  (
587  "icon_smile.gif",
588  "icon_wink.gif",
589  "icon_laugh.gif",
590  "icon_sad.gif",
591  "icon_shocked.gif",
592  "icon_tongue.gif",
593  "icon_cool.gif",
594  "icon_eek.gif",
595  "icon_angry.gif",
596  "icon_flush.gif",
597  "icon_idea.gif",
598  "icon_thumbup.gif",
599  "icon_thumbdown.gif",
600  );
601 
602  foreach($smilies as $smiley)
603  {
604  copy("templates/default/images/emoticons/$smiley", $path . "/$smiley");
605  }
606 
607  self::_insertDefaultValues();
608 
609  ilUtil::sendSuccess($lng->txt('chat_smilies_initialized'));
610  }
611 
612  }
613 
614  if(!is_writable($path))
615  {
616  ilUtil::sendInfo($lng->txt('chat_smilies_dir_not_writable'));
617  }
618 
619  return true;
620  }
621 }
622 
623 ?>
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static makeDirParents($a_dir)
Create a new directory and all parent directories.
initSmiliesEditForm($form_data)
Initializes SmiliesEditForm and returns it.
static _setupFolder()
setup directory
$_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.
editSmiliesObject()
Shows existing smilies table Prepares existing smilies table and displays it.
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.
uploadSmileyObject()
Uploads and stores a new smiley with keywords from $_REQUEST["chatroom_smiley_keywords"] ilRbacSyste...
Class ilChatroomSmileyTask Provides methods to show, add, edit and delete smilies consisting of icon ...
view()
Switches GUI to visible mode and calls editSmiliesObject method which prepares and displays the table...
__construct(ilChatroomObjectGUI $gui)
Constructor Sets $this->gui.
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.
deleteSmileyObject()
Deletes a smiley by $_REQUEST["chatroom_smiley_id"] ilRbacSystem $rbacsystem ilCtrl2 $ilCtrl...
static _updateSmiley($data)
Updates smiley in DB by keyword and id from given array ($data["smiley_keywords"], $data["smiley_id"])
executeDefault($method)
Default execute command.
static checkUserPermissions($permissions, $ref_id, $send_info=true)
Checks user permissions by given array and ref_id.
special template class to simplify handling of ITX/PEAR
showEditSmileyEntryFormObject()
Shows EditSmileyEntryForm Prepares EditSmileyEntryForm and displays it.
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.
updateSmiliesObject()
Updates a smiley and/or its keywords Updates a smiley icon and/or its keywords by $_REQUEST["chatroom...
static _getSmiliesById($ids=array())
Fetches smilies from database by id.
initSmiliesForm()
Initializes smilies form and returns it.
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.
global $lng
Definition: privfeed.php:40
$path
Definition: index.php:22
This class represents a text area property in a property form.
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
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
static getWebspaceDir($mode="filesystem")
get webspace directory
setRequired($a_required)
Set Required.
static _deleteMultipleSmilies($ids=array())
Deletes multiple smilies by given id array.
Confirmation screen class.