Powermail in Datenbank speichern, Wert vorhanden -> Ausgabe

  • Knalltuete Knalltuet...
    Sternenflotten-Admiral
    0 x
    169 Beiträge
    0 Hilfreiche Beiträge
    11. 03. 2009, 10:38

    Und zwar gibt es ja die Möglichkeit mit Powermail Daten in eine beliebige Tabelle zu schreiben. Dort gibt es die Funktion "_ifUnique". Das Problem an dieser Funktion ist, dass es dem User keine Rückmeldung gibt, dass dieser Wert schon in der Datenbank existiert und dann die Möglichkeit gibt den Wert anzupassen. Ich habe jetzt selber schonmal versucht da was anzupassen, aber ich blick da i-wie nicht durch. Falls jemand da irgendeine Möglichkeit sieht diese Funktion zu ergänzen wäre das sehr schön, denn dann kann man Powermail endlich auch als z.B. Benutzerregistrierung verwenden :)


  • 1
  • Daviz Daviz
    T3PO
    0 x
    29 Beiträge
    0 Hilfreiche Beiträge
    22. 05. 2009, 18:13

    Hallo,

    ich stehe auch gerade vor dem Problem, dass der User ja eine Rückmeldung bekommen sollte, wenn seine Einträge nicht in der Datenbank gespeichert werden.

    Lässt sich der Status über eine Condition abfragen und ggf. dann eine Nachricht an powermail senden, damit eine Fehlermeldung angezeigt werden und das Formular eventuell korrigiert kann?

    Vom Prinzip her so:

    1. if ( tt_address._ifUnique.email === false ) {
    2. return 'Fehlermeldung!';
    3. }

    Das natürlich als TypoScript ;)

    Viele Grüße,
    David

  • astridhaubold astridhau...
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    07. 09. 2009, 12:55

    Hallo,
    wie habt Ihr das denn gelöst? Das würde mich auch interessieren.
    Viele Grüße!
    Astrid

  • Daviz Daviz
    T3PO
    0 x
    29 Beiträge
    0 Hilfreiche Beiträge
    07. 09. 2009, 14:23

    Ich habe die Funktion _ifUnique genutzt:
    [TS]plugin.tx_powermail_pi1 {
    dbEntry {
    fe_users._enable = TEXT
    fe_users._enable.value = 1
    fe_users._ifUnique.email = none
    ...
    [/TS]
    Um dann die Meldung zu generieren habe ich einen Hook verwendet:

    1. public function PM_SubmitBeforeMarkerHook ($obj, $markerArray, &$sessionFields) {
    2.  
    3. $email = $sessionFields['uid26'];
    4. $sql = 'SELECT email FROM fe_users WHERE deleted = 0';
    5. $res = $GLOBALS['TYPO3_DB']->sql_query($sql);
    6. while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res) ) {
    7. if ($row['email'] == $email) {
    8. $lastUrl = $obj->cObj->lastTypoLinkLD['url'];
    9. $text = '<ul class="powermail_mandatory_list">
    10. <li class="powermail_mandatory_listitem"><strong>Die Emailadresse ' . $email . ' ist in der Datenbank schon vorhanden.</strong></li></ul><br />
    11. Bitte gehen Sie zurück zum Formular geben eine andere Emailadresse ein.<br />
    12. <a href="' . $lastUrl . '">Zurück</a>';
    13. return $text;
    14. }
    15. }
    16. return false;
    17. }

    Viele Grüße,
    David

  • Diabolos Diabolos
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    15. 03. 2011, 15:32

    Falls jmd. noch das selbe Problem hat und nicht weiterkommt hier mein Lösungsweg. ;)

    Zunächst mit der Extension "kickstarter" eine neue eigene Extension erstellen.
    Da nur einen eindeutigen Extension key eingeben der mit tx_ anfangen muss. Bei der General Info als Category "Frontend" auswählen. Danach "View Results" und die Extension installieren. Auf dem Server nun im Ordner der grad angelegten Extension eine Datei hinzufügen "ext_localconf.php". Für die Datei habe ich folgenden Code.

    1. <?php
    2. if (!defined('TYPO3_MODE')) {
    3. die ('Access denied.');
    4. }
    5.  
    6. $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['powermail']['PM_SubmitBeforeMarkerHook'][] = 'EXT:tx_fehlermeldung/class_check.php:tx_fehlermeldung_fehler';
    7. ?>

    und noch die Datei "class_check.php" mit folgendem Inhalt:

    1. <?php
    2. class tx_fehlermeldung_fehler {
    3.  
    4. public function PM_SubmitBeforeMarkerHook ($obj, $markerArray, &$sessionFields) {
    5. $username = $sessionFields['uid2'];
    6. $sql = 'SELECT username FROM fe_users WHERE deleted = 0';
    7. $res = $GLOBALS['TYPO3_DB']->sql_query($sql);
    8. while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res) ) {
    9. if ($row['username'] == $username) {
    10. $lastUrl = $obj->cObj->lastTypoLinkLD['url'];
    11. $text = '<ul class="powermail_mandatory_list">
    12. <li class="powermail_mandatory_listitem"><strong>Der Benutzername ' . $username . ' ist in der Datenbank schon vorhanden.</strong></li></ul>
    13. Bitte gehen Sie zurueck zum Formular und geben einen anderen Benutzernamen ein.
    14. <a href="' . $lastUrl . '">Zurueck</a>';
    15. return $text;
    16. }
    17. }
    18. return false;
    19. }
    20. }
    21. ?>

    Speichern und ab ;) Wichtig hier noch im Template angeben, dass plugin.tx_powermail_pi1.fe_users._ifUinque.username = none ist. In meinem Fall lasse ich den Usernamen überprüfen ;)

    Weitere Hook-Möglichkeiten gibts in der Dokumentation von Powermail unter dem Punkt "Hooks in Powermail".

    Nochmals vielen Dank an Daviz ;)

    Gruß,

    Philip

  • 1