Cheetah
ChWsbRequest.php
Go to the documentation of this file.
1 <?php
2 
8 define('CH_WSB_REQUEST_ERROR_MODULE_NOT_FOUND', 1);
9 define('CH_WSB_REQUEST_ERROR_PAGE_NOT_FOUND', 2);
10 
11 $GLOBALS['chWsbClasses'] = array();
12 
14 {
15  public static function processAsFile($aModule, &$aRequest)
16  {
17  if (empty($aRequest) || ($sFileName = array_shift($aRequest)) == "") {
18  $sFileName = 'index';
19  }
20 
21  $sFile = CH_DIRECTORY_PATH_MODULES . $aModule['path'] . $sFileName . '.php';
22  if (!file_exists($sFile)) {
23  (new self())->pageNotFound($sFileName, $aModule['uri']);
24  } else {
25  if (isset($GLOBALS['ch_profiler'])) {
26  $GLOBALS['ch_profiler']->beginModule('file', ($sPrHash = uniqid(rand())), $aModule, $sFileName);
27  }
28  include($sFile);
29  if (isset($GLOBALS['ch_profiler'])) {
30  $GLOBALS['ch_profiler']->endModule('file', $sPrHash);
31  }
32  }
33  }
34 
35  public static function processAsAction($aModule, &$aRequest, $sClass = "Module")
36  {
37  $sAction = empty($aRequest) || (isset($aRequest[0]) && empty($aRequest[0])) ? 'Home' : array_shift($aRequest);
38  $sMethod = 'action' . str_replace(' ', '', ucwords(str_replace('_', ' ', $sAction)));
39 
40  if (isset($GLOBALS['ch_profiler'])) {
41  $GLOBALS['ch_profiler']->beginModule('action', ($sPrHash = uniqid(rand())), $aModule, $sClass, $sMethod);
42  }
43 
44  $mixedRet = (new self())->_perform($aModule, $sClass, $sMethod, $aRequest);
45 
46  if (isset($GLOBALS['ch_profiler'])) {
47  $GLOBALS['ch_profiler']->endModule('action', $sPrHash);
48  }
49 
50  return $mixedRet;
51  }
52 
53  public static function processAsService($aModule, $sMethod, $aParams, $sClass = "Module")
54  {
55  $sMethod = 'service' . str_replace(' ', '', ucwords(str_replace('_', ' ', $sMethod)));
56 
57  if (isset($GLOBALS['ch_profiler'])) {
58  $GLOBALS['ch_profiler']->beginModule('service', ($sPrHash = uniqid(rand())), $aModule, $sClass, $sMethod);
59  }
60 
61  $mixedRet = (new self())->_perform($aModule, $sClass, $sMethod, $aParams, false);
62 
63  if (isset($GLOBALS['ch_profiler'])) {
64  $GLOBALS['ch_profiler']->endModule('service', $sPrHash);
65  }
66 
67  return $mixedRet;
68  }
69 
70  public static function serviceExists($mixedModule, $sMethod, $sClass = "Module")
71  {
72  $oChWsbRequest = new self();
73  return $oChWsbRequest->_methodExists($mixedModule, 'service', $sMethod, $sClass);
74  }
75 
76  public static function actionExists($mixedModule, $sMethod, $sClass = "Module")
77  {
78  $oChWsbRequest = new self();
79  return $oChWsbRequest->_methodExists($mixedModule, 'action', $sMethod, $sClass);
80  }
81 
82  public static function moduleNotFound($sModule)
83  {
84  (new self())->_error('module', $sModule);
85  }
86 
87  function pageNotFound($sPage, $sModule)
88  {
89  (new self())->_error('page', $sPage, $sModule);
90  }
91 
92  function methodNotFound($sMethod, $sModule)
93  {
94  (new self())->_error('method', $sMethod, $sModule);
95  }
96 
97  function _perform($aModule, $sClass, $sMethod, $aParams, $bTerminateOnError = true)
98  {
99  $sClass = $aModule['class_prefix'] . $sClass;
100 
101  $oModule = $this->_require($aModule, $sClass);
102  if ($oModule === false && $bTerminateOnError) {
103  $this->methodNotFound($sMethod, $aModule['uri']);
104  } else {
105  if ($oModule === false && !$bTerminateOnError) {
106  return false;
107  }
108  }
109 
110  $bMethod = method_exists($oModule, $sMethod);
111  if ($bMethod) {
112  return call_user_func_array(array($oModule, $sMethod), $aParams);
113  } else {
114  if (!$bMethod && $bTerminateOnError) {
115  $this->methodNotFound($sMethod, $aModule['uri']);
116  } else {
117  if (!$bMethod && !$bTerminateOnError) {
118  return false;
119  }
120  }
121  }
122  }
123 
124  public static function _require($aModule, $sClass)
125  {
126  if (!isset($GLOBALS['chWsbClasses'][$sClass])) {
127  $sFile = CH_DIRECTORY_PATH_MODULES . $aModule['path'] . 'classes/' . $sClass . '.php';
128  if (!file_exists($sFile)) {
129  return false;
130  }
131 
132  require_once($sFile);
133  $oModule = new $sClass($aModule);
134 
135  $GLOBALS['chWsbClasses'][$sClass] = $oModule;
136  } else {
137  $oModule = $GLOBALS['chWsbClasses'][$sClass];
138  }
139 
140  return $oModule;
141  }
142 
143  function _methodExists($mixedModule, $sMethodType, $sMethodName, $sClass = "Module")
144  {
145  $aModule = $mixedModule;
146  if (is_string($mixedModule)) {
147  $oModuleDb = new ChWsbModuleDb();
148  $aModule = $oModuleDb->getModuleByUri($mixedModule);
149  }
150 
151  if(empty($aModule)) {
152  return false;
153  }
154 
155  $sClass = $aModule['class_prefix'] . $sClass;
156  if (($oModule = $this->_require($aModule, $sClass)) === false) {
157  return false;
158  }
159 
160  $sMethod = $sMethodType . str_replace(' ', '', ucwords(str_replace('_', ' ', $sMethodName)));
161 
162  return method_exists($oModule, $sMethod);
163  }
164 
165  function _error($sType, $sParam1 = '', $sParam2 = '')
166  {
167  header('Status: 404 Not Found');
168  header('HTTP/1.0 404 Not Found');
169 
170  global $_page;
172 
173  $iIndex = 13;
174  $_page['name_index'] = $iIndex;
175  $_page['header'] = _t("_sys_request_" . $sType . "_not_found_cpt");
176  $_page_cont[$iIndex]['page_main_code'] = MsgBox(_t("_sys_request_" . $sType . "_not_found_cnt",
177  htmlspecialchars_adv($sParam1), htmlspecialchars_adv($sParam2)));
178  PageCode();
179  exit;
180  }
181 }
header
</code > Be careful enabling this directive if you have a redirector script that does not use the< code > Location</code > HTTP header
Definition: URI.MungeResources.txt:10
$oModule
if(! @isAdmin()) $oModule
Definition: admin.php:25
ChWsbRequest\processAsService
static processAsService($aModule, $sMethod, $aParams, $sClass="Module")
Definition: ChWsbRequest.php:53
MsgBox
MsgBox($sText, $iTimer=0)
Definition: design.inc.php:175
ChWsbRequest\serviceExists
static serviceExists($mixedModule, $sMethod, $sClass="Module")
Definition: ChWsbRequest.php:70
ChWsbRequest\moduleNotFound
static moduleNotFound($sModule)
Definition: ChWsbRequest.php:82
$aModule
$aModule
Definition: classifieds.php:21
$_page
$_page['name_index']
Definition: about_us.php:13
$_page_cont
$_page_cont[$_ni]['page_main_code']
Definition: about_us.php:24
ChWsbRequest
Definition: ChWsbRequest.php:14
php
ChWsbModuleDb
Definition: ChWsbModuleDb.php:12
$sModule
if(!file_exists($sRayHeaderPath)) $sModule
Definition: index.php:14
ChWsbRequest\_error
_error($sType, $sParam1='', $sParam2='')
Definition: ChWsbRequest.php:165
ChWsbRequest\_methodExists
_methodExists($mixedModule, $sMethodType, $sMethodName, $sClass="Module")
Definition: ChWsbRequest.php:143
ChWsbRequest\methodNotFound
methodNotFound($sMethod, $sModule)
Definition: ChWsbRequest.php:92
ChWsbRequest\processAsAction
static processAsAction($aModule, &$aRequest, $sClass="Module")
Definition: ChWsbRequest.php:35
exit
exit
Definition: cart.php:21
$sType
$sType
Definition: actions.inc.php:11
$sFile
$sFile
Definition: index.php:20
$iIndex
$iIndex
Definition: bottom_menu_compose.php:142
$oModuleDb
$oModuleDb
Definition: classifieds.php:20
ChWsbRequest\_require
static _require($aModule, $sClass)
Definition: ChWsbRequest.php:124
htmlspecialchars_adv
htmlspecialchars_adv($string)
Definition: utils.inc.php:302
global
if(!defined("GLOBAL_MODULE")) define("GLOBAL_MODULE" global
Definition: header.inc.php:25
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
PageCode
PageCode($oTemplate=null)
Definition: design.inc.php:91
ChWsbRequest\actionExists
static actionExists($mixedModule, $sMethod, $sClass="Module")
Definition: ChWsbRequest.php:76
ChWsbRequest\_perform
_perform($aModule, $sClass, $sMethod, $aParams, $bTerminateOnError=true)
Definition: ChWsbRequest.php:97
$GLOBALS
$GLOBALS['chWsbClasses']
Definition: ChWsbRequest.php:11
ChWsbRequest\pageNotFound
pageNotFound($sPage, $sModule)
Definition: ChWsbRequest.php:87
$sAction
$sAction
Definition: categories.php:274
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
ChWsbRequest\processAsFile
static processAsFile($aModule, &$aRequest)
Definition: ChWsbRequest.php:15