8 if(!defined('XOOPS_ROOT_PATH'))
13 require_once SD2ND_TRUST_PATH . '/admin/class/installer/Sd2ndInstallUtils.class.php';
21 * @brief Legacy_ModuleInstallLog
28 private $_mMileStone = array();
33 private $_mCurrentXoopsModule = null;
38 private $_mTargetXoopsModule = null;
43 private $_mCurrentVersion = 0;
48 private $_mTargetVersion = 0;
53 private $_mForceMode = false;
62 public function __construct()
64 $this->mLog =& new Legacy_ModuleInstallLog();
70 * @param bool $isForceMode
74 public function setForceMode(/*** bool ***/ $isForceMode)
76 $this->_mForceMode = $isForceMode;
80 * setCurrentXoopsModule
82 * @param XoopsModule &$module
86 public function setCurrentXoopsModule(/*** XoopsModule ***/ &$module)
88 $moduleHandler =& Sd2nd_Utils::getXoopsHandler('module');
89 $cloneModule =& $moduleHandler->create();
91 $cloneModule->unsetNew();
92 $cloneModule->set('mid',$module->get('mid'));
93 $cloneModule->set('name',$module->get('name'));
94 $cloneModule->set('version',$module->get('version'));
95 $cloneModule->set('last_update',$module->get('last_update'));
96 $cloneModule->set('weight',$module->get('weight'));
97 $cloneModule->set('isactive',$module->get('isactive'));
98 $cloneModule->set('dirname',$module->get('dirname'));
99 //$cloneModule->set('trust_dirname',$module->get('trust_dirname'));
100 $cloneModule->set('hasmain',$module->get('hasmain'));
101 $cloneModule->set('hasadmin',$module->get('hasadmin'));
102 $cloneModule->set('hasconfig',$module->get('hasconfig'));
104 $this->_mCurrentXoopsModule =& $cloneModule;
105 $this->_mCurrentVersion = $cloneModule->get('version');
109 * setTargetXoopsModule
111 * @param XoopsModule &$module
115 public function setTargetXoopsModule(/*** XoopsModule ***/ &$module)
117 $this->_mTargetXoopsModule =& $module;
118 $this->_mTargetVersion = $this->getTargetPhase();
128 public function getCurrentVersion()
130 return intval($this->_mCurrentVersion);
140 public function getTargetPhase()
142 ksort($this->_mMileStone);
144 foreach($this->_mMileStone as $tVer => $tMethod)
146 if($tVer >= $this->getCurrentVersion())
148 return intval($tVer);
152 return $this->_mTargetXoopsModule->get('version');
162 public function hasUpgradeMethod()
164 ksort($this->_mMileStone);
166 foreach($this->_mMileStone as $tVer => $tMethod)
168 if($tVer >= $this->getCurrentVersion() && is_callable(array($this,$tMethod)))
184 public function isLatestUpgrade()
186 return ($this->_mTargetXoopsModule->get('version') == $this->getTargetPhase());
190 * _updateModuleTemplates
196 private function _updateModuleTemplates()
198 Sd2nd_InstallUtils::uninstallAllOfModuleTemplates($this->_mTargetXoopsModule,$this->mLog);
199 Sd2nd_InstallUtils::installAllOfModuleTemplates($this->_mTargetXoopsModule,$this->mLog);
209 private function _updateBlocks()
211 Sd2nd_InstallUtils::smartUpdateAllOfBlocks($this->_mTargetXoopsModule,$this->mLog);
221 private function _updatePreferences()
223 Sd2nd_InstallUtils::smartUpdateAllOfConfigs($this->_mTargetXoopsModule,$this->mLog);
233 public function executeUpgrade()
235 return ($this->hasUpgradeMethod() ?
236 $this->_callUpgradeMethod() :
237 $this->executeAutomaticUpgrade());
247 private function _callUpgradeMethod()
249 ksort($this->_mMileStone);
251 foreach($this->_mMileStone as $tVer => $tMethod)
253 if($tVer >= $this->getCurrentVersion() && is_callable(array($this,$tMethod)))
255 return $this->$tMethod();
263 * executeAutomaticUpgrade
269 public function executeAutomaticUpgrade()
271 $this->mLog->addReport(_MI_SD2ND_INSTALL_MSG_UPDATE_STARTED);
273 $this->_updateModuleTemplates();
274 if(!$this->_mForceMode && $this->mLog->hasError())
276 $this->_processReport();
280 $this->_updateBlocks();
281 if(!$this->_mForceMode && $this->mLog->hasError())
283 $this->_processReport();
287 $this->_updatePreferences();
288 if(!$this->_mForceMode && $this->mLog->hasError())
290 $this->_processReport();
294 $this->saveXoopsModule($this->_mTargetXoopsModule);
295 if(!$this->_mForceMode && $this->mLog->hasError())
297 $this->_processReport();
301 $this->_processReport();
309 * @param XoopsModule &$module
313 public function saveXoopsModule(/*** XoopsModule ***/ &$module)
315 $moduleHandler =& Sd2nd_Utils::getXoopsHandler('module');
317 if($moduleHandler->insert($module))
319 $this->mLog->addReport(_MI_SD2ND_INSTALL_MSG_UPDATE_FINISHED);
323 $this->mLog->addError(_MI_SD2ND_INSTALL_ERROR_UPDATE_FINISHED);
334 private function _processReport()
336 if(!$this->mLog->hasError())
339 XCube_Utils::formatString(
340 _MI_SD2ND_INSTALL_MSG_MODULE_UPDATED,
341 $this->_mCurrentXoopsModule->get('name')
348 XCube_Utils::formatString(
349 _MI_SD2ND_INSTALL_ERROR_MODULE_UPDATED,
350 $this->_mCurrentXoopsModule->get('name')