Hallo Koala,
habe mir nun nochmal die beiden Versionen heruntergeladen und wieder alles auf null gestellt. Es sind also keine Gästebuchmodule, -Actions und DB-Tabellen vorhanden und trotzdem erscheint bei der Installation wie beim ersten Mal die Fehlermeldung:
AddOn "guestbook" konnte aus folgendem Grund nicht installiert werden:
installAction2Modul: Fehler in der Datenbankabfrage. Ist der Modulname "Gästebuch - Eintragsliste" und der Aktionname "Gästebuch - Eintragsliste StatusPerDatei" richtig?
Ich habe nun mal mein dateiübergreifendes Suchmudul angeschmissen und konnte und in der install.php des Addons folgende Funktion lokalisieren, (wobei das für Dich sicher keine Erkenntnis ist
):
Code: Alles auswählen
function installAction2Modul($modul_name, $action_name) {
global $REX;
if (!isset ($modul_name) or $modul_name == '' or !isset ($action_name) or $action_name == '') {
return 'installAction2Modul: Keinen Modul- oder Aktionname übergeben.';
}
/**
* Diese Abfrage gibt zurück
* - wenn es bereits eine Verküpfung in der Tabelle rex_module_action gibt:
* m_id a_id mod_action_m_id mod_action_a_id
* 42 9 true true
*
* - gibt es noch keine Verknüpfung, sieht die Rückgabe so aus:
* m_id a_id mod_action_m_id mod_action_a_id
* 42 9 false false
*
* m_id und a_id sind von MySQL vergebene IDs und entsprechen nicht diesem Beispiel hier!
*
*/
$qry = 'SELECT `'.$REX['TABLE_PREFIX'].'modultyp`.`id` AS m_id, `'.$REX['TABLE_PREFIX'].'action`.`id` AS a_id,
IF(`'.$REX['TABLE_PREFIX'].'module_action`.`module_id` != 0, "true", "false") AS mod_action_m_id,
IF(`'.$REX['TABLE_PREFIX'].'module_action`.`action_id` != 0, "true", "false") AS mod_action_a_id
FROM `'.$REX['TABLE_PREFIX'].'modultyp` , `'.$REX['TABLE_PREFIX'].'action`
LEFT JOIN `'.$REX['TABLE_PREFIX'].'module_action` ON ( `'.$REX['TABLE_PREFIX'].'module_action`.`module_id` = `'.$REX['TABLE_PREFIX'].'modultyp`.`id`
AND `'.$REX['TABLE_PREFIX'].'module_action`.`action_id` = `'.$REX['TABLE_PREFIX'].'action`.`id` )
WHERE `'.$REX['TABLE_PREFIX'].'modultyp`.`name` = "'.$modul_name.'"
AND `'.$REX['TABLE_PREFIX'].'action`.`name` = "'.$action_name.'"
LIMIT 1';
$sql = new sql();
//$sql->debugsql = true;
$data = $sql->get_array($qry);
if (is_array($data) and $sql->getRows() == 1) {
foreach ($data as $row) {
// prüfe IDs auf vorhandensein
// sind diese IDs in dieser Kombination noch nicht in der Verknüpfungstabelle
// dann können sie dort eingetragen werden
if ($row['mod_action_m_id'] == 'false' and $row['mod_action_a_id'] == 'false') {
$qry = 'INSERT INTO `'.$REX['TABLE_PREFIX'].'module_action` ( `id` , `module_id` , `action_id` )
VALUES (NULL , "'.$row['m_id'].'", "'.$row['a_id'].'")';
$sql = new sql();
//$sql->debugsql = true;
$sql->setQuery($qry);
} else {
return 'installAction2Modul: Es exitiert bereits eine Zuweisung zwischen dem Modul "'.$modul_name.'" und der Aktion "'.$action_name.'".';
}
}
} else {
return 'installAction2Modul: Fehler in der Datenbankabfrage. Ist der Modulname "'.$modul_name.'" und der Aktionname "'.$action_name.'" richtig?';
}
return 'OK';
} // installAction2Modul()
Es hat also was mit dem eintragen des Moduls in die DB zu tun. Leider reichen meine Kenntnisse nicht soweit den "Fehler" zu finden. Aber es ist vielleicht schon eine Eingrenzung, die uns einen Schritt weiter bringt.
Mir ist auch soeben noch eingefallen, daß ich das Developer-Addon installiert habe. Da es ja direkt mit den Modulen in der DB zu tun hat, könnte es vielleicht auch damit irgendwie zusammenhängen.
Grüße
Stefan