CMSimple_XH 開発者ドキュメント
PageDataEditor.php
1 <?php
2 
14 namespace XH;
15 
27 {
35  private function unusedFields()
36  {
37  global $pd_router;
38 
39  $defaultFields = array('url', 'last_edit');
40  $storedFields = $pd_router->storedFields();
41  $currentFields = $pd_router->getCurrentInterests();
42  $unusedFields = array_diff($storedFields, $currentFields, $defaultFields);
43  $unusedFields = array_values($unusedFields);
44  return $unusedFields;
45  }
46 
55  private function deleteFields()
56  {
57  global $pd_router;
58 
59  $fields = $_POST['xh_fields'];
60  if (empty($fields)) {
61  return 0;
62  }
63  foreach ($fields as $field) {
64  $pd_router->removeInterest($field);
65  }
66  $ok = XH_saveContents();
67  return $ok ? count($fields) : false;
68  }
69 
77  private function renderField($field)
78  {
79  return '<li><label>'
80  . '<input type="checkbox" name="xh_fields[]" value="' . $field . '">'
81  . XH_hsc($field)
82  . '</label></li>';
83  }
84 
96  private function renderMessage($deleted)
97  {
98  global $pth, $tx;
99 
100  $ptx = $tx['pagedata'];
101  if (isset($deleted)) {
102  if ($deleted === false) {
103  return XH_message('fail', $ptx['fail'], $pth['file']['content']);
104  } elseif ($deleted === 0) {
105  return XH_message('info', $ptx['nothing']);
106  } else {
107  $suffix = $deleted == 1 ? '1' : ($deleted >= 5 ? '5' : '2_4');
108  return XH_message('success', $ptx['deleted_' . $suffix], $deleted);
109  }
110  }
111  }
112 
125  private function render($deleted = null)
126  {
127  global $sn, $tx, $_XH_csrfProtection;
128 
129  if (!isset($deleted) && isset($_GET['xh_success'])) {
130  $deleted = $_GET['xh_success'];
131  }
132  $o = $this->renderMessage($deleted);
133  if ($deleted === false) {
134  return $o;
135  }
136  $unusedFields = $this->unusedFields();
137  if (empty($unusedFields)) {
138  $o .= '<p>' . $tx['pagedata']['ok'] . '</p>';
139  } else {
140  $action = $sn . '?&amp;xh_pagedata&amp;edit';
141  $o .= '<form id="xh_pagedata" action="' . $action . '" method="post">'
142  . '<p>' . $tx['pagedata']['info'] . '</p>'
143  . '<ul>';
144  foreach ($unusedFields as $field) {
145  $o .= $this->renderField($field);
146  }
147  $o .= '</ul>'
148  . '<input type="submit" class="submit" name="xh_pagedata_delete"'
149  . ' value="' . $tx['action']['delete'] . '">'
150  . $_XH_csrfProtection->tokenInput()
151  . '</form>';
152  }
153  return $o;
154  }
155 
163  public function process()
164  {
165  global $_XH_csrfProtection;
166 
167  if (isset($_POST['xh_pagedata_delete'])) {
168  $_XH_csrfProtection->check();
169  $deleted = $this->deleteFields();
170  if (!$deleted) {
171  return $this->render($deleted);
172  } else {
173  $location = CMSIMPLE_URL . '?&xh_pagedata&xh_success=' . $deleted;
174  header('Location: ' . $location, true, 303);
175  exit;
176  }
177  }
178  return $this->render();
179  }
180 }
$action
Definition: cms.php:460
const CMSIMPLE_URL
Definition: cms.php:761
XH_saveContents()
Definition: adminfuncs.php:928
$o
Definition: cms.php:113
$sn
Definition: cms.php:434
foreach(XH_plugins() as $plugin) $_XH_csrfProtection
Definition: cms.php:879
$tx
Definition: cms.php:363
$pth
Definition: cms.php:230
XH_hsc($string)
Definition: functions.php:2204
$pd_router
Definition: cms.php:929
XH_message($type, $message)
Definition: functions.php:1806