This repository has been archived on 2024-09-05. You can view files and clone it, but cannot push or open issues or pull requests.
shimmie2/ext/livefeed/main.php
Shish 7be951b271 Convert tags from user-supplied string to array once, on input
This results in a fuckton of refactoring and code cancelling out
other code -- we no longer have a whole bunch of places trying
to support string params and array params, and doing their own
esaping and unescaping, never being quite sure if the data they've
been passed is escaped or not.

Also adds a bunch of type hinting, since we can now know what
data we're dealing with better.
2016-07-30 22:11:49 +01:00

74 lines
1.9 KiB
PHP

<?php
/*
* Name: Live Feed
* Author: Shish <webmaster@shishnet.org>
* License: GPLv2
* Visibility: admin
* Description: Logs user-safe (no IPs) data to a UDP socket, eg IRCCat
* Documentation:
*/
class LiveFeed extends Extension {
public function onSetupBuilding(SetupBuildingEvent $event) {
$sb = new SetupBlock("Live Feed");
$sb->add_text_option("livefeed_host", "IP:port to send events to: ");
$event->panel->add_block($sb);
}
public function onUserCreation(UserCreationEvent $event) {
$this->msg("New user created: {$event->username}");
}
public function onImageAddition(ImageAdditionEvent $event) {
global $user;
$this->msg(
make_http(make_link("post/view/".$event->image->id))." - ".
"new post by ".$user->name
);
}
public function onTagSet(TagSetEvent $event) {
$this->msg(
make_http(make_link("post/view/".$event->image->id))." - ".
"tags set to: ".Tag::implode($event->tags)
);
}
public function onCommentPosting(CommentPostingEvent $event) {
global $user;
$this->msg(
make_http(make_link("post/view/".$event->image_id))." - ".
$user->name . ": " . str_replace("\n", " ", $event->comment)
);
}
public function onImageInfoSet(ImageInfoSetEvent $event) {
# $this->msg("Image info set");
}
public function get_priority() {return 99;}
/**
* @param string $data
*/
private function msg($data) {
global $config;
assert('is_string($data)');
$host = $config->get_string("livefeed_host", "127.0.0.1:25252");
if(!$host) { return; }
try {
$parts = explode(":", $host);
$host = $parts[0];
$port = $parts[1];
$fp = fsockopen("udp://$host", $port, $errno, $errstr);
if (! $fp) { return; }
fwrite($fp, "$data\n");
fclose($fp);
} catch (Exception $e) {
/* logging errors shouldn't break everything */
}
}
}