it-swarm.com.de

Beschränken Sie die direkte Installation der Komponente

Ich habe ein Paket, das eine Komponente und andere Erweiterungen enthält.

Wie kann ich den Benutzer einschränken, die Komponente nicht direkt zu installieren? Mit anderen Worten, wenn der Benutzer das Paket entpackt und die Komponente direkt installiert, muss ich eine Fehlermeldung auslösen.

Ist das mit scriptfile möglich ??

3
Malaiselvan

Das Problem ist, dass der Joomla-Installer das zu installierende Paket selbst dekomprimiert. Es gibt also keinen Unterschied zwischen einer Installation aus einer manuellen Dekomprimierung oder aus einer hochgeladenen Datei. Nur der Installer weiß, ob er die nicht komprimierten Dateien weiterhin löschen muss oder nicht.

Der einzige Unterschied, den Sie feststellen konnten, ist der Zeitstempel der Dateien. Zum Beispiel werden alle Dateien innerhalb von ... 2-3 Sekunden nach dem aktuellen Datum erstellt. Dann wurde sie hochgeladen. Mit einem größeren Unterschied muss dies der Fall sein ein manuell entpacktes Paket.

2
Anibal

Die Problemumgehung besteht darin, eine Sitzungsvariable in die Paketskriptdatei einzufügen und diese in der Komponentenskriptdatei zu überprüfen.

Wenn die Sitzungsvariable nicht vorhanden ist, gibt die Komponenteninstallation false zurück.

Das Code-Snippet ist wie folgt.

Script des Pakets

class pkg_MyPackInstallerScript {
  public function preflight($route, JAdapterInstance $adapter){
    $session = JFactory::getSession();
    $session->set('ses_via_package',true);
  }
  .....
}

Skript der Komponente

class com_ComponentInstallerScript {

  public function preflight($route, JAdapterInstance $adapter){

    $session = JFactory::getSession();
    $from_package = $session->get('ses_via_package');
    $session->clear('ses_via_package');

    if(empty($from_package)){
      JError::raiseError( xxxx, 'Error message');
      return false;
    }

  }
 .....
}
2
Malaiselvan