Seite 1 von 1

Undefined array key "TOO_FEW_CHARS"

Verfasst: 12.09.2025 17:05
von chris1278
Hallo, ich habe eine Extension geschrieben oder sagen wir so bin dabei, aber es gibt eine Fehlermeldung, mit der ich nicht klarkomme.

Es geht um das Senden einer Email. Meine Function die ich dafür geschrieben habe sieht so aus:

Code: Alles auswählen

public function send_mail($value)
{	
	//Hier laden wir den Messenger falls nicht vorhanden
	if (!class_exists('messenger'))
	{
		include($this->root_path . 'includes/functions_messenger.' . $this->php_ext);
	}
	//Hier wählen wir aus welche sprache das E-Mail Template ist. 
	$userlang	= !empty($this->user->data['user_lang']) ? $this->user->data['user_lang'] : $this->config['default_lang'];
	/** @var \messenger $messenger */
	$messenger = new \messenger(false);
	
	//Hier laden wir das template
	$messenger->template('@eumelchen_wichteln/wichteln', $userlang);
	
	//Hier setzten wir die Empfänger mail rein
	$messenger->to($value['w_email']);
	
	//Hier prüfen wir ob im Adminbereich dafür eine CC-Mail hinterlegt ist und fügen die falls vorhanden ist hinzu
	if (!empty($this->config['wichteln_cc_mail']))
	{
		$messenger->cc($this->config['wichteln_cc_mail']);
	}
	
	//Den Anti Abuse gedöns
	$messenger->anti_abuse_headers($this->config, $this->user);
	
	//Hier setzten wir die Variablen die in dem Mailtemplate verwendet werden
	$messenger->assign_vars([
		'W_SITENAME'		=> generate_board_url(),
		'W_DAY'				=> $value['w_day'],
		'W_DATE'			=> $value['w_date'],
		'W_TIME'			=> $value['w_time'],
		'W_EMAIL'			=> $value['w_email'],
		'W_TEL'				=> $value['w_tel'],
		'W_USERNAME'		=> $value['w_username'],
		'W_ADRESS'			=> str_replace(['<t>', '</t>', '<br/>'], '', $value['w_adress']),
		'W_NOTIZ'			=> str_replace(['<t>', '</t>', '<br/>'], '', $value['w_notiz']),
	]);

	$send	= $messenger->send(NOTIFY_EMAIL);

	return $send;
}
Wenn ich das Feld Notizen leer lasse bekomme ich im Header der seite imemr das hier:

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file [ROOT]/includes/message_parser.php on line 1171: Undefined array key "TOO_FEW_CHARS"
Setze ich aber nur ein zeichen ein in ds feld kommt diese meldung nicht.

Ich habe schon versucht dann ein minus oder sonst was einzusetzen wenn das eingabefeld leer bleibt aber ohne erfolg.


Falls jemand ne idee hat.

Re: Undefined array key "TOO_FEW_CHARS"

Verfasst: 12.09.2025 18:06
von IMC
Lade in deiner Extension die Sprachdatei posting. Ich vermute, dass die Warnmeldung im Header danach nicht mehr angezeigt wird.

Re: Undefined array key "TOO_FEW_CHARS"

Verfasst: 12.09.2025 20:14
von chris1278
Nein, das hat leider auch nichts gebracht.


Also ich hab mal in der message_parser nachgeschaut.

Dieser Codeblock wird wohl geladen:

Code: Alles auswählen

if ($mode === 'post')
{
	if (!$message_length || $message_length < (int) $config['min_post_chars'])
	{
		$this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : ($user->lang('CHARS_POST_CONTAINS', $message_length) . '<br />' . $user->lang('TOO_FEW_CHARS_LIMIT', (int) $config['min_post_chars']));
		return (!$update_this_message) ? $return_message : $this->warn_msg;
	}
}
und dies ist dann die zeile 1171

Code: Alles auswählen

$this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : ($user->lang('CHARS_POST_CONTAINS', $message_length) . '<br />' . $user->lang('TOO_FEW_CHARS_LIMIT', (int) $config['min_post_chars']));


Re: Undefined array key "TOO_FEW_CHARS"

Verfasst: 12.09.2025 21:00
von IMC
So is es. Wenn die Message eine Länge von 0 hast wird der Variable $this->warn_msg[] der Text $user->lang['TOO_FEW_CHARS'] zugewiesen.

Da die Meldung "Undefined array key 'TOO_FEW_CHARS' " lautet bin ich davon ausgegangen das die Sprachdatei nicht geladen ist.
Eine andere Erklärung habe ich zur Zeit nicht.

Als nächstet würde ich testen ob eine Ausgabe an der Stelle generiert werden kann.

Code: Alles auswählen

var_dump($user->lang['TOO_FEW_CHARS']);
Die Ausgabe sollte dann so aussehen.

Code: Alles auswählen

string(38) "Die eingegebene Nachricht ist zu kurz." 

Edit:
Die Sprachdatei muss hier auf die alte Art und Weise geladen werden, da der Textabruf mit der User-Klasse erfolgt.

Code: Alles auswählen

$this->user->add_lang('posting');

Re: Undefined array key "TOO_FEW_CHARS"

Verfasst: 12.09.2025 21:32
von chris1278
Ok. Ja hattest recht. Ich hab die posting geladen dann hats hingehauen. HAbs nur an der Falschen stelle geladen. Jetzt ist fehlermeldung weg. m