diff --git a/ext/livefeed/main.php b/ext/livefeed/main.php new file mode 100644 index 00000000..4246e76c --- /dev/null +++ b/ext/livefeed/main.php @@ -0,0 +1,55 @@ + +* 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_string_option("IP/port to send events to"); + $event->panel->add_block($sb); + } + + public function onUserCreation($event) { + $this->msg("New user created: {$event->user}"); + } + + public function onImageAddition($event) { + $this->msg("Image posted: ".make_http(make_link("post/view/".$event->image->id))); + $this->msg("- tagged ".$event->image->get_tag_list()); + } + + public function onCommentPosting($event) { + $this->msg("Comment posted on ".make_http(make_link("post/view/".$event->image_id))." :"); + $this->msg("- {$event->user->name}: {$event->comment}"); + } + + public function onImageInfoSet($event) { +# $this->msg("Image info set"); + } + + public function get_priority() {return 99;} + + private function msg($data) { + global $config; + $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) { + } + } +}