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
Task - Automatische Bewertung
#1
Vorab, ich dachte in dieses Forum passt es am besten, falls nicht, bitte einfach verschieben.

Hallo,

ich möchte gerne eine Task für Mybb erstellen,
die alle XY Minuten die letzten XY User checkt,
ob diese <2 Likes haben, wenn ja schauen ob ein Avatar hochgeladen wurden,
falls wieder ja, Bewertung hinzufügen +2.

Leider scheitert es schon daran, dass ich die js Funktion submitReputation nicht aufgerufen bekomme,
um überhaupt automatisiert eine Bewertung abzugeben.
Das hier ist mein "Anfang":
PHP-Code:
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/general.js?ver=1800"></script>
<?
php
echo "test";
MyBB.submitReputation(6010);
?>

Leider bekomme ich die Meldung, dass die Funktion submitReputation nicht bekannt sei,
obwohl doch oben die js Datei eingebunden wurde!?
Hab  es auch schon mit kompletter Adresse http://.... versucht, da hat sich nichts geändert.
Zitieren
#2
Du kannst in PHP keine Javascript-Funktionen aufrufen. Javascript wird nur vom Browser interpretiert.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Besteht dann überhaupt die Möglichkeit, die Bewertungen zu automatisieren?
Aus der reputation.php finde ich auch nich raus, wass ich aufrufen müsste,
um eine Bewertung zu erstellen...
Zitieren
#4
Natürlich kannst du die Bewertung direkt in die Datenbank einfügen. Schau dir am besten einmal die reputation.php an.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Ok, geht also doch nicht ohne Datenbank.
Dachte es würde auch durch eine url mit mehreren post Daten gehen.

Werde mich dann mal ran machen, bei Fragen meld ich mich hier wieder.
Zitieren
#6
So, das mit den automatischen Bewertungen habe ich mitlerweile hinbekommen in 4 verschiedenen Ausführungen.

Jetzt möchte ich allerdings noch, dass das Skript automatisch einen Beitrag postet,
Da komm ich allerdings nicht so wirklich klar, weil ich in "newreply.php" nicht so wirklich was finde,
was mir so eindeutig erscheint wie bei den Bewertungen.

Kann mir hier jemand einen Tipp dazu geben, welche Funktion oder Datenbankquery ich verwenden muss um einen Post hinzuzufügen?
Zitieren
#7
Dank eines plugins, konnte ich mir das ganz ein bischen besser erklären.
Hab mir jetzt folgende Funktion gebaut:
PHP-Code:
    function sendPost($message,$forumid,$threadid,$uid,$db){
        $userarray=get_user($uid);
        $new_post = array(
            "tid" => $threadid//1468
            "fid" => $forumid//134
            "subject" => "",
            "icon" => 0,
            "uid" => $uid,
            "username" => $userarray[username],
            "dateline" => TIME_NOW,
            "message" => $db->escape_string($message),
            "ipaddress" => "",
            "includesig" => 1,
            "smilieoff" => 0,
            "visible" => 1
        
);
        $db->insert_query("posts"$new_post);
    
Zitieren
#8
Die Beiträge werden so allerdings nicht mehr zusammengeführt, wenn mehrere in einer gewissen Zeit erstellt werden.

Wie bekomme ich das noch hin?
Jaja^^

Erst fertig suchen und ausprobieren bevor man fragt Big Grin

Habs jetzt hin bekommen, natürlich sollte man den Posthandler verwenden und nicht einfach in die DB schreiben.
PHP-Code:
    function sendPost($message,$forumid,$threadid,$uid,$db){
        
$posthandler = new PostDataHandler("insert");
        
$userarray=get_user($uid);
        
$new_post = array(
            
"tid" => $threadid//1468
            
"fid" => $forumid//134
            
"subject" => "",
            
"icon" => 0,
            
"uid" => $uid,
            
"username" => $userarray[username],
            
"dateline" => TIME_NOW,
            
"message" => $db->escape_string($message),
            
"ipaddress" => ""
        
);
        
$new_post['options']=array(
            
"signature" => 1,
            
"subscriptionmethod" => 0,
            
"disablesmilies" => 0
        
);
        
$posthandler->set_data($new_post);
        
$valid_post $posthandler->validate_post();
        
$posthandler->insert_post();
    } 
Zitieren
#9
Wenn du stattdessen den Datahandler verwendest, kümmert sich dieser um alles: https://crossreference.mybb.de/nav.html?....html#l825
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren