21 public $mActionName =
null;
22 public $mAction =
null;
23 public $mAdminFlag =
null;
28 public $mCreateAction =
null;
35 public function __construct($admin)
37 $this->mAdminFlag = $admin;
39 $this->mCreateAction->register(
'User_ActionFrame.CreateAction');
40 $this->mCreateAction->add([&$this,
'_createAction']);
43 public function setActionName($name)
45 $this->mActionName = $name;
50 $root = &XCube_Root::getSingleton();
51 $root->mContext->setAttribute(
'actionName', $name);
52 $root->mContext->mModule->setAttribute(
'actionName', $name);
55 public function _createAction(&$actionFrame)
57 if (is_object($this->mAction)) {
64 $className =
'User_' . ucfirst($actionFrame->mActionName) .
'Action';
65 $fileName = ucfirst($actionFrame->mActionName) .
'Action';
66 if ($actionFrame->mAdminFlag) {
67 $fileName = XOOPS_MODULE_PATH .
"/user/admin/actions/{$fileName}.class.php";
69 $fileName = XOOPS_MODULE_PATH .
"/user/actions/{$fileName}.class.php";
72 if (!file_exists($fileName)) {
76 require_once $fileName;
78 if (XC_CLASS_EXISTS($className)) {
79 $actionFrame->mAction =
new $className($actionFrame->mAdminFlag);
83 public function execute(&$controller)
85 if (!preg_match(
"/^\w+$/", $this->mActionName)) {
92 $this->mCreateAction->call(
new XCube_Ref($this));
94 if (!(is_object($this->mAction) && $this->mAction instanceof \
User_Action)) {
98 if ($this->mAction->isSecure() && !is_object($controller->mRoot->mContext->mXoopsUser)) {
103 $controller->executeForward(XOOPS_URL .
'/');
106 $this->mAction->prepare($controller, $controller->mRoot->mContext->mXoopsUser, $controller->mRoot->mContext->mModuleConfig);
108 if (!$this->mAction->hasPermission($controller, $controller->mRoot->mContext->mXoopsUser, $controller->mRoot->mContext->mModuleConfig)) {
113 $controller->executeForward(XOOPS_URL .
'/');
116 if (
'POST' == xoops_getenv(
'REQUEST_METHOD')) {
117 $viewStatus = $this->mAction->execute($controller, $controller->mRoot->mContext->mXoopsUser);
119 $viewStatus = $this->mAction->getDefaultView($controller, $controller->mRoot->mContext->mXoopsUser);
122 $render = $controller->mRoot->mContext->mModule->getRenderTarget();
123 $render->setAttribute(
'xoops_pagetitle', $this->mAction->getPagetitle());
125 switch ($viewStatus) {
126 case USER_FRAME_VIEW_SUCCESS:
127 $this->mAction->executeViewSuccess($controller, $controller->mRoot->mContext->mXoopsUser, $render);
130 case USER_FRAME_VIEW_ERROR:
131 $this->mAction->executeViewError($controller, $controller->mRoot->mContext->mXoopsUser, $render);
134 case USER_FRAME_VIEW_INDEX:
135 $this->mAction->executeViewIndex($controller, $controller->mRoot->mContext->mXoopsUser, $render);
138 case USER_FRAME_VIEW_INPUT:
139 $this->mAction->executeViewInput($controller, $controller->mRoot->mContext->mXoopsUser, $render);
142 case USER_FRAME_VIEW_PREVIEW:
143 $this->mAction->executeViewPreview($controller, $controller->mRoot->mContext->mXoopsUser, $render);
146 case USER_FRAME_VIEW_CANCEL:
147 $this->mAction->executeViewCancel($controller, $controller->mRoot->mContext->mXoopsUser, $render);
155 public function User_Action()
160 public function __construct()
163 public function isSecure()
192 public function getPageTitle()
194 return Legacy_Utils::formatPagetitle(XCube_Root::getSingleton()->mContext->mModule->mXoopsModule->get(
'name'), $this->_getPagetitle(), $this->_getPageAction());
197 public function hasPermission(&$controller, &$xoopsUser, $moduleConfig)
202 public function prepare(&$controller, &$xoopsUser, $moduleConfig)
205 public function getDefaultView(&$controller, &$xoopsUser)
207 return USER_FRAME_VIEW_NONE;
210 public function execute(&$controller, &$xoopsUser)
212 return USER_FRAME_VIEW_NONE;
215 public function executeViewSuccess(&$controller, &$xoopsUser, &$render)
218 public function executeViewError(&$controller, &$xoopsUser, &$render)
221 public function executeViewIndex(&$controller, &$xoopsUser, &$render)
224 public function executeViewInput(&$controller, &$xoopsUser, &$render)
227 public function executeViewPreview(&$controller, &$xoopsUser, &$render)
230 public function executeViewCancel(&$controller, &$xoopsUser, &$render)
231 {
return USER_FRAME_VIEW_CANCEL; }