Ergebnis 1 bis 9 von 9

Thema: Verständnisfrage zu powermail und userfunc, Datum als Timestamp

      
  1. #1
    tko
    tko ist offline
    Forum Newbie
    Registriert seit
    17.04.2009
    Beiträge
    11

    Verständnisfrage zu powermail und userfunc, Datum als Timestamp

    Hallo Forum,

    ich bin T3-beginner und komme irgendwie nicht ganz klar, wie eine userfunc in ein extension template eingebunden wird.

    Mein Problem: ich möchte ein Datumsfeld in der fe_user über powermail im timestamp-format eintragen.

    Dazu wollte ich das how-to von Alexander Kellner nutzen ( http://www.typo3forum.net/forum/powermail/36102-powermail-datum-timestamp-powermail_frontend-datum.html (Powermail: Datum als Timestamp, powermail_frontend Datum) ), komme aber nicht so wirklich klar damit.

    Die mit dem powermail-Formular erfassten Daten werden einwandfrei in die fe_user geschrieben, in das Feld date_of_birth wird jedoch statt des Datums bzw. timestamps eine 0 eingetragen.

    debug.output zeigt folgendes im FE:

    powermail: Values from session: 13.11.1960
    powermail: Email values (sender_mail )
    mailcontent: <td class="powermail_all powermail_all_td" valign="top">13.11.1960</p></td>
    mailcontent (plaintext) 13.11.1960
    powermail: DB values: <uid23></uid23>
    powermail: Extern DB-table entries: date_of_birth [blank]


    Folgendes habe ich konfiguriert:
    TS constants:
    Code:
    includeLibs.powermailTimestamp = fileadmin/templ_VA/php-sql/user_powermailTimestamp.php
    ..habe ich aber auch schon im setup gehabt und bringt gleiches (unbefriedigendes) Ergebnis

    TS setup (aus o.g. how-to auf meine Werte angepasst )
    Code:
    # Registrierungs setup.ts
    
    plugin.tx_powermail_pi1.debug.output = all
    
    # Datum in timestamp in die db schreiben:
    # http://www.typo3.net/forum/beitraege/thema/87564/
    
    plugin.tx_powermail_pi1 {
        mode {
            dblog {
                # nachfolgend ist die uid 23 des Datumsfeldes aus dem powermailformular (uid 144) zu verwenden:
          uid23 = USER
                uid23.userFunc = user_powermailTimestamp->preflight
                uid23.userFunc.field = uid23
                #nachfolgend ist die content-uid des powermail-Formulars (uid 144) einzutragen:
          uid23.userFunc.formuid = 224
            }
        }
    }
    
    
    plugin.tx_powermail_pi1.dbEntry {
    
    fe_users {
        _enable = TEXT
        _enable.value = 1
         #######??funktioniert dies wirklich???#####
         _ifUnique.username = update
       
        
    # vorhandene Datensätze werden überschrieben, neue Datensätze werden angelegt
    
        pid = TEXT
        pid.value = 97
        
        tstamp = TEXT
        tstamp.data = date:U
        
        crdate = TEXT
        crdate.data = date:U
    
        cruser_id = TEXT
        cruser_id = 1000114
    
      # ... verkürzt ...diverse Felder werden einwandfrei gelesen und in die db geschrieben
        
    
        email = TEXT
        email.data = TSFE:fe_user|sesData|powermail_224|uid24
      
        date_of_birth= TEXT
        date_of_birth.field = TSFE:fe_user|sesData|powermail_224|uid23
        
          
       
        }
    }
    php userFunc (aus o.g. how-to ohne Änderung )
    PHP-Code:
    <?php

        
    class user_powermailhelp {
        
        
            
    // Function preflight() will be used from typoscript
            
    function preflight($content=''$conf=array()) {
                
    #t3lib_div::debug($conf);
                
    $value $GLOBALS['TSFE']->fe_user->sesData['powermail_'.$conf['userFunc.']['formuid']][$conf['userFunc.']['field']];
                return 
    $this->getDate($value);
            }
            
            
            
    // Main getDate() changes a date in any format to an unix timestamp
            
    function getDate($string$default 'now'$timestamp 1) {
                
    $error 0// no error at the beginning
                
    $string str_replace(array('-''_'':''+'','), '.'$string); // change 23-12-2009 -> 23.12.2009
                
    if (method_exists('t3lib_div''trimExplode')) $dateParts t3lib_div::trimExplode('.'$string1); else $dateParts explode('.'$string); // split at .
            
                
    if (count($dateParts) === 3) { // only if there are three parts
                    
    if (strlen($dateParts[0]) <= && strlen($dateParts[1]) <= && strlen($dateParts[2]) <= 2) { // xx.xx.xx
                        
    $string strtotime($dateParts[2].'-'.$dateParts[1].'-'.$dateParts[0]); // change to timestamp
                    
    }
                    elseif (
    strlen($dateParts[0]) == && strlen($dateParts[1]) <= && strlen($dateParts[2]) <= 2) { // xxxx.xx.xx
                        
    $string strtotime($dateParts[0].'-'.$dateParts[1].'-'.$dateParts[2]); // change to timestamp
                    
    }
                    elseif (
    strlen($dateParts[0]) <= && strlen($dateParts[1]) <= && strlen($dateParts[2]) == 4) { // xx.xx.xxxx
                        
    $string strtotime($dateParts[2].'-'.$dateParts[1].'-'.$dateParts[0]); // change to timestamp
                    
    }
                    else { 
    // error
                        
    $error 1// error
                    
    }
                } else { 
    // more than 3 parts - so error
                    
    $error 1// error
                
    }
                
    $string date('Y-m-d'$string); // For default: change 1234567 -> 1.1.1979
                
    if ($timestamp$string strtotime($string); // Change back 1.1.1979 -> 1234567
                
    if ($error$string = ($default == 'now' time() : $default); // show default value
            
                
    return $string;
            }
        }

    ?>
    Ich vermute, es liegt am TS setup, aber ich weiß nicht genau wie.
    Kann mir da vielleicht irgendjemand aufs Pferd helfen?

    Vielen Dank

    Thomas

  2. #2
    Forum Stammgast
    Registriert seit
    20.08.2009
    Alter
    31
    Beiträge
    167
    Hi,

    also was mir als erstes auffällt ist, dass Du die userfunc beim Schreiben des logeintrages benutzt statt beim Schreiben in die DB.

    plugin.tx_powermail_pi1.dbEntry {

    fe_users {
    _enable = TEXT
    _enable.value = 1
    #######??funktioniert dies wirklich???#####
    _ifUnique.username = update


    # ... verkürzt ...


    email = TEXT
    email.data = TSFE:fe_user|sesData|powermail_224|uid24

    date_of_birth= USER
    date_of_birth.userFunc = user_powermailTimestamp->preflight
    date_of_birth.userFunc.data = TSFE:fe_user|sesData|powermail_224|uid23
    }
    }wäre passender.

    Gruß Björn

  3. #3
    tko
    tko ist offline
    Forum Newbie
    Registriert seit
    17.04.2009
    Beiträge
    11
    Hallo Björn,

    vielen, vielen Dank, Deine Anregung hat mich einen wichtigen Schritt weitergebracht!

    Jetzt habe ich zwar in der feuser immer noch die Null als Eintrag, aber das Datum ist lt. debug-Anzeige an "powermail: DB values" in die piVars nun korrekt weitergereicht worden.

    So wie ich es sehe, muss ich jetzt wohl noch die richtige Formatierung für das Datumsfeld mitschicken.

    Kannst Du mir dazu noch was raten?

    Viele Grüße Thomas

  4. #4
    Forum Stammgast
    Registriert seit
    20.08.2009
    Alter
    31
    Beiträge
    167
    Hi Thomas,

    das Datum muss als Timestamp in die Datenbank geschrieben werden. Normaler Weise sollte das eigentlich passen was die Userfunc zurück gibt. Wie schaut denn dein TS jetzt aus??

    Gruß,
    Björn

  5. #5
    tko
    tko ist offline
    Forum Newbie
    Registriert seit
    17.04.2009
    Beiträge
    11
    Hallo Björn, super, dass Du Dich nochmals meiner Sache annimmst.

    Ich habe im Extension-Template
    in den constants:
    Code:
    plugin.powermail.format.date = %d.%m.%Y
    includeLibs.powermailTimestamp = fileadmin/templ_VA/php-sql/user_powermailTimestamp.php
    im setup:
    Code:
    plugin.tx_powermail_pi1.debug.output = all
    
    plugin.tx_powermail_pi1.dbEntry {
    
       fe_users {
           _enable = TEXT
           _enable.value = 1
           _ifUnique.username = update
       
        
    # vorhandene Werte werden upgedatet, neue Datensätze werden angelegt
    
           pid = TEXT
           pid.value = 97
        
           tstamp = TEXT
           tstamp.data = date:U
        
           crdate = TEXT
           crdate.data = date:U
    
           cruser_id = TEXT
           cruser_id = 1000114
       
           usergroup = TEXT
           usergroup = 2
        
    # Das ist mein Auswahlkriterium
    
           username = TEXT
           username.data = TSFE:fe_user|sesData|powermail_224|uid17
        
           password = TEXT
           password.data = TSFE:fe_user|sesData|powermail_224|uid18
        
           first_name = TEXT
           first_name.data = TSFE:fe_user|sesData|powermail_224|uid19
        
           last_name = TEXT
           last_name.data = TSFE:fe_user|sesData|powermail_224|uid22
        
           email = TEXT
           email.data = TSFE:fe_user|sesData|powermail_224|uid24
      
           #Tipp-Björn - http://www.typo3forum.net/forum/powermail/50875-verst-ndnisfrage-powermail-userfunc-datum-timestamp.html
           date_of_birth= USER
           date_of_birth.userFunc = user_powermailTimestamp->preflight
           date_of_birth.userFunc.data = TSFE:fe_user|sesData|powermail_224|uid23
        
        
        
           image = TEXT
           image.data = TSFE:fe_user|sesData|powermail_224|uid21
        
           
           }
       }
    und es wird über debug im FE folgendes angezeigt: siehe Datei-Anhänge
    1.values from session
    2.Email values (recipient_mail)
    3.Email values (sender_mail)
    4.DB values
    5.Extern DB-table entries

    Also der Datenbankeintrag erfolgt mit Null im Feld "date_of_birth".

    Weißt Du, wie ich sehen kann, was die userfunc zurückbringt?

    Ich hoffe, Du hast nochmal eine gute Idee.

    Herzliche Grüße

    Thomas
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Verständnisfrage zu powermail und userfunc, Datum als Timestamp-2.email_values_recip.jpg   Verständnisfrage zu powermail und userfunc, Datum als Timestamp-3.email_values_sender.jpg  

    Verständnisfrage zu powermail und userfunc, Datum als Timestamp-4.db_values.jpg  
    Angehängte Grafiken Angehängte Grafiken   

  6. #6
    Forum Stammgast
    Registriert seit
    20.08.2009
    Alter
    31
    Beiträge
    167
    Hallo Thomas,

    includeLibs.powermailTimestamp = fileadmin/templ_VA/php-sql/user_powermailTimestamp.php

    muss ins Setup und nicht in die Constants.


    Dann ist da noch ein Fehler der mir auch erst jetzt auffällt. Das benutzen der Userfunc muss dann so aussehen:


    date_of_birth= USER
    date_of_birth.userFunc = user_powermailTimestamp->preflight
    date_of_birth.userFunc.field = uid23
    date_of_birth.userFunc.formuid = 224


    Field und formuid sind die Parameter die an die Userfunc übergeben werden. Das Auslesen der Sessiondaten erfolgt dann in der Funktion selber.


    Gruß, Björn

  7. #7
    tko
    tko ist offline
    Forum Newbie
    Registriert seit
    17.04.2009
    Beiträge
    11
    Hi Björn,

    ich habe Deinen Vorschlag von heute gleich umgesetzt und bekomme aber leider das gleiche Ergebnis, also dass nur eine Null eingetragen wird.

    Weißt Du, wie man sehen kann, was die userfunc zurückgibt?

    Gruß Thomas

  8. #8
    Forum Stammgast
    Registriert seit
    20.08.2009
    Alter
    31
    Beiträge
    167
    Hi,

    im Prinzip kannst du in der userfunc vor dem return auch noch ein echo oder var_dump setzen und den Rückgabewert ausgeben um auch zu sehen ob die Funktion überhaupt aufgerufen wird.


    Gruß Björn

  9. #9
    tko
    tko ist offline
    Forum Newbie
    Registriert seit
    17.04.2009
    Beiträge
    11

    gelöst

    Hallo Björn,

    also nochmals recht herzlichen Dank für Deine Mühe. Deine Tipps haben mir sehr weitergeholfen.

    Mit dem update auf powermail V 1.6.3 benötigt man übrigens keine userFunc mehr, da das Datumfeld der Session automatisch im timesstamp-Format zur Verfügung gestellt wird.

    Gruss Thomas

 

 

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Facebook Kommentare

Ähnliche Themen

  1. Datum wird als Timestamp ausgegeben
    Von danila im Forum TYPO3 4.x Fragen und Probleme
    Antworten: 6
    Letzter Beitrag: 09.02.2011, 09:45
  2. Mailformplus: Datum speichern (Timestamp)
    Von maxhb im Forum Alle anderen Extensions
    Antworten: 0
    Letzter Beitrag: 02.09.2010, 12:44
  3. Powermail + date2cal Datum formatieren
    Von Homicide im Forum powermail
    Antworten: 0
    Letzter Beitrag: 26.03.2010, 15:41
  4. Antworten: 0
    Letzter Beitrag: 08.06.2009, 20:11
  5. Warum ist Listenansicht von Datum nur timestamp?
    Von gkahr im Forum Extension modifizieren oder neu erstellen
    Antworten: 3
    Letzter Beitrag: 21.02.2008, 09:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237