Hallo,
eines vorweg habe mit Extension-Programmierung gerade erst angefangen.
Folgendes: Ich habe mit einer kleinen Extension meine sr_feuserregister um ein Radiobuttonfeld erweitert.
Die Hooks in der FE-User-Registration habe ich auch gefunden und entsprechend erweitert. Für Create/Delete-Szenario funktioniert alles bestens. Der Updatevorgang ist etwas komplexer.
Alte vs. neue Emailadresse
Ich möchte ein hidden-Feld in dem Formular unterbringen, welches die Emailadresse beim Betreten der Profilseite speichert, damit ich bei einer Änderung derselben durch den Benutzer, die alte Adresse noch beim Verteiler (Radiobuttons) abmelden kann.
class.tx_srfeuserregister_pi1.php
Ich habe im Template gesehen, das ja schon hidden-Fields eingefügt werden. Also habe ich versucht an der class.tx_srfeuserregister_pi1.php Änderungen durchzuführen (habe natürlich ein Backup), leider bisher ohne nennenswerten Erfolg.
Ich habe es geschafft gehabt auf der reinen Profilseite das Feld auch mit dem richtigen Wert zu belegen (siehe Skript). Leider ist der Wert auf der folgenden Preview-Seite entweder mit der neuen Adresse oder gar nicht ausgefüllt. Im Hook wollte ich aber dieses Feld nutzen.
function addHiddenFieldsMarkers($markerArray, $dataArr = array()) {
if ($this->conf[$this->cmdKey.'.']['preview'] && !$this->previewLabel) {
$markerArray['###HIDDENFIELDS###'] .= chr(10) . '<input type="hidden" name="'.$this-" />prefixId.'[preview]" value="1" />';
// meins
$markerArray['###HIDDENFIELDS###'] .= chr(10) . '<input type="hidden" name="'.$this-" />prefixId.'[oemail]" value="'. htmlspecialchars($dataArr['email']).'" />';
if ($this->theTable == 'fe_users' && $this->cmdKey == 'edit' && $this->conf[$this->cmdKey.'.']['useEmailAsUsername']) {
$markerArray['###HIDDENFIELDS###'] .= chr(10) . '<input type="hidden" name="FE['.$this-" />theTable.'][username]" value="'. htmlspecialchars($dataArr['username']).'" />';
$markerArray['###HIDDENFIELDS###'] .= chr(10) . '<input type="hidden" name="FE['.$this-" />theTable.'][email]" value="'. htmlspecialchars($dataArr['email']).'" />';
}
// das geht hier noch weiter...
Naja nun habe ich leider keine Idee mehr, was ich noch machen kann. Dieses spezielle Problem ist logischerweise auch nicht Dokumentiert. Wie kann ich denn so ein Feld setzen und über das erste Absenden retten bzw. nachher in meinem Hook zugänglich machen?
So wollte ich darauf zugreifen.
Hook
function registrationProcess_afterSaveEdit($recordArray, &$invokingObj) {
$sql = $GLOBALS['TYPO3_DB']->exec_SELECTquery('email','fe_users','uid = '.$recordArray['uid']);
$rows = array();
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($sql)) {
$rows[] = $row;
}
echo "neu: ".$rows[0]['email'];
echo " alt: ".$recordArray['oemail'];
}
Grüße
Mario