ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilAccountCodesGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
14 {
15  protected $ref_id; // [int]
16 
22  public function __construct($a_ref_id)
23  {
24  global $lng;
25 
26  $this->ref_id = $a_ref_id;
27  $lng->loadLanguageModule("user");
28  }
29 
30  public function executeCommand()
31  {
32  global $ilCtrl;
33 
34  $next_class = $ilCtrl->getNextClass($this);
35  $cmd = $ilCtrl->getCmd();
36 
37  switch ($next_class) {
38  default:
39  if (!$cmd) {
40  $cmd = "listCodes";
41  }
42  $this->$cmd();
43  break;
44  }
45 
46  return true;
47  }
48 
49  public function listCodes()
50  {
51  global $ilAccess, $ilErr, $ilCtrl, $ilToolbar, $lng, $tpl;
52 
53  if (!$ilAccess->checkAccess('read', '', $this->ref_id)) {
54  $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->MESSAGE);
55  }
56 
57  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
58  $button = ilLinkButton::getInstance();
59  $button->setCaption("user_account_codes_add");
60  $button->setUrl($ilCtrl->getLinkTarget($this, "addCodes"));
61  $ilToolbar->addButtonInstance($button);
62 
63  include_once("./Services/User/classes/class.ilAccountCodesTableGUI.php");
64  $ctab = new ilAccountCodesTableGUI($this, "listCodes");
65  $tpl->setContent($ctab->getHTML());
66  }
67 
68  public function initAddCodesForm()
69  {
70  global $ilCtrl, $lng;
71 
72  include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
73 
74  $this->form_gui = new ilPropertyFormGUI();
75  $this->form_gui->setFormAction($ilCtrl->getFormAction($this, 'createCodes'));
76  $this->form_gui->setTitle($lng->txt('user_account_codes_edit_header'));
77 
78  $count = new ilNumberInputGUI($lng->txt('user_account_codes_number'), 'acc_codes_number');
79  $count->setSize(4);
80  $count->setMaxLength(4);
81  $count->setMinValue(1);
82  $count->setMaxValue(1000);
83  $count->setRequired(true);
84  $this->form_gui->addItem($count);
85 
86  $valid = new ilRadioGroupInputGUI($lng->txt('user_account_code_valid_until'), 'valid_type');
87  $valid->setRequired(true);
88 
89  $unl = new ilRadioOption($lng->txt('user_account_code_valid_until_unlimited'), 'valid_unlimited');
90  $valid->addOption($unl);
91 
92  $st = new ilRadioOption($lng->txt('user_account_code_valid_until_static'), 'valid_static');
93  $valid->addOption($st);
94 
95  $dt = new ilDateTimeInputGUI($lng->txt('date'), 'valid_date');
96  $dt->setRequired(true);
97  $st->addSubItem($dt);
98 
99  $dyn = new ilRadioOption($lng->txt('user_account_code_valid_until_dynamic'), 'valid_dynamic');
100  $valid->addOption($dyn);
101 
102  $ds = new ilNumberInputGUI($lng->txt('days'), 'valid_days');
103  $ds->setSize(5);
104  $ds->setRequired(true);
105  $dyn->addSubItem($ds);
106 
107  $this->form_gui->addItem($valid);
108 
109  $this->form_gui->addCommandButton('createCodes', $lng->txt('create'));
110  $this->form_gui->addCommandButton('listCodes', $lng->txt('cancel'));
111  }
112 
113  public function addCodes()
114  {
115  global $ilAccess, $ilErr, $tpl, $lng;
116 
117  if (!$ilAccess->checkAccess('write', '', $this->ref_id)) {
118  $ilErr->raiseError($lng->txt("msg_no_perm_write"), $ilErr->MESSAGE);
119  }
120 
121  $this->initAddCodesForm();
122  $tpl->setContent($this->form_gui->getHTML());
123  }
124 
125  public function createCodes()
126  {
127  global $ilAccess, $ilErr, $lng, $tpl, $ilCtrl;
128 
129  if (!$ilAccess->checkAccess('write', '', $this->ref_id)) {
130  $ilErr->raiseError($lng->txt("msg_no_perm_write"), $ilErr->MESSAGE);
131  }
132 
133  $this->initAddCodesForm();
134  if ($this->form_gui->checkInput()) {
135  $number = $this->form_gui->getInput('acc_codes_number');
136  switch ($this->form_gui->getInput('valid_type')) {
137  case 'valid_unlimited':
138  $valid = 0;
139  break;
140 
141  case 'valid_static':
142  $valid = $this->form_gui->getItemByPostVar('valid_date')->getDate()->get(IL_CAL_DATE);
143  break;
144 
145  case 'valid_dynamic':
146  $valid = $this->form_gui->getInput('valid_days');
147  break;
148  }
149 
150  include_once './Services/User/classes/class.ilAccountCode.php';
151 
152  $stamp = time();
153  for ($loop = 1; $loop <= $number; $loop++) {
154  ilAccountCode::create($valid, $stamp);
155  }
156 
157  ilUtil::sendSuccess($lng->txt('saved_successfully'), true);
158  $ilCtrl->redirect($this, "listCodes");
159  } else {
160  $this->form_gui->setValuesByPost();
161  $tpl->setContent($this->form_gui->getHtml());
162  }
163  }
164 
165  public function deleteCodes()
166  {
167  global $lng, $ilCtrl;
168 
169  include_once './Services/User/classes/class.ilAccountCode.php';
171 
172  ilUtil::sendSuccess($lng->txt('info_deleted'), true);
173  $ilCtrl->redirect($this, "listCodes");
174  }
175 
176  public function deleteConfirmation()
177  {
178  global $ilErr, $lng, $ilCtrl, $tpl;
179 
180  if (!isset($_POST["id"])) {
181  $ilErr->raiseError($lng->txt("no_checkbox"), $ilErr->MESSAGE);
182  }
183 
184  include_once './Services/Utilities/classes/class.ilConfirmationGUI.php';
185  $gui = new ilConfirmationGUI();
186  $gui->setHeaderText($lng->txt("info_delete_sure"));
187  $gui->setCancel($lng->txt("cancel"), "listCodes");
188  $gui->setConfirm($lng->txt("confirm"), "deleteCodes");
189  $gui->setFormAction($ilCtrl->getFormAction($this, "deleteCodes"));
190 
191  include_once './Services/User/classes/class.ilAccountCode.php';
193  foreach ($data as $code) {
194  $gui->addItem("id[]", $code["code_id"], $code["code"]);
195  }
196 
197  $tpl->setContent($gui->getHTML());
198  }
199 
200  public function resetCodesFilter()
201  {
202  include_once("./Services/User/classes/class.ilAccountCodesTableGUI.php");
203  $utab = new ilAccountCodesTableGUI($this, "listCodes");
204  $utab->resetOffset();
205  $utab->resetFilter();
206 
207  $this->listCodes();
208  }
209 
210  public function applyCodesFilter()
211  {
212  include_once("./Services/User/classes/class.ilAccountCodesTableGUI.php");
213  $utab = new ilAccountCodesTableGUI($this, "listCodes");
214  $utab->resetOffset();
215  $utab->writeFilterToSession();
216 
217  $this->listCodes();
218  }
219 
220  public function exportCodes()
221  {
222  global $ilAccess, $ilErr, $lng;
223 
224  if (!$ilAccess->checkAccess('read', '', $this->ref_id)) {
225  $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->MESSAGE);
226  }
227 
228  include_once("./Services/User/classes/class.ilAccountCodesTableGUI.php");
229  $utab = new ilAccountCodesTableGUI($this, "listCodes");
230 
231  include_once './Services/User/classes/class.ilAccountCode.php';
232  $codes = ilAccountCode::getCodesForExport($utab->filter["code"], $utab->filter["valid_until"], $utab->filter["generated"]);
233 
234  if (sizeof($codes)) {
235  // #13497
236  ilUtil::deliverData(implode("\r\n", $codes), "ilias_account_codes_" . date("d-m-Y") . ".txt", "text/plain");
237  } else {
238  ilUtil::sendFailure($lng->txt("account_export_codes_no_data"));
239  $this->listCodes();
240  }
241  }
242 }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
global $ilErr
Definition: raiseError.php:16
This class represents an option in a radio group.
GUI class for account codes.
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
This class represents a property form user interface.
$tpl
Definition: ilias.php:10
$code
Definition: example_050.php:99
$valid
__construct($a_ref_id)
Constructor.
static getCodesForExport($filter_code, $filter_valid_until, $filter_generated)
TableGUI class for account codes.
This class represents a date/time property in a property form.
global $ilCtrl
Definition: ilias.php:18
This class represents a property in a property form.
static loadCodesByIds(array $ids)
This class represents a number property in a property form.
static deleteCodes(array $ids)
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
setSize($a_size)
Set Size.
const IL_CAL_DATE
global $lng
Definition: privfeed.php:17
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
static create($valid_until, $stamp)
$_POST["username"]
setRequired($a_required)
Set Required.
Confirmation screen class.