Kategorien
Bearbeiten von „FreewarWiki:Bot/Skripts/Waffenliste.php“
Zur Navigation springen
Zur Suche springen
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 34: | Zeile 34: | ||
private function getAPI($query) { | private function getAPI($query) { | ||
$c = curl_init(' | $c = curl_init('http://' . $this->server . '/api.php?' . $query . '&format=json'); | ||
curl_setopt($c, CURLOPT_USERAGENT, 'BotFrameWorkApi -- Benutzer:' . $this->nick); | curl_setopt($c, CURLOPT_USERAGENT, 'BotFrameWorkApi -- Benutzer:' . $this->nick); | ||
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); | curl_setopt($c, CURLOPT_RETURNTRANSFER, true); | ||
Zeile 48: | Zeile 48: | ||
private function getContent($title) { | private function getContent($title) { | ||
$this->status('Hole Artikel: ' . $title); | $this->status('Hole Artikel: ' . htmlentities($title)); | ||
$result = $this->getAPI('action=query&prop=info|revisions&titles=' . urlencode($title) . '&rvprop=timestamp|content&intoken=edit'); | $result = $this->getAPI('action=query&prop=info|revisions&titles=' . urlencode($title) . '&rvprop=timestamp|content&intoken=edit'); | ||
$pages = $result['pages']; | $pages = $result['pages']; | ||
Zeile 64: | Zeile 64: | ||
$pages = $this->getAPI('action=query&list=categorymembers&cmtitle=Category:' . urlencode($cat) . '&cmlimit=500'); | $pages = $this->getAPI('action=query&list=categorymembers&cmtitle=Category:' . urlencode($cat) . '&cmlimit=500'); | ||
foreach ($pages['categorymembers'] as $page) { | foreach($pages['categorymembers'] as $page) { | ||
$content = $this->getContent($page['title']); | $content = $this->getContent($page['title']); | ||
if ($this->isWaffe($content)) { | if ($this->isWaffe($content)) { | ||
$waffenArray[] = $this->createWaffe($content, $page['title']); | $waffenArray[] = $this->createWaffe($content, ($page['title'])); | ||
} | } | ||
else { | else { | ||
echo " | echo "Artikel beschreibt keine Waffe!"; | ||
} | } | ||
} | } | ||
// Sortierung des Arrays nach der | // Sortierung des Arrays nach der Staerke der Waffen-Objekte | ||
usort($waffenArray, array("Waffe", "cmpWaffe")); | usort($waffenArray, array("Waffe", "cmpWaffe")); | ||
// | // Zaehlen der Waffen | ||
$count = count($waffenArray); | $count = count($waffenArray); | ||
// Aufbau der Liste | // Aufbau der Liste | ||
$out = "<noinclude> | $out = "<noinclude></noinclude><!--Diese Liste wird von Zeit zu Zeit automatisch aus den Daten aus den einzelnen $cat-Artikeln erstellt (zuletzt am '''" . date("d.m.Y H:i:s") . "'''). Das Script um die Liste zu akualisieren findet ihr hier //TODO: Scriptlink einfuegen // "; | ||
$out .= "\n\n"; | $out .= "\n\n"; | ||
$out .= "Anzahl Waffen: " . $count . " | $out .= "Anzahl Waffen: " . $count . "\n-->{{#vardefine:" . $cat . "Anzahl|" . $count . "}}<!--\n\n"; | ||
// Durchlaufen des Waffen-Arrays und Hinzufuegen zur Liste | // Durchlaufen des Waffen-Arrays und Hinzufuegen zur Liste | ||
foreach($waffenArray as $currentWaffe) { | foreach($waffenArray as $currentWaffe) { | ||
$out .= "\n-->{{{{{Vorlage}}}|Name=" . $currentWaffe->name . "}}<!--" ; | $out .= "\n-->{{{{{Vorlage}}}|Name=" . ($currentWaffe->name) . "}}<!--" ; | ||
} | } | ||
return $out . " | return $out . "\n-->"; | ||
} | } | ||
/* | /* Ueberpruefung ob der Artikel eine Waffe ist */ | ||
private function isWaffe($content) { | private function isWaffe($content) { | ||
// | // Ueberpruefung ob der Artikel dem Layout fuer eine Angriffswaffe entspricht | ||
if (preg_match('~Item/Layout|Typ=awaffe~', $content)) { | if ( preg_match('~Item/Layout|Typ=awaffe~', $content) ) { | ||
// | // Ueberpruefung ob der Artikel eine saisonale Waffe beschreibt | ||
if (!preg_match('/Saisonale Items/', $content)) { | if ( !(preg_match('/Saisonale Items/', $content)) ) { | ||
return true; | return true; | ||
} | } | ||
Zeile 105: | Zeile 105: | ||
/* Erstellen eines neuen Waffen-Objektes */ | /* Erstellen eines neuen Waffen-Objektes */ | ||
private function createWaffe($content, $name) { | private function createWaffe($content, $name) { | ||
preg_match('# | preg_match('#Stärke=\W*([0-9]+)#si', $content, $staerke); | ||
return new Waffe($name, $staerke[1]); | return new Waffe( $name, ($staerke[1]) ); | ||
} | } | ||
Zeile 118: | Zeile 118: | ||
public $staerke; | public $staerke; | ||
// Konstruktor fuer ein Waffen-Objekt | |||
function __construct($name, $staerke){ | function __construct($name, $staerke){ | ||
$this->name = $name; | $this->name = $name; | ||
$this->staerke = $staerke; | $this->staerke = $staerke; | ||
} | } | ||
Zeile 133: | Zeile 134: | ||
} | } | ||
} | } | ||
</pre> | </pre> |