示例#1
0
 public function actionResetHash($sType)
 {
     $oDb = bx_instance('BxDolStudioInstallerQuery');
     $sResult = '';
     switch ($sType) {
         case 'system':
             $oHasher = bx_instance('BxDolInstallerHasher');
             $oDb->deleteModuleTrackFiles(BX_SYSTEM_MODULE_ID);
             $sResult = _t('_bx_dev_hash_' . ($oHasher->hashSystemFiles() ? 'msg' : 'err') . '_reset_hash_system');
             break;
         case 'modules':
             bx_import('BxDolInstallerUtils');
             bx_import('BxDolModuleQuery');
             $aModules = BxDolModuleQuery::getInstance()->getModules();
             $aTmplVarsModules = array();
             foreach ($aModules as $aModule) {
                 if ($aModule['name'] == 'system') {
                     continue;
                 }
                 $aConfig = BxDolInstallerUtils::getModuleConfig($aModule);
                 $sPathInstaller = BX_DIRECTORY_PATH_MODULES . $aModule['path'] . 'install/installer.php';
                 if (empty($aConfig) || !file_exists($sPathInstaller)) {
                     continue;
                 }
                 require_once $sPathInstaller;
                 $sClassName = $aConfig['class_prefix'] . 'Installer';
                 $oInstaller = new $sClassName($aConfig);
                 $oDb->deleteModuleTrackFiles($aModule['id']);
                 $aFiles = array();
                 $oInstaller->hashFiles(BX_DIRECTORY_PATH_ROOT . 'modules/' . $aModule['path'], $aFiles);
                 foreach ($aFiles as $aFile) {
                     $oDb->insertModuleTrack($aModule['id'], $aFile);
                 }
                 $aTmplVarsModules[] = array('module' => $aModule['title'], 'files' => count($aFiles));
             }
             $sResult = $this->_oTemplate->parseHtmlByName('hash_modules.html', array('bx_repeat:modules' => $aTmplVarsModules));
             break;
     }
     echo $sResult;
     exit;
 }