Sie können ein eigenes [[Scoring]]-Modul erstellen, um einen neuen [[Scoring]]-Anbieter an sourceDESK anzubinden.
== Grundaufbau ==
Ein Scoring-Modul bekommt ein eigenes Verzeichnis unter ''modules/scoring''.In diesem Verzeichnis muss sich eine PHP-Datei mit dem gleichen Namen wie das Verzeichnis und der Endung ''.php'' befinden.In dieser PHP-Datei wird eine Klasse definiert, die von der Klasse ''Scoring'' erbt. == Attribute ==Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens ''protected'' sein dürfen: * ''$short'' gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen* ''$name'' gibt einen Anzeigenamen für das Modul an* ''$version'' definiert die Version des Moduls
== Methoden ==
Folgende Methoden können definiert werden: * ''getSettings()'' gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Objekt (stdClass) ''$this->info'' zugegriffen werden* ''getMethods()'' definiert die für dieses Scoring-Modul verfügbaren Prüfroutinen und die dazugehörigen Methoden, die bei Durchführung aufgerufen werden - sie erhalten ein Objekt ''instanceof User'' als Argument == Beispiel-Code ==<source lang="php"><?php class AbuseIpDbScoring extends Scoring { protected $short = "abuseipdb"; protected $name = "AbuseIPDB"; protected $version = "1.0"; public function getSettings() { return Array( "apikey" => Array("type" => "password", "name" => "API-Schlüssel"), ); } public function getMethods() { return Array( "check" => "AbuseIPDB-Prüfung", ); } public function check($u) { global $db, $CFG; // Select last IP address $sql = $db->query("SELECT * FROM " .$CFG['DB']['PREFIX'] ."client_log WHERE user = " . $u->get()['ID'] . " AND ip != 'Admin' ORDER BY ID DESC, time DESC LIMIT 1"); if ($sql->num_rows > 0 && is_object($info = $sql->fetch_object()) && filter_var($info->ip, FILTER_VALIDATE_IP)) { $c = file_get_contents("https://www.abuseipdb.com/check/" . urlencode($info->ip) . "/json?key=" . urlencode($this->options->apikey)); if ($c != '[]') { return Array("AbuseIPDB-Eintrag vorhanden", "F", "<a href='https://www.abuseipdb.com/check/" . urlencode($info->ip) . "' target='_blank'>Details aufrufen</a>"); } else { return Array("Kein Eintrag bei AbuseIPDB", "D", ""); } } }}</source>