[3.3] EOL-Zeichen für text in submit_post

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
mbld
Mitglied
Beiträge: 30
Registriert: 18.10.2016 16:59

[3.3] EOL-Zeichen für text in submit_post

Beitrag von mbld »

Hallo,

ich versuche verzweifelt mit der Funktion submit_post einen mehrzeiligen Post programmatisch zu erstellen.
Bevor ich meinen Text an das data-array von submit_post() übergebe lasse ich ihn durch generate_text_for_storage "laufen".

Also ungefähr so:

Code: Alles auswählen

$my_text    = 'First line<br/>Next line';
generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
$data = array( 
   ...
    'message'       => $my_text,
    'message_md5'   => md5($my_text),
    ...
);
submit_post('reply', $my_subject, '', POST_NORMAL, $poll, $data);

Ich habe dabei versucht ein Zeilenende per \n oder \r\n oder <br\> einzufügen. In allen Fällen erscheint das eingefügte Zeichen schlicht im Text und wird nicht als EOL interpretiert.

Was muss ich also einfügen, um einen Zeileumbruch zu erhalten.

Vielen Dank
mbld
Mitglied
Beiträge: 30
Registriert: 18.10.2016 16:59

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von mbld »

Es scheint, dass es mit <br> und ohne "generate_text_for_storage" funktionieren würde.

generate_text_for_storage habe ich aus diesem Beispiel entnommen, und weiß nicht genau, wozu man es braucht:

https://wiki.phpbb.com/Using_phpBB3%27s ... post.28.29
Benutzeravatar
Scanialady
Supporter
Supporter
Beiträge: 1717
Registriert: 23.02.2009 16:29
Wohnort: Velbert (NRW)
Kontaktdaten:

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von Scanialady »

Ich verstehe nichts von Programmierung, aber ich kann Google bedienen ;-)
Es scheint, dass diese Anweisungen von 2013 sind - damit 8 Jahre alt, und zweifellos überholt. Irgendetwas schwirrt mir auch im Kopf herum bezüglich Problemen mit generate_text_for_storage - aber ich kann grad den Finger nicht drauflegen.

Ich fand ein Script für automatische Beiträge von einem spanischen phpBB-Nutzer, welches erst zwei Jahre alt ist - vielleicht hilft dir das weiter.

Ansonsten gibts noch ein weiteres Script aus einem Blog und Hinweise bei Stack Overflow
Die Bosheit trinkt die Hälfte ihres eigenen Giftes (Lucius Annaeus Seneca)
-
Wenn von etwas kein Backup existiert, dann ist es nicht wichtig.
Verschoben von Support-Forum nach Coding & Technik am 04.01.2022 21:15 durch Kirk

Benutzeravatar
3Di
Mitglied
Beiträge: 106
Registriert: 12.03.2010 14:33
Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
Kontaktdaten:

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von 3Di »

Versuchen Sie es so

Code: Alles auswählen

$my_text = 'First line
Next line';
Oder so

Code: Alles auswählen

$my_text = 'First line' . PHP_EOL . 'Next line';
:ugeek: phpBB Studio 🎁 Spende - Ich bin für die Ukraine! 🇺🇦

Private Nachricht nur für bezahlte Arbeiten.
mbld
Mitglied
Beiträge: 30
Registriert: 18.10.2016 16:59

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von mbld »

@Scanialady: Danke für die Mühe. Aber alle genannten neueren Beispiele sind praktisch nur eine Kopie von dem "alten" Beispiel-Code den ich nutze. Jedenfalls wird in allen Fällen auch ein generate_text_for_storage vorgeschaltet.

@3Di: Hilft leider auch nicht. generate_text_for_storage entfernt dann einfach diese Art von EOL-Zeichen. Ich kann natürlich einfach generate_text_for_storage weglassen. Aber ich dachte dass es wohl schon einen Grund hat, dass alle Beispiele den Text erst mal damit aufbereiten. Wahrscheinlich um den Text so aufzubereiten, dass er später korrekt angezeigt wird. (Vermutlich BB-Code, Smilies u.ä.).
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17395
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von Dr.Death »

Was passiert, wenn du zwei EOL hinzufügst? "Überlebt" dann einer ?
69bruno
Mitglied
Beiträge: 444
Registriert: 05.06.2020 08:21

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von 69bruno »

Ich bin ja kein Profi,
aber wenn ich mir die Funktion ansehe, die Du aufrufst (generate_text_for_storage()):

Code: Alles auswählen

676  function generate_text_for_storage(&$text, &$uid, &$bitfield, &$flags, $allow_bbcode = false, $allow_urls = false, $allow_smilies = false, $allow_img_bbcode = true, $allow_flash_bbcode = true, $allow_quote_bbcode = true, $allow_url_bbcode = true, $mode = 'post')
 677  {
 678      global $phpbb_root_path, $phpEx, $phpbb_dispatcher;
 679  
 680      /**
 681      * Use this event to modify the text before it is prepared for storage
 682      *
 683      * @event core.modify_text_for_storage_before
 684      * @var string    text            The text to parse
 685      * @var string    uid                The BBCode UID
 686      * @var string    bitfield        The BBCode Bitfield
 687      * @var int        flags            The BBCode Flags
 688      * @var bool        allow_bbcode    Whether or not to parse BBCode
 689      * @var bool        allow_urls        Whether or not to parse URLs
 690      * @var bool        allow_smilies    Whether or not to parse Smilies
 691      * @var bool        allow_img_bbcode    Whether or not to parse the img] BBCode
 692      * @var bool        allow_flash_bbcode    Whether or not to parse the flash] BBCode
 693      * @var bool        allow_quote_bbcode    Whether or not to parse the quote] BBCode
 694      * @var bool        allow_url_bbcode    Whether or not to parse the url] BBCode
 695      * @var string    mode                Mode to parse text as, e.g. post or sig
 696      * @since 3.1.0-a1
 697      * @changed 3.2.0-a1 Added mode
 698      */
 699      $vars = array(
 700          'text',
 701          'uid',
 702          'bitfield',
 703          'flags',
 704          'allow_bbcode',
 705          'allow_urls',
 706          'allow_smilies',
 707          'allow_img_bbcode',
 708          'allow_flash_bbcode',
 709          'allow_quote_bbcode',
 710          'allow_url_bbcode',
 711          'mode',
 712      );
 713      extract($phpbb_dispatcher->trigger_event('core.modify_text_for_storage_before', compact($vars)));
 714  
 715      $uid = $bitfield = '';
 716      $flags = (($allow_bbcode) ? OPTION_FLAG_BBCODE : 0) + (($allow_smilies) ? OPTION_FLAG_SMILIES : 0) + (($allow_urls) ? OPTION_FLAG_LINKS : 0);
 717  
 718      if (!class_exists('parse_message'))
 719      {
 720          include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
 721      }
 722  
 723      $message_parser = new parse_message($text);
 724      $message_parser->parse($allow_bbcode, $allow_urls, $allow_smilies, $allow_img_bbcode, $allow_flash_bbcode, $allow_quote_bbcode, $allow_url_bbcode, true, $mode);
 725  
 726      $text = $message_parser->message;
 727      $uid = $message_parser->bbcode_uid;
 728  
 729      // If the bbcode_bitfield is empty, there is no need for the uid to be stored.
 730      if (!$message_parser->bbcode_bitfield)
 731      {
 732          $uid = '';
 733      }
 734  
 735      $bitfield = $message_parser->bbcode_bitfield;
 736  
 737      /**
 738      * Use this event to modify the text after it is prepared for storage
 739      *
 740      * @event core.modify_text_for_storage_after
 741      * @var string    text            The text to parse
 742      * @var string    uid                The BBCode UID
 743      * @var string    bitfield        The BBCode Bitfield
 744      * @var int        flags            The BBCode Flags
 745      * @var string    message_parser    The message_parser object
 746      * @since 3.1.0-a1
 747      * @changed 3.1.11-RC1            Added message_parser to vars
 748      */
 749      $vars = array('text', 'uid', 'bitfield', 'flags', 'message_parser');
 750      extract($phpbb_dispatcher->trigger_event('core.modify_text_for_storage_after', compact($vars)));
 751  
 752      return $message_parser->warn_msg;
 753  }
dann dienst sie dazu
Use this event to modify the text before it is prepared for storage
den Text zu modifizieren, bevor er geparsed wird.
Neben des Löschens der uid, wenn bitfield leer ist
If the bbcode_bitfield is empty, there is no need for the uid to be stored.
gibt die Funktion
return $message_parser->warn_msg
Warnmeldungen aus, wenn beim parsen Fehler auftreten.

Wenn Du eine programmtechnisch erzeugte Mail versenden willst, die du ja sicher testen wirst und diese nicht ständig geändert wird,..... wozu diese Funktion überhaupt verwenden ? es klingt so, als wenn Du reinen Text versenden willst, der vlt. einen Zeilenumbruch enthält. Muss der dann so explizit getestet werden ?

Bin gespannt, ob ich jetzt lerne, dass man das so macht..... :cookie: :geek:
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
mbld
Mitglied
Beiträge: 30
Registriert: 18.10.2016 16:59

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von mbld »

Sorry, ich muss mich korrigieren:
Das mit PHP_EOL funktioniert, und wird von "generate_text_for_storage" in ein <br/> umgewandelt.
(Das hatte ich dann in meiner debug-Ausgabe falsch interpretiert).

Also erst mal vielen Dank an 3Di.

Was ich ganz grob machen will, ist, das Antworten auf eine Notifikations-Email erlauben.
D.h. der User antwortet auf eine Notifikations-Email, die Forums-ID und Themen-ID enthält, und markiert dabei das Ende seiner Antwort mit einem vereinbarten Schlüsselwort.
Die Email landet per Reply-To in einem speziellen Postfach, das ich per Cronjob beobachte.
Den Inhalt der Email würde ich dann nehmen und als Post an ein vorhandenes Thema anhängen.

Insofern weiß ich nicht allzuviel über den Inhalt des Posts.
Aber ich möchte schon, dass Zeilenumbrüche erhalten bleiben.

Ich bin aber noch ganz am Anfang mit meinen Experimenten....
Benutzeravatar
3Di
Mitglied
Beiträge: 106
Registriert: 12.03.2010 14:33
Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
Kontaktdaten:

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von 3Di »

Ich denke, dass Sie sich von dieser Erweiterung inspirieren lassen können.
https://www.phpbb.com/community/viewtopic.php?t=2525596 ?
:ugeek: phpBB Studio 🎁 Spende - Ich bin für die Ukraine! 🇺🇦

Private Nachricht nur für bezahlte Arbeiten.
69bruno
Mitglied
Beiträge: 444
Registriert: 05.06.2020 08:21

Re: [3.3] EOL-Zeichen für text in submit_post

Beitrag von 69bruno »

mbld hat geschrieben: 05.01.2022 13:58 Was ich ganz grob machen will, ist, das Antworten auf eine Notifikations-Email erlauben.
D.h. der User antwortet auf eine Notifikations-Email, die Forums-ID und Themen-ID enthält, und markiert dabei das Ende seiner Antwort mit einem vereinbarten Schlüsselwort.
Die Email landet per Reply-To in einem speziellen Postfach, das ich per Cronjob beobachte.
Den Inhalt der Email würde ich dann nehmen und als Post an ein vorhandenes Thema anhängen.
Das klingt interessant, aber wie willst Du verhindern, dass der Inhalt der Notifikations-Email wieder mit zurückkommt ?
Je nachdem wie der User sein Mailprogramm konfiguriert hat, ist der Ausgangstext ggfls. vor oder nach seiner Antwort wieder mit dabei. Zudem kommen ggfls. unterschiedliche Mailheader mit, die Du sicher auch nicht in deinem Forum haben möchtest.

Obwohl.... wenn man ein spezielles Tag für Antwortbeginn und -ende vereinbart, könnte das gehen wenn du eine Funktion schreibst, die die Mail auf den Text in den Tags trimmt.....klingt immer interessanter. Am Forum teilnehmen, ohne sich im Forum anmelden zu müssen.....
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
Antworten

Zurück zu „Coding & Technik“