From beea4a5bcdcc698f925110abf4b1f4ec1655ebd0 Mon Sep 17 00:00:00 2001
From: Justin Mitchell <arthur@sucs.org>
Date: Tue, 21 Apr 2009 11:46:35 +0000
Subject: [PATCH] added mwuri tags and statuses

---
 components/milliways.php        | 119 +++++++++++++++++++++++++++++++-
 templates/milliways.tpl         |  18 +++--
 templates/milliways_status.tpl  |  35 ++++++++++
 templates/milliways_tag.tpl     |  16 +++++
 templates/milliways_taglist.tpl |  34 +++++++++
 templates/milliways_uri.tpl     |  12 ++--
 6 files changed, 220 insertions(+), 14 deletions(-)
 create mode 100644 templates/milliways_status.tpl
 create mode 100644 templates/milliways_tag.tpl
 create mode 100644 templates/milliways_taglist.tpl

diff --git a/components/milliways.php b/components/milliways.php
index 7608d40..08887b6 100644
--- a/components/milliways.php
+++ b/components/milliways.php
@@ -33,6 +33,8 @@ for($i=0;$i<=$mwpath;$i++) {
 }
 $smarty->assign("mwpath", $newpath);
 
+$cal = cal_info(CAL_JULIAN);
+
 if (strtolower($pathlist[$mwpath+1]) == "uri") {
 	$today = FALSE;
 	if (isset($pathlist[$mwpath+2]))
@@ -45,7 +47,7 @@ if (strtolower($pathlist[$mwpath+1]) == "uri") {
 		'<meta name="ROBOTS" content="NOFOLLOW" />'));
 
 	$mwdb = new PDO('sqlite:/var/lib/mw/mwuri.db');
-	$res = $mwdb->prepare("select *, time(added) as hour, date(added) as day from mwuri where date(added)=? order by added desc");
+	$res = $mwdb->prepare("select *, time(added,'localtime') as hour, date(added,'localtime') as day from mwuri where date(added,'localtime')=? order by added desc");
 	$res->execute(array(date("Y-m-d",$today)));
 	$data = $res->fetchAll(PDO::FETCH_ASSOC);
 	foreach($data as $k => $row)
@@ -64,7 +66,11 @@ if (strtolower($pathlist[$mwpath+1]) == "uri") {
 
 	$res= $mwdb->prepare("select distinct strftime('%m',added) from mwuri where strftime('%Y',added) = ?");
 	$res->execute(array(date("Y",$today)));
-	$monthlist = $res->fetchAll(PDO::FETCH_COLUMN,0);
+	$mlist = $res->fetchAll(PDO::FETCH_COLUMN,0);
+	$monthlist = array();
+	foreach( $mlist as $m) {
+		$monthlist[$m] = $cal['abbrevmonths'][(int)$m];
+	}
 	$smarty->assign("monthlist",$monthlist);
 
 	$res= $mwdb->prepare("select distinct strftime('%d',added) from mwuri where strftime('%Y-%m',added) = ?");
@@ -84,6 +90,99 @@ if (strtolower($pathlist[$mwpath+1]) == "uri") {
 	return;
 }
 
+if (strtolower($pathlist[$mwpath+1]) == "status") {
+	$today = FALSE;
+	$wantuser = FALSE;
+	if (isset($pathlist[$mwpath+2])) {
+		if ($pathlist[$mwpath+2] == "user" && isset($pathlist[$mwpath+3])) 
+			$wantuser = $pathlist[$mwpath+3];
+		else
+			$today = strtotime($pathlist[$mwpath+2]);
+	}
+	if ($today === FALSE)
+		$today = time();
+
+	$smarty->assign("extra_scripts", array(
+		'<meta name="ROBOTS" content="NOINDEX" />',
+		'<meta name="ROBOTS" content="NOFOLLOW" />'));
+
+	$mwdb = new PDO('sqlite:/var/lib/mw/mwuri.db');
+	if ($wantuser !== FALSE) {
+		$res = $mwdb->prepare("select *, time(added,'localtime') as hour, date(added,'localtime') as day from mwdoing where user=? order by added desc");
+		$res->execute(array($wantuser));
+	} else {
+		$res = $mwdb->prepare("select *, time(added,'localtime') as hour, date(added,'localtime') as day from mwdoing where strftime('%Y-%m',added,'localtime')=? order by added desc");
+		$res->execute(array(date("Y-m",$today)));
+	}
+	//$res = $mwdb->prepare("select *, time(added,'localtime') as hour, date(added,'localtime') as day from mwdoing where date(added,'localtime')=? order by added desc");
+	//$res->execute(array(date("Y-m-d",$today)));
+	$data = $res->fetchAll(PDO::FETCH_ASSOC);
+	$smarty->assign("statuslist", $data);
+
+	$res = $mwdb->prepare("select distinct strftime('%Y',added) from mwdoing");
+	$res->execute();
+	$yearlist = $res->fetchAll(PDO::FETCH_COLUMN,0);
+	$smarty->assign("yearlist",$yearlist);
+
+	$res= $mwdb->prepare("select distinct strftime('%m',added) from mwdoing where strftime('%Y',added) = ?");
+	$res->execute(array(date("Y",$today)));
+	$mlist = $res->fetchAll(PDO::FETCH_COLUMN,0);
+	$monthlist = array();
+	foreach( $mlist as $m) {
+		$monthlist[$m] = $cal['abbrevmonths'][(int)$m];
+	}
+	$smarty->assign("monthlist",$monthlist);
+
+	$res= $mwdb->prepare("select distinct strftime('%d',added) from mwdoing where strftime('%Y-%m',added) = ?");
+	$res->execute(array(date("Y-m",$today)));
+	$daylist = $res->fetchAll(PDO::FETCH_COLUMN,0);
+	$smarty->assign("daylist",$daylist);
+
+	$smarty->assign("thisyear", date("Y",$today));
+	$smarty->assign("thismonth", date("m",$today));
+	$smarty->assign("thisday", date("d",$today));
+
+	$output = $smarty->fetch($base."templates/milliways_status.tpl");
+	$smarty->assign("title", "Milliways Status");
+	$smarty->assign("body", $output);
+	$smarty->assign("extra_styles", "/css/milliways.css");
+	$smarty->assign("refresh", 120);
+	return;
+}
+
+if (strtolower($pathlist[$mwpath+1]) == "tag") {
+	$smarty->assign("extra_scripts", array(
+		'<meta name="ROBOTS" content="NOINDEX" />',
+		'<meta name="ROBOTS" content="NOFOLLOW" />'));
+
+	$mwdb = new PDO('sqlite:/var/lib/mw/mwuri.db');
+	if (isset($pathlist[$mwpath+2])) {
+	$res = $mwdb->prepare("select *, date(added) as day, substr(tag,2) as name from mwtag where tag=? order by added desc");
+	$res->execute(array('#'.$pathlist[$mwpath+2]));
+	$data = $res->fetchAll(PDO::FETCH_ASSOC);
+	$smarty->assign("taglist", $data);
+	$output = $smarty->fetch($base."templates/milliways_tag.tpl");
+	} else {
+	$res = $mwdb->prepare("select distinct tag, substr(tag,2) as name, count(tag) as count from mwtag group by tag order by count(tag) desc limit 20");
+	$res->execute();
+	$data = $res->fetchAll(PDO::FETCH_ASSOC);
+	$smarty->assign("toplist", $data);
+
+	$res = $mwdb->prepare("select distinct tag, substr(tag,2) as name, count(tag) as count, max(added) as dated, date(max(added)) as day from mwtag group by tag order by max(added) desc limit 20");
+	$res->execute();
+	$data = $res->fetchAll(PDO::FETCH_ASSOC);
+	$smarty->assign("latestlist", $data);
+
+	$output = $smarty->fetch($base."templates/milliways_taglist.tpl");
+	}
+
+	$smarty->assign("title", "Milliways Tags");
+	$smarty->assign("body", $output);
+	$smarty->assign("extra_styles", "/css/milliways.css");
+	$smarty->assign("refresh", 120);
+	return;
+}
+
 exec("/usr/bin/mw -who", $wholist, $ret);
 $people = array();
 $idlers = array();
@@ -108,6 +207,22 @@ usort($idlers, 'compare_idletime');
 
 $output .= print_r($pathlist, true);
 
+// summary lists
+$mwdb = new PDO('sqlite:/var/lib/mw/mwuri.db');
+$res = $mwdb->prepare("select *, time(added,'localtime') as hour, date(added,'localtime') as day from mwuri where date(added,'localtime')=? order by added desc limit 5");
+$res->execute(array(date("Y-m-d")));
+$urilist = $res->fetchAll(PDO::FETCH_ASSOC);
+foreach ($urilist as $k=>$v) {
+	if ($v['title'] == "") $urilist[$k]['title']=$v['url'];
+	$urilist[$k]['title']=trim($urilist[$k]['title']);
+}
+$smarty->assign("urilist", $urilist);
+
+$res = $mwdb->prepare("select distinct tag, substr(tag,2) as name, count(tag) as count, max(added) as dated, date(max(added)) as day from mwtag group by tag order by max(added) desc limit 5");
+$res->execute();
+$taglist = $res->fetchAll(PDO::FETCH_ASSOC);
+$smarty->assign("taglist", $taglist);
+
 $smarty->assign("people",$people);
 $smarty->assign("idlers",$idlers);
 $output = $smarty->fetch($base."templates/milliways.tpl");
diff --git a/templates/milliways.tpl b/templates/milliways.tpl
index 8170155..4b4fd24 100644
--- a/templates/milliways.tpl
+++ b/templates/milliways.tpl
@@ -12,15 +12,19 @@
 </div>
 
 <div class="cbb">
-<h3>Filthy Milliways Idlers</h3>
-{if $idlers|@count < 1}
-<p>Everyone's awake..!</p>
-{else}
+<h3><a href="{$mwpath}/URI">Recent URIs</a></h3>
 <ul>
-    {foreach name=idlers from=$idlers item=person}
-    <li>{$person.username} <small>({$person.idle} idle)</small></li>
+    {foreach name=list from=$urilist item=uri}
+    <li style="white-space: nowrap">{$uri.user} <small><a href="{$uri.url}" title="{$uri.title}">{$uri.title|truncate:18:"..":true:false}</a></small></li>
     {/foreach} 
 </ul>
-{/if}
 </div>
 
+<div class="cbb">
+<h3><a href="{$mwpath}/tag">Recent TAGs</a></h3>
+<ul>
+    {foreach name=taglist from=$taglist item=tag}
+    <li>{$tag.user} <a href="{$mwpath}/tag/{$tag.name|escape:'url'}">{$tag.tag}</a></li>
+    {/foreach} 
+</ul>
+</div>
diff --git a/templates/milliways_status.tpl b/templates/milliways_status.tpl
new file mode 100644
index 0000000..0c5d4e9
--- /dev/null
+++ b/templates/milliways_status.tpl
@@ -0,0 +1,35 @@
+<table>
+<tr>
+ <td nowrap="nowrap" class="date" colspan="3">
+Year: {foreach from=$yearlist item=year}{if $year != $thisyear}<a href="{$mwpath}/Status/{$year}-01-01">{$year}</a> {else}{$year} {/if}{/foreach}
+ </td>
+</tr>
+<tr>
+ <td nowrap="nowrap" class="date" colspan="3">
+Month: {foreach from=$monthlist key=num item=month}{if $num != $thismonth}<a href="{$mwpath}/Status/{$thisyear}-{$num}-01">{$month}</a> {else}{$month} {/if}{/foreach}
+ </td>
+</tr>
+{* do whole months for now
+<tr>
+ <td nowrap="nowrap" class="date" colspan="3">
+Day: {foreach from=$daylist item=day}{if $day != $thisday}<a href="{$mwpath}/Status/{$thisyear}-{$thismonth}-{$day}">{$day}</a> {else}{$day} {/if}{/foreach}
+ </td>
+</tr>
+*}
+{assign var=lastday value=''}
+{foreach from=$statuslist item=row name=list}
+{if $row.day != $lastday}
+{assign var=lastday value=$row.day}
+<tr>
+ <td nowrap="nowrap" class="date" colspan="3">{$row.added|date_format:'%d %b %Y'}</td>
+</tr>
+{/if}
+{assign var=rows value=1}
+{if $row.title}{assign var=rows value=$rows+1}{/if}
+{if count($row.taglist)}{assign var=rows value=$rows+1}{/if}
+<tr>
+ <td nowrap="nowrap" class="time" rowspan="{$rows}">{$row.hour}</td>
+ <td ><a href="{$mwpath}/Status/user/{$row.user|escape:'url'}">{$row.user|escape:'htmlall'}</a> {$row.doing|escape:'htmlall'}</td>
+</tr>
+{/foreach}
+</table>
diff --git a/templates/milliways_tag.tpl b/templates/milliways_tag.tpl
new file mode 100644
index 0000000..a378416
--- /dev/null
+++ b/templates/milliways_tag.tpl
@@ -0,0 +1,16 @@
+<table>
+{assign var=lastday value=''}
+{foreach from=$taglist item=row name=list}
+{if $row.day != $lastday}
+{assign var=lastday value=$row.day}
+<tr>
+ <td nowrap="nowrap" class="date" colspan="3">{$row.added|date_format:'%d %b %Y'}</td>
+</tr>
+{/if}
+<tr>
+ <td nowrap="nowrap" class="time">{$row.added|date_format:'%H:%M:%S'}</td>
+ <td nowrap="nowrap" class="user">{$row.user}</td>
+ <td>{$row.line|escape:'htmlall'}</td>
+</tr>
+{/foreach}
+</table>
diff --git a/templates/milliways_taglist.tpl b/templates/milliways_taglist.tpl
new file mode 100644
index 0000000..5d2ad99
--- /dev/null
+++ b/templates/milliways_taglist.tpl
@@ -0,0 +1,34 @@
+<table cellspacing="20">
+<tr><td valign="top">
+<table>
+<tr><th colspan="2">Most Popular</th></tr>
+{foreach from=$toplist item=row name=toplist}
+<tr>
+ <td nowrap="nowrap" class="user">
+<a href="{$mwpath}/tag/{$row.name|escape:'url'}">{$row.tag}</a>
+</td>
+ <td class="time">{$row.count}</td>
+</tr>
+{/foreach}
+</table>
+
+</td><td valign="top">
+<table>
+<tr><th colspan="2">Latest</th></tr>
+{assign var=lastday value=''}
+{foreach from=$latestlist item=row name=list}
+{if $row.day != $lastday}
+{assign var=lastday value=$row.day}
+<tr>
+ <td nowrap="nowrap" class="date" colspan="3">{$row.dated|date_format:'%d %b %Y'}</td>
+</tr>
+{/if}
+<tr>
+ <td nowrap="nowrap" class="user">
+<a href="{$mwpath}/tag/{$row.name|escape:'url'}">{$row.tag}</a>
+ </td>
+ <td nowrap="nowrap" class="time">{$row.dated|date_format:'%H:%M:%S'}</td>
+</tr>
+{/foreach}
+</table>
+</td></tr></table>
diff --git a/templates/milliways_uri.tpl b/templates/milliways_uri.tpl
index 32153a6..9fb49fc 100644
--- a/templates/milliways_uri.tpl
+++ b/templates/milliways_uri.tpl
@@ -1,21 +1,22 @@
 <table>
 <tr>
  <td nowrap="nowrap" class="date" colspan="3">
-Year: {foreach from=$yearlist item=year}{if $year != $thisyear}<a href="{$mwpath}/uri/{$year}-01-01">{$year}</a> {else}{$year}{/if}{/foreach}
+Year: {foreach from=$yearlist item=year}{if $year != $thisyear}<a href="{$mwpath}/uri/{$year}-01-01">{$year}</a> {else}{$year} {/if}{/foreach}
  </td>
 </tr>
 <tr>
  <td nowrap="nowrap" class="date" colspan="3">
-Month: {foreach from=$monthlist item=month}{if $month != $thismonth}<a href="{$mwpath}/uri/{$thisyear}-{$month}-01">{$month}</a> {else}{$month} {/if}{/foreach}
+Month: {foreach from=$monthlist key=num item=month}{if $num != $thismonth}<a href="{$mwpath}/uri/{$thisyear}-{$num}-01">{$month}</a> {else}{$month} {/if}{/foreach}
  </td>
 </tr>
 <tr>
  <td nowrap="nowrap" class="date" colspan="3">
-Day: {foreach from=$daylist item=day}{if $day != $thisday}<a href="{$mwpath}/uri/{$thisyear}-{$thismonth}-{$day}">{$day}</a> {else}{$day}{/if}{/foreach}
+Day: {foreach from=$daylist item=day}{if $day != $thisday}<a href="{$mwpath}/uri/{$thisyear}-{$thismonth}-{$day}">{$day}</a> {else}{$day} {/if}{/foreach}
  </td>
 </tr>
 {assign var=lastday value=''}
 {foreach from=$urilist item=row name=list}
+{if stristr($row.flags,"sucs")===FALSE || $session->loggedin}
 {if $row.day != $lastday}
 {assign var=lastday value=$row.day}
 <tr>
@@ -27,8 +28,8 @@ Day: {foreach from=$daylist item=day}{if $day != $thisday}<a href="{$mwpath}/uri
 {if count($row.taglist)}{assign var=rows value=$rows+1}{/if}
 <tr>
  <td nowrap="nowrap" class="time" rowspan="{$rows}">{$row.hour}</td>
- <td nowrap="nowrap" class="user" rowspan="{$rows}">{$row.user}</td>
- <td ><a href="{$row.url|escape:"hexentity"}">{$row.url|truncate:80:" ... ":true:true|escape:"html"}</a></td>
+ <td nowrap="nowrap" class="user" rowspan="{$rows}">{if stristr($row.flags,"anon")===FALSE}{$row.user}{else}<i>Anonymous</i>{/if}</td>
+ <td ><a href="{$row.url|escape:"hexentity"}">{$row.url|truncate:80:" ... ":true:true|escape:"html"}</a>{if stristr($row.flags,"nsfw")!==FALSE} (NSFW){/if}</td>
 </tr>
 {if $row.title}
 <tr><td>{$row.title|escape:"html"}</td></tr>
@@ -41,5 +42,6 @@ Day: {foreach from=$daylist item=day}{if $day != $thisday}<a href="{$mwpath}/uri
  </td>
 </tr>
 {/if}
+{/if}
 {/foreach}
 </table>
-- 
GitLab