Produkte ausserhalb des Admins löschen



Möchten Sie Produkte automatisiert, zum Beispiel über einen Cronjob löschen, werden Sie schnell bemerken, dass Sie die Funktion $product->delete() in Form einer Exception “Diese Aktion von einem nicht administrativen Bereich nicht abgeschlossen werden.” endet.

Also - wir müssen der Sache auf den Grund gehen. Dazu öffnen wir die Datei app\core\image\catalog\model\Product.php und sehen uns die Funktion _beforeDelete() an.

    protected function _beforeDelete()
    {
        $this->cleanCache();
        $this->_protectFromNonAdmin();
        return parent::_beforeDelete();
    }

Schnell wird klar, dass nur die Funktion _protectFromNonAdmin unser Vorhaben Produkte zu löschem verhindert. In der Datei app\core\image\catalog\model\Abstract.php findet man schlußendlich den entsprechenden Quellcode.

    protected function _protectFromNonAdmin()
    {
        if (Mage::registry('isSecureArea')) {
            return;
        }
        if (!Mage::app()->getStore()->isAdmin()) {
            Mage::throwException(Mage::helper('core')->__('Cannot complete this operation from non-admin area.'));
        }
    }

Nun gibt es zwei Möglichkeiten:
1. isSecureArea ist registriert.
2. Mage::app()->getStore()->isAdmin() liefert True als Ergebnis zurück

Damit wird klar, dass wir einfach isSecureArea registrieren und somit die Abfrage aushebeln. Das sieht dann im Code wie folgt aus:

  ...
  Mage::register('isSecureArea', true, true);
  $product->load($id);
  ...
  $product->delete();
  ...

Damit können Sie ohne Probleme Produkte ausserhalb des Frontends löschen. Für Sicherheitsmechanismen müssen Sie dann allerdings selbst sorgen!

Viele Grüße
Johannes Teitge

  • Twitter
  • Webnews
  • Mister-Wong
  • Facebook
  • Digg
  • BlogMarks
  • Share/Save/Bookmark

Kommentar erstellen

You must be logged in to post a comment.

Bitte beachten: Mxperts.de ist kein Supportforum sondern eine Informationsplattform, deshalb benutzt für Diskussionen das deutsche Forum von Magento. (Fragen/Kommentare zu den Tutorials ausgeschlossen). Außerdem gebe ich keinen kostenlosen Support zu Magento. Leider haben das einige Leser in letzter Zeit falsch Verstanden und ich bitte um Euer Verständnis. Ich denke diese Plattform ist von unserer Seite aus schon genügend Gratis-Leistung.