MyBB.de Forum

Normale Version: Task erstellen meldet bei Aktivierung PHP-Fehler
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe ein eine Task erstellt, welcher bei Aktivierung des PlugIns eingetragen und bei Deaktivierung wieder ausgetragen werden soll.

Grundlage waren diese und diese Anleitung.

1. Im PlugIn ist die Aktivierung wie folgt definiert:
PHP-Code:
function pluginname_activate()
{
  
global $db;

require_once 
MYBB_ROOT '/inc/functions_task.php';

$new_task = [
    
'title'            => '$lang->sprachvariable_task_title',
    
'description'    => '$lang->sprachvariable_task_title_desc',
    
'file'            => 'dateiname',
    
'minute'        => '0',
    
'hour'            => '0',
    
'day'            => '*',
    
'month'            => '*',
    
'weekday'        => '*',
    
'nextrun'        => TIME_NOW,
    
'enabled'        => '1',
    
'logging'        => '1',
];

$new_task['nextrun'] = fetch_next_run($new_task);

$db->insert_query('tasks'$new_task);
$cache->update_tasks();

Will ich das ACP aufrufen erhalte ich eine PHP-Fehlermeldung zur Zeile:

PHP-Code:
$cache->update_tasks(); 
kommentiere ich die Zeile mit "//" aus, kann ich das ACP aufrufen und das PlugIn aktivieren. Es wird der Task in der Aufgabenplanung eingetragen (siehe jedoch Punkt 2) und wird auch manuell/zeitgesteuert korrekt ausgeführt. Testweise die Bezeichnung "new_task" auf z.B. "name_tast" bringt keinen Erfolg.

2. Die Sprachvariablen werden jedoch nicht ausgegeben, egal welche der nachstehenden fünf Varianten ich versuche:

Variante 1.
PHP-Code:
'title'        => '$lang->sprachvariable_task_title',
'description'    => '$lang->sprachvariable_task_title_desc'
Variante 2.
PHP-Code:
'title'        => '($lang->sprachvariable_task_title)',
'description'    => '($lang->sprachvariable_task_title_desc)'
Variante 3.
PHP-Code:
'title'        => '{$lang->sprachvariable_task_title}',
'description'    => '{$lang->sprachvariable_task_title_desc}'
Variante 4.
PHP-Code:
'title'            => $db->escape_string($lang->sprachvariable_task_title),
'description'    => $db->escape_string($lang->sprachvariable_task_title_desc), 
Variante 5.
PHP-Code:
'title'            => $db->escape_string{$lang->sprachvariable_task_title},
'description'    => $db->escape_string{$lang->sprachvariable_task_title_desc}, 
Die Sprachvariablen sind selbstverständlich in ./inc/languages/sprache/admin/sprachvariable.php definiert.
Was kann da noch inkorrekt sein?

3. Im PlugIn ist die Deaktivierung wie folgt definiert:
PHP-Code:
function pluginname_deactivate() {
$db->delete_query('tasks''file=\'export_user_language\'');
$cache->update_tasks();    
rebuild_settings();

Hier muss gleichfalls die "cache"-Zeile auskommentiert werden. Beim Deaktivieren wird eine PHP-Fehlermeldung zu
PHP-Code:
$db->delete_query('tasks''file=\'dateiname\''); 
angezeigt.

Die Anleitung sind doch eigentlich selbsterklärend und daher einfach zu handhaben, aber irgendwo muss ich noch etwas berücksichtigen oder anpassen  ...aber was? Vermute mal, das nicht korrekt/vollständig in die Datenbank geschrieben wird. *grübel

Vielelicht ist jemand so nett die Ursache und Abhilfe zu den drei vorgenannten Punkten der bei mir entstandenen Fehlerverhalten mitteilen zu können.

Vorab besten Dank für Hilfestellungen.
Du müsstest die Variablen $lang und $cache vor der Verwendung globalisieren.
Wenn sie im Plugin nicht vorher schon globalisiert wurden, sind sie in der Funktion activate() noch gar nicht verfügbar. Wink
Das war die Lösung (man lernt ständig dazu). Besten Dank für die Hilfestellung.