From 8a1b006a0cbec2225a86cf5dfab9a955ce6919f3 Mon Sep 17 00:00:00 2001
From: Graham Cole <chckens@sucs.org>
Date: Wed, 30 Jan 2008 23:07:44 +0000
Subject: [PATCH] this is much nicer to read :)

---
 components/members.php         | 33 +++++--------------
 templates/banana-awardlist.tpl | 10 ++++++
 templates/members.tpl          | 60 ++++++++++++++--------------------
 3 files changed, 43 insertions(+), 60 deletions(-)
 create mode 100644 templates/banana-awardlist.tpl

diff --git a/components/members.php b/components/members.php
index dd0246f..3cc6426 100644
--- a/components/members.php
+++ b/components/members.php
@@ -72,31 +72,16 @@ if ($session->loggedin) {
 				$bananasql .= "WHERE username ~* ? ORDER BY WHN DESC";
 				$awards = $DB->GetAll($bananasql, array("^".$usernames[0]['uid']."$"));
 				
-				// add academic year to each award, perform slightly nasty hack to add sum for academic year to last of the year
-				$yearSum = 0;
-				unset($acYear);
-				unset($yearStart);
-				foreach ($awards as $i => $award) {
-					$awards[$i]['acYear'] = academicYear(strtotime($award['whn']));
-					if ($acYear != $awards[$i]['acYear']) {
-						if(isset($yearStart)) {
-							$awards[$yearStart]['yearSum'] = $yearSum;
-							$yearSum = 0;
-						}
-						$yearSum += $award['score'];
-						$acYear = $awards[$i]['acYear'];
-						$yearStart = $i;
-					} else {
-						$yearSum += $award['score'];
-					}
-				}
-				if(isset($yearStart)) $awards[$yearStart]['yearSum'] = $yearSum;
-				
+				// arrange by academic year, calculate sums as we go
+				foreach ($awards as $award) {
+					$acyear = academicYear(strtotime($award['whn']));
+					$awards_by_year[$acyear]['awards'][] = $award;
+					$awards_by_year[$acyear]['sum'] += $award['score']; 
+					$bananasum += $award['score'];
+				} 
 				
-				$usernames[0]['awards'] = $awards; 
-				$bananasumsql = "select sum(score) as sum from awards where username ~* ?";
-				$bananasum = $DB->GetAll($bananasumsql, array("^".$usernames[0]['uid']."$"));
-				$usernames[0]['bananascore'] = $bananasum[0]['sum'];
+				$usernames[0]['awardsbyyear'] = &$awards_by_year; 
+				$usernames[0]['bananascore'] = $bananasum;
 			}
 		}
 		$smarty->assign('results', $usernames);
diff --git a/templates/banana-awardlist.tpl b/templates/banana-awardlist.tpl
new file mode 100644
index 0000000..e019793
--- /dev/null
+++ b/templates/banana-awardlist.tpl
@@ -0,0 +1,10 @@
+<ul class="bananas">
+{foreach name=awards from=$awards item=award}
+<li class="{award_image_class number=$award.score}">
+	<q>{$award.why}</q> <br />
+	<small>
+	<strong>{if $award.score >0}+{/if}{$award.score}</strong> awarded by {$award.who} on {$award.whn | date_format:"%d %b %Y"}
+	</small>
+</li>
+{/foreach}
+</ul>
diff --git a/templates/members.tpl b/templates/members.tpl
index fbc331a..df2e8ff 100644
--- a/templates/members.tpl
+++ b/templates/members.tpl
@@ -8,41 +8,42 @@
 {/foreach}
 	</ul>
 {elseif count($results) == 1 }
+{assign var=member value=$results[0]}
 <div class="box">
-<div class="boxhead"><h2>Membership Details for {$results[0].uid}</h2></div>
+<div class="boxhead"><h2>Membership Details for {$member.uid}</h2></div>
 <div class="boxcontent">
-{if isset($results[0].picture) }
-	<img class="emblem" src="{$baseurl}{$results[0].picture}" alt="Picture of {$results[0].uid}" />
+{if isset($member.picture) }
+	<img class="emblem" src="{$baseurl}{$member.picture}" alt="Picture of {$member.uid}" />
 {/if}
 <dl class="member">
 	<dt>Username</dt>
-	<dd>{$results[0].uid|escape:'htmlall'}</dd>
+	<dd>{$member.uid|escape:'htmlall'}</dd>
 	<dt>Real Name</dt>
-	<dd>{$results[0].cn|escape:'htmlall'}</dd>
+	<dd>{$member.cn|escape:'htmlall'}</dd>
 	<dt>Account Type</dt>
-	<dd>{$results[0].acctype|escape:'htmlall'}</dd>
-{if $results[0].website }
+	<dd>{$member.acctype|escape:'htmlall'}</dd>
+{if $member.website }
 	<dt>Website</dt>
-	<dd><a href="http://sucs.org/~{$results[0].uid|escape:'url'}/">http://sucs.org/~{$results[0].uid|escape:'url'}/</a></dd>
+	<dd><a href="http://sucs.org/~{$member.uid|escape:'url'}/">http://sucs.org/~{$member.uid|escape:'url'}/</a></dd>
 {/if}
-{if isset($results[0].blog) }
+{if isset($member.blog) }
 	<dt>Blog</dt>
-	<dd><a href="/Blogs/{$results[0].uid|escape:'url'}">{$results[0].blog}</a></dd>
+	<dd><a href="/Blogs/{$member.uid|escape:'url'}">{$member.blog}</a></dd>
 {/if}
-{if isset($results[0].project) }
+{if isset($member.project) }
 	<dt>Project</dt>
-	<dd id="project"><pre style="clear: left;">{$results[0].project|escape:'htmlall'}</pre></dd>
+	<dd id="project"><pre style="clear: left;">{$member.project|escape:'htmlall'}</pre></dd>
 {/if}
-{if isset($results[0].plan) }
+{if isset($member.plan) }
 	<dt>Plan</dt>
-	<dd id="plan"><pre style="clear: left;">{$results[0].plan|escape:'htmlall'}</pre></dd>
+	<dd id="plan"><pre style="clear: left;">{$member.plan|escape:'htmlall'}</pre></dd>
 {/if}
 
 <dt>Banana Score</dt>
-{if $results[0].awards|@count >= 1}
-	<dd>{bananaprint score=$results[0].bananascore}{$results[0].bananascore} banana{if $results[0].bananascore<>1}s{/if}</dd>
+{if $member.awardsbyyear|@count >= 1}
+	<dd>{bananaprint score=$member.bananascore}{$member.bananascore} banana{if $member.bananascore<>1}s{/if}</dd>
 {else}
-	<dd>{$results[0].uid} doesn't have any banana awards</dd>
+	<dd>{$member.uid} doesn't have any banana awards</dd>
 {/if}
 </dl>
 
@@ -51,29 +52,16 @@
 </div>
 <div class="hollowfoot"><div><div></div></div></div>
 </div>
-{if $results[0].awards|@count >= 1}
+{if $member.awardsbyyear|@count >= 1}
 <div class="box">
-<div class="boxhead"><h2>Banana Awards for {$results[0].uid}</h2></div>
+<div class="boxhead"><h2>Banana Awards for {$member.uid}</h2></div>
 <div class="boxcontent">
 		<dl class="bananas">
-                {foreach name=awards from=$results[0].awards key=key item=award}
-			{if $acYear != $award.acYear}
-			{assign var='acYear' value=$award.acYear}
-				{if !$smarty.foreach.awards.first}</ul></dd>{/if}
-	<dt>{$award.acYear}/{math equation="x + 1" x=$award.acYear}: <small>{$award.yearSum} banana{if $award.yearSum|abs != 1}s{/if}</small>
-</dt>
-			<dd><ul class="bananas">
-			{/if}
-				<li class="{award_image_class number=$award.score}">
-					<q>{$award.why}</q> <br/>
-					<small>
-						<strong>{if $award.score > 0}+{/if}{$award.score}</strong> awarded by {$award.who} on {$award.whn|date_format:"%d %b %Y"}
-					</small>
-					
-				</li>
-			{if $smarty.foreach.awards.last}</ul>{/if}
+                {foreach name=awardsbyyear from=$member.awardsbyyear key=yearname item=year}
+			<dt>{$yearname}/{math equation="x + 1" x=$yearname}: <small>{$year.sum} banana{if $year.sum|abs != 1}s{/if}</small></dt>
+			<dd>{include file=banana-awardlist.tpl awards=$year.awards}</dd>
                 {/foreach}
-		</dd></dl>
+		</dl>
 </div>
 <div class="hollowfoot"><div><div></div></div></div>
 </div>
-- 
GitLab