1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: if (!defined('XOOPS_ROOT_PATH')) exit();
12:
13: require_once XOOPS_LEGACY_PATH . "/admin/actions/AbstractModuleInstallAction.class.php";
14: require_once XOOPS_LEGACY_PATH . "/admin/class/ModuleInstallUtils.class.php";
15: require_once XOOPS_LEGACY_PATH . "/admin/forms/ModuleUpdateForm.class.php";
16:
17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66:
67: class Legacy_ModuleUpdateAction extends Legacy_Action
68: {
69: 70: 71:
72: var $mUpdateSuccess = null;
73:
74: 75: 76:
77: var $mUpdateFail = null;
78:
79: var $mXoopsModule = null;
80:
81: var $mInstaller = null;
82:
83: function Legacy_ModuleUpdateAction($flag)
84: {
85: parent::Legacy_Action($flag);
86:
87: $this->mUpdateSuccess =new XCube_Delegate();
88: $this->mUpdateSuccess->register('Legacy_ModuleUpdateAction.UpdateSuccess');
89:
90: $this->mUpdateFail =new XCube_Delegate();
91: $this->mUpdateFail->register('Legacy_ModuleUpdateAction.UpdateFail');
92: }
93:
94: function prepare(&$controller, &$xoopsUser)
95: {
96: $dirname = $controller->mRoot->mContext->mRequest->getRequest('dirname');
97:
98: $handler =& xoops_gethandler('module');
99: $this->mXoopsModule =& $handler->getByDirname($dirname);
100:
101: if (!is_object($this->mXoopsModule)) {
102: return false;
103: }
104:
105: $this->_setupActionForm();
106:
107: $this->mInstaller =& $this->_getInstaller();
108:
109:
110:
111:
112: $this->mInstaller->setCurrentXoopsModule($this->mXoopsModule);
113:
114:
115:
116:
117: $name = $this->mXoopsModule->get('name');
118: $this->mXoopsModule->loadInfoAsVar($dirname);
119: $this->mXoopsModule->set('name', $name);
120: $this->mInstaller->setTargetXoopsModule($this->mXoopsModule);
121:
122: return true;
123: }
124:
125: function _setupActionForm()
126: {
127: $this->mActionForm =new Legacy_ModuleUpdateForm();
128: $this->mActionForm->prepare();
129: }
130:
131: 132: 133: 134: 135: 136:
137: function &_getInstaller()
138: {
139: $dirname = $this->mXoopsModule->get('dirname');
140: $installer =& Legacy_ModuleInstallUtils::createUpdater($dirname);
141: return $installer;
142: }
143:
144: function getDefaultView(&$controller, &$xoopsUser)
145: {
146: $this->mActionForm->load($this->mXoopsModule);
147:
148: return LEGACY_FRAME_VIEW_INPUT;
149: }
150:
151: function execute(&$controller, &$xoopsUser)
152: {
153: if (isset($_REQUEST['_form_control_cancel'])) {
154: return LEGACY_FRAME_VIEW_CANCEL;
155: }
156:
157: $this->mActionForm->fetch();
158: $this->mActionForm->validate();
159:
160: if ($this->mActionForm->hasError()) {
161: return $this->getDefaultView($controller, $xoopsUser);
162: }
163:
164: $this->mInstaller->setForceMode($this->mActionForm->get('force'));
165: $this->mInstaller->executeUpgrade();
166:
167: return LEGACY_FRAME_VIEW_SUCCESS;
168: }
169:
170: function executeViewSuccess(&$controller, &$xoopsUser, &$renderer)
171: {
172: if (!$this->mInstaller->mLog->hasError()) {
173: $this->mUpdateSuccess->call(new XCube_Ref($this->mXoopsModule), new XCube_Ref($this->mInstaller->mLog));
174: XCube_DelegateUtils::call('Legacy.Admin.Event.ModuleUpdate.' . ucfirst($this->mXoopsModule->get('dirname') . '.Success'), new XCube_Ref($this->mXoopsModule), new XCube_Ref($this->mInstaller->mLog));
175: }
176: else {
177: $this->mUpdateFail->call(new XCube_Ref($this->mXoopsModule), new XCube_Ref($this->mInstaller->mLog));
178: XCube_DelegateUtils::call('Legacy.Admin.Event.ModuleUpdate.' . ucfirst($this->mXoopsModule->get('dirname') . '.Fail'), new XCube_Ref($this->mXoopsModule), new XCube_Ref($this->mInstaller->mLog));
179: }
180:
181: $renderer->setTemplateName("module_update_success.html");
182: $renderer->setAttribute('module', $this->mXoopsModule);
183: $renderer->setAttribute('log', $this->mInstaller->mLog->mMessages);
184: $renderer->setAttribute('currentVersion', round($this->mInstaller->getCurrentVersion() / 100, 2));
185: $renderer->setAttribute('targetVersion', round($this->mInstaller->getTargetPhase() / 100, 2));
186: $renderer->setAttribute('isPhasedMode', $this->mInstaller->hasUpgradeMethod());
187: $renderer->setAttribute('isLatestUpgrade', $this->mInstaller->isLatestUpgrade());
188: }
189:
190: function executeViewInput(&$controller, &$xoopsUser, &$renderer)
191: {
192: $renderer->setTemplateName("module_update.html");
193: $renderer->setAttribute('module', $this->mXoopsModule);
194: $renderer->setAttribute('actionForm', $this->mActionForm);
195: $renderer->setAttribute('currentVersion', round($this->mInstaller->getCurrentVersion() / 100, 2));
196: $renderer->setAttribute('targetVersion', round($this->mInstaller->getTargetPhase() / 100, 2));
197: $renderer->setAttribute('isPhasedMode', $this->mInstaller->hasUpgradeMethod());
198: }
199:
200: function executeViewCancel(&$controller, &$xoopsUser, &$renderer)
201: {
202: $controller->executeForward("./index.php?action=ModuleList");
203: }
204: }
205:
206: ?>
207: