Willkommen, Gast
Angemeldet bleiben:

THEMA:

raiseError 500 - Problem beim Kompo-Anpassen 16 Jul 2012 14:25 #34868

Hallo,
mir fehlt wohl etwas der Überblick bzgl. J!2.5.x-Neuerungen und - sicher auch etwas php :
Ich wollte eine 1.5.x-Komponente anpassen und hänge an einem J!-Fehler 500.
Kann da jemand helfen?

die Codestelle ist hier:
$authordetails = JTable::getInstance('user');					
$authordetails->load(JRequest::getVar( 'created_by' ));	
if( !$authordetails->load( JRequest::getVar( 'created_by' ) ) ) { // error here 
JError::raiseError( 500, $authordetails->getError());
}
und ein
echo "<pre>"; print_r($authordetails); die;
ergibt
JTableUser Object(
    [groups] => 
    [_tbl:protected] => #__users
    [_tbl_key:protected] => id
    [_db:protected] => JDatabaseMySQLi Object
        (
            [name] => mysqli
            [nameQuote:protected] => `
            [nullDate:protected] => 0000-00-00 00:00:00
            [dbMinimum:protected] => 5.0.4
            [_database:JDatabase:private] => joomla_fer
            [connection:protected] => mysqli Object
                (
                    [affected_rows] => 14
                    [client_info] => 5.1.41
                    [client_version] => 50141
                    [connect_errno] => 0
                    [connect_error] => 
                    [errno] => 0
                    [error] => 
                    [field_count] => 9
                    [host_info] => localhost via TCP/IP
                    [info] => 
                    [insert_id] => 0
                    [server_info] => 5.1.41
                    [server_version] => 50141
                    [sqlstate] => 00000
                    [protocol_version] => 10
                    [thread_id] => 381
                    [warning_count] => 0
                )

            [count:protected] => 0
            [cursor:protected] => mysqli_result Object

Warning:  print_r() [function.print-r]: Couldn't fetch mysqli_result in joomla\plugins\system\dynotificationmanager\dynotificationmanager.php on line 1062
Warning:  print_r() [function.print-r]: Couldn't fetch mysqli_result in E:\wwwon\docroot\x_oga_j\plugins\system\dynotificationmanager\dynotificationmanager.php on line 1062
Warning:  print_r() [function.print-r]: Property access is not allowed yet in joomla\plugins\system\dynotificationmanager\dynotificationmanager.php on line 1062
Warning:  print_r() [function.print-r]: Couldn't fetch mysqli_result in joomla\plugins\system\dynotificationmanager\dynotificationmanager.php on line 1062
Warning:  print_r() [function.print-r]: Property access is not allowed yet in joomla\plugins\system\dynotificationmanager\dynotificationmanager.php on line 1062

                (
                    [current_field] => 
                    [field_count] => 
                    [lengths] => 
                    [num_rows] => 
                    [type] => 
                )

            [debug:protected] => 
            [limit:protected] => 0
            [log:protected] => Array
                (                )

            [offset:protected] => 0
            [sql:protected] => SHOW FULL COLUMNS FROM `#__users`
            [tablePrefix:protected] => fer_
            [utf:protected] => 1
            [errorNum:protected] => 0
            [errorMsg:protected] => 
            [hasQuoted:protected] => 
            [quoted:protected] => Array
                (                )
        )
    [_trackAssets:protected] => 
    [_rules:protected] => 
    [_locked:protected] => 
    [_errors:protected] => Array
        (
        )
    [id] => 0
    [name] => 
    [username] => 
    [email] => 
    [password] => 
    [usertype] => 
    [block] => 
    [sendEmail] => 0
    [registerDate] => 
    [lastvisitDate] => 
    [activation] => 
    [params] => 
    [lastResetTime] => 
    [resetCount] => 
)
Danke für Tipps,
Gruß, Jack

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: raiseError 500 - Problem beim Kompo-Anpassen 16 Jul 2012 22:40 #34869

Hi Jack

Anscheinend wird da kein vernünftiges Argument der Funktion load() übergeben, da die Benutzerdetails in deinem print_r leer sind. Da findet gar keine Prüfung statt, à la:
$authorId = JRequest::getInt('created_by');
if(!$authorId) {
	JError::raiseError( 500, 'No valid id given');
	// oder auch
	die('User-Id ungültig: '.var_dump($authorId));
	// oder mit der J-Dump Extension
	dump($authorId, 'Author-Id');
}
Einen Debugger und Haltepunkte wäre auch was. Da kannst du den Code Schritt für Schritt (oder Breakpoints) abarbeiten lassen, und siehst jederzeit welche Variablen an welcher Stelle gesetzt sind, und welchen Inhalt sie (an genau dieser Stelle) haben.

Prüfe mal, was du mit JRequest::getInt('created_by'); erhälst.

Desweiteren lädts du auch mit der Methode '$authordetails->load()' denselben Author gleich zweimal (da die JTableUser-Klasse weder im Singleton-Pattern noch sonstwie einen Caching-Machanismus hat). Einen Tick besser wäre es, den Return in einer Variablen zu speichern, damit sparst du dir eine Datenbank-Abfrage:
$authordetails = JTable::getInstance('user');					
$isLoaded = $authordetails->load(JRequest::getVar( 'created_by' ));	
if( $isLoaded ){
.........
Allerdings ist es im Falle von registrierten Usern überhaupt nicht nötig, die JTableUser-Klasse direkt zu instanzieren, dafür gibt es eine Methode in der JFactory (inkl. 'Caching' durch Singelton) mit nur einer Zeile, überigens genau gleich wie schon in der J-1.5:
$author = JFactory::getUser($authorId);

Ich hoffe das half. :)

Prost, Roger
Tu das was du kannst, mit dem was du hast, da wo du bist

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: raiseError 500 - Problem beim Kompo-Anpassen 17 Jul 2012 14:56 #34870

Hallo Roger,
Danke!

zunächst: es geht nicht um eine Komponenten, sondern um ein System-PlugIn!
Da habe ich zu lax geposted.

Ich dachte, mit ein wenig Tipparbeit könnte man es anpassen,
aber irgendwie komme ich vom 100sten ins 1000ste.

Ein Problem ist, das diese JRequest-Sache nicht Gefragtes auswirft.

Das hier funktioniert:
JRequest::get('post'); /* bzw. */ var_dump($_POST);
ergibt in J!2.5.x
Array ( [jform] => Array ( [title] => TestBesitzer [articletext] =>text, text, text
[catid] => 8 [created_by_alias] => [state] => 1 [featured] => 1 [publish_up] => 2012-07-11 22:05:33 [publish_down] => 0000-00-00 00:00:00 [access] => 1 [language] => * [metadesc] => [metakey] => ) [task] => article.save [return] => aHR0cDovLdeda] => 1 )
aber Indexe wie 'created_by', 'id' sind nicht dabei - im Gegensatz zur J!1.5.x-Version: hier gibt es kein [jform]-array aus, sondern ein array(21) mit mehr Werten, inkl. der fehlenden.

Weiß jemand, was sich da in J!2.5.x geändert hat?
Wie/wo komme ich am geschicktesten an die 'created_by', 'id', etc. -Index in den PlugIn-Request? Oder müssen dazu neue $querys eingebaut werden?

btw.: Auch mit "article.save" bin ich schon aufgelaufen. Ich glaube in 1.5.x hieß das nur save?

Gruß, Jack

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: raiseError 500 - Problem beim Kompo-Anpassen 18 Jul 2012 14:16 #34871

Anhand der spärlichen Informationen vermute ich mal, das du versuchst ein Plugin vom Typ 'System' für die 2.5 lauffähig zu machen, und das dieses Plugin beim Speichern von Content irgendwas mit dem Autor, rsp. dessen User-Id machen soll, und versucht wird, die relevanten Daten aus den POST-Array eines Formulars auszulesen. Ist das korrekt soweit?

Dann wäre aber ein Plugin vom Typ 'Content' vermutlich geeigneter, das hat unter anderem Events mit Namen 'onContentBeforeSave' und 'onContentAfterSave' die beide den kompletten Artikel als Funktionsargument bekommen, ganz ohne JRequest::....... Und wird bei einem Artikel das Feld 'Autor' leer gelassen, so wird beim Speichern in der Table-Klasse automatisch die ID des aktuellen Users zugewiesen, sodass im Event 'onAfterContentSave' garantiert eine Autor-Id mit dabei ist.

Bei der 2.5 hat sich einiges geändert, stimmt. Aber 'altes' wurde grösstenteils auch belassen. Code einer Extension (Template, Modul, Komponente, Plugin...) die '1.5'-konform programmiert sind, kann in der 2.5 bis zu ca. 90% oder mehr unverändert übernommen werden. Es sind nur wenige Dinge die angepasst werden müssen. Sogar 1.0er Extensions laufen meist mit ein paar Änderungen in einer 2.5. Was aber aus diversen Gründen nicht wirklich zu empfehlen ist. Und neue Features wie z.B. ACL fehlen dann natürlich auch, wenn man die nicht nachträglich dazuschreibt.

Vesuche doch mal mit dem Entwickler des Plugins Kontakt aufzunehmen. Eventuell ist ja eine 2.5er Version schon in der Pipeline. Oder er passt dir das für ein paar Kreuzer an, wenn du dieses Plugin unbedingt brauchst.

R.
Tu das was du kannst, mit dem was du hast, da wo du bist

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: raiseError 500 - Problem beim Kompo-Anpassen 18 Jul 2012 15:39 #34872

ich versuche das für 2.5 anzupassen:
www.dysolutions.co.uk/software/joomla/dynotificationmanager
Das PI gibt Notes raus bei Content- und Weblink-Bearbeitungen, also nicht nur für Content; das Ding nennt sich ja "Manager" - vielleicht ist es deswegen dem System zugeordnet.

Die XML "geht ja ... ". Was ich Anfangs "übersah", waren die neuen 2.5er Kategorien (section gibts nat. nicht mehr ...). Dann haben sich einige Feldnamen geändert. Komplex & viel Tipperei. An einigen Stellen habe ich immer noch Schwierigkeiten, an die Werte zu kommen und oft ist mir noch unklar, weshalb hier welche Werte überhaupt nötig sind. Das legt grundsätzlich Fragen zur Architektur nah und stellt das einfach stumpf auf Lauffähigkeit durchboxen in Frage.
Jetzte renne ich grad in die ACL, die ich auch nicht (so) eingeplant habe ....

Ich habe bei dysolutions mal vorsichtig angefragt, ob sie planen, das auf 2.5 upzudaten.
- und mach mir "Architekturgedanken" ...


Alternativ bastele ich noch an NotifyArticleSubmit in Richtung 2.5:
extensions.joomla.org/extensions/authori...lanned-content/14742
das mach allerdings nur Artikel (die obsoleten Notificationfeatures hat J!2.5. ja entwicklerfreundlicherweise ausgelassen - technisch: wieso gibts eine Info bei einem neuen Content, aber nicht wenn einer gespeichert wird?), daher habe ich den Schwerpunkt erstmal auf obiges gelegt.

Danke & Gruß,
Jack

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: raiseError 500 - Problem beim Kompo-Anpassen 18 Jul 2012 22:05 #34873

Da du dir Gedanken zur Architektur machst, ist anzunehmen, das du Ahnung von der Materie hast. Und scheinbar geht es darum, bei neuen und/oder geänderten Content- und Weblinkeinträgen benachrichtigt zu werden. Falls dem so ist:

Schreib dir doch diese 20-30 Zeilen Code selbst, und gut ist. Einfach im geeigneten Event im Systemplugin bei einem Speichervorgang alle POST und GET Variablen anzeigen lassen, diese analysieren (option, view, task, id...) und falls nötig entsprechende Mails versenden.
(Autoren-Id u.ä. kann du ja im Plugin auch nachträglich/zusätzlich mit einer DB-Query holen, falls im POST nicht vorhanden).

Infos zu
Plugins allgemein: docs.joomla.org/Category:Plugin_Development
System-Events: docs.joomla.org/Plugin/Events/System
Tu das was du kannst, mit dem was du hast, da wo du bist

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Aw: raiseError 500 - Problem beim Kompo-Anpassen 30 Jul 2012 16:00 #34896

es sind ein paar mehr Zeilen geworden:
joomla.ch/forum/142-plugins/34895-neues-...chrichtigungen#34895
Danke & Gruß, Jack

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1