Zum Inhalt springen

chc_forum--> post-problem

Erstellt am 4. August 2006 · 8 Antworten · letzte Antwort am 31. Oktober 2006

Tags: Frage

zapp-it ·

Hi!

Ich habe ein Problem mit meinem chc-forum. Ich habe die aktuellste Version des Forums und typo3_v4.0 (WIN XP PRO).
Zur Registrierung benutze ich die Extension sr_feuserregistration und zum Login die New Login Box.

Bei mir können sich benutzer einloggen, sie können ihr Profil bearbeiten, auf Forummitglieder beschränkte Inhalte einsehen, alles eben,

AUßER dem wichtigsten:

Im Post-Fenster wird weder der NAME noch die EMAIL automatisch angezeigt, sodass nach dem Posten immer (logischer Weise) eine Fehlermeldung erscheint:

"Ihre Nachricht enthielt Fehler:
Name
Email"

Ich weiß nicht mehr weiter #angry# , an der PID für die User liegt es definitiv nicht, sonst könnte man sich ja auch nicht einloggen.

Beim Klicken auf "Benutzer" im Forum (Frontend, nicht Bacckend) wird der Name samt der Emailaddresse aber vollständig ausgegeben.

An der Variable, der beim Posten den Namen voreintragen soll, habe ich auch nichts geändert....

kann mir jemand weiterhelfen???

vielen dank schonmal!

(dieses Problem wurde schonmal angeschnitten, aber nicht gelöst)

zapp-it ·

so, chc_forum neuinstalliert, und es hilft immer noch nichts...

das gibts doch nicht!!! was ist denn das?

wieso wird denn bei der Userlist die Variable {name} bzw. {username} und eben {email} mit einem Wert belegt und beim Posten nicht?

was ist denn da los??? #angry#

grüße!!

Rasta01 ·

hab das gleiche problem, hab im forum hier auch nochmal mindestens einen thread dazu gefunden - ohne lösungen, leider...

bitte? liegt das an falschen fe_user registration einstellungen?

zapp-it ·

hi Rasta01!

ich habe das Problem gelöst! 8-)
wir haben ein gaaaanz blöden Fehler gemacht!
geh einfach nochmal deine Konfiguration der sr_feuserregistration durch!
wichtig ist, dass der Ausgangspunkt beim code CREATE, EDIT und CONFIRM (im jeweiligen Datensatz einzustellen) bei dem Userordner liegen, den du laut Anleitung anlegen solltest!
Der Datensatz (einzustellen auf der jeweiligen Seite der Registrierung, nicht im Datensatz selbst) der Registrierungsseite, auf der die NewLoginBox liegt, muss ebenfalls bei diesem Ordner liegen! Zum Schluss ist es natürlich WICHTIG, dass per Typo-Constants die sr_feuserregistation richtig eingestellt wird. Dem Forum muss schließlich nurnoch gesagt werden, welche PID der Ordner mit den FE-Usern hat (einzustellen im Datensatz auf der Forumsseite).
Dann einfach über's FE einen Benutzer anmelden und mal Posten! Jetzt muss es funktionieren.

Das Problem war ganz einfach das, dass das Forum nicht auf die FE-Benutzer zugreifen konnte, die sr_feuserregisration sowie die NewLoginBox schon.

Blöder Fehler!

Viel spaß beim verbessern!

grüße!

Rasta01 ·

super. hat hier ebenfalls geklappt. und es ar noch nicht mal meine schuld (der sich erst seit fünf tagen mit typo3 auseinandersetzt) sondern die meines php-und-alles-andere-programmierexperten *fg*

viel spaß weiterhin!

bertot ·

Hm,

vielleicht bin ich ja zu doof, aber ich habe mit dieser Anleitung das Problem nicht lösen können.

Diegleichen Symptome, allerdings keine zusätzlichen AddOns installiert (also weder NewLoginBox noch sr_feuserregistration).

Die über das Backend erzeugten Frontend-Nutzer kann ich im CHC-Forum Userlist sehen, leider können diese nicht posten ... gleicher Fehler, wie oben schon beschrieben. Username und EMail bleiben einfach leer ... #angry#

Habe dem Forum die PID des FE_User SysFolders mitgeteilt (per FlexForm Parameter) und die angemeldeten Nutzer haben auch korrekten Zugriff auf die Foren/Konferenzen.

Gibt es noch irgendeinen Trick, der (noch) nicht hier beschrieben wurde ?

bertot ·

Ich glaub ich hab des Rätsels Problem gefunden. Nach einiger Suche und diversen Tauchgängen im SourceCode von Typo3 (PHP Kenntnissen und sauberer Programmierung sei Dank!).

Ich versuche das hier mal darzulegen und wünsche mir von euch ein bisschen Feedback, ob ich da nicht doch etwas falsch gemacht habe.

Für Benutzer ohne PHP Kenntnisse:
Zusätzlich zu der oben erwähnten nötigen Konfiguration des Forum-Plugins (FE_User-PageId) muss man sicherstellen, daß alle Benutzer des Forum-Plugins
auch die Zugriffsberechtigung auf die Typo3-Seite mit der ID 1 besitzen. Sollte man dies nicht sicherstellen können kommt man um die u.a. Lösung nicht herrum.

Für Benutzer die sich in Typo3 und Extension auskennen:

In der CHC-Forum Extension findet man folgende Klassenkonstruktor als Repräsentation eines Nutzers:

class.tx_chcforum_user.php

                * @return void
                */
                function tx_chcforum_user ($cObj) {

                        $this->cObj = $cObj;
                        $this->conf = $this->cObj->conf;

                        // added for nested frontend groups support
                        $this->groupData = $GLOBALS['TSFE']->fe_user->groupData;

                        // bring in the fconf.
                        $this->fconf = $this->cObj->fconf;
                        #if (intval(phpversion()) < 5) unset($this->cObj->fconf);                        

                        $this->internal['results_at_a_time'] = 1000;
                        $this->uid = $GLOBALS['TSFE']->fe_user->user['uid'];
                        $this->groups = $GLOBALS['TSFE']->fe_user->user['usergroup'];
                        if ($this->uid) {
                                $row_array = $this->pi_getRecord('fe_users', $this->uid, 1);
                                if(is_array($row_array)) {
                                        foreach ($row_array as $attr => $value) {
                                                $this->$attr = $value;
                                        }
                                }

                        }

Hier wird in Zeile 19 alle Daten des Nutzers in die CHC-Nutzerklasse übertragen, dies wird mit der getRecord-Methode aus einer abgeleiteten Basisklasse erledigt.
Diese Methode ruft später in der class.t3lib_page.php die methode checkRecord auf, die ich im folgenden teilweise gepostet habe.

class.t3lib_page.php

        /**
         * Checks if a record exists and is accessible.
         * The row is returned if everything's OK.
         *
         * @param       string          The table name to search
         * @param       integer         The uid to look up in $table
         * @param       boolean         If checkPage is set, it's also required that the page on which the record resides is accessible
         * @return      mixed           Returns array (the record) if OK, otherwise blank/0 (zero)
         */
        function checkRecord($table,$uid,$checkPage=0)  {
                global $TCA;
                $uid=intval($uid);
                if (is_array($TCA[$table])) {
                        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $table, 'uid='.intval($uid).$this->enableFields($table));
                        if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                                $this->versionOL($table,$row);
                                $GLOBALS['TYPO3_DB']->sql_free_result($res);

                                if (is_array($row))     {
                                        if ($checkPage) {
                                                $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', 'pages', 'uid='.intval($row['pid']).$this->enableFields('pages'));
                                                if ($GLOBALS['TYPO3_DB']->sql_num_rows($res))   {
                                                        return $row;
                                                } else {
                                                        return 0;
                                                }
                                        } else {
                                                return $row;
                                        }
                                }
                        }

Der Kommentar der Methode sagt zum dritten (optionalen) Parameter, dass dieser eine Seiten-ID angibt und man somit nur ein Ergebniss bekommt, wenn die $uid auch Zugriff auf diese SeitenID besitzt. Ich habe nun in der CHC-Forum Erweiterung den Aufruf (im obigen Quellcodeauszug in Zeile 19):

                                $row_array = $this->pi_getRecord('fe_users', $this->uid, 1);

durch

                                $row_array = $this->pi_getRecord('fe_users', $this->uid, 0);

ersetzt und seitdem funktioniert das posten angemeldeter Nutzer genau, wie es sein soll.

Fazit
Ich bin der Meinung, dass dieser Umstand nicht gewollt und somit ein Bug im Plugin ist. Oder hab' ich irgendwo was übersehen ?

treff ·

Also bei mir klappt das ganze auch dann nicht, wenn ich über Web>Zugriff allen Benutzern Zugriffsrechte auf die UID=1 gebe. Oder muss ich den FE-Usern die Rechte gesondert/woanders erteilen?

Den Eingriff in die PHP-Dateien muss ich noch versuchen.

Kennt jemand noch andere Tricks? Ich habe jetzt tausend Mal überprüft, ob die ganze Konfiguration der Plugins stimmt und bin jetzt langsam am verzweifeln...

Danke!

Markus

treff ·

Ich habe jetzt endlich Schreibzugriff auf meine php-Dateien, habe diese Änderung durchgeführt und endlich funktioniert auch das Posten angemeldeter Benutzer!! #giggle#

Ich würde also sagen, es handelt sich hierbei um einen Bug!

Vielen Dank!

Markus