contao/test — Issue #1649: Uninstall.php um bei Extension deinstallieren vorher noch aufzuraeumen
Author: importer
Created: 2011-11-29 08:19:14+00:00
State: open
Labels: Feature, repository

Mir fehlt eine Meoglichkeit, beim Deinstallieren eines Modules/Erweiterung, vorher ordentlich aufzuraeumen.
Daten aus der localconfig suaber entfernen, Backups oder sonstige notwendigen Dinge, bevor die Erweiterung entfernt wurde, und die Datenleichen ewig existieren.

Hierzu kann in den Modulen eine config/uninstall.php mit entsprechenden AufraeumCode erstellt werden.
Die notwendigen Anpassungen, damit das Aufraeumen VOR dem Entfernen der gesamten Daten stattfindet, erfolgt in der **rep_client/RepositoryManager.php** Funktion **uninstallExtension**

Hier der Code zum aufrufen :

```
$strUninstallFile = sprintf('/system/modules/%s/config/uninstall.php',$aName);

if (file_exists(TL_ROOT.$strUninstallFile))
{
`include(TL_ROOT.$strUninstallFile);
}
```

und im Context :

```
*/
private function uninstallExtension($aName)
{
$text = &$GLOBALS['TL_LANG']['tl_repository'];
$rep = &$this->Template->rep;
$db = &$this->Database;
$this->import('Files');

$err = false;
try {

$strUninstallFile = sprintf('/system/modules/%s/config/uninstall.php',$aName);

if (file_exists(TL_ROOT.$strUninstallFile))
{
`include(TL_ROOT.$strUninstallFile);
}

// get pid of installation record
$q = $db->prepare("select * from `tl_repository_installs` where `extension`=?")->execute($aName);
if (!$q->next()) throw new Exception($text['extinstrecntf']);
$instId = $q->id;
....
```

Da eine **uninstall.php** im Paket vorhanden ist, muss sie nicht explizit geloescht werden.

--- _Originally created by lindesbs on March 2nd, 2010, at 08:29pm (ID 1649)_