芝麻web文件管理V1.00
编辑当前文件:/home/p/r/i/prismawe/clients/canaldegap.fr_old/modules/ModuleManager/action.upgrademodule.php
_DisplayErrorPage( $id, $params, $returnid, $this->Lang('error_insufficientparams')); return; } $name = $params['name']; if( !isset( $params['version'] ) ) { $this->_DisplayErrorPage( $id, $params, $returnid, $this->Lang('error_insufficientparams')); return; } $version = $params['version']; $url = $this->GetPreference('module_repository'); if( $url == '' ) { $this->_DisplayErrorPage( $id, $params, $returnid, $this->Lang('error_norepositoryurl')); return; } $xmlfile = $name.'-'.$version.'.xml'; $nusoap =& $this->GetModuleInstance('nuSOAP'); $nusoap->Load(); $nu_soapclient =& new nu_soapclient($url,false,false,false,false,false,0,90); if( $err = $nu_soapclient->GetError() ) { $this->_DisplayErrorPage( $id, $params, $returnid, 'SOAP Error: '.$err); return; } // get the xml file from soap $xml = $nu_soapclient->call('ModuleRepository.soap_modulexml',array('name' => $xmlfile )); if( $err = $nu_soapclient->GetError() ) { $this->_DisplayErrorPage( $id, $params, $returnid, 'SOAP Error: '.$err); return; } // get the md5sum from soap $svrmd5 = $nu_soapclient->call('ModuleRepository.soap_modulemd5sum',array('name' => $xmlfile)); if( $err = $nu_soapclient->GetError() ) { $this->_DisplayErrorPage( $id, $params, $returnid, 'SOAP Error: '.$err); return; } // calculate our own md5sum // and compare $clientmd5 = md5( $xml ); if( $clientmd5 != $svrmd5 ) { $this->_DisplayErrorPage( $id, $params, $returnid, $this->Lang('error_checksum')); return; } // woohoo, we're ready to rock and roll now // just gotta expand the module $modoperations = $gCms->GetModuleOperations(); if( !$modoperations->ExpandXMLPackage( $xml, 1 ) ) { $this->_DisplayErrorPage( $id, $params, $returnid, $modoperations->GetLastError()); return; } // we get the version number from the database // just incase the module is inactive or something and therefore // not loaded. $query = "SELECT * FROM ".cms_db_prefix()."modules WHERE module_name = ?"; $dbresult = $db->Execute( $query, array( $name ) ); $row = $dbresult->FetchRow(); $oldversion = $row['version']; if( !isset( $gCms->modules[$name] ) ) { echo "DEBUG: module not loaded
"; if( !$modoperations->LoadNewModule( $name ) ) { // error } } if( !$modoperations->UpgradeModule( $name, $oldversion, $version ) ) { // error } // and redirect back to the start $this->Redirect( $id, 'defaultadmin', $returnid ); } ?>