ILIAS  Release_4_1_x_branch Revision 61804
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilPaymentCouponGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
5 include_once './Services/Utilities/classes/class.ilConfirmationGUI.php';
6 include_once './Services/Payment/classes/class.ilShopTableGUI.php';
7 
9 {
10  public $ctrl;
11 
12  public $lng;
13 
14  public $user_obj = null;
15  public $coupon_obj = null;
16  public $pobject = null;
17 
18  public function ilPaymentCouponGUI($user_obj)
19  {
21 
22  $this->ctrl->saveParameter($this, 'baseClass');
23  $this->user_obj = $user_obj;
24  $this->__initCouponObject();
25  }
26 
27  protected function prepareOutput()
28  {
29  global $ilTabs;
30 
31  $this->setSection(6);
32 
34 
35  $ilTabs->setTabActive('paya_header');
36  $ilTabs->setSubTabActive('paya_coupons_coupons');
37  }
38 
39  public function executeCommand()
40  {
41  global $tree;
42 
43  $cmd = $this->ctrl->getCmd();
44  switch ($this->ctrl->getNextClass($this))
45  {
46  default:
47  if (!$cmd = $this->ctrl->getCmd())
48  {
49  $cmd = 'showCoupons';
50  }
51  $this->prepareOutput();
52  $this->$cmd();
53  break;
54  }
55  }
56 
57  public function resetFilter()
58  {
59  unset($_SESSION["pay_coupons"]);
60  unset($_POST["title_type"]);
61  unset($_POST["title_value"]);
62  unset($_POST["coupon_type"]);
63  unset($_POST["updateView"]);
64  unset($_POST['from_check']);
65  unset($_POST['until_check']);
66 
67  $this->showCoupons();
68 
69  return true;
70  }
71 
72  public function showCoupons()
73  {
74  global $ilToolbar;
75 
76  include_once("Services/User/classes/class.ilObjUser.php");
77 
78  $ilToolbar->addButton($this->lng->txt('paya_coupons_add'), $this->ctrl->getLinkTarget($this,'addCoupon'));
79  if(!$_POST['show_filter'] && $_POST['updateView'] == '1')
80  {
81  $this->resetFilter();
82  }
83  else
84  if ($_POST['updateView'] == 1)
85  {
86  $_SESSION['pay_coupons']['show_filter'] = $_POST['show_filter'];
87  $_SESSION['pay_coupons']['updateView'] = true;
88  $_SESSION['pay_coupons']['until_check'] = $_POST['until_check'];
89  $_SESSION['pay_coupons']['from_check'] = $_POST['from_check'];
90  $_SESSION['pay_coupons']['title_type'] = isset($_POST['title_type']) ? $_POST['title_type'] : '' ;
91  $_SESSION['pay_coupons']['title_value'] = isset($_POST['title_value']) ? $_POST['title_value'] : '';
92 
93  if($_SESSION['pay_coupons']['from_check'] == '1')
94  {
95  $_SESSION['pay_coupons']['from']['date']['d'] = $_POST['from']['date']['d'];
96  $_SESSION['pay_coupons']['from']['date']['m'] = $_POST['from']['date']['m'];
97  $_SESSION['pay_coupons']['from']['date']['y'] = $_POST['from']['date']['y'];
98  }
99  else
100  {
101  $_SESSION['pay_coupons']['from']['date']['d'] = '';
102  $_SESSION['pay_coupons']['from']['date']['m'] = '';
103  $_SESSION['pay_coupons']['from']['date']['y'] = '';
104  }
105 
106  if($_SESSION['pay_coupons']['until_check']== '1')
107  {
108  $_SESSION['pay_coupons']['til']['date']['d'] = $_POST['til']['date']['d'];
109  $_SESSION['pay_coupons']['til']['date']['m'] = $_POST['til']['date']['m'];
110  $_SESSION['pay_coupons']['til']['date']['y'] = $_POST['til']['date']['y'];
111  }
112  else
113  {
114  $_SESSION['pay_coupons']['til']['date']['d'] = '';
115  $_SESSION['pay_coupons']['til']['date']['m'] = '';
116  $_SESSION['pay_coupons']['til']['date']['y'] = '';
117  }
118 
119  $_SESSION['pay_coupons']['coupon_type'] = $_POST['coupon_type'];
120 
121  }
122 
123  $this->coupon_obj->setSearchTitleType(ilUtil::stripSlashes($_SESSION['pay_coupons']['title_type']));
124  $this->coupon_obj->setSearchTitleValue(ilUtil::stripSlashes($_SESSION['pay_coupons']['title_value']));
125  $this->coupon_obj->setSearchType(ilUtil::stripSlashes($_SESSION['pay_coupons']['coupon_type']));
126 
127  $this->tpl->addBlockfile('ADM_CONTENT', 'adm_content', 'tpl.main_view.html', 'Services/Payment');
128 
129  $filter_form = new ilPropertyFormGUI();
130  $filter_form->setFormAction($this->ctrl->getFormAction($this));
131  $filter_form->setTitle($this->lng->txt('pay_filter'));
132  $filter_form->setId('formular');
133  $filter_form->setTableWidth('100 %');
134 
135  $o_hide_check = new ilCheckBoxInputGUI($this->lng->txt('show_filter'),'show_filter');
136  $o_hide_check->setValue(1);
137  $o_hide_check->setChecked($_SESSION['pay_coupons']['show_filter'] ? 1 : 0);
138 
139  $o_hidden = new ilHiddenInputGUI('updateView');
140  $o_hidden->setValue(1);
141  $o_hidden->setPostVar('updateView');
142  $o_hide_check->addSubItem($o_hidden);
143 
144  // Title type
145  $o_title_type = new ilSelectInputGUI();
146  $title_option = array($this->lng->txt('pay_starting'),$this->lng->txt('pay_ending'));
147  $title_value = array('0','1');
148  $o_title_type->setTitle($this->lng->txt('title'));
149  $o_title_type->setOptions($title_option);
150  $o_title_type->setValue($_SESSION['pay_coupons']['title_type']);
151  $o_title_type->setPostVar('title_type');
152  $o_hide_check->addSubItem($o_title_type);
153 
154  // Title value
155  $o_title_val = new ilTextInputGUI();
156  $o_title_val->setValue($_SESSION['pay_coupons']['title_value']);
157  $o_title_val->setPostVar('title_value');
158  $o_hide_check->addSubItem($o_title_val);
159 
160  //coupon type
161  $o_coupon_type = new ilSelectInputGUI();
162  $coupon_option = array(''=>'','fix'=>$this->lng->txt('paya_coupons_fix'),'percent'=>$this->lng->txt('paya_coupons_percentaged'));
163 
164  $o_coupon_type->setTitle($this->lng->txt('coupon_type'));
165  $o_coupon_type->setOptions($coupon_option);
166  $o_coupon_type->setValue($_SESSION['pay_coupons']['coupon_type']);
167  $o_coupon_type->setPostVar('coupon_type');
168 
169  $o_hide_check->addSubItem($o_coupon_type);
170 
171  // date from
172  $o_from_check = new ilCheckBoxInputGUI($this->lng->txt('pay_order_date_from'),'from_check');
173  $o_from_check->setValue(1);
174  $o_from_check->setChecked($_SESSION['pay_coupons']['from_check'] ? 1 : 0);
175 
176  $o_date_from = new ilDateTimeInputGUI();
177  $o_date_from->setPostVar('from');
178  $_POST['from'] = $_SESSION['pay_coupons']['from'];
179  if($_SESSION['pay_coupons']['from_check'] == '1')
180  {
181  $o_date_from->checkInput();
182  }
183 
184  $o_from_check->addSubItem($o_date_from);
185  $o_hide_check->addSubItem($o_from_check);
186 
187  // date until
188  $o_until_check = new ilCheckBoxInputGUI($this->lng->txt('pay_order_date_til'), 'until_check');
189  $o_until_check->setValue(1);
190  $o_until_check->setChecked($_SESSION['pay_coupons']['until_check'] ? 1 : 0);
191 
192  $o_date_until = new ilDateTimeInputGUI();
193  $o_date_until->setPostVar('til');
194  $_POST['til'] = $_SESSION['pay_coupons']['til'];
195  if($_SESSION['pay_coupons']['until_check'] == '1')
196  {
197  $o_date_until->checkInput();
198  }
199 
200  $o_until_check->addSubItem($o_date_until);
201  $o_hide_check->addSubItem($o_until_check);
202 
203  $filter_form->addCommandButton('showCoupons', $this->lng->txt('pay_update_view'));
204  $filter_form->addCommandButton('resetFilter', $this->lng->txt('pay_reset_filter'));
205 
206  $filter_form->addItem($o_hide_check);
207 
208  $this->tpl->setVariable('FORM', $filter_form->getHTML());
209 
210  if (!count($coupons = $this->coupon_obj->getCoupons()))
211  {
212  ilUtil::sendInfo($this->lng->txt('paya_coupons_not_found'));
213  //if ($_POST['updateView'] == '1') ilUtil::sendInfo($this->lng->txt('paya_coupons_not_found'));
214  //else ilUtil::sendInfo($this->lng->txt('paya_coupons_not_available'));
215 
216  return true;
217  }
218 
219  $counter = 0;
220  foreach ($coupons as $coupon)
221  {
222  $f_result[$counter]['pc_title'] = $coupon['pc_title'];
223  $f_result[$counter]['number_of_codes'] = $coupon['number_of_codes'];
224  $f_result[$counter]['usage_of_codes'] = $coupon['usage_of_codes'];
225 
226  if (!empty($coupon['objects']))
227  {
228  $objects = "";
229  for ($i = 0; $i < count($coupon['objects']); $i++)
230  {
231  $tmp_obj = ilObjectFactory::getInstanceByRefId($coupon['objects'][$i], false);
232  if($tmp_obj)
233  {
234  $objects .= $tmp_obj->getTitle();
235  }
236  else
237  {
238  $objects .= $this->lng->txt('object_not_found');
239  }
240 
241  if ($i < count($coupon['objects']) - 1) $objects .= "<br />";
242 
243  unset($tmp_obj);
244  }
245  }
246  else
247  {
248  $objects = "";
249  }
250 
251  $f_result[$counter]['objects'] = $objects;
252  $f_result[$counter]['pc_from'] = ($coupon['pc_from'] != NULL && $coupon['pc_from_enabled'] == '1') ? $coupon['pc_from'] : '';
253  $f_result[$counter]['pc_till'] = ($coupon['pc_till'] != NULL && $coupon['pc_till_enabled'] == '1') ? $coupon['pc_till'] : '';
254  $f_result[$counter]['pc_last_changed'] = ($coupon['pc_last_changed'] != NULL ? $coupon['pc_last_changed'] : '');
255  $f_result[$counter]['pc_last_changed_author'] = ($coupon['pc_last_change_usr_id'] > 0 ? ilObjUser::_lookupLogin($coupon['pc_last_change_usr_id']) : ilObjUser::_lookupLogin($coupon['usr_id']));
256  $this->ctrl->setParameter($this, 'coupon_id', $coupon['pc_pk']);
257  $f_result[$counter]['options'] = "<div class=\"il_ContainerItemCommands\"><a class=\"il_ContainerItemCommand\" href=\"".$this->ctrl->getLinkTarget($this, "addCoupon")."\">".$this->lng->txt("edit")."</a></div>";
258 
259  ++$counter;
260  }
261 
262  return $this->__showCouponsTable($f_result);
263  }
264 
265  private function __showCouponsTable($f_result)
266  {
267  require_once 'Services/Payment/classes/class.ilShopCouponsTableGUI.php';
268  $tbl = new ilShopCouponsTableGUI($this, 'showCoupons');
269  $tbl->setTitle($this->lng->txt("paya_coupons_coupons"));
270  $tbl->setId('tbl_show_coupons');
271  $tbl->setRowTemplate("tpl.shop_coupons_row.html", "Services/Payment");
272 
273  $tbl->addColumn($this->lng->txt('paya_coupons_title'), 'pc_title', '10%');
274  $tbl->addColumn($this->lng->txt('paya_coupons_number_of_codes'), 'number_of_codes', '10%');
275  $tbl->addColumn($this->lng->txt('paya_coupons_usage_of_codes'), 'usage_of_codes', '10%');
276  $tbl->addColumn($this->lng->txt('paya_coupons_objects'), 'objects', '10%');
277  $tbl->addColumn($this->lng->txt('paya_coupons_from'), 'pc_from', '10%');
278  $tbl->addColumn($this->lng->txt('paya_coupons_till'), 'pc_till', '10%');
279  $tbl->addColumn($this->lng->txt('last_change'), 'pc_last_changed', '10%');
280  $tbl->addColumn($this->lng->txt('author'), 'pc_last_changed_author', '10%');
281  $tbl->addColumn('', 'options','10%');
282 
283  $tbl->setData($f_result);
284  $this->tpl->setVariable('TABLE', $tbl->getHTML());
285 
286  return true;
287  }
288 
289  public function saveCouponForm()
290  {
291  $this->error = '';
292 
293  if ($_POST['title'] == '') $this->error .= 'paya_coupons_title,';
294  if ($_POST['coupon_type'] == '') $this->error .= 'paya_coupons_type,';
295  if ($_POST['coupon_value'] == '') $this->error .= 'paya_coupons_value,';
296  else $_POST['coupon_value'] = ilFormat::checkDecimal($_POST['coupon_value']);
297 
298  $this->coupon_obj->setId($_GET['coupon_id']);
299  $this->coupon_obj->setCouponUser($this->user_obj->getId());
300  $this->coupon_obj->setTitle(ilUtil::stripSlashes($_POST['title']));
301  $this->coupon_obj->setDescription(ilUtil::stripSlashes($_POST['description']));
302  $this->coupon_obj->setType(ilUtil::stripSlashes($_POST['coupon_type']));
303  $this->coupon_obj->setValue(ilUtil::stripSlashes($_POST['coupon_value']));
304  $this->coupon_obj->setFromDate( date("Y-m-d",mktime(0,0,0,$_POST['from']['date']['m'],$_POST['from']['date']['d'],$_POST['from']['date']['y'])));
305  $this->coupon_obj->setTillDate( date("Y-m-d",mktime(0,0,0,$_POST['til']['date']['m'],$_POST['til']['date']['d'],$_POST['til']['date']['y'])));
306  // $this->coupon_obj->setFromDateEnabled(ilUtil::stripSlashes($_POST['from_check']));
307  //$this->coupon_obj->setTillDateEnabled(ilUtil::stripSlashes($_POST['until_check']));
308 
309  $this->coupon_obj->setFromDateEnabled($_POST['from_check']);
310  $this->coupon_obj->setTillDateEnabled($_POST['until_check']);
311  $this->coupon_obj->setUses((int)ilUtil::stripSlashes($_POST['usage']));
312  $this->coupon_obj->setChangeDate(date('Y-m-d H:i:s'));
313 
314  if ($this->error == '')
315  {
316  if ($_GET['coupon_id'] != "")
317  {
318  $this->coupon_obj->update();
319 
320  }
321  else
322  {
323  $_GET['coupon_id'] = $this->coupon_obj->add();
324  }
325 
326  ilUtil::sendInfo($this->lng->txt('saved_successfully'));
327  }
328  else
329  {
330  if (is_array($e = explode(',', $this->error)))
331  {
332  $mandatory = '';
333  for ($i = 0; $i < count($e); $i++)
334  {
335  $e[$i] = trim($e[$i]);
336  if ($e[$i] != '')
337  {
338  $mandatory .= $this->lng->txt($e[$i]);
339  if (array_key_exists($i + 1, $e) && $e[$i + 1] != '') $mandatory .= ', ';
340  }
341  }
342  ilUtil::sendInfo($this->lng->txt('fill_out_all_required_fields') . ': ' . $mandatory);
343  }
344  }
345 
346  $this->addCoupon();
347 
348  return true;
349  }
350 
351  public function addCoupon()
352  {
353  $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.main_view.html','Services/Payment');
354 
355  if (isset($_GET['coupon_id']))
356  {
357  if ($this->error == '') $this->coupon_obj->getCouponById($_GET['coupon_id']);
358 
359  $this->ctrl->setParameter($this, 'coupon_id', $this->coupon_obj->getId());
360 
361  $this->__showButtons();
362  }
363 
364 
365  $oForm = new ilPropertyFormGUI();
366  $oForm->setId('frm_add_coupon');
367  $oForm->setFormAction($this->ctrl->getFormAction($this,'saveCouponForm'));
368  $oForm->setTitle($this->coupon_obj->getId() ? $this->lng->txt('paya_coupons_edit') : $this->lng->txt('paya_coupons_add'));
369 
370  // Title
371  $oTitle = new ilTextInputGUI($this->lng->txt(paya_coupons_title),'title');
372  $oTitle->setValue($this->coupon_obj->getTitle());
373  $oTitle->setRequired(true);
374  $oForm->addItem($oTitle);
375 
376  // Description
377  $oDescription = new ilTextAreaInputGUI($this->lng->txt(paya_coupons_description),'description');
378  $oDescription->setValue($this->coupon_obj->getDescription());
379  $oForm->addItem($oDescription);
380 
381  // Type
382  $o_coupon_type = new ilSelectInputGUI();
383  $coupon_option = array('fix'=>$this->lng->txt('paya_coupons_fix'),'percent'=>$this->lng->txt('paya_coupons_percentaged'));
384 
385  $o_coupon_type->setTitle($this->lng->txt('coupon_type'));
386  $o_coupon_type->setOptions($coupon_option);
387  $o_coupon_type->setValue($this->coupon_obj->getType());
388  $o_coupon_type->setRequired(true);
389  $o_coupon_type->setPostVar('coupon_type');
390 
391  $oForm->addItem($o_coupon_type);
392 
393  // Value
394  include_once './Services/Payment/classes/class.ilGeneralSettings.php';
395 
396 
397  $o_coupon_value = new ilNumberInputGUI($this->lng->txt('paya_coupons_value'),'coupon_value');
398  $o_coupon_value->setSize(5);
399  $o_coupon_value->setValue($this->coupon_obj->getValue());
400 
401  $o_coupon_value->setRequired(true);
402  $oForm->addItem($o_coupon_value);
403 
404  // Date Valid From
405  $o_from_check = new ilCheckBoxInputGUI($this->lng->txt('paya_coupons_from'),'from_check');
406  $o_from_check->setValue(1);
407  $o_from_check->setChecked($this->coupon_obj->getFromDateEnabled() ? 1 : 0);
408 
409  $o_date_from = new ilDateTimeInputGUI();
410  $o_date_from->setPostVar('from');
411 
412  $from_date = explode('-', $this->coupon_obj->getFromDate());
413  $date_f['from']['date']['d'] = $from_date[2] != '00' ? $from_date[2] : '';
414  $date_f['from']['date']['m'] = $from_date[1] != '00' ? $from_date[1] : '';
415  $date_f['from']['date']['y'] = $from_date[0] != '0000' ? $from_date[0] : '';
416 
417  $_POST['from'] = $date_f['from'];
418  if($this->coupon_obj->getFromDateEnabled() == '1')
419  {
420  $o_date_from->checkInput();
421  }
422 
423  $o_from_check->addSubItem($o_date_from);
424  $oForm->addItem($o_from_check);
425 
426  // Date Valid Until
427  $o_until_check = new ilCheckBoxInputGUI($this->lng->txt('paya_coupons_till'), 'until_check');
428  $o_until_check->setValue(1);
429  $o_until_check->setChecked($this->coupon_obj->getTillDateEnabled() ? 1 : 0);
430 
431  $o_date_until = new ilDateTimeInputGUI();
432  $o_date_until->setPostVar('til');
433 
434  $till_date = explode('-', $this->coupon_obj->getTillDate());
435  $date_t['til']['date']['d']= $till_date[2] != '00' ? $till_date[2] : '';
436  $date_t['til']['date']['m'] = $till_date[1] != '00' ? $till_date[1] : '';
437  $date_t['til']['date']['y'] = $till_date[0] != '0000' ? $till_date[0] : '';
438 
439  $_POST['til'] = $date_t['til'];
440  if($this->coupon_obj->getTillDateEnabled() == '1')
441  {
442  $o_date_until->checkInput();
443  }
444 
445  $o_until_check->addSubItem($o_date_until);
446  $oForm->addItem($o_until_check);
447 
448  $o_usage = new ilNumberInputGUI($this->lng->txt('paya_coupons_availability'),'usage');
449  $o_usage->setSize(5);
450  $o_usage->setValue($this->coupon_obj->getUses());
451  $oForm->addItem($o_usage);
452 
453  $oForm->addCommandButton('saveCouponForm', $this->lng->txt('save'));
454  $oForm->addCommandButton('showCoupons', $this->lng->txt('cancel'));
455 
456  $this->tpl->setVariable('FORM',$oForm->getHTML());
457  }
458 
459  public function deleteAllCodes()
460  {
461  $this->showCodes("all");
462 
463  return true;
464  }
465 
466  public function performDeleteAllCodes()
467  {
468  $this->coupon_obj->deleteAllCodesByCouponId($_GET['coupon_id']);
469 
470  $this->showCodes();
471 
472  return true;
473  }
474 
475  public function deleteCodes()
476  {
477  $_SESSION['paya_delete_codes'] = $_POST['codes'];
478 
479  if (!is_array($_POST['codes']))
480  {
481  ilUtil::sendInfo($this->lng->txt('paya_coupons_no_codes_selected'));
482 
483  $this->showCodes();
484 
485  return true;
486  }
487 
488  $this->showCodes("selected");
489 
490  return true;
491  }
492 
493  public function performDeleteCodes()
494  {
495  if (is_array($_SESSION['paya_delete_codes']))
496  {
497  foreach($_SESSION['paya_delete_codes'] as $id)
498  {
499  $this->coupon_obj->deleteCode($id);
500  }
501  }
502  unset($_SESSION['paya_delete_codes']);
503  ilUtil::sendInfo($this->lng->txt('paya_coupons_code_deleted_successfully'));
504 
505  $this->showCodes();
506 
507  return true;
508  }
509 
510  public function cancelDelete()
511  {
512  unset($_SESSION['paya_delete_codes']);
513 
514  $this->showCodes();
515 
516  return true;
517  }
518 
519  public function showCodes($a_show_delete = "")
520  {
521  $this->coupon_obj->setId($_GET['coupon_id']);
522 
523  if (!count($codes = $this->coupon_obj->getCodesByCouponId($_GET['coupon_id'])))
524  {
525  ilUtil::sendInfo($this->lng->txt('paya_coupons_codes_not_available'));
526  $this->generateCodes();
527 
528  return true;
529  }
530 
531  $this->coupon_obj->getCouponById(ilUtil::stripSlashes($_GET['coupon_id']));
532 
533  $this->ctrl->setParameter($this, 'coupon_id', $_GET['coupon_id']);
534  $this->__showButtons();
535 
536  $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.main_view.html','Services/Payment');
537 
538  if($a_show_delete)
539  {
540  switch($a_show_delete)
541  {
542  case 'all': $del_cmd = 'performDeleteAllCodes';
543  $del_info = $this->lng->txt('paya_coupons_sure_delete_all_codes');
544  break;
545  case 'selected': $del_cmd = 'performDeleteCodes';
546  $del_info = $this->lng->txt('paya_coupons_sure_delete_selected_codes');
547  break;
548  }
549 
550  $oConfirmationGUI = new ilConfirmationGUI() ;
551  // set confirm/cancel commands
552  $oConfirmationGUI->setFormAction($this->ctrl->getFormAction($this, $del_cmd));
553  $oConfirmationGUI->setHeaderText($del_info);
554  $oConfirmationGUI->setCancel($this->lng->txt("cancel"), "cancelDelete");
555  $oConfirmationGUI->setConfirm($this->lng->txt("confirm"), $del_cmd);
556 
557  foreach ($codes as $code)
558  {
559  if(in_array($code['pcc_pk'],$_SESSION['paya_delete_codes']))
560  {
561  $oConfirmationGUI->addItem('',$code['pcc_code'], $code['pcc_code']);
562  }
563  }
564 
565  $this->tpl->setVariable('CONFIRMATION', $oConfirmationGUI->getHTML());
566  return true;
567  }
568 
569  $_SESSION['paya_delete_codes'] = $_SESSION['paya_delete_codes'] ? $_SESSION['paya_delete_codes'] : array();
570 
571  $counter = 0;
572  foreach ($codes as $code)
573  {
574  $f_result[$counter]['coupon_id'] = ilUtil::formCheckbox(in_array($code['pcc_pk'], $_SESSION['paya_delete_codes']) ? 1 : 0,
575  "codes[]", $code['pcc_pk']);
576  $f_result[$counter]['coupon_code'] = $code['pcc_code'];
577  $f_result[$counter]['usage_of_codes'] = $code['pcc_used']." ".strtolower($this->lng->txt('of'))." ".$this->coupon_obj->getUses();
578 
579  ++$counter;
580  }
581 
582  $tbl = new ilShopTableGUI($this, 'showCodes');
583  $tbl->setTitle($this->lng->txt("paya_coupons_coupons"));
584  $tbl->setId('tbl_show_codes');
585  $tbl->setRowTemplate("tpl.shop_coupons_row.html", "Services/Payment");
586 
587  $tbl->addColumn('', 'coupon_id', '1%');
588  $tbl->addColumn($this->lng->txt('paya_coupons_code'), 'coupon_code', '30%');
589  $tbl->addColumn($this->lng->txt('paya_coupons_usage_of_codes'), 'usage_of_codes', '60%');
590 
591  $tbl->setSelectAllCheckbox('codes[]');
592 
593  $tbl->addCommandButton('generateCodes',$this->lng->txt('paya_coupons_generate_codes'));
594  $tbl->addCommandButton('exportCodes',$this->lng->txt('export'));
595 
596  $tbl->addMultiCommand("deleteCodes", $this->lng->txt("delete"));
597 
598  $tbl->setData($f_result);
599  $this->tpl->setVariable('TABLE', $tbl->getHTML());
600 
601  return true;
602  }
603 
604  public function exportCodes()
605  {
606  $codes = $this->coupon_obj->getCodesByCouponId($_GET["coupon_id"]);
607 
608  if (is_array($codes))
609  {
610  include_once('./Services/Utilities/classes/class.ilCSVWriter.php');
611 
612  $csv = new ilCSVWriter();
613  $csv->setDelimiter("");
614 
615  foreach($codes as $data)
616  {
617  if ($data["pcc_code"])
618  {
619  $csv->addColumn($data["pcc_code"]);
620  $csv->addRow();
621  }
622  }
623 
624  ilUtil::deliverData($csv->getCSVString(), "code_export_".date("Ymdhis").".csv");
625  }
626 
627  $this->showCodes();
628 
629  return true;
630  }
631 
632  public function saveCodeForm()
633  {
634  if (isset($_POST["generate_length"])) $_SESSION["pay_coupons"]["code_length"] = $_POST["generate_length"];
635  else $_POST["generate_length"] = $_SESSION["pay_coupons"]["code_length"];
636 
637  if (isset($_POST["generate_type"])) $_SESSION["pay_coupons"]["code_type"] = $_POST["generate_type"];
638  else $_POST["generate_type"] = $_SESSION["pay_coupons"]["code_type"];
639 
640  if ($_POST["generate_type"] == "self")
641  {
642  if ($_GET["coupon_id"] && is_array($_POST["codes"]))
643  {
644  $count_inserts = 0;
645 
646  for ($i = 0; $i < count($_POST["codes"]); $i++)
647  {
648  $_POST["codes"][$i] = trim($_POST["codes"][$i]);
649 
650  if ($_POST["codes"][$i] != "")
651  {
652  $code = $this->__makeCode($_POST["codes"][$i], $_SESSION["pay_coupons"]["code_length"]);
653 
654  if ($code != "")
655  {
656  if ($this->coupon_obj->addCode(ilUtil::stripSlashes($code), $_GET["coupon_id"]))
657  {
658  ++$count_inserts;
659  }
660  }
661  }
662  }
663 
664  if ($count_inserts)
665  {
666  ilUtil::sendInfo($this->lng->txt("saved_successfully"));
667  $this->showCodes();
668  }
669  else
670  {
671  ilUtil::sendInfo($this->lng->txt("paya_coupons_no_codes_generated"));
672  $this->generateCodes();
673  }
674  }
675  else if (!is_numeric($_POST["generate_number"]) || $_POST["generate_number"] <= 0)
676  {
677  ilUtil::sendInfo($this->lng->txt("fill_out_all_required_fields"));
678 
679  $this->generateCodes();
680  }
681  else
682  {
683  $this->generateCodes("input");
684  }
685  }
686  else if ($_POST["generate_type"] == "auto")
687  {
688  if ($_GET["coupon_id"] && is_numeric($_POST["generate_number"]) && $_POST["generate_number"] > 0)
689  {
690  for ($i = 0; $i < $_POST["generate_number"]; $i++)
691  {
692  $code = $this->__makeCode("", $_SESSION["pay_coupons"]["code_length"]);
693 
694  if ($code != "")
695  {
696  $this->coupon_obj->addCode($code, $_GET["coupon_id"]);
697  }
698  }
699 
700  ilUtil::sendInfo($this->lng->txt("saved_successfully"));
701 
702  $this->showCodes();
703  }
704  else
705  {
706  ilUtil::sendInfo($this->lng->txt("fill_out_all_required_fields"));
707 
708  $this->generateCodes();
709  }
710  }
711  }
712 
713  private function __makeCode($a_code = "", $a_length = 32)
714  {
715  if ($a_code == "") $a_code = md5(uniqid(rand()));
716 
717  if (is_numeric($a_length) && strlen($a_code) > $a_length)
718  {
719  $a_code = substr($a_code, 0, $a_length);
720  }
721 
722  return $a_code;
723  }
724 
725  public function generateCodes($view = "choice")
726  {
727  $this->coupon_obj->setId($_GET['coupon_id']);
728 
729  $this->ctrl->setParameter($this, 'coupon_id', $_GET['coupon_id']);
730  $this->__showButtons();
731 
732  $this->coupon_obj->getCouponById(ilUtil::stripSlashes($_GET['coupon_id']));
733 
734  $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.main_view.html','Services/Payment');
735  $oForm_1 = new ilPropertyFormGUI();
736  $oForm_1->setId('save_frm');
737  $oForm_1->setFormAction($this->ctrl->getFormAction($this),'saveCodeForm');
738  $oForm_1->setTitle($this->lng->txt("paya_coupons_coupon")." ".$this->coupon_obj->getTitle().": ".$this->lng->txt('paya_coupons_code_generation'));
739 
740  if ($view == "choice")
741  {
742  $oTypeRadio = new ilRadioGroupInputGUI($this->lng->txt('paya_coupons_generate_codes'), 'generate_type');
743 
744  $radio_option = new ilRadioOption($this->lng->txt('paya_coupons_type_auto'), 'auto');
745  $oTypeRadio->addOption($radio_option);
746  $radio_option = new ilRadioOption($this->lng->txt('paya_coupons_type_self'), 'self');
747  $oTypeRadio->addOption($radio_option);
748 
749  $oTypeRadio->setValue(isset($_POST["generate_type"]) ? $_POST["generate_type"] : "auto");
750  $oTypeRadio->setPostVar('generate_type');
751  $oForm_1->addItem($oTypeRadio);
752 
753  $oNumCodes = new ilNumberInputGUI($this->lng->txt("paya_coupons_number_of_codes"),'generate_number');
754  $oNumCodes->setSize(5);
755  $oNumCodes->setValue($_POST['generate_number']);
756  $oNumCodes->setRequired(true);
757  $oForm_1->addItem($oNumCodes);
758 
759  $oLength = new ilNumberInputGUI($this->lng->txt("paya_coupons_code_length"),'generate_length');
760  $oLength->setSize(5);
761  $oLength->setValue($_POST['generate_length']);
762  $oLength->setInfo($this->lng->txt('paya_coupons_type_self'));
763  $oForm_1->addItem($oLength);
764 
765  $oForm_1->addCommandButton('saveCodeForm',$this->lng->txt('save'));
766 
767  $this->tpl->setVariable('FORM', $oForm_1->getHTML());
768 
769  $oForm_2 = new ilPropertyformGUI();
770  $oForm_2->setId('import_frm');
771  $oForm_2->setFormAction($this->ctrl->getFormAction($this), 'showCodeImport');
772  $oForm_2->addCommandButton('showCodeImport',$this->lng->txt('import'));
773  $this->tpl->setVariable('FORM_2', $oForm_2->getHTML());
774 
775  }
776  else if ($view == "input")
777  {
778  if (is_numeric($_POST['generate_number']) && $_POST['generate_number'] > 0)
779  {
780  for ($i = 0; $i < $_POST['generate_number']; $i++)
781  {
782  $index = $i +1;
783  $oLoopCode = new ilTextInputGUI('#'.$index,'codes['.$i.']');
784  $oForm_1->addItem($oLoopCode);
785  }
786  $oForm_1->addCommandButton('saveCodeForm',$this->lng->txt('save'));
787  }
788 
789  $this->tpl->setVariable('FORM',$oForm_1->getHTML());
790 
791  $oLoopCode = new ilTextInputGUI();
792  }
793 
794  return true;
795  }
796 
797  public function assignObjects()
798  {
799  if (is_array($_POST['object_id']))
800  {
801  $this->coupon_obj->setId($_GET["coupon_id"]);
802  foreach($_POST['object_id'] as $id)
803  {
804  if ($id)
805  {
806  $this->coupon_obj->assignObjectToCoupon($id);
807  }
808  }
809  }
810 
811  $this->showObjects();
812 
813  return true;
814  }
815 
816  public function unassignObjects()
817  {
818  if (is_array($_POST['object_id']))
819  {
820  $this->coupon_obj->setId($_GET["coupon_id"]);
821  foreach($_POST['object_id'] as $id)
822  {
823  if ($id)
824  {
825  $this->coupon_obj->unassignObjectFromCoupon($id);
826  }
827  }
828  }
829 
830  $this->showObjects();
831 
832  return true;
833  }
834 
835  public function showObjects()
836  {
837  $this->coupon_obj->setId($_GET['coupon_id']);
838 
839  $this->__initPaymentObject();
840 
841  $this->ctrl->setParameter($this, 'coupon_id', $_GET['coupon_id']);
842  $this->__showButtons();
843 
844  $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.main_view.html','Services/Payment');
845 
846  $objects = $this->pobject->_getObjectsData($this->user_obj->getId());
847 
848  $this->coupon_obj->getCouponById(ilUtil::stripSlashes($_GET['coupon_id']));
849 
850  $counter_assigned = 0;
851  $counter_unassigned = 0;
852  $f_result_assigned = array();
853  $f_result_unassigned = array();
854  foreach($objects as $data)
855  {
856  if ($this->coupon_obj->isObjectAssignedToCoupon($data['ref_id']))
857  {
858  $p_counter =& $counter_assigned;
859  $p_result =& $f_result_assigned;
860  }
861  else
862  {
863  $p_counter =& $counter_unassigned;
864  $p_result =& $f_result_unassigned;
865  }
866 
867  $tmp_obj = ilObjectFactory::getInstanceByRefId($data['ref_id'], false);
868 
869  $p_result[$p_counter]['object_id'] = ilUtil::formCheckbox(0, 'object_id[]', $data['ref_id']);
870  if($tmp_obj)
871  {
872  $p_result[$p_counter]['title'] = $tmp_obj->getTitle();
873  }
874  else
875  {
876  $p_result[$p_counter]['title'] = $this->lng->txt('object_not_found');
877  }
878  switch($data['status'])
879  {
880  case $this->pobject->STATUS_BUYABLE:
881  $p_result[$p_counter]['status'] = $this->lng->txt('paya_buyable');
882  break;
883 
884  case $this->pobject->STATUS_NOT_BUYABLE:
885  $p_result[$p_counter]['status'] = $this->lng->txt('paya_not_buyable');
886  break;
887 
888  case $this->pobject->STATUS_EXPIRES:
889  $p_result[$p_counter]['status'] = $this->lng->txt('paya_expires');
890  break;
891  }
892  include_once './Services/Payment/classes/class.ilPayMethods.php';
893  $p_result[$p_counter]['pay_method'] = ilPaymethods::getStringByPaymethod($data['pay_method']);
894 
895  ++$p_counter;
896 
897  unset($tmp_obj);
898  }
899 
900  $this->ctrl->setParameter($this, "cmd", "showObjects");
901 
902  if (count($f_result_assigned) > 0)
903  {
904  $tbl = new ilShopTableGUI($this);
905  $tbl->setTitle($this->lng->txt("paya_coupons_coupon")." ".$this->coupon_obj->getTitle().": ".$this->lng->txt("paya_coupons_assigned_objects"));
906  $tbl->setId('tbl_show_assigned');
907  $tbl->setPrefix('assigned');
908  $tbl->setRowTemplate("tpl.shop_objects_row.html", "Services/Payment");
909 
910  $tbl->addColumn('', 'object_id', '1%');
911  $tbl->addColumn($this->lng->txt('title'),'title', '10%');
912  $tbl->addColumn($this->lng->txt('status'), 'status', '30%');
913  $tbl->addColumn($this->lng->txt('paya_pay_method'), 'paya_pay_method', '60%');
914 
915  $tbl->setSelectAllCheckbox('object_id');
916 
917  $tbl->addMultiCommand('unassignObjects',$this->lng->txt('remove'));
918 
919 
920  $tbl->setData($f_result_assigned);
921 
922  $this->tpl->setVariable('TABLE', $tbl->getHTML());
923  }
924 
925  if (count($f_result_unassigned) > 0)
926  {
927  $tbl_2 = new ilShopTableGUI($this);
928  $tbl_2->setTitle($this->lng->txt("paya_coupons_coupon")." ".$this->coupon_obj->getTitle().": ".$this->lng->txt("paya_coupons_unassigned_objects"));
929  $tbl_2->setId('tbl_show_unassigned');
930  $tbl_2->setPrefix('unassigned');
931  $tbl_2->setRowTemplate("tpl.shop_objects_row.html", "Services/Payment");
932 
933  $tbl_2->addColumn('', 'object_id', '1%');
934  $tbl_2->addColumn($this->lng->txt('title'),'title', '10%');
935  $tbl_2->addColumn($this->lng->txt('status'), 'status', '30%');
936  $tbl_2->addColumn($this->lng->txt('paya_pay_method'), 'pay_method', '60%');
937 
938  $tbl_2->setSelectAllCheckbox('object_id');
939 
940  $tbl_2->addMultiCommand('assignObjects',$this->lng->txt('add'));
941 
942 
943  $tbl_2->setData($f_result_unassigned);
944 
945  $this->tpl->setVariable('TABLE_2', $tbl_2->getHTML());
946  }
947 
948  return true;
949  }
950 
951  public function importCodes()
952  {
953  include_once('./Services/Utilities/classes/class.ilCSVReader.php');
954 
955  if ($_FILES["codesfile"]["tmp_name"] != "")
956  {
957  $csv = new ilCSVReader();
958  $csv->setDelimiter("");
959 
960  if ($csv->open($_FILES["codesfile"]["tmp_name"]))
961  {
962  $data = $csv->getDataArrayFromCSVFile();
963 
964  for ($i = 0; $i < count($data); $i++)
965  {
966  for ($j = 0; $j < count($data[$i]); $j++)
967  {
968  $this->coupon_obj->addCode(ilUtil::stripSlashes($data[$i][$j]), $_GET["coupon_id"]);
969  }
970  }
971 
972  ilUtil::sendInfo($this->lng->txt("paya_coupon_codes_import_successful"));
973 
974  $this->showCodes();
975  }
976  else
977  {
978  ilUtil::sendInfo($this->lng->txt("paya_coupons_import_error_opening_file"));
979 
980  $this->showCodeImport();
981  }
982  }
983  else
984  {
985  ilUtil::sendInfo($this->lng->txt("fill_out_all_required_fields"));
986 
987  $this->showCodeImport();
988  }
989 
990  return true;
991  }
992 
993  public function showCodeImport()
994  {
995  $this->ctrl->setParameter($this, 'coupon_id', $_GET['coupon_id']);
996  $this->__showButtons();
997  $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.main_view.html','Services/Payment');
998 
999  $this->coupon_obj->getCouponById(ilUtil::stripSlashes($_GET['coupon_id']));
1000  $oForm = new ilPropertyFormGUI();
1001  $oForm->setId('coup_form');
1002  $oForm->setFormAction($this->ctrl->getFormAction($this), 'importCodes');
1003  $oForm->setTitle( $this->lng->txt("paya_coupons_coupon")." ".$this->coupon_obj->getTitle().": ".$this->lng->txt('paya_coupons_codes_import'));
1004 
1005  $oFile = new ilFileInputGUI($this->lng->txt('file'),'codesfile');
1006  $oFile->setSuffixes(array("txt"));
1007  $oFile->setRequired(true);
1008  $oFile->setInfo($this->lng->txt('import_use_only_textfile'));
1009  $oForm->addItem($oFile);
1010 
1011  $oForm->addCommandButton('importCodes',$this->lng->txt('upload'));
1012 
1013  $this->tpl->setVariable('FORM', $oForm->getHTML());
1014 
1015  return true;
1016  }
1017 
1018  private function __showButtons()
1019  {
1020  global $ilToolbar;
1021 
1022  $ilToolbar->addButton($this->lng->txt('paya_coupons_edit'), $this->ctrl->getLinkTarget($this, 'addCoupon'));
1023  $ilToolbar->addButton($this->lng->txt('paya_coupons_edit_codes'), $this->ctrl->getLinkTarget($this, 'showCodes'));
1024  $ilToolbar->addButton($this->lng->txt('paya_coupons_edit_objects'), $this->ctrl->getLinkTarget($this, 'showObjects'));
1025 
1026  return true;
1027  }
1028 
1029  private function __initPaymentObject($a_pobject_id = 0)
1030  {
1031  include_once './Services/Payment/classes/class.ilPaymentObject.php';
1032 
1033  $this->pobject = new ilPaymentObject($this->user_obj, $a_pobject_id);
1034 
1035  return true;
1036  }
1037 
1038  private function __initCouponObject()
1039  {
1040  include_once './Services/Payment/classes/class.ilPaymentCoupons.php';
1041 
1042  $this->coupon_obj = new ilPaymentCoupons($this->user_obj, true);
1043 
1044  return true;
1045  }
1046 }
1047 ?>