diff options
| author | Christopher Guindon | 2015-02-06 21:19:13 +0000 |
|---|---|---|
| committer | Denis Roy | 2015-04-15 20:04:01 +0000 |
| commit | fa695aca1883bc173b35a1ae12940ee91409fe50 (patch) | |
| tree | 49b2a5ee6399041c82903f0b01ef0970d4a1e08d | |
| parent | 7d27b16ae80b4a10db7c48a790a6fcc070a903ef (diff) | |
| download | donate-fa695aca1883bc173b35a1ae12940ee91409fe50.tar.gz donate-fa695aca1883bc173b35a1ae12940ee91409fe50.tar.xz donate-fa695aca1883bc173b35a1ae12940ee91409fe50.zip | |
Bug 459251 - Implement new donor list page
Change-Id: I4111843ff03dbc30131f34ee61823fa703259d04
Signed-off-by: Christopher Guindon <chris.guindon@eclipse.org>
Also-by: Denis Roy <denis.roy@eclipse.org>
| -rw-r--r-- | content/en_donorlist.php | 42 | ||||
| -rw-r--r-- | donorlist.php | 190 | ||||
| -rw-r--r-- | functions.php | 101 | ||||
| -rw-r--r-- | style.css | 13 |
4 files changed, 209 insertions, 137 deletions
diff --git a/content/en_donorlist.php b/content/en_donorlist.php new file mode 100644 index 0000000..be31eaa --- /dev/null +++ b/content/en_donorlist.php @@ -0,0 +1,42 @@ +<?php +/******************************************************************************* + * Copyright (c) 2014, 2015 Eclipse Foundation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://eclipse.org/legal/epl-v10.html + * + * Contributors: + * Nathan Gervais (Eclipse Foundation) - Initial implementation (2007-11-07) + * Edouard Poitras (Eclipse Foundation) - Further modifications + * Christopher Guindon (Eclipse Foundation) + *******************************************************************************/ +?> +<div> + <h1><?=$pageTitle;?></h1> + <div role="tabpanel"> + <ul class="nav nav-tabs tabs" role="tablist"> + <li role="presentation" class="active"><a href="#best-friends" aria-controls="best-friends" role="tab" data-toggle="tab">Best Friends</a></li> + <li role="presentation"><a href="#friends" aria-controls="friends" role="tab" data-toggle="tab">Friends</a></li> + <li role="presentation"><a href="#all" aria-controls="all" role="tab" data-toggle="tab">All</a></li> + <li role="presentation"><a href="/donate">Join Us</a></li> + </ul> + </div> + <div class="tab-content"> + <div role="tabpanel" class="tab-pane fade in active" id="best-friends"> + <?=displayPager($bfstart, $pageValue, $totalBestFriends, 'bfstart', '#best-friends');?> + <?=displayFriends($bestFriends);?> + <?=displayPager($bfstart, $pageValue, $totalBestFriends, 'bfstart', '#best-friends');?> + </div> + <div role="tabpanel" class="tab-pane fade" id="friends"> + <?=displayPager($fstart, $pageValue, $totalFriends, 'fstart', '#friends');?> + <?=displayFriends($friends);?> + <?=displayPager($fstart, $pageValue, $totalFriends, 'fstart', '#friends');?> + </div> + <div role="tabpanel" class="tab-pane fade" id="all"> + <?=displayPager($start, $pageValue, $totalContributionsCount, 'start', '#all');?> + <?=displayTable($contributions);?> + <?=displayPager($start, $pageValue, $totalContributionsCount, 'start', '#all');?> + </div> + </div> +</div>
\ No newline at end of file diff --git a/donorlist.php b/donorlist.php index d40b74a..7883737 100644 --- a/donorlist.php +++ b/donorlist.php @@ -1,6 +1,6 @@ -<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop' +<?php /******************************************************************************* - * Copyright (c) 2014 Eclipse Foundation and others. + * Copyright (c) 2014, 2015 Eclipse Foundation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -9,140 +9,68 @@ * Contributors: * Nathan Gervais (Eclipse Foundation) - Initial implementation (2007-11-07) * Edouard Poitras (Eclipse Foundation) - Further modifications + * Christopher Guindon (Eclipse Foundation) *******************************************************************************/ - # - # Begin: page-specific settings. Change these. - $pageTitle = "Donor List"; - $pageKeywords = "friends of eclipse, donation, contribution"; - $pageAuthor = "Nathan Gervais"; - header("Cache-control: no-cache"); - require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/smartconnection.class.php"); - require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/friendsContributionsList.class.php"); - require_once("functions.php"); - ob_start(); + require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); + require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); + require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); + require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/smartconnection.class.php"); + require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/friendsContributionsList.class.php"); + require_once("functions.php"); - $showAll = $App->getHTTPParameter('showAll'); - if ($showAll == NULL) { - $showAll = 1; - } - if ($showAll == 0) - { - $showAll = 0; - $where = 'WHERE F.is_benefit = 1'; - } - else { - $showAll = 1; - $where = NULL; - } - $start = $App->getHTTPParameter('start'); + $App = new App(); + $Menu = new Menu(); + include($App->getProjectCommon()); + $App->preventCaching(); + # Begin: page-specific settings. Change these. + $pageTitle = "Hall of Friends"; + $pageKeywords = "friends of eclipse, donation, contribution"; + $pageAuthor = "Christopher Guindon"; + ob_start(); - $pageValue = 25; - if ( (!$start) || (!preg_match('/^[0-9]+$/', $start))) { - $start = 0; - } + $start = $App->getHTTPParameter('start'); + $fstart = $App->getHTTPParameter('fstart'); + $bfstart = $App->getHTTPParameter('bfstart'); - $totalContributionCount = new FriendsContributionsList(); - $totalContributionCount->selectFriendsContributionsList(-1, -1 /*, 'WHERE F.is_benefit = 1'*/); - $pageCount = $totalContributionCount->getCount(); - $totalContributionCount = NULL; - ?> - <link rel="stylesheet" type="text/css" href="style.css" media="screen" /> - <div id="midcolumn"> - <h1><?=$pageTitle;?></h1> - <? if (!$showAll){ ?> - <a href="<?=$SERVER['PHP_SELF'];?>?showAll=1">Show All</a> - <? } else { ?> - <a href="donorlist.php?showAll=0">Show Friends Only</a> - <? } ?> - <?=displayPager($start, $pageValue, $pageCount, $showAll);?> - <table class="donorList" cellspacing=0> - <tr class="donorHeader"> - <td colspan="2" width="60%">Name and Message</td> - <td width="20%">Date</td> - <td width="20%" align="right">Amount</td> - </tr> - <? - // Get total number of items so we can know whether to page or not. + $pageValue = 20; + if ( (!$start) || (!preg_match('/^[0-9]+$/', $start))) { + $start = 0; + } + if ( (!$fstart) || (!preg_match('/^[0-9]+$/', $fstart))) { + $fstart = 0; + } + if ( (!$bfstart) || (!preg_match('/^[0-9]+$/', $bfstart))) { + $bfstart = 0; + } + $totalContributionsCount = getFriendsCount(TRUE, TRUE, 0); + $contributionsList = new FriendsContributionsList(); + $contributionsList->selectFriendsContributionsList($start, $pageValue); + $contributions = $contributionsList->getList(); - $friendsContributionsList = new FriendsContributionsList(); - $friendsContributionsList->selectFriendsContributionsList($start, $pageValue, $where); + $totalFriends = getFriendsCount(FALSE, TRUE, 35); + $friendsContributions = new FriendsContributionsList(); + $friendsContributions->selectFriendsContributionsList($fstart, $pageValue, 'WHERE FC.amount >= 35 and F.is_anonymous = 0'); + $friends = $friendsContributions->getList(); - $friend = new Friend(); - $contribution = new Contribution(); - $fcObject = new FriendsContributions(); - $count = $friendsContributionsList->getCount(); - for ($i=0; $i < $count; $i++) - { - $fcObject = $friendsContributionsList->getItemAt($i); - $friend = $fcObject->getFriendObject(); - $contribution = $fcObject->getContributionObject(); - $anonymous = $friend->getIsAnonymous(); - if ($anonymous != 1 && ($friend->getFirstName() != '' || $friend->getLastName() != '')) - $name = $friend->getFirstName() . " " . $friend->getLastName(); - else - $name = "Anonymous"; - $benefit = $friend->getIsBenefit(); - if ($benefit != 0) - $benefit = " <img width='25' src=\"images/stars.png\">"; - else - $benefit = ""; - $amount = $contribution->getAmount(); - if (strpos($amount, ".") == 0) - { - $amount = $amount . ".00"; - } - $comment = stripslashes(strip_tags($contribution->getMessage())); - if (strlen($comment) > 80) - if (strpos($comment, ' ') == 0 ) - { - $commentArray = str_split($comment, 80); - $comment = 0; - foreach ($commentArray as $value) - { - $comment .= $value . " "; - } - } - $date = strtotime("-1 year", strtotime($contribution->getDateExpired())); - $now = strtotime("now"); - if ($date <= $now) { - $date = date("Y-m-d", $date); - //$date = $friend->getDateJoined(); - if ($showAll == 1 || $benefit != "") { - ?> - <tr class="donorRecord"> - <td width="25"><?=$benefit;?></td> - <td width="59%"><b><?=$name;?></b><br/><?=$comment;?></td> - <td><?=$date;?></td> - <td align="right">$<?=$amount;?> USD</td> - </tr> - <? } - } - }?> - </table> - <?=displayPager($start, $pageValue, $pageCount, $showAll);?> - <br/><br/> - </div> - <div id="rightcolumn"> - <div class="sideitem"> - <h6>Total Donations</h6> - <div style="text-align:center;font-size:24px;padding:5px 0px;"><?=$pageCount;?></div> - </div> - <div class="sideitem"> - <h6>Legend</h6> - <p align="center"> - <img width='25' src="images/stars.png" align="absbottom">Friend of Eclipse - </p> - </div> - </div> - <? - header('Content-Type: text/html; charset=utf-8;'); - $html = ob_get_clean(); -// $html = mb_convert_encoding($html, "HTML-ENTITIES", "UTF-8"); - $Nav->addCustomNav("Donate to Eclipse", "index.php", "_self", 1); - $Nav->addCustomNav("Friends Login", "http://dev.eclipse.org/site_login", "_self", 1); - $Nav->addCustomNav("Donation FAQ", "faq.php", "_self", 1); - # Generate the web page - $App->generatePage("solstice", $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); -?> + $totalBestFriends = getFriendsCount(FALSE, TRUE, 100); + $bestFriendsContributions = new FriendsContributionsList(); + $bestFriendsContributions->selectFriendsContributionsList($bfstart, $pageValue, 'WHERE FC.amount >= 100 and F.is_anonymous = 0'); + $bestFriends = $bestFriendsContributions->getList(); + + + // Place your html content in a file called content/en_pagename.php + ob_start(); + include("content/en_" . $App->getScriptName()); + $html = ob_get_clean(); + + // Custom theme variables + $variables = array(); + $App->setThemeVariables($variables); + + header('Content-Type: text/html; charset=utf-8;'); + + # Generate the web page + $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="style.css" media="screen" />'); + $App->generatePage("solstice", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html); diff --git a/functions.php b/functions.php index a85395b..88a1b0c 100644 --- a/functions.php +++ b/functions.php @@ -90,9 +90,10 @@ function donorListTable($_numrows, $chevron=TRUE, $striped=TRUE) { return $return_html; } -function displayPager($_start, $_pageValue, $_pageCount, $_showAll = NULL) { - $showAll = ""; - if ($_showAll == 0) $showAll = "&showAll=0"; +function displayPager($_start, $_pageValue, $_pageCount, $_startParam='start', $_anchor='') { + // Build URL + $next = $_SERVER['PHP_SELF'] . '?' . $_startParam . '=' . ($_start + $_pageValue) . '' . $_anchor; + $previous = $_SERVER['PHP_SELF'] . '?' . $_startParam . '=' . ($_start - $_pageValue) . '' . $_anchor; ob_start(); ?> <table class="pager"> @@ -100,13 +101,13 @@ function displayPager($_start, $_pageValue, $_pageCount, $_showAll = NULL) { <td style="text-align:left"> <?php if ($_start >= $_pageValue) { - ?><a href="<?=$_SERVER['PHP_SELF'];?>?start=<?=$_start-$_pageValue;?><?=$showAll;?>"><< Previous Page</a><?php + ?><a href="<?=$previous;?>"><< Previous Page</a><?php } ?> </td> <td style="text-align:right"> <?php if (($_start + $_pageValue) < $_pageCount) { - ?><a href="<?=$_SERVER['PHP_SELF'];?>?start=<?=$_start+$_pageValue;?><?=$showAll;?>">Next Page >></a><?php + ?><a href="<?=$next;?>">Next Page >></a><?php } ?> </td> @@ -115,4 +116,92 @@ function displayPager($_start, $_pageValue, $_pageCount, $_showAll = NULL) { <?php return ob_get_clean(); } -?> + +function displayTable($contributions) { + echo '<table class="table table-hover table-condensed" cellspacing=0>' . + '<tr class="donorHeader">' . + '<td colspan="2" width="60%">Name and Message</td>' . + '<td width="20%">Date</td>' . + '<td width="20%" align="right">Amount</td>' . + '</tr>'; + // Get total number of items so we can know whether to page or not. + $friend = new Friend(); + $contribution = new Contribution(); + $fcObject = new FriendsContributions(); + foreach ($contributions as $contribution) { + $contrib = $contribution->getContributionObject(); + $friend = $contribution->getFriendObject(); + $anonymous = $friend->getIsAnonymous(); + if ($anonymous != 1 && ($friend->getFirstName() != '' || $friend->getLastName() != '')) + $name = $friend->getFirstName() . " " . $friend->getLastName(); + else $name = "Anonymous"; + $benefit = $friend->getIsBenefit(); + if ($benefit != 0) $benefit = " <img width='25' src=\"images/stars.png\">"; + else $benefit = ""; + $amount = $contrib->getAmount(); + if (strpos($amount, ".") == 0) { + $amount = $amount . ".00"; + } + $comment = stripslashes(strip_tags($contrib->getMessage())); + if (strlen($comment) > 80) { + if (strpos($comment, ' ') == 0) { + $commentArray = str_split($comment, 80); + $comment = 0; + foreach ($commentArray as $value) { + $comment .= $value . " "; + } + } + } + $date = strtotime("-1 year", strtotime($contrib->getDateExpired())); + $now = strtotime("now"); + if ($date <= $now) { + $date = date("Y-m-d", $date); + echo '<tr class="donorRecord">' . + '<td width="25">' . $benefit . '</td>' . + '<td width="59%"><b>' . $name . '</b><br/>' . $comment . '</td>' . + '<td>' . $date . '</td>' . + '<td align="right">$' . $amount . ' USD</td>' . + '</tr>'; + } + } + echo '</table>'; +} + +function getGravatarURL($email, $size=80, $default='mm') { + return "https://secure.gravatar.com/avatar/" . md5(strtolower(trim($email))) . "?d=" . $default . "&s=" . $size; +} + +function displayFriends($friendsContributions) { + require_once("/home/data/httpd/eclipse-php-classes/system/ldapconnection.class.php"); + $ldap = new LDAPConnection(); + $content = '<div class="row friend-images">'; + foreach ($friendsContributions as $contributions) { + $f = $contributions->getFriendObject(); + $name = ucfirst(strtolower($f->getFirstName())) . ' ' . ucfirst(strtolower($f->getLastName())); + $uid = $f->getLDAPUID(); + $email = ''; + if ($uid) { + $dn = $ldap->getDNFromUID($uid); + $email = $ldap->getLDAPAttribute($dn, 'mail'); + } + $content .= '<div class="col-md-6 col-sm-8, col-xs-12">'; + $content .= ' <div class="user-picture">'; + $content .= ' <img class="col-xm-24" typeof="foaf:Image" src="' . getGravatarURL($email) . '" alt="' . $name . '" title="' . $name . '" />'; + $content .= ' <span class="col-xs-24 donor-name">' . $name . '</span>'; + $content .= ' </div>'; + $content .= '</div>'; + } + $content .= '</div>'; + return $content; +} + +function getFriendsCount($get_anonymous=TRUE, $get_expired=TRUE, $donation_minimum=35) { + $friends = array(); + $App = new App(); + $sql = "SELECT COUNT(*) FROM friends_contributions as FC + LEFT JOIN friends AS F ON FC.friend_id = F.friend_id WHERE FC.amount >= " . $App->sqlSanitize($donation_minimum); + if (!$get_anonymous) $sql .= " AND F.is_anonymous = 0"; + if (!$get_expired) $sql .= " AND FC.date_expired > NOW()"; + $result = $App->eclipse_sql($sql); + return mysql_fetch_row($result)[0]; +} @@ -6,6 +6,10 @@ border:1px solid #888; } +.pager { + width: 100%; +} + .donorList .donorHeader td { background-image:url(/images/bar.jpg); font-weight:bold; @@ -201,3 +205,12 @@ div.donation-box div.background-purple { background-color: #FFBABA; } + +.friend-images > div { + height: 140px; +} + +.friend-images .user-picture { + text-align: center; + padding: 20px; +} |
