Elgg  Version 1.12
StickyForms.php
Go to the documentation of this file.
1 <?php
2 namespace Elgg\Forms;
3 
13 class StickyForms {
14 
25  public function makeStickyForm($form_name) {
26 
27  $banned_keys = [];
28  // TODO make $banned_keys an argument
29  if (in_array($form_name, ['register', 'useradd', 'usersettings'])) {
30  $banned_keys = ['password', 'password2'];
31  }
32 
33  elgg_clear_sticky_form($form_name);
34 
35  $session = _elgg_services()->session;
36  $data = $session->get('sticky_forms', array());
37  $req = _elgg_services()->request;
38 
39  // will go through XSS filtering in elgg_get_sticky_value()
40  $vars = array_merge($req->query->all(), $req->request->all());
41  foreach ($banned_keys as $key) {
42  unset($vars[$key]);
43  }
44  $data[$form_name] = $vars;
45 
46  $session->set('sticky_forms', $data);
47  }
48 
60  function clearStickyForm($form_name) {
61  $session = _elgg_services()->session;
62  $data = $session->get('sticky_forms', array());
63  unset($data[$form_name]);
64  $session->set('sticky_forms', $data);
65  }
66 
74  function isStickyForm($form_name) {
75  $session = _elgg_services()->session;
76  $data = $session->get('sticky_forms', array());
77  return isset($data[$form_name]);
78  }
79 
92  function getStickyValue($form_name, $variable = '', $default = null, $filter_result = true) {
93  $session = _elgg_services()->session;
94  $data = $session->get('sticky_forms', array());
95  if (isset($data[$form_name][$variable])) {
96  $value = $data[$form_name][$variable];
97  if ($filter_result) {
98  // XSS filter result
100  }
101  return $value;
102  }
103  return $default;
104  }
105 
114  function getStickyValues($form_name, $filter_result = true) {
115  $session = _elgg_services()->session;
116  $data = $session->get('sticky_forms', array());
117  if (!isset($data[$form_name])) {
118  return array();
119  }
120 
121  $values = $data[$form_name];
122  if ($filter_result) {
123  foreach ($values as $key => $value) {
124  // XSS filter result
125  $values[$key] = filter_tags($value);
126  }
127  }
128  return $values;
129  }
130 
139  function clearStickyValue($form_name, $variable) {
140  $session = _elgg_services()->session;
141  $data = $session->get('sticky_forms', array());
142  unset($data[$form_name][$variable]);
143  $session->set('sticky_forms', $data);
144  }
145 
146 }
getStickyValues($form_name, $filter_result=true)
Get all submission data cached for a form.
elgg_clear_sticky_form($form_name)
Remove form submission data from the session.
Definition: input.php:119
$data
Definition: opendd.php:13
$value
Definition: longtext.php:26
getStickyValue($form_name, $variable= '', $default=null, $filter_result=true)
Get a specific value from cached form submission data.
Definition: StickyForms.php:92
$default
Definition: checkbox.php:34
filter_tags($var)
Filter tags from a given string based on registered hooks.
Definition: input.php:53
isStickyForm($form_name)
Does form submission data exist for this form?
Definition: StickyForms.php:74
clearStickyValue($form_name, $variable)
Remove one value of form submission data from the session.
$key
Definition: summary.php:34
_elgg_services()
Definition: autoloader.php:14
makeStickyForm($form_name)
Save form submission data (all GET and POST vars) into a session cache.
Definition: StickyForms.php:25
$session
Definition: login.php:9
clearStickyForm($form_name)
Remove form submission data from the session.
Definition: StickyForms.php:60
if(file_exists($welcome)) $vars
Definition: upgrade.php:93