MyBB.de Forum
PN nach Hook "moderation_do_move" senden liefert weisse Seite. - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: PN nach Hook "moderation_do_move" senden liefert weisse Seite. (/thread-9819.html)



PN nach Hook "moderation_do_move" senden liefert weisse Seite. - CoolRunner - 28.06.2008

Einer meiner User wünschte sich ein Plugin das beim verschieben von Themen eine PN an dan Autor über diese Aktion gesendet wird.

Das Problem dabei ist das der PN Handler irgendwie den nachfolgenden Code nach dem Hook abwürgt.
D.h. man bekommt eine weisse Seite angezeigt anstatt zum neuen Thread weitergeleitet zu werden.

Der Hook ist in moderation.php, Zeile 552, Name moderation_do_move

Die Frage ist also fehlt dem Plugin noch etwas / ist was falsch?
An sich wird die PN allerdings gesendet.

Evtl. fällt Euch noch was dazu ein Smile

Dateiname: moveinform.php
PHP-Code:
<?php
// Plugin "Move Inform"
// (c) 2008 Flo www.profi-webmaster.com

if(!defined("IN_MYBB")) {
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("[u]moderation_do_move[/u]""moveinform");

function 
moveinform_info() {
    return array(
        
"name"            => "Informiert den Themenersteller beim verschieben seines Themas",
        
"description"    => "Threadersteller bekommt eine PN wenn Thema veschoben wird",
        
"website"        => "http://www.profi-webmaster.com",
        
"author"        => "Flo",
        
"authorsite"    => "http://www.profi-webmaster.com",
        
"version"        => "1.0",
    );
}

function 
moveinform_activate() {
}

function 
moveinform_deactivate() {
}

function 
moveinform() {
// Globals
global $db$tid$moveto;

// Init PM Handler
require_once MYBB_ROOT."inc/datahandlers/pm.php";
$pmhandler = new PMDataHandler();

// Get Author uid
$query1 $db->simple_select(TABLE_PREFIX."threads""uid,subject""tid='$tid'");
$author $db->fetch_array($query1);

$query2 $db->simple_select(TABLE_PREFIX."forums""name""fid='$moveto'");
$binf $db->fetch_array($query2);



// Send PM
        
$pm = array(
            
"subject" => 'Thread verschoben',
            
"message" => 'Dein Thread [b]'.$author['subject'].'[/b]
            wurde von einem Moderator oder Administrator in das Forum [b]'
.$binf['name'].'[/b] verschoben.',
            
"icon" => 1,
            
"fromid" => 2,
            
"toid" => $author['uid'],
            
"do" => '',
            
"pmid" => ''
        
);
    
        
$pm['options'] = array(
            
"signature" => 'no',
            
"savecopy" => 'no'
        
);
    
$pmhandler->admin_override 1;
        
$pmhandler->set_data($pm);
        
        if(
$pmhandler->validate_pm())
        {
            
$pmhandler->insert_pm();
        }

}
?>



RE: PN nach Hook "moderation_do_move" senden liefert weisse Seite. - Michael - 29.06.2008

Beim Überfliegen ist mir nichts aufgefallen, was das auslösen könnte. Es gab aber mal so ein Plugin für MyBB 1.1.x, vielleicht kannst du das als Basis nehmen: http://mods.mybboard.net/view/automatic-pm-move-rename-delete

Alternativ solltest du mal in die Errorlogs des Servers schauen. Evtl. findest du da weitere Anhaltspunkte.


RE: PN nach Hook "moderation_do_move" senden liefert weisse Seite. - CoolRunner - 29.06.2008

Der PM Handler sendet anscheinend irgendwas, was das nachfolgende Script abbricht.
Die Lösung war das senden von PNs ohne den PM Handler, also über ein normales Query zu lösen.

Hier nochmal die überarbeitete, funktionierende Version:
PHP-Code:
<?php
// Plugin "Move Inform"
// (c) 2008 Flo www.profi-webmaster.com

if(!defined("IN_MYBB")) {
    die(
"Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("moderation_do_move""moveinform");

function 
moveinform_info() {
    return array(
        
"name"            => "Inform Thread Author if his Thread was moved",
        
"description"    => "Thread Author get a PM if a Thread was moved",
        
"website"        => "http://www.profi-webmaster.com",
        
"author"        => "Flo",
        
"authorsite"    => "http://www.profi-webmaster.com",
        
"version"        => "1.0",
    );
}

function 
moveinform_activate() {
}

function 
moveinform_deactivate() {
}

function 
moveinform() {
// Globals
global $mybb$db$tid$moveto;


// Get Author uid
$query1 $db->simple_select(TABLE_PREFIX."threads""uid,subject""tid='$tid'");
$author $db->fetch_array($query1);

$query2 $db->simple_select(TABLE_PREFIX."forums""name""fid='$moveto'");
$binf $db->fetch_array($query2);



    
$pmdata = array(
        
'pmid'        => 'NULL',
        
'uid'        => intval($author['uid']),
        
'toid'        => intval($author['uid']),
        
'fromid'    => 2,
        
'folder'    => 1,
        
'subject'    => $db->escape_string('Thread verschoben'),
        
'icon'        => 2,
        
'message'    => $db->escape_string('Dein Thread [url='.$mybb->settings['bburl'].'/showthread.php?tid='.$tid.']'.$author['subject'].'[/url]
            wurde von einem Moderator oder Administrator in das Forum [url='
.$mybb->settings['bburl'].'/forumdisplay.php?fid='.$moveto.']'.$binf['name'].'[/url] verschoben.'), 
        
'dateline'    => time(),
        
'status'    => 0,
        
'includesig'=> 'no',
        
'smilieoff'    => 'no',
        
'receipt'    => 'no',
        
'readtime'    => 0
    
);
    
$db->insert_query(TABLE_PREFIX."privatemessages"$pmdata);
    
}
?>

Klappt 1A Smile
Danke Michael, der Link brachte mich auf die entscheidende Idee die PN per Query zu versenden.
Als nächstes schreib ich noch was dazu das die Mailadresse des Users ausliest sowie ob er PNs wünscht und baue das entsprechend noch dazu. (Also das er noch ne Mail bekommt)