Author Topic: $wb->print_error()  (Read 3821 times)

Ralf Hertsch

  • Guest
$wb->print_error()
« on: October 01, 2007, 05:32:39 AM »
Hallo allerseits,

ein Aufruf der Funktion $wb->print_error() mit per default gesetztem $auto_footer=true erzeugt die Fehlermeldung:

Fatal error: Call to undefined method: frontend->print_footer() in /homepages/11/d37833930/htdocs/wb1/framework/class.wb.php on line 233

Natürlich kann ich $auto_footer auf false setzen, aber dann bekommt der User nur noch eine halbe Seite angezeigt.

Bug oder Feature?  :-D

Gruss
Ralf

doc

  • Guest
Re: $wb->print_error()
« Reply #1 on: October 01, 2007, 04:52:22 PM »
Hallo,

von wo rufst Du die Funktion auf? Übergibst Du einen String für die Fehlermeldung (erstes Argument ist nicht Optional)?

Gruss Christian

Ralf Hertsch

  • Guest
Re: $wb->print_error()
« Reply #2 on: October 01, 2007, 05:20:56 PM »
Hallo Christian,

der Aufruf erfolgt über die view.php und sieht so aus:

Code: [Select]
$wb->print_error($mod_bookshop['error']['authentication_failed'],WB_URL.'/pages/index.php?page_id='.$page_id);
$mod_bookshop['error']['authentication_fail ed'] liegt in der DE.php und wird auch korrekt angezeigt, der Link stimmt auch. Setze ich den Parameter $auto_footer=false, also:

Code: [Select]
$wb->print_error($mod_bookshop['error']['authentication_failed'],WB_URL.'/pages/index.php?page_id='.$page_id,false);
bekomme ich keine Fehlermeldung, aber auch nur eine halbe Seite...

Ich könnte natürlich eine eigene Fehlermeldung erzeugen, aber da WB eine entsprechende Funktion bereitstellt nutze ich sie auch. Im Backend funktioniert das über $admin übrigens einwandfrei.

Den Aufruf von undefinierten Funktionen durch $wb hatte ich Thread anmeldescript und success info http://forum.WebsiteBaker.org/index.php/topic,7203.0.html schon mal bekrittelt, aber damals gar keine Antwort erhalten. Ich vermute das hängt zusammen.

Gruss
Ralf

doc

  • Guest
Re: $wb->print_error()
« Reply #3 on: October 01, 2007, 06:42:22 PM »
Hallo Ralf,

habe mir das ganze mal näher angeschaut.

Die derzeitige Implementierung der Methode print_error() sieht nur die Verwendung im Backend vor. Sprich in modify.php würde das ganze funktionieren, nicht aber in view.php.

Die Methode $wb->print_error(..) ruft die in class.admin.php definierte Methode print_footer() auf, wenn $auto_footer = true ist.

Das Problem. Bei der Anzeige im Frontend wird die Klasse $wb durch $frontend (class.frontend.php) erweitert, bei der Anzeige im Backend durch $admin (class.admin.php). Sprich in view.php steht die Methode print_footer() nicht zur Verfügung, daher der Fehler. Die Methode print_footer() zeigt auch nur die Fusszeile des Backends an, ist also für den Frontend Bereich nicht geeignet.

Du musst also eine eigene Funktion schreiben, um eine Fehlermeldung im Frontend (view.php) eines Moduls ausgeben zu können.

Die Beantwortung der Frage ob Bug oder Feature überlasse ich Dir.

Gruss Christian
« Last Edit: October 01, 2007, 08:46:23 PM by doc »

Ralf Hertsch

  • Guest
Re: $wb->print_error()
« Reply #4 on: October 01, 2007, 09:18:27 PM »
Hallo Christian,

Quote
Das Problem. Bei der Anzeige im Frontend wird die Klasse $wb durch $frontend (class.frontend.php) erweitert, bei der Anzeige im Backend durch $admin (class.admin.php). Sprich in view.php steht die Methode print_footer() nicht zur Verfügung, daher der Fehler. Die Methode print_footer() zeigt auch nur die Fusszeile des Backends an, ist also für den Frontend Bereich nicht geeignet.

Dann erkläre mir doch bitte mal, warum in /account/signup2.php reichlich Gebrauch von $wb->print_error() und $wb->print_success() gemacht wird, z.B. in Zeile 52:

Code: [Select]
if(strlen($username) < 3) {
    $wb->print_error($MESSAGE['USERS']['USERNAME_TOO_SHORT'], $js_back, false);

...und sag mir bitte nicht, dass die Benutzerregistrieru ng eine Backend Anwendung ist - siehe Thread anmeldescript und success info... :-D

Also, ich tippe jetzt eher auf Feature... 8-)

Nix für Ungut,
Viele Grüße
Ralf


doc

  • Guest
Re: $wb->print_error()
« Reply #5 on: October 02, 2007, 06:01:04 AM »
Hallo Ralf,

um die print_error Methode auch im Frontend (z.B. view.php) nutzen zu können, müsste diese nach folgendem Schema umgebaut werden:

Code: [Select]
wenn method_exists($wb,'print_footer')
 dann
  // Aufruf über Backend
   if($auto_footer == true) {
     $this->print_footer();
   }
   exit();
 sonst
 // nix (für Anzeige im Frontend)
fertig

Bezüglich Deiner anderen Frage. Schau mal hier nach. Dort findest Du einen groben Überblick über die Klassen und abgeleiteten Klassen. Die Klasse login ist von der Klasse admin abgeleitet.

Wie Du sicherlich weisst, ist OO nicht gerade einer der Stärken von PHP4 und war es war wohl auch noch keine bei Ryan vor 2 Jahren. Ich würde keine Methode in der allgemeinen Klasse $wb definieren, wenn diese wiederum eine Methode aus $admin aufruft. Aber so ist das nunmal.

Wenn Du das ganze in Tiefe diskutieren willst, empfehle ich Dir mal ne PM an Ryan zu schicken  :-)

Gruss Christian
« Last Edit: October 02, 2007, 06:45:58 AM by doc »

Ralf Hertsch

  • Guest
Re: $wb->print_error()
« Reply #6 on: October 02, 2007, 07:33:12 AM »
Hallo Christian,

ich habe im Moment leider nicht die Zeit mich intensiv mit den WB Sources auseinander zusetzen und die OOP Struktur in die Tiefe zu diskutieren und dabei auch das eine oder andere Stück Code beizutragen - vielleicht später mal.

Ich kann im Moment ganz gut ohne print_error und print_success im Frontend leben.

Was mir allerdings missfällt sind die verstümmelten Seiten die von signup2.php durch den Gebrauch von print_success und print_error erzeugt werden. Da dieser Fehler quasi als Türschild an WB hängt, fällt er letztlich jedem Nutzer von WB auf, der sich registriert - und das ist nicht gut!

Es wäre also schön, wenn die Login Prozedur möglichst rasch überarbeitet wird.

Gruß
Ralf

doc

  • Guest
Re: $wb->print_error()
« Reply #7 on: October 02, 2007, 11:34:17 AM »
Hallo Ralf,

trage doch bitte das Problem in die Bugtrackerliste ein. Den Link findest Du auf der Hilfe Seite. Dann könnte das Problem mit einem der nächsten Releases behoben werden.

Gruss Christian

Ralf Hertsch

  • Guest
Re: $wb->print_error()
« Reply #8 on: October 02, 2007, 12:02:25 PM »
Hallo Christian,

ok - erledigt.

Gruß
Ralf

doc

  • Guest
Re: $wb->print_error()
« Reply #9 on: October 02, 2007, 04:35:58 PM »
Hallo Ralf,

danke für Deinen Eintrag in der Bugtrackerliste.

Gruss Christian

Offline klok_pm

  • Posts: 28
Re: $wb->print_error()
« Reply #10 on: July 27, 2009, 10:22:31 PM »
Hello - first of all - i dont speak german ;-) but i was not able to find anything related in the english forum. 

I noticed that this bug was reported but it was closed again:
http://project.websitebaker2.org/ticket/471
What was the reason for closing this issue? As far as i can see this was not resolved

Offline kweitzel

  • WebsiteBaker Org e.V.
  • **
  • Posts: 6983
  • Gender: Male
Re: $wb->print_error()
« Reply #11 on: July 28, 2009, 07:55:29 AM »
Yuo are talking here about an unsupported WB Version ... If you have a similar Issue with WB Verion 2.7 or above please open a new ticket.

Offline klok_pm

  • Posts: 28
Re: $wb->print_error()
« Reply #12 on: July 28, 2009, 08:50:41 AM »
no no.. this is about wb 2.8 rc1. anyways a new ticket just got opened. ticket 758