diff --git a/3.0/modules/session_explorer/controllers/admin_session_explorer.php b/3.0/modules/session_explorer/controllers/admin_session_explorer.php
new file mode 100644
index 00000000..753a494a
--- /dev/null
+++ b/3.0/modules/session_explorer/controllers/admin_session_explorer.php
@@ -0,0 +1,61 @@
+get_uas_and_ips();
+
+ $view = new Admin_View("admin.html");
+ $view->page_title = t("Akismet spam filtering");
+ $view->content = new View("admin_session_explorer.html");
+ $view->content->uas = $uas;
+ $view->content->ips = $ips;
+ print $view;
+ }
+
+ private function get_uas_and_ips() {
+ $uas = array();
+ $ips = array();
+ $d = new Session_Database_Driver();
+ foreach (db::build()
+ ->select("session_id")
+ ->from("sessions")
+ ->execute() as $r) {
+ $data = explode("|", $d->read($r->session_id));
+ $ua = unserialize($data[4]);
+ $ip = unserialize($data[5]);
+ if (!isset($uas[$ua])) {
+ $uas[$ua] = 0;
+ }
+ if (!isset($ips[$ip])) {
+ $ips[$ip] = 0;
+ }
+ $uas[$ua]++;
+ $ips[$ip]++;
+ }
+ arsort($uas);
+ arsort($ips);
+
+ // Top 20 only
+ array_splice($uas, 20);
+ array_splice($ips, 20);
+
+ return array($uas, $ips);
+ }
+}
\ No newline at end of file
diff --git a/3.0/modules/session_explorer/helpers/session_explorer_event.php b/3.0/modules/session_explorer/helpers/session_explorer_event.php
new file mode 100644
index 00000000..6ba44c30
--- /dev/null
+++ b/3.0/modules/session_explorer/helpers/session_explorer_event.php
@@ -0,0 +1,29 @@
+get("statistics_menu")
+ ->append(Menu::factory("link")
+ ->id("session_explorer")
+ ->label(t("Explore sessions"))
+ ->url(url::site("admin/session_explorer")));
+ }
+}
diff --git a/3.0/modules/session_explorer/module.info b/3.0/modules/session_explorer/module.info
new file mode 100644
index 00000000..4ec227af
--- /dev/null
+++ b/3.0/modules/session_explorer/module.info
@@ -0,0 +1,7 @@
+name = "Session Explorer"
+description = "Explore the sessions currently active in your Gallery"
+version = 1
+author_name = "Gallery Team"
+author_url = "http://codex.gallery2.org/Gallery:Team"
+info_url = "http://codex.gallery2.org/Gallery3:Modules:session_explorer"
+discuss_url = "http://gallery.menalto.com/forum_module_session_explorer"
diff --git a/3.0/modules/session_explorer/views/admin_session_explorer.html.php b/3.0/modules/session_explorer/views/admin_session_explorer.html.php
new file mode 100644
index 00000000..f396ddf6
--- /dev/null
+++ b/3.0/modules/session_explorer/views/admin_session_explorer.html.php
@@ -0,0 +1,44 @@
+
+
+
= t("Top user agents and ips") ?>
+
+
+
= t("User agents") ?>
+
+
+ = t("Rank") ?> |
+ = t("Count") ?> |
+ = t("User agent") ?> |
+
+
+ foreach ($uas as $ua => $count): ?>
+ $rank = 0; ?>
+ ">
+ = ++$rank ?> |
+ = $count ?> |
+ = $ua ?> |
+
+ endforeach ?>
+
+
+
+
+
= t("Internet addresses") ?>
+
+
+ = t("Rank") ?> |
+ = t("Count") ?> |
+ = t("Internet address") ?> |
+
+
+ foreach ($ips as $ip => $count): ?>
+ $rank = 0; ?>
+ ">
+ = ++$rank ?> |
+ = $count ?> |
+ = $ip ?> |
+
+ endforeach ?>
+
+
+