CMSimple_XH 開発者ドキュメント
cms.php
[詳解]
1 <?php
2 
18 /*
19  ======================================
20  CMSimple_XH 1.7.0, 2017070201
21  2017-07-02
22  based on CMSimple version 3.3 - December 31. 2009
23  For changelog, downloads and information please see http://www.cmsimple-xh.org/
24  ======================================
25  [Please note: URLs in the following Copyright Notice are either void or
26  lead to different information as Mr. Harteg sold the code and website
27  in Nov. 2012. Of the four mentioned licenses only the first (GPL 3)
28  applies to CMSimple_XH.]
29 
30  -- COPYRIGHT INFORMATION START --
31 
32  CMSimple version 3.3 - December 31. 2009
33  Small - simple - smart
34  (c) 1999-2009 Peter Andreas Harteg - peter@harteg.dk
35 
36  -- COPYRIGHT INFORMATION END --
37 
38  -- LICENCE TYPES SECTION START --
39 
40  CMSimple is available under four different licenses:
41 
42  1) GPL 3
43  From December 31. 2009 CMSimple is released under the GPL 3 licence with no
44  link requirments. You may not remove copyright information from the files, and
45  any modifications will fall under the copyleft conditions in the GPL 3.
46 
47  2) AGPL 3
48  You must keep a convenient and prominently visible feature on every generated
49  page that displays the CMSimple Legal Notices. The required link to the
50  CMSimple Legal Notices must be static, visible and readable, and the text in
51  the CMSimple Legal Notices may not be altered. See
52  http://www.cmsimple.org/?Licence:CMSimple_Legal_Notices
53 
54  3) Linkware / CMSimple Link Requirement Licence
55  Same as AGPL, but instead of keeping a link to the CMSimple Legal Notices, you
56  must place a static, visible and readable link to www.cmsimple.org with the
57  text or an image stating "Powered by CMSimple" on every generated page (place
58  it in the template). See
59  http://www.cmsimple.org/?Licence:CMSimple_Link_Requirement_Licence
60 
61  4) Commercial Licence
62  This licence will allow you to remove the CMSimple Legal Notices / "Powered by
63  CMSimple"-link at one specific domain. This licence will also protect your
64  modifications against the copyleft requirements in AGPL 3 and give access to
65  registering in user support forum.
66 
67  You may change this LICENCE TYPES SECTION to relevant information, if you have
68  purchased a commercial licence, but then the files may not be distributed to
69  any other domain not covered by a commercial licence.
70 
71  For further informaion about the licence types, please see
72  http://www.cmsimple.org/?Licence and /cmsimple/legal.txt
73 
74  -- LICENCE TYPES SECTION END --
75  ======================================
76  */
77 
78 // prevent direct access
79 if (preg_match('/cms.php/i', $_SERVER['PHP_SELF'])) {
80  die('Access Denied');
81 }
82 
88 define('XH_URICHAR_SEPARATOR', '|');
89 
100 $title = '';
101 
113 $o = '';
114 
127 $e = '';
128 
141 $hjs = '';
142 
159 $bjs = '';
160 
171 $onload = '';
172 
182 $temp = null;
183 
193 $i = null;
194 
204 $j = null;
205 
209 define('CMSIMPLE_XH_VERSION', 'CMSimple_XH 1.7.0');
213 define('CMSIMPLE_XH_BUILD', '2017070201');
217 define('CMSIMPLE_XH_DATE', '2017-07-02');
218 
230 $pth = array();
231 $pth['file']['execute'] = './index.php';
232 
233 $pth['folder']['base'] = is_dir('./cmsimple') ? './' : '../';
234 
235 $pth['folder']['cmsimple'] = $pth['folder']['base'] . 'cmsimple/';
236 $pth['folder']['classes'] = $pth['folder']['cmsimple'] . 'classes/';
237 $pth['folder']['plugins'] = $pth['folder']['base'] . 'plugins/';
238 
239 $pth['file']['log'] = $pth['folder']['cmsimple'] . 'log.txt';
240 $pth['file']['cms'] = $pth['folder']['cmsimple'] . 'cms.php';
241 $pth['file']['config'] = $pth['folder']['cmsimple'] . 'config.php';
242 
243 // include general utility functions and classes
244 require_once $pth['folder']['cmsimple'] . 'functions.php';
245 spl_autoload_register('XH_autoload');
246 require_once $pth['folder']['cmsimple'] . 'tplfuncs.php';
247 require_once $pth['folder']['cmsimple'] . 'utf8.php';
248 if (!function_exists('password_hash') || !function_exists('random_bytes')) {
249  include_once $pth['folder']['cmsimple'] . 'password.php';
250 }
251 
259 $_XH_controller = new XH\Controller();
260 
273 if (!$cf) {
274  die("Config file {$pth['file']['config']} missing");
275 }
276 // removed from the core in XH 1.6, but left for compatibility with plugins.
277 $cf['security']['type'] = 'page';
278 $cf['scripting']['regexp'] = '#CMSimple (.*?)#';
279 
280 // removed from the core in XH 1.7, but left for compatibility with extensions
281 $cf['xhtml']['endtags'] = '';
282 $cf['xhtml']['amp'] = 'true';
283 
284 foreach (array('userfiles', 'downloads', 'images', 'media') as $temp) {
285  // for compatibility with older version's config files
286  if (!isset($cf['folders'][$temp])) {
287  $cf['folders'][$temp] = $temp != 'media' ? "$temp/" : 'downloads/';
288  }
289  if ($temp == 'userfiles') {
290  $pth['folder'][$temp] = $pth['folder']['base'] . $cf['folders'][$temp];
291  } else {
292  $pth['folder'][$temp] = $pth['folder']['userfiles'] . $cf['folders'][$temp];
293  }
294 }
295 
296 $pth['folder']['flags'] = $pth['folder']['images'] . 'flags/';
297 
298 if ($cf['site']['compat']) {
299  include_once $pth['folder']['cmsimple'] . 'compat.php';
300 }
301 
309 $errors = array();
310 xh_debugmode();
311 
312 $pth['folder']['language'] = $pth['folder']['cmsimple'] . 'languages/';
313 
314 if (!isset($cf['folders']['content'])) {
315  $cf['folders']['content'] = 'content/';
316 }
317 
318 if ($cf['site']['timezone'] !== '' && function_exists('date_default_timezone_set')) {
319  date_default_timezone_set($cf['site']['timezone']);
320 }
321 
331 $sl = null;
332 if (preg_match('/\/([A-z]{2})\/index.php$/', sv('SCRIPT_NAME'), $temp)
333  && XH_isLanguageFolder($temp = strtolower($temp[1]))
334 ) {
335  $sl = $temp;
336  $pth['folder']['content']
337  = $pth['folder']['base'] . $cf['folders']['content'] . $sl . '/';
338 } else {
339  $sl = $cf['language']['default'];
340  $pth['folder']['content'] = $pth['folder']['base'] . $cf['folders']['content'];
341 }
342 
343 $pth['file']['content'] = $pth['folder']['content'] . 'content.htm';
344 $pth['file']['pagedata'] = $pth['folder']['content'] . 'pagedata.php';
345 $pth['file']['language'] = $pth['folder']['language'] . basename($sl) . '.php';
346 $pth['folder']['corestyle'] = $pth['folder']['base'] . 'assets/css/';
347 $pth['file']['corestyle'] = $pth['folder']['corestyle'] . 'core.css';
348 $pth['file']['adminjs'] = $pth['folder']['base'] . 'assets/js/admin.min.js';
349 
350 XH_createLanguageFile($pth['file']['language']);
351 
363 $tx = XH_readConfiguration(false, true);
364 if (!$tx) {
365  die("Language file {$pth['file']['language']} missing");
366 }
367 if ($tx['locale']['all'] != '') {
368  setlocale(LC_ALL, $tx['locale']['all']);
369 }
370 
371 /*
372  * Register shutdown handler.
373  */
374 register_shutdown_function('XH_onShutdown');
375 
376 // removed from the core in XH 1.6, but left for compatibility with plugins.
377 $tx['meta']['codepage']='UTF-8';
378 
388 $txc = array('template' => $tx['template']);
389 
390 $_XH_controller->initTemplatePaths();
391 
392 /*
393  * Additional security measure. However, we can neither check cookies,
394  * as these might be set from non UTF-8 scripts on the domain, nor server
395  * variables (<http://cmsimpleforum.com/viewtopic.php?f=10&t=8052>).
396  */
398  array($_GET, $_POST, array_keys($_POST))
399 );
400 
410 $iis = strpos(sv('SERVER_SOFTWARE'), "IIS");
411 
421 $cgi = (php_sapi_name() == 'cgi' || php_sapi_name() == 'cgi-fcgi');
422 
434 $sn = preg_replace('/([^\?]*)\?.*/', '$1', sv(($iis ? 'SCRIPT_NAME' : 'REQUEST_URI')));
435 
447 $admin = null;
448 
460 $action = null;
461 
473 $function = null;
474 
486 $login = null;
487 
500 $keycut = null;
501 
512 $logout = null;
513 
524 $mailform = null;
525 
535 $download = null;
536 
548 $downloads = null;
549 
561 $images = null;
562 
574 $media = null;
575 
587 $userfiles = null;
588 
602 $edit = null;
603 
617 $normal = null;
618 
629 $print = null;
630 
640 $file = null;
641 
652 $search = null;
653 
664 $selected = null;
665 
675 $settings = null;
676 
687 $sitemap = null;
688 
698 $text = null;
699 
709 $validate = null;
710 
724 $xhpages = null;
725 
726 $temp = array(
727  'action', 'admin', 'download', 'downloads', 'edit', 'file', 'function', 'images',
728  'login', 'logout', 'keycut', 'mailform', 'media', 'normal', 'phpinfo', 'print', 'search',
729  'selected', 'settings', 'sitemap', 'sysinfo', 'text', 'userfiles', 'validate', 'xhpages',
730  'xh_backups', 'xh_change_password', 'xh_do_validate', 'xh_pagedata', 'xh_plugins'
731 );
732 foreach ($temp as $i) {
733  if (!isset($GLOBALS[$i])) {
734  if (isset($_GET[$i])) {
735  $GLOBALS[$i] = $_GET[$i];
736  } elseif (isset($_POST[$i])) {
737  $GLOBALS[$i] = $_POST[$i];
738  } else {
739  $GLOBALS[$i] = '';
740  }
741  }
742 }
743 
747 define('CMSIMPLE_ROOT', XH_getRootFolder());
748 
752 define('CMSIMPLE_BASE', $pth['folder']['base']);
753 
761 define(
762  'CMSIMPLE_URL',
763  'http'
764  . (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 's' : '')
765  . '://' . $_SERVER['HTTP_HOST'] . $sn
766 );
767 
780 $su = '';
781 if (sv('QUERY_STRING') != '') {
782  $j = explode('&', sv('QUERY_STRING'));
783  if (!strpos($j[0], '=')) {
784  $su = $j[0];
785  }
786  if ($su == '' && $selected != '') {
787  if (isset($_GET['selected'])) {
788  header('Location: ' . XH_redirectSelectedUrl(), true, 301);
789  exit;
790  } else {
791  $su = $selected;
792  }
793  }
794  foreach ($j as $i) {
795  if (!strpos($i, '=') && in_array($i, $temp)) {
796  $GLOBALS[$i] = 'true';
797  }
798  }
799 } else {
800  $su = $selected;
801 }
802 if (!isset($cf['uri']['length'])) {
803  $cf['uri']['length'] = 200;
804 }
805 $su = utf8_substr($su, 0, $cf['uri']['length']);
806 
807 if ($download != '') {
808  download($pth['folder']['downloads'] . basename(stsl($download)));
809 }
810 
811 $pth['file']['search'] = $pth['folder']['cmsimple'] . 'search.php';
812 $pth['file']['mailform'] = $pth['folder']['cmsimple'] . 'mailform.php';
813 
825 $adm = 0;
826 
838 $f = '';
839 
848 
858 $plugin = null;
859 
860 /*
861  * Include required_classes of all plugins.
862  */
863 foreach (XH_plugins() as $plugin) {
864  pluginFiles($plugin);
865  if (is_readable($pth['file']['plugin_classes'])) {
866  include_once $pth['file']['plugin_classes'];
867  }
868 }
869 
881 $_XH_csrfProtection = null;
882 if (isset($_COOKIE['status']) && $_COOKIE['status'] == 'adm'
883  || isset($_POST['keycut'])
884 ) {
886 }
887 
888 $_XH_controller->handleLoginAndLogout();
889 
899 define('XH_ADM', $adm);
900 
901 if (XH_ADM) {
902  include_once $pth['folder']['cmsimple'] . 'adminfuncs.php';
903  if (isset($_GET['xh_keep_alive'])) {
904  $_XH_controller->handleKeepAlive();
905  }
906  $_XH_controller->outputAdminScripts();
907 }
908 
909 $_XH_controller->setFunctionsAsPermitted();
910 
920 $cl = 0;
921 
931 $pd_router = null;
932 
942 $xh_publisher = null;
943 
955 $s = -1;
956 
966 $c = null;
967 
979 $h = null;
980 
992 $u = null;
993 
1005 $l = null;
1006 
1007 rfc(); // Here content is loaded
1008 
1009 $_XH_controller->setFrontendF();
1010 
1011 if (is_readable($pth['folder']['cmsimple'] . 'userfuncs.php')) {
1012  include_once $pth['folder']['cmsimple'] . 'userfuncs.php';
1013 }
1014 
1015 $cf['site']['title'] = $tx['site']['title']; // for backward compatibility
1016 
1017 // Plugin loading
1018 if ($function == 'save') {
1019  $edit = true;
1020 }
1021 
1025 define('PLUGINLOADER', true);
1026 
1030 define('PLUGINLOADER_VERSION', 2.111);
1031 
1037 define('XH_FORM_NAMESPACE', 'PL3bbeec384_');
1038 
1039 if (XH_ADM) {
1040  $o .= ' '; // generate fake output to suppress later adjustment of $s
1041  if ($_XH_controller->wantsSavePageData()) {
1042  $_XH_controller->handleSavePageData();
1043  }
1044 }
1045 
1060 $pd_s = ($s == -1 && !$f && $o == '' && $su == '') ? $xh_publisher->getFirstPublishedPage() : $s;
1061 
1071 $pd_current = $pd_router->find_page($pd_s);
1072 
1084 $plugin_cf = new XH\PluginConfig();
1085 
1097 $plugin_tx = new XH\PluginConfig(true);
1098 
1099 /*
1100  * Include index.php of all plugins.
1101  */
1102 foreach (XH_plugins() as $plugin) {
1103  pluginFiles($plugin);
1104  if (is_readable($pth['file']['plugin_index'])) {
1105  include $pth['file']['plugin_index'];
1106  }
1107 }
1108 
1109 if (XH_ADM) {
1110  /*
1111  * Include admin.php of all plugins.
1112  */
1113  foreach (XH_plugins(true) as $plugin) {
1114  pluginFiles($plugin);
1115  if (is_readable($pth['file']['plugin_admin'])) {
1116  include $pth['file']['plugin_admin'];
1117  }
1118  }
1119  $o .= $pd_router->create_tabs($s);
1120 }
1121 
1122 unset($plugin);
1123 
1125 
1126 
1127 switch ($f) {
1128  case 'search':
1129  $_XH_controller->handleSearch();
1130  break;
1131  case 'mailform':
1132  $_XH_controller->handleMailform();
1133  break;
1134  case 'sitemap':
1135  $_XH_controller->handleSitemap();
1136  break;
1137  case 'forgotten':
1138  $_XH_controller->handlePasswordForgotten();
1139  break;
1140 }
1141 
1151 $hc = array();
1152 
1160 $hl = -1;
1161 
1169 $si = -1;
1170 
1171 XH_buildHc();
1172 
1173 /*
1174  * Enables the automatic creation of a "Site/CMS Info" page.
1175  * To generate a link to this page add <?php echo poweredbylink()?>
1176  * to the template plus a template.nfo file containing a description
1177  * of the template in plain text with link to the designer site.
1178  *
1179  * Newsbox text titled 'Site/CMS Info' will appear at the beginning
1180  * of the generated page.
1181  */
1182 if ($su == uenc('site/cms info')) {
1183  $f = $title = 'Site/CMS Info';
1184  $s = -1;
1185  $o .= '<h1>' . $title . '</h1>';
1186  $o .= newsbox('Site/CMS Info') . XH_poweredBy();
1187 }
1188 
1189 if (XH_ADM) {
1190  $_XH_controller->setBackendF();
1191 
1192  $temp = array(
1193  'settings', 'xh_backups', 'images', 'downloads', 'validate', 'sysinfo',
1194  'phpinfo', 'xh_pagedata', 'change_password'
1195  );
1196  if (in_array($f, $temp)) {
1197  $title = $tx['title'][$f];
1198  $o .= "\n\n" . '<h1>' . $title . '</h1>' . "\n";
1199  }
1200 
1201  switch ($f) {
1202  case 'sysinfo':
1203  $o .= XH_sysinfo();
1204  break;
1205  case 'phpinfo':
1206  phpinfo();
1207  exit;
1208  case 'settings':
1209  $o .= XH_settingsView();
1210  break;
1211  case 'xh_backups':
1212  $o .= XH_backupsView();
1213  break;
1214  case 'xh_pagedata':
1215  $_XH_controller->handlePageDataEditor();
1216  break;
1217  case 'file':
1218  if (XH_isContentBackup($file, false)) {
1219  $pth['file'][$file] = $pth['folder']['content'] . $file;
1220  }
1221  if ($pth['file'][$file] != '') {
1222  switch ($action) {
1223  case 'view':
1224  $_XH_controller->handleFileView();
1225  break;
1226  case 'download':
1227  download($pth['file'][$file]);
1228  break;
1229  case 'backup':
1230  $_XH_controller->handleFileBackup();
1231  break;
1232  case 'restore':
1233  $_XH_csrfProtection->check();
1234  XH_restore($pth['file'][$file]);
1235  break;
1236  case 'empty':
1237  $_XH_csrfProtection->check();
1238  if ($file == 'content') {
1239  XH_emptyContents();
1240  }
1241  break;
1242  default:
1243  $_XH_controller->handleFileEdit();
1244  }
1245  }
1246  break;
1247  case 'validate':
1248  case 'do_validate':
1249  $temp = new XH\LinkChecker();
1250  $o .= ($f == 'validate') ? $temp->prepare() : $temp->doCheck();
1251  break;
1252  case 'change_password':
1253  $temp = new XH\ChangePassword();
1254  $i = $action === 'save' ? 'save' : 'default';
1255  $temp->{"{$i}Action"}();
1256  break;
1257  case 'xh_plugins':
1258  $o .= XH_pluginsView();
1259  break;
1260  }
1261 }
1262 
1263 
1264 // fix $s
1265 if ($s == -1 && !$f && $o == '' && $su == '') {
1266  $s = $hs = $xh_publisher->getFirstPublishedPage();
1267 }
1268 
1269 if (XH_ADM) {
1270  if ($f == 'save') {
1271  $_XH_controller->handleSaveRequest();
1272  }
1273  if ($_XH_controller->wantsEditContents()) {
1274  $_XH_controller->outputEditContents();
1275  }
1276  if ($_XH_controller->isFilebrowserMissing()) {
1277  $_XH_controller->reportMissingExternal('filebrowser');
1278  }
1279  if ($_XH_controller->isPagemanagerMissing()) {
1280  $_XH_controller->reportMissingExternal('pagemanager');
1281  }
1282 }
1283 
1284 
1285 
1286 // CMSimple scripting
1294 $output = null;
1295 if (!($edit && XH_ADM) && $s > -1) {
1296  $c[$s] = evaluate_scripting($c[$s]);
1297  if (isset($keywords)) {
1298  $tx['meta']['keywords'] = $keywords;
1299  }
1300  if (isset($description)) {
1301  $tx['meta']['description'] = $description;
1302  }
1303 }
1304 
1305 
1306 if ($s == -1 && !$f && $o == '') {
1307  shead('404');
1308 }
1309 
1310 loginforms();
1311 
1312 $o = $_XH_controller->renderErrorMessages() . $o;
1313 if ($title == '') {
1314  if ($s > -1) {
1315  $title = $h[$s];
1316  } elseif ($f != '') {
1317  // FIXME: check for duplication, i.e. isn't $title already set to $f?
1318  $title = ucfirst($f);
1319  }
1320 }
1321 
1322 $_XH_controller->sendStandardHeaders();
1323 
1324 if ($print) {
1325  XH_builtinTemplate('print');
1326 } elseif (strtolower($f) == 'login' || $f == 'forgotten') {
1327  XH_builtinTemplate('xh_login');
1328 }
1329 
1330 if (XH_ADM) {
1331  $bjs .= '<script type="text/javascript" src="' . $pth['file']['adminjs']
1332  . '"></script>' . PHP_EOL
1334 }
1335 
1336 $_XH_controller->verifyAdm();
1337 
1338 ob_start();
1339 
1340 $i = false;
1341 $temp = fopen($pth['file']['template'], 'r');
1342 if ($temp) {
1343  if (XH_lockFile($temp, LOCK_SH)) {
1344  $i = include $pth['file']['template'];
1345  XH_lockFile($temp, LOCK_UN);
1346  }
1347  fclose($temp);
1348 }
1349 if (!$i) {// the template could not be included
1351 }
1352 
1353 if (isset($_XH_csrfProtection)) {
1354  $_XH_csrfProtection->store();
1355 }
1356 
1357 echo XH_finalCleanUp(ob_get_clean());
$print
Definition: cms.php:629
$download
Definition: cms.php:535
$l
Definition: cms.php:1003
$action
Definition: cms.php:460
$userfiles
Definition: cms.php:587
$xh_publisher
Definition: cms.php:940
XH_emergencyTemplate()
Definition: tplfuncs.php:641
XH_plugins($admin=false)
Definition: functions.php:1443
if(XH_ADM) $pd_s
Definition: cms.php:1058
$function
Definition: cms.php:473
$admin
Definition: cms.php:447
$login
Definition: cms.php:486
utf8_substr($string, $offset, $length=null)
Definition: utf8.php:42
XH_isContentBackup($filename, $regularOnly=true)
Definition: functions.php:1949
XH_builtinTemplate($bodyClass)
Definition: functions.php:1895
loginforms()
Definition: functions.php:1556
XH_sysinfo()
Definition: adminfuncs.php:218
$plugin
Definition: cms.php:856
XH_pluginsView()
Definition: adminfuncs.php:496
$su
Definition: cms.php:778
XH_checkValidUtf8(array $arr)
Definition: functions.php:1318
XH_getRootFolder()
Definition: functions.php:2416
XH_isLanguageFolder($name)
Definition: functions.php:1850
$e
Definition: cms.php:127
XH_redirectSelectedUrl()
Definition: functions.php:2862
sv($s)
Definition: functions.php:543
$j
Definition: cms.php:204
XH_poweredBy()
Definition: functions.php:2687
pluginFiles($plugin)
Definition: functions.php:1377
$s
Definition: cms.php:953
$xhpages
Definition: cms.php:724
$_XH_pluginMenu
Definition: cms.php:845
XH_finalCleanUp($html)
Definition: functions.php:464
XH_createLanguageFile($dst)
Definition: functions.php:1352
$i
Definition: cms.php:193
$settings
Definition: cms.php:675
$logout
Definition: cms.php:512
download($fl)
Definition: functions.php:623
$si
Definition: cms.php:1167
$title
Definition: cms.php:100
$cf
Definition: cms.php:272
switch($f) $hc
Definition: cms.php:1149
XH_afterPluginLoading($callback=null)
Definition: functions.php:1654
$f
Definition: cms.php:836
$sitemap
Definition: cms.php:687
$hl
Definition: cms.php:1158
if($cf['site']['compat']) $errors
Definition: cms.php:309
$normal
Definition: cms.php:617
$plugin_cf
Definition: cms.php:1082
XH_settingsView()
Definition: adminfuncs.php:344
XH_lockFile($handle, $operation)
Definition: functions.php:2574
$c
Definition: cms.php:964
$search
Definition: cms.php:652
if(!isset($cf['folders']['content'])) if($cf['site']['timezone'] !=='' &&function_exists('date_default_timezone_set')) $sl
Definition: cms.php:331
$txc
Definition: cms.php:388
$hjs
Definition: cms.php:141
$file
Definition: cms.php:640
XH_restore($filename)
$u
Definition: cms.php:990
$bjs
Definition: cms.php:159
XH_emptyContents()
$media
Definition: cms.php:574
$o
Definition: cms.php:113
$onload
Definition: cms.php:171
$temp
Definition: cms.php:182
XH_backupsView()
Definition: adminfuncs.php:427
evaluate_scripting($text, $compat=true)
Definition: functions.php:303
$cgi
Definition: cms.php:421
$iis
Definition: cms.php:410
$h
Definition: cms.php:977
$validate
Definition: cms.php:709
$plugin_tx
Definition: cms.php:1095
$sn
Definition: cms.php:434
foreach(XH_plugins() as $plugin) $_XH_csrfProtection
Definition: cms.php:879
$tx
Definition: cms.php:363
stsl($t)
Definition: functions.php:606
const XH_ADM
Definition: cms.php:897
$selected
Definition: cms.php:664
$keycut
Definition: cms.php:500
$pd_current
Definition: cms.php:1069
shead($s)
Definition: functions.php:1144
$text
Definition: cms.php:698
$pth
Definition: cms.php:230
$images
Definition: cms.php:561
uenc($s)
Definition: functions.php:1009
$pd_router
Definition: cms.php:929
$downloads
Definition: cms.php:548
$edit
Definition: cms.php:602
$mailform
Definition: cms.php:524
$cl
Definition: cms.php:918
XH_readConfiguration($plugin=false, $language=false)
Definition: functions.php:2304
newsbox($heading)
Definition: functions.php:322
$adm
Definition: cms.php:823
if($su==uenc('site/cms info')) if(XH_ADM) if($s==-1 &&! $f && $o=='' && $su=='') if(XH_ADM) $output
Definition: cms.php:1292
rfc()
Definition: functions.php:681
XH_adminJSLocalization()
XH_buildHc()
Definition: tplfuncs.php:243