Minahito
minah****@users*****
2006年 8月 26日 (土) 13:57:56 JST
Index: xoops2jp/html/modules/user/actions/UserDeleteAction.class.php diff -u /dev/null xoops2jp/html/modules/user/actions/UserDeleteAction.class.php:1.1.2.1 --- /dev/null Sat Aug 26 13:57:56 2006 +++ xoops2jp/html/modules/user/actions/UserDeleteAction.class.php Sat Aug 26 13:57:56 2006 @@ -0,0 +1,116 @@ +<?php +/** + * @package user + * @version $Id$ + */ + +if (!defined('XOOPS_ROOT_PATH')) exit(); + +require_once XOOPS_MODULE_PATH . "/user/forms/UserDeleteForm.class.php"; + +/** + * This action is for self delete function. + * + * Site owner want various procedure to this action. Therefore, this action may + * have to implement main logic with Delegate only. + */ +class User_UserDeleteAction extends User_Action +{ + var $mActionForm = null; + var $mObject = null; + + var $mSelfDelete = false; + var $mSelfDeleteConfirmMessage = ""; + + function prepare(&$controller, &$xoopsUser, $moduleConfig) + { + $this->mSelfDelete = $moduleConfig['self_delete']; + $this->mSelfDeleteConfirmMessage = $moduleConfig['self_delete_confirm']; + + $this->mActionForm =& new User_UserDeleteForm(); + $this->mActionForm->prepare(); + + // + // pre condition check + // + if (!$this->mSelfDelete) { + $controller->executeForward(XOOPS_URL); + } + + if (is_object($xoopsUser)) { + $handler =& xoops_getmodulehandler('users', 'user'); + $this->mObject =& $handler->get($xoopsUser->get('uid')); + } + } + + function isSecure() + { + return true; + } + + function getDefaultView(&$controller, &$xoopsUser) + { + return USER_FRAME_VIEW_INPUT; + } + + /** + * FIXME: Need FORCE LOGOUT here? + */ + function execute(&$controller, &$xoopsUser) + { + $this->mActionForm->fetch(); + $this->mActionForm->validate(); + + if ($this->mActionForm->hasError()) { + return $this->getDefaultView($controller, $xoopsUser); + } + + if ($this->_doDelete($controller, $xoopsUser)) { + XCube_DelegateUtils::call('Legacy.Event.UserDelete', new XCube_Ref($this->mObject)); + + return USER_FRAME_VIEW_SUCCESS; + } + + return USER_FRAME_VIEW_ERROR; + } + + /** + * Exection deleting. + * + * @return bool + */ + function _doDelete(&$controller, &$xoopsUser) + { + $handler =& xoops_gethandler('member'); + if ($handler->deleteUser($xoopsUser)) { + $handler =& xoops_gethandler('online'); + $handler->destroy($this->mObject->get('uid')); + xoops_notification_deletebyuser($this->mObject->get('uid')); + + return true; + } + + return false; + } + + function executeViewInput(&$controller, &$xoopsUser, &$render) + { + $render->setTemplateName("user_delete.html"); + $render->setAttribute('object', $this->mObject); + $render->setAttribute('actionForm', $this->mActionForm); + $render->setAttribute('self_delete_message', $this->mSelfDeleteConfirmMessage); + } + + function executeViewSuccess(&$controller, &$xoopsUser, &$render) + { + $render->setTemplateName("user_delete_success.html"); + $render->setAttribute("object", $this->mObject); + } + + function executeViewError(&$controller, &$xoopsUser, &$render) + { + $controller->executeRedirect(XOOPS_URL, 3, _MD_USER_ERROR_DBUPDATE_FAILED); + } +} + +?> \ No newline at end of file