Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Neue Task für die Aufgabenverwaltung in Verbindung mit Plugin
#1
Hallo!

Ich setze mich gerade zum ersten Mal mit der Aufgabenverwaltung auseinander und versuche, eine eigene Task zu erstellen, die in Verbindung mit einem Plugin aktiviert werden soll. Leider finde ich dazu keine genaueren Anleitungen oder Erklärungen und auch das Durchsehen der Standard-Tasks hat mich nicht weiter gebracht, weshalb ich hoffe, dass mir hier jemand helfen kann.

In Tabelle X werden User-IDs eingetragen. Die Task soll nun zur eingestellten Zeit checken (Ich denke, einmal täglich würde reichen, da in einem Foren-RPG nicht ständig User gelöscht werden?), ob es diese User-IDs noch gibt und wenn nicht, die Zeile updaten.

Und natürlich sollte diese Task beim Installieren des Plugins direkt mit aktiviert werden.

Ich bin auf jeden Fall dankbar für jeden Input, da ich in dieser Angelegenheit wirklich keinerlei Ahnung habe.

Liebe Grüsse!
Zitieren
#2
Einen Task kannst Du so mit einem Plugin anlegen.

PHP-Code:
$db->insert_query('tasks', array(
        
'title' => 'Name des Tasks',
        
'description' => 'Beschreibung des Tasks',
        
'file' => 'deinetaskdatei',
        
'minute' => '*',
        
'hour' => '*',
        
'day' => '1',
        
'month' => '*',
        
'weekday' => '*',
        
'nextrun' => TIME_NOW,
        
'lastrun' => 0,
        
'enabled' => 1,
        
'logging' => 1,
        
'locked' => 0,
    ));
    
$cache->update_tasks(); 

Die löschung des Tasks im Plugin.

PHP-Code:
$db->delete_query('tasks''file=\'deinetaskdatei\'');
$cache->update_tasks(); 


Die Task-Datei selbst. ZB

PHP-Code:
function task_deinnamederdatei($task)
{
    global 
$db$mybb;
    
    if(.................)
    {
        if(...................)
        {
            ...................
        }
        
        
add_task_log($task"Task erfolgreich ausgeführt.");
    }


Ich hoffe das hilft dir ein wenig weiter.
Mit freundlichen Grüßen

MrBrechreiz
Zitieren
#3
Vielen Dank! Zumindest wird bisher die Task bei der Installation angelegt und auch wieder entfernt bei der Deinstallation Smile

Die Task an sich bereitet mir noch jedoch noch etwas Kopfzerbrechen..
So sieht die erste Abfrage bisher aus, in der ich herausfiltern will, welche t.uid nicht mehr in u.uid existieren.
Wie kriege ich die Task nun dazu, die Zeilen in der Tabelle "tablename" zu löschen, wenn dies der Fall ist?

PHP-Code:
$query $db->query("
    SELECT t.feld
    FROM "
.TABLE_PREFIX."tablename t
    WHERE NOT IN (
        SELECT u.uid
        FROM "
.TABLE_PREFIX."users u
    )
"
); 
Zitieren
#4
Schau mal ob das zu deinem Erfolg bringt.

PHP-Code:
$query $db->query("SELECT t.feld, u.uid FROM ".TABLE_PREFIX."tablename t 
    LEFT JOIN "
.TABLE_PREFIX."users u ON (t.uid=u.uid)
    WHERE t.feld = 'die_uid_die_gesucht_werden_soll'"
);
if(
$db->num_rows($query) == 1)
{
    .............

Mit freundlichen Grüßen

MrBrechreiz
Zitieren
#5
Hat es, mir fehlte nur die Möglichkeit, nicht nach einer bestimmten User-ID zu suchen in der WHERE-Bedingung, sondern eben nach allen User-IDs, die es nicht mehr gibt. So ist es mir gelungen:

PHP-Code:
$query $db->query("
    SELECT *
    FROM "
.TABLE_PREFIX."tablename t
    LEFT JOIN "
.TABLE_PREFIX."users u ON (t.uid = u.uid)
    WHERE u.uid IS NULL
"
); 

Danke für die Unterstützung, jetzt läuft die Task, wie sie soll Smile
Zitieren
#6
Kein Problem, gern geschehen.
Mit freundlichen Grüßen

MrBrechreiz
Zitieren