* * @page requirements_modulemanager Installations Voraussetzungen IPSModuleManager * - IPS Kernel >= 2.50 * * @page install_modulemanager Installations Schritte * Der IPSModuleManager wird bereits bei der Basis Installation angelegt (Siehe BaseInstallation im Forum). * */ if (!isset($moduleManager)) { IPSUtils_Include ('IPSModuleManager.class.php', 'IPSLibrary::install::IPSModuleManager'); echo 'ModuleManager Variable not set --> Create "default" ModuleManager'; $moduleManager = new IPSModuleManager('IPSModuleManager'); } $moduleManager->VersionHandler()->CheckModuleVersion('IPS','2.50'); RemoveBlanksBeforePHPTags('IPSWatering_Configuration.inc.php', 'IPSLibrary::config::modules::IPSWatering::Default'); RemoveBlanksBeforePHPTags('IPSWatering_Configuration.inc.php', 'IPSLibrary::config::modules::IPSWatering'); RemoveBlanksBeforePHPTags('IPSLogger_Configuration.inc.php', 'IPSLibrary::config::core::IPSLogger::Default'); RemoveBlanksBeforePHPTags('IPSLogger_Configuration.inc.php', 'IPSLibrary::config::core::IPSLogger'); RemoveBlanksBeforePHPTags('IPSMessageHandler_Configuration.inc.php', 'IPSLibrary::config::core::IPSMessageHandler::Default'); RemoveBlanksBeforePHPTags('IPSMessageHandler_Configuration.inc.php', 'IPSLibrary::config::core::IPSMessageHandler'); SearchLastRepositories(); $moduleManager->VersionHandler()->ReloadVersionData(); // --------------------------------------------------------------------------------------------- // Search for Last Repositories // --------------------------------------------------------------------------------------------- function SearchLastRepositories() { global $_IPS; IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager"); $moduleManager = $_IPS['MODULEMANAGER']; $infos = $moduleManager->GetModuleInfos(); $modules = $moduleManager->GetInstalledModules(); //print_r($modules); foreach ($modules as $module=>$data) { $downloadFile = IPS_GetKernelDir().'scripts/IPSLibrary/install/DownloadListFiles/'.$module.'_FileList.ini'; $configFile = IPS_GetKernelDir().'scripts/IPSLibrary/install/InitializationFiles/'.$module.'.ini'; if (!file_exists($downloadFile) or !file_exists($configFile)) { $moduleManager->LogHandler()->Debug('Remove Module "'.$module.'" from InstalledModules (No Ini Files found)'); $versionHandler = new IPSFileVersionHandler($module); $versionHandler->DeleteModule(); } else { $moduleManager = new IPSModuleManager($module, '', sys_get_temp_dir().'/', true); $versionHandler = $moduleManager->VersionHandler(); $repository = $versionHandler->GetModuleRepository(); // Search current Repository if ($repository=='') { $logDir = IPS_GetKernelDir().'logs/'; if (function_exists('IPS_GetLogDir')) $logDir = IPS_GetLogDir(); $files = scandir($logDir, 1); foreach ($files as $file) { // Found LogFile if ($repository<>'') { break; } elseif (strpos($file,'IPSModuleManager_')!==false) { $fileContent = file_get_contents($logDir.$file); $lines = explode(PHP_EOL, $fileContent); $line1 = ''; $line2 = ''; if (count($lines)>0) { $line1 = $lines[0]; } if (count($lines)>1) { $line2 = $lines[1]; } // Found LogFile for Module if ( strpos($line1,'Set Version '.$module.'=')!==false or strpos($line2,''.$module.'_FileList.ini')!==false) { //echo 'found '.$module; //return; // Search Repository foreach ($lines as $idx=>$line) { // Found Repository if (strpos($line,' --> '.IPS_GetKernelDir().'scripts/IPSLibrary/install/DownloadListFiles/'.$module.'_FileList.ini')!==false) { $start = strpos($line,'Copy ')+5; $end = strpos($line,'IPSLibrary',strpos($line,'IPSLibrary')+1); $repository = substr($line, $start, $end-$start); break; } } } } } $moduleManager->LogHandler()->Debug('Add Last Repository: '.$module.'='.$repository); $versionHandler->SetModuleRepository($repository); } echo $module.'='.$repository.PHP_EOL; } } } // ------------------------------------------------------------------------------------------------ function RemoveBlanksBeforePHPTags ($file, $namespace) { global $_IPS; $moduleManager = $_IPS['MODULEMANAGER']; if ($namespace<>'') { $namespace = str_replace('::','/',$namespace).'/'; } $fileNameFull = IPS_GetKernelDir().'scripts/'.$namespace.$file; if (!file_exists($fileNameFull)) { echo 'File '.$file.' not exists (Namespace='.$namespace.')'.PHP_EOL; return; } $fileContent = file_get_contents($fileNameFull, true); $pos = strpos($fileContent, ' '); if ($pos === false or $pos > 0) { return; } $fileContentNew = substr($fileContent, 1); $moduleManager->LogHandler()->Debug('Remove Blanks before PHP Tag from File '.$file.'(Namespace='.$namespace.')'); file_put_contents($fileNameFull, $fileContentNew); } /** @}*/ ?>