Fehlerhafte Prüfung, ob ein Modul aktiv ist

Moin zusammen,

ich arbeite aktuell an einem kleinen Modul, welches u.a. über die Konsole Daten auswertet.
Nun wollte ich prüfen (mehr just for fun, vielleicht braucht man es ja mal), ob das Modul aktiv ist. Hierfür fand ich die Methode isModuleActive in der Klasse oxViewConfig. Die Methode soll die Modul ID entgegen nehmen und mir dann zurückgeben, ob das besagte Modul aktiv ist (soweit zumindest mein Verständnis).

Soweit, so gut- nur kriege ich false zurückgegeben, selbst, wenn mein Modul aktiv ist.
Als Modul ID habe ich den Wert aus der metadata.php genommen, in meinem Modul.
Beispiel:


$aModule = array ( 'id' => 'testId', 'title' => 'testblablub' .....); // etc

Wenn ich über die den Config Parameter ‘aDisabledModules’ prüfe, wird mein Modul noch korrekt erkannt (ob es aktiv bzw. nicht aktiv ist).

Bei der Prüfung, ob mein Modul existiert, geht er raus. Die Ausgabe davon:

[oxorder] => oe/invoicepdf/models/invoicepdfoxorder
[order_overview] => oe/invoicepdf/controllers/admin/invoicepdforder_overview
[oxlang] => testId/core/w2OxLang

Ich hoffe, ich habe soweit alle Informationen rausgeben können, die nötig sind.

Beste Grüße,
Cryv

http://forum.oxid-esales.com/showthread.php?t=18927

Hallo foxido.de,

den Beitrag hab ich schon gefunden, hierbei handelt es sich aber um eine Prüfung, ob ein Modul aktiv ist, in einem Template. Da ich mich auf der Kommandozeile bewege, in meinem Fall, habe ich kein Template.

Darüber hinaus ändert es nichts am Bug Verdacht, denke ich.

Beides funktioniert. Deine Methode wird im Anhang verwendet. Über ‘oxViewConfig’ kannst das überall aufrufen, auch in Deiner “Kommandozeile” :wink:

Nachtrag: Getestet in 4.95 // Im Block bitte das abzufragende Modul ersetzen.

Mh… Bei mir (4.9.3) behauptet er weiterhin, dass mein Modul nicht existiert, Aufruf erfolgt wie bei dir.

Danke dir trotzdem für deine Mühe, ich hab vermutlich irgendwo einen sehr seltsamen Fehler, der so falsch ist, dass dann doch (fast) alle richtig läuft. Bis auf diese Prüfung.

fügt es dem Kapitel “Geheimnisse, die das Leben schreibt” hinzu

wenn du in die Modulverwaltung gehst, schlägt OXID dir vor irgendwelche Einträge für ein nicht existierendes Modul wieder zu entfernen?

[QUOTE=Cryver;161979]

Wenn ich über die den Config Parameter ‘aDisabledModules’ prüfe, wird mein Modul noch korrekt erkannt (ob es aktiv bzw. nicht aktiv ist).

Bei der Prüfung, ob mein Modul existiert, geht er raus. Die Ausgabe davon:
[/QUOTE]
Kann da nicht so ganz folgen. ‘aDisabledModules’ ist denke ich dafür da fehlerhafte Module zu deaktivieren. Wenn ein Modul da drin ist, kann es nicht mehr aktiviert werden denke ich (Einträge unter “installierte Module” erscheinen durchgestrichen).

Es gibt da einige Config-Variablen bei denen leicht etwas durcheinander kommt wenn man z.B. ein Modul umbenennt. Dann kann man am besten alles zurücksetzen.

Du kannst folgendes SQL ausführen: DELETE FROM oxconfig WHERE OXVARNAME LIKE '%module%'
Dann direkt /tmp leeren und alle eigenen Modulordner löschen. Module-Seite im BE aufrufen und “Einträge löschen” wählen. Dann die Module wieder neu installieren.

[QUOTE=vanilla thunder;162011]wenn du in die Modulverwaltung gehst, schlägt OXID dir vor irgendwelche Einträge für ein nicht existierendes Modul wieder zu entfernen?[/QUOTE]

Hallo vanilla thunder.
Nein, da ist alles in Ordnung. Ich kriege eine Liste aller installierter Shop-Module angezeigt.

[QUOTE=leofonic;162029]Kann da nicht so ganz folgen. ‘aDisabledModules’ ist denke ich dafür da fehlerhafte Module zu deaktivieren. Wenn ein Modul da drin ist, kann es nicht mehr aktiviert werden denke ich (Einträge unter “installierte Module” erscheinen durchgestrichen).

Es gibt da einige Config-Variablen bei denen leicht etwas durcheinander kommt wenn man z.B. ein Modul umbenennt. Dann kann man am besten alles zurücksetzen.

Du kannst folgendes SQL ausführen: DELETE FROM oxconfig WHERE OXVARNAME LIKE '%module%'
Dann direkt /tmp leeren und alle eigenen Modulordner löschen. Module-Seite im BE aufrufen und “Einträge löschen” wählen. Dann die Module wieder neu installieren.[/QUOTE]

Hallo leofonic,
aus dem Quellcode und der objektiven Funktionsweise habe ich interpretiert, dass ‘aDisabledModules’ angibt, welche Module aktuell deaktiviert sind.

Im Prinzip ist mein anliegen folgendes gewesen:

Ich habe ein Modul, welches auf einige Bestandteile von OXID zurückgreift, Daten verarbeitet und mir am Ende ein Protokoll der Ergebnisse in einer Datei ablegt.
Wenn das Modul nicht aktiv ist, kann es nicht auf die Bestandteile von OXID zurückgreifen. Deshalb habe ich eine Prüfung integrieren wollen, welche selbiges prüft- ob das Modul aktiv.
Hierfür griff ich auf die die Methode “isModuleActive” in der Klasse “oxViewConfig” zurück.
Bei der Methode wird u.a. geprüft, welche Module existieren (Methode: _moduleExists). Diese Methode sagt allerdings immer, dass mein Modul nicht existiert. Um mein obiges Beispiel aufzugreifen:


[oxorder] => oe/invoicepdf/models/invoicepdfoxorder
[order_overview] => oe/invoicepdf/controllers/admin/invoicepdforder_overview
[oxlang] => testId/core/w2OxLang

Dieses Array (im obigen PHP Tag, im nachfolgenden $aModules genannt) liest die Methode ("_moduleExists") in einer Schleife aus und prüft, ob die Module ID (in meinem Fall “testId”) zwischen zwei Slashes vorhanden ist:


foreach ($aModules as $sExtendPath) 
{
	if (false !== strpos($sExtendPath, '/' . $sModuleId . '/')) {
		$blModuleExists = true;
        break;
	}
}

Nun habe ich allerdings keine Ahnung, wo ich einen Fehler gemacht habe ODER aber, ob dieser 1. Slash bei der Prüfung ein Fehler ist.

Wenn ich einzeln über die Konfigurationsvariable “aDisabledModules” nach meinem Modul schaue, wird korrekt erkannt, ob es aktiviert oder nicht aktiviert ist.

Ich hoffe, mein Anliegen wurde deutlicher :slight_smile:

Beste Grüße,
Cryv