Housekeeping

Patricia Ottmar

37 Jahre - 2 Kinder
Erstkontakt 2006
seit 2010 hauptberuflich

Minor Release!
Security!

  • Welche Projekte haben wir?
  • In welchen Versionen sind diese installiert?
  • Hat es schon jemand aktualisiert?
  • Welche Projekte stehen als nächstes an?

Wo anfangen?

  • Excel? Veraltet, keine Zeit zum pflegen...
  • Entwickler? Nicht da, weiß auch nicht alles...
  • Server? Dauert zu lange, verschiedene Hoster...
  • Doku? ...

Eine Lösung muss her

  • Einsehbar an zentraller Stelle
  • Einfach pflegbar nicht nur für Entwickler
  • Automatisierte Aktualisierung

TYPO3 Dashboard

TYPO3 Datensatz

  • Bedienung ist klar
  • Kann von allen gepflegt werden
  • Von überall zugänglich
  • DatamapPostProcess und Command

DatamapPostProcess

							localconf.php
							
	$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][]
							= \Code711\Code711Housekeeping\Hooks\DatamapPostProcess::class;
							
						
							Classes/Hooks/DatamapPostProcess.php
							
	class DatamapPostProcess
	{
		if ($table == 'my_table' && ($status == 'new' || $status == 'update')) {
			$newid = $id;
			if ($status == 'new') {
				$newid = $pObj->substNEWwithIDs[$id];
			}
			$updateService = GeneralUtility::makeInstance(UpdateService::class);
			$updateService->updateProject((int)$newid, $pObj->datamap[$table][$id]);
		}
	}
							
						

Command

							Services.yaml
							services:
	  Code711\Code711Housekeeping\Command\UpdateVersionsCommand:
		tags:
		  - name: 'console.command'
				command: 'housekeeping:update'
				description: 'update versions'
				schedulable: true
						
							Classes/Hooks/DatamapPostProcess.php
							protected function execute(InputInterface $input, OutputInterface $output): int
{
		[...]
		$updateService = GeneralUtility::makeInstance(UpdateService::class);
	 	while ($row = $stmt->fetchAssociative()) {
			$updateService->updateProject($row['uid'], $row);
	 	}
		[...]
}
						

Schnittstellen

code711_houskeeping

Dashboard und Projektpflege

									Call Code711 API
									$client = new \GuzzleHttp\Client();
$res = $client->request(
	'get',
	$project['url'] . 'api/v1/version',
	['auth' => [$apiUser, $apiPw]]
);
									Call TYPO3 API
									$client = new \GuzzleHttp\Client();
$res = $client->get(
	'https://get.typo3.org/v1/api/major/'.$version.'/release/latest'
);

code711_api

Projekt X

Live Demo

Eigenes Widget für Dashboard konfigurieren

Optional: API Extension nutzen

Danke an die Community

  • b13/slimphp-bridge
  • Talks Camp und DevDays
  • TYPO3 Usergroup Stuttgart
  • Fragen?