The following contributions have been generously made through PayPal to KDE using the donation form. If you want to contribute in other ways, look at the overview page to see all the ways you can contribute. We thank the donors listed below for their support!
Note this list does not include campaign specific donations like:
+
prepare("SELECT SUM(amount) as don, DATE_FORMAT(date,\"%Y-%m\") as month from donations WHERE YEAR(date) = :year GROUP BY month ORDER BY month DESC");
+ $stmt->execute([
+ 'year' => $year,
+ ]);
+
+ while ($row = $stmt->fetch()) {
+ $data[ $row["month"] ] = $row["don"];
+ } ?>
+
+
+
+
+ prepare("SELECT *, UNIX_TIMESTAMP(date) AS date_t FROM donations WHERE date >= ':year-:month_s-01' AND date <= ':year-:month_s-31 23:59:59' ORDER BY date DESC;");
+$count = $dbConnection->prepare("SELECT COUNT(*) WHERE date >= ':year-:month_s-01' AND date <= ':year-:month_s-31 23:59:59';");
for ($year = date("Y", time()); $year > 2001; $year--) {
echo "
$year
";
- echo "
";
- echo "";
+ echo "";
echo "
";
for ($month = 12; $month >=1 ; $month--) {
- $month < 10 ? $month_s = "0".$month : $month_s = $month;
- $query = "select *,unix_timestamp(date) as date_t from donations ";
- $query .= "where date >= '".$year."-".$month_s."-01' and ";
- $query .= "date <= '".$year."-".$month_s."-31 23:59:59' order by date desc";
- # echo " ".$query."
Note: donations that have been made in the past in US$ are converted to Euro on Aug 8th 2011 with a current exchange rate of 1 US$ = 0.7002 Euro. The original amount is listed.
";
echo " "
-?>
-
+ -->*/
+?>
The Randa Meetings 2015 Fundraiser has finished. Thank you everybody who supported us in this fundraiser. We didn't reach the set goal but we collected quite some money and that means there will be more KDE Sprints thanks to your support! See http://planet.kde.org for more information to come and go to the KDE donation page if you want to support us further.
[update] The fundraising campaign has been extended. We had intended to have ongoing updates from the Randa Meetings. However, developers were working rather than writing articles and blogposts. By extending the campaign, more information can be provided about what was actually accomplished.
For the sixth year, the KDE sprints in Randa, Switzerland will include key projects and top developers, working concurrently under one roof, free from noise and distractions.
The week-long Randa Meetings have been intense and productive, generating exceptional results. Expectations are high again this year. Most importantly, the Randa Meetings have produced significant breakthroughs that benefit all KDE software users and developers.
Randa Meetings participants donate their time to work on important KDE projects. The Randa Meetings organizers prepare meals and arrange breaks to maintain energy and effectiveness. Volunteer staff people take care of details that can interfere with the highly productive software development.
While the developers cover some of their own costs, there are still hard expenses like accommodation and travel to get the volunteer contributors to Randa. Having these expenses covered is a valuable incentive for Randa developers.
The theme of the 2015 Randa Meetings is Bring Touch to KDE. Participants will be working to expand touch capabilities in KDE applications for tablets, smartphones and other touch-enabled devices. These efforts will augment Plasma Mobile, the Free Mobile Platform announced on July 25th at Akademy 2015.
Some of the 2015 Randa projects are:
KDE Connect integrated communication for multiple devices
KDE and mobile integration with ownCloud user-controlled cloud storage and applications
Security and privacy
The organizers have included other top developers so that the Randa Meetings produce extraordinary results.
This year, the Randa Meetings fundraising campaign has been expanded to include all KDE sprints. In addition to the Randa Meetings, various KDE work teams gather for a few days throughout the year to make exceptional progress that simply would not be possible working only via the Internet and email. As one long-time Randa participant said:
In agile development, sprints are a very important element to push the project forward. While sprints can be done over the web, they are hindered by timezones, external distractions, availability of contributors, etc. In-person sprints are more productive as all the hindrances of the web meetings are eliminated and productivity is greatly enhanced overall.
The results of sprints are directly reflected in the quality of KDE software for users. Consequently, sprints and similar high impact get-togethers are one of
the primary uses of funds within KDE. This means that the KDE Community consistently offers the best of Free and Open technology for anyone to use.
To support development sprints, we have set a fundraising goal of €. Would you make a donation to support KDE development? Any amount will help and is appreciated. The fundraising campaign has been extended until September 30 so that the participants at the Randa Meetings can report on what they accomplished.
Donors can choose to receive a memorable thank you from the Randa Meetings. If you want to receive such a thank you memento, please send an email to fundraiser@kde.org. Include your name and full mailing address.
-
+--> */ ?>
€$total raised of a €$goal goal";
echo "
";
echo " "
-?>
-
+--> */ ?>
The Randa Meetings 2014 Fundraiser has finished. Thank you everybody who supported us in this fundraiser. We didn't reach the set goal but we collected quite some money and that means there is going to be Randa Meetings in August 2014. See http://planet.kde.org for more information to come and go to the KDE donation page if you want to support us further.
For the fifth year, the intense sprints in Randa, Switzerland will include key KDE projects and top developers, all working concurrently under one roof, isolated from noise and distractions.
Previous Randa Meetings have been concentrated and productive, generating exceptional results; organizers and participants expect the same and more this year. And the meetings have produced significant breakthroughs for KDE software users and developers.
Participants donate their time to help improve the software you love and this is why we need money to cover hard expenses like accommodation and travel to get the volunteer contributors to Randa. If you are not attending, you can still support the Randa Meetings by making a donation. As in the past, the Randa Meetings will benefit everyone who uses KDE software.
We have a fundraising goal of €. Please donate what you can to help make the Randa Meetings 2014 possible. This fund campaign ends on the 9th of July (one month before the beginning of the Randa Meetings 2014).
Read more about the Randa Meetings and the Fundraising on KDE.News where you can write your comments.
The costs for the Randa Meetings 2014 are composed of the following items:
International travel costs: EUR 10'000
Swiss train tickets: EUR 3'000
House rental: EUR 4'000
Expense allowance: EUR 2'000
Miscellaneous: EUR 1'000
Even if we don't reach our ambitious goal, the money received will be spent for the Randa Meetings (although with fewer participants) or other KDE purposes (like other sprints).
If you prefer to use international bank transfers please see this page.
Please write us an email so we can add you to the list of donors manually.
List of donations
Donnations");
+
// STEP 1: read POST data
// Reading POSTed data directly from $_POST causes serialization issues with array data in the POST.
// Instead, read raw POST data from the input stream.
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode ('=', $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
// read the IPN message sent from PayPal and prepend 'cmd=_notify-validate'
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc')) {
$get_magic_quotes_exists = true;
}
foreach ($myPost as $key => $value) {
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$req .= "&$key=$value";
}
if ($do_debug) {
$debug = fopen('/tmp/randa2014.txt', 'a+');
fwrite($debug, "verify: $req\n");
}
$ch = curl_init('https://www.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
// In wamp-like environments that do not come bundled with root authority certificates,
// please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set
// the directory path of the certificate as shown below:
// curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
if( !($res = curl_exec($ch)) ) {
if ($do_debug) {
fwrite($debug, "Error in calling curl_exec\n");
}
curl_close($ch);
exit;
}
curl_close($ch);
if (strcmp ($res, "VERIFIED") == 0) {
// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
if ($_POST['option_selection1'] === "Yes") {
$memo = $_POST['address_name'];
} else {
$memo = "";
}
- require("donations_auth.inc");
+ require("www_config.php");
// check the payment_status is Completed
if ( $payment_status != "Completed") {
if ($do_debug) {
fwrite($debug, "Unexpected payment status: ".$payment_status."\n");
}
die("Payment status is ".$payment_status);
}
// check that receiver_email is your Primary PayPal email
if ( $receiver_email != "kde-ev-board@kde.org") {
if ($do_debug) {
fwrite($debug, "Unexpected receiver email: ".$receiver_email."\n");
}
die("Unknown email");
}
// check that payment_amount/payment_currency are correct
if ( $payment_currency != "EUR" ) {
if ($do_debug) {
fwrite($debug, "Unexpected payment currency: ".$payment_currency."\n");
}
die("Unknown currency used");
}
// sanitise date
$date = strtotime( $_POST["payment_date"] );
if ( $date === false ) {
echo "Date parsing failed, assuming now()";
$date = time();
}
$date = date("Y-m-d H:i:s", $date);
// process payment
$query = "REPLACE into randameetings2014donations VALUES( '', \"".$date."\"";
$query .= ", ".$payment_amount.", \"".addslashes( $memo )."\"";
$query .= ",\"".$txn_id."\" )";
mysql_query($query, $sq);
if ($do_debug) {
fwrite( $debug, "\nQuery:".$query."\n" );
fwrite( $debug, "Error:".mysql_error()."\n" );
}
} else if (strcmp ($res, "INVALID") == 0) {
if ($do_debug) {
fwrite($debug, "Invalid transacion\n");
}
} else {
if ($do_debug) {
fwrite($debug, "Paypal returned neither VERIFIED nor INVALID\n");
fwrite($debug, $res."\n");
}
}
if ($do_debug) {
fwrite( $debug, "\n---------------------------------------\n" );
fclose($debug);
}
?>
Index: trunk/www/sites/www/fundraisers/randameetings2016/index.php
===================================================================
--- trunk/www/sites/www/fundraisers/randameetings2016/index.php (revision 1552589)
+++ trunk/www/sites/www/fundraisers/randameetings2016/index.php (revision 1552590)
@@ -1,686 +1,685 @@
KDE ‒ Randa Meetings 2016 Fundraising Campaign
prepare("SELECT *, UNIX_TIMESTAMP(date) AS date_t FROM randameetings2016donations ORDER BY date DESC;");
+ $res->execute();
$total = 0;
$count = 0;
$table = "";
- while ($row = mysql_fetch_array($q)) {
+ while ($row = $res->fetch()) {
$msg = htmlspecialchars($row["message"]);
if ($msg == "") {
$msg = "Anonymous donation";
}
$total += $row["amount"];
$count++;
$table.="
Thanks for donating to Randa Meetings 2016 Fundraising Campaign!
";
$alert.="
";
echo $alert;
}
?>
[update] The Randa Meetings 2016 Fundraiser has finished. Thank you everybody who supported us in this fundraiser. We didn't reach the set goal but we collected quite some money and that means there will be more KDE Sprints thanks to your support! See Planet KDE for more information to come and go to the KDE donation page if you want to support us further.
Randa Meetings 2016 ‒ KDE technology on every device!
Status
Total backers
€
Pledged of € goal
%
"; ?>
-
+ */ ?>
About this fundraising campaign
KDE is one of the biggest free software communities in the world and has been delivering high quality technology and spreading the principles of hacker culture for nearly two decades. KDE brings together users, developers, maintainers, translators and many more contributors from across six continents and over fifty countries, all of them working with the bonds and spirits of a truthful community.
KDE has a vision:
A world in which everyone has control over their digital life and enjoys freedom and privacy
Randa Meetings is the largest sprint organized by KDE. Roughly fifty KDE contributors meet yearly at Swiss alps to enjoy seven days of intense in-person work, pushing KDE technologies forward and discussing how to address the next-generation demands for software systems. One of the biggest challenges we've historically had for KDE technology is that we haven't completely reached the platforms where all of our users work. Aligned with our vision and pursuing the delivery of KDE technologies to every user, Randa Meetings 2016 ‒ which happened from 12th to 19th June ‒ was centered on bringing KDE technology on every device.
This fundraising campaign aims at supporting the continuity of KDE efforts, over the year, towards the following goal:
KDE technology on every device; be it in your pocket, in your bag or perched on your table; with the clear intention to start delivering software that will empower its users regardless of the platform they use
Different teams worked in this direction at Randa Meetings 2016 and are still working on it. Making software work on the platforms is not everything that's needed. We'll also need to have the infrastructure that makes sure this effort will have continuity over time, maintaining the quality our users deserve. This also means investing quite some effort in the KDE DevOps technology such as the CI (Continuous Integration) system for the different platforms and mechanisms to properly distribute binaries.
How are we doing that?
Randa Meetings 2016 activities and subsequent efforts were centered around three important topics:
Have a defined set of KDE Applications ported to specific platform of interest.
Come up with a reasonably generic plan to distribute on each platform.
Come up with a sustainability plan for keeping those applications and binaries up to date.
Here's a list of applications and platforms that were tackled by Randa Meetings 2016 participants: Marble on Android and Linux; Kdenlive on Windows; Artikulate on Android; Calligra on Android; KDE Frameworks on Android and Windows; Kate on OS X and Windows; KDevelop on OS X and Windows; Kube on Windows, OS X, and Android; KDE Connect on Windows; and LabPlot on OS X and Windows.
As for distribution efforts, we investigated the use of technologies such as AppImage and Flatpak to build distribution-independent bundled applications.
Thanks for donating to Randa Meetings 2017 Fundraising Campaign!
";
$alert.="
";
echo $alert;
}
?>
[update] The Randa Meetings 2017 Fundraiser has finished. Thank you everybody who supported us in this fundraiser. We didn't reach the set goal but we collected quite some money and that means there will be more KDE Sprints thanks to your support! Planet KDE for more information to come and go to the
Randa Meetings 2017 - Making KDE more accessible!
Status
Total backers
€
Pledged of € goal
%
"; ?>
About this fundraising campaign
Randa Meetings are annual KDE development sprints that have typically been dedicated to bringing our technology to different operating systems and form factors. This year, Randa Meetings are all about accessibility. But what do we mean by that?
At KDE, we understand technology is not always easy, and different conditions and abilities make our software harder to use. As we want Free Software to be universal, we must strive to put KDE apps into everybody's hands, including yours.
We want to focus on things that tend to fall by the wayside; problems that are annoying, but not for everyone.
How are we doing that?
During Randa Meetings 2017, we will gather in the quietness of the Swiss mountains and push several different projects in that direction. David Edmundson, for example, plans to spend his time on improving navigation on Plasma for those who prefer to use a keyboard over a mouse. This will help users with reduced mobility that find moving a mouse cumbersome. And Adriaan de Groot will be working on Calamares, an application that helps install operating systems. Adriaan will make Calamares more accessible to visually impaired users by improving integration with the Orca screenreader.
As one of the biggest Free Software communities in the world, KDE has been delivering high-quality technology and spreading the principles of hacker culture for nearly two decades. KDE brings together users, developers, maintainers, translators and many more contributors from across six continents and over fifty countries, all of them working with the bonds and spirits of a truthful community.
KDE has a vision:
A world in which everyone has control over their digital life and enjoys freedom and privacy.
To make Randa Meetings 2017 possible, we need your help. Please donate so we can make KDE more accessible for everyone.
Sprints are in person meetings and are really important for a team of hardworking volunteers around the world to focus their efforts and discuss technical matters around the project. The amount of output we get from the sprints is really worthwhile for all users of the software.", "https://community.kde.org/Sprints"); ?>
see this page.", "/community/donations/#moneytransfer"); ?>
an email so we can add you to the list of donors manually.", "mailto:kde-ev-campaign@kde.org"); ?>
i18n_noop("Make the World a Better Place! - KDE End of Year 2016 Fundraising"),
'cssFile' => '/css/announce.css'
]);
require('../../aether/header.php');
$site_root = "../../";
- require("donations_auth.inc");
+ require("www_config.php");
+
+ $countStmt = $dbConnection->prepare("SELECT COUNT(*) FROM yearend2016donations ORDER BY CREATED_AT DESC;");
+ $countStmt->execute();
+ $n = $countStmt->fetchColumn();
+
+ $res = $dbConnection->prepare("SELECT *, UNIX_TIMESTAMP(CREATED_AT) AS date_t FROM yearend2016donations ORDER BY CREATED_AT DESC;");
- $query = "select count(*) from yearend2016donations;";
- $q = mysql_query($query,$sq);
- echo mysql_error();
- $row = mysql_fetch_array($q);
- $index = $row[0];
-
- $query = "select *,unix_timestamp(date) as date_t from yearend2016donations order by date desc;";
- $q = mysql_query($query,$sq);
- echo mysql_error();
$total = 0;
$table = "
";
$table.="
".i18n_var("Date")."
".i18n_var("Amount")."
".i18n_var("Donor Name")."
";
- while ($row = mysql_fetch_array($q)) {
+ while ($row = $res->fetch()) {
$msg = htmlspecialchars($row["message"]);
if ($msg == "") {
$msg = "".i18n_var("Anonymous donation")."";
}
$amount = $row["amount"];
$table.="
";
$table.="
".$index."
";
$table.="
".date("jS F Y", $row["date_t"])."
";
$table.="
€ ".number_format($amount,2)."
";
$total += $amount;
$table.="
".$msg."
";
$table.="
";
$index--;
}
$table.="
";
$total = number_format($total, 0, ".", " ");
// This is select from select seems mysql specific?
$query = "select MIN(sum_amount) from ( select sum(amount) as sum_amount from yearend2016donations group by email order by sum_amount DESC LIMIT 9 ) as tops;";
- $q = mysql_query($query,$sq);
- echo mysql_error();
- $limit_amount = mysql_fetch_array($q)[0];
-
- $query = "select * from ( select email, sum(amount) as sum_amount from yearend2016donations group by email order by sum_amount ) as tops where sum_amount >= ".$limit_amount." order by sum_amount DESC;";
- $q = mysql_query($query,$sq);
- echo mysql_error();
+ $limitStmt = $dbConnection->prepare($query);
+ $limitStmt->execute();
+ $limit_amount = $limitStmt->fetchColumn();
+
+ $query = "select * from ( select email, sum(amount) as sum_amount from yearend2016donations group by email order by sum_amount ) as tops where sum_amount >= :limit_amount order by sum_amount DESC;";
+ $q = $dbConnection->prepare($query);
+ $q->execute(['limit_amount' => $limit_amount]);
$top9table = "
";
$top9table.="
".i18n_var("Total Amount")."
".i18n_var("Donor Name")."
";
$count = 0;
$last_amount = -1;
$last_was_same_amount = false;
- while ($row = mysql_fetch_array($q)) {
+ $q2 = $dbConnection->prepare('select distinct message as name from yearend2016donations where email=:email');
+ while ($row = $q->fetch()) {
$amount = $row["sum_amount"];
$email = $row['email'];
- $query2 = "select distinct message as name from yearend2016donations where email='".$email."';";
- $q2 = mysql_query($query2,$sq);
- echo mysql_error();
+ $q2->execute(['email' => $email]);
$donation_count = 0;
- while ($row2 = mysql_fetch_array($q2)) {
+ while ($row2 = $q2-fetch()) {
$msg = $row2["name"];
$donation_count++;
}
if ($donation_count !== 1) {
$msg = "".i18n_var("Anonymous donation")."";
}
if ($msg == "") {
$msg = "".i18n_var("Anonymous donation")."";
}
if ($amount == $last_amount) {
// Do not touch index
} else {
// Set index to correct value
$index = $count + 1;
}
$top9table.="
";
if ($count - $index == 0) {
// This means that the last entry is a 9 and is not tied with anyone else, so change the 9 * to a simple 9
$top9table = str_replace("
9 *
", "
9
", $top9table);
} else if (10 - $index == $count - $index + 1) {
// This means that the last entries are tied but they add up to 9 exactly so no random needed either
$top9table = str_replace("
".$index." *
", "
".$index."
", $top9table);
} else {
$top9table.=i18n_var("* %1 art print winners will be randomly selected out of these %2 donors", 10 - $index, $count - $index + 1);
}
?>
Make the World a Better Place! - KDE End of Year 2016 Fundraising
".i18n_var("%1 raised", "€ $total")."";
?>
KDE donation page if you would like to support us further.", "https://www.kde.org/community/donations/index.php");
}
?>
unique art prints in size A4. At our last conference, QtCon, we asked 46 prominent current and former KDE contributors (including core developers from Plasma, KDE Edu and Qt, board members, designers, community organizers, translators and more) to sign artwork created for KDE's 20th birthday. This is a one-time chance to get a nice and unique KDE print for your wall."); ?>
Sprints are in person meetings and are really important for a team of hard-working volunteers around the world to focus their efforts and discuss technical matters around the project. The amount of output we get from the sprints is really worthwhile for all users of the software.", "https://community.kde.org/Sprints"); ?>
see this page.", "/community/donations/others.php#moneytransfer"); ?>
an email so we can add you to the list of donors manually.", "mailto:kde-ev-campaign@kde.org"); ?>
getMessage() . " ";
+ die();
+}
?>
Index: trunk/www/sites/www/fundraisers/yearend2017/index.php
===================================================================
--- trunk/www/sites/www/fundraisers/yearend2017/index.php (revision 1552589)
+++ trunk/www/sites/www/fundraisers/yearend2017/index.php (revision 1552590)
@@ -1,376 +1,373 @@
KDE - End of Year 2017 Fundraising
KDE Powers You - You Can Power KDE, Too!
Technology and software developed by KDE powers devices and empowers people all around the world. By donating to our end-of-year fundraiser, you will play a part in recharging KDE!
As you probably already know, KDE software is free for everyone to use and modify. We would like to keep it that way. Help us build a world in which everyone has control over their digital life and enjoys freedom and privacy.
If you support our campaign, you will directly impact the future of KDE. Donations are also a great way to show gratitude to your favorite developers. And if you‘ve always wanted to contribute to FOSS, but never had the time, a donation
also counts as a contribution!
But wait...what are we going to do with your money?
Power community growth and KDE promotion You will contribute to the organization of Akademy, our biggest community event. Thanks to you, our community members will be able to travel to conferences and give talks about
KDE software, or set up booths at tech events around the globe to present our technology.
Empower people by teaching and mentoring them Your donations will make it easier for us to organize events like Season of KDE, where we mentor students and new FOSS contributors.
Boost our developers to make even better software Is Plasma your favorite desktop environment? What about other software developed by KDE - do you use Marble Maps, Kdenlive, Dolphin, digiKam, or KMail? Your donations will
help us make that software better. We'll be able to work on it together during our developer sprints, such as Randa Meetings.
Power our websites and infrastructure With your help, we will be able to pay for hosting and administration expenses, as well as finish the redesign project of our main KDE website.
Notes
PayPal is the default transaction method for this fundraiser. If you prefer to use international bank transfers please see this page.
If there are any problems with your donation, or if you have any additional questions, contact us at kde-ev-campaign@kde.org. Put "KDE End of Year 2017 Fundraiser" in the subject of your email.
Your donation can be anonymous. You can set this in the Donate dialog by answering "No" to "Show my name on the donors list".
Multiple donations from the same account will be listed and treated as separate donations.
prepare("SELECT *, UNIX_TIMESTAMP(CREATED_AT) AS date_t FROM endofyear2017donations ORDER BY CREATED_AT DESC;") or die($dbConnection->error);
- $stmt->execute();
- $result = $stmt->get_result();
- $stmt->close();
- $count = $result->num_rows;
- ?>
- prepare("SELECT COUNT(*) FROM endofyear2017donations ORDER BY CREATED_AT DESC;");
+ $countStmt->execute();
+ $n = $countStmt->fetchColumn();
+
+ $res = $dbConnection->prepare("SELECT *, UNIX_TIMESTAMP(CREATED_AT) AS date_t FROM endofyear2017donations ORDER BY CREATED_AT DESC;");
+ $res->execute();
$total = 0;
- $n = $count;
$table = "";
- while ($row = mysqli_fetch_array($result)) {
+ while ($row = $res->fetch()) {
$name = htmlspecialchars($row["donor_name"]);
if ($name == "") {
$name = "Anonymous donation";
}
$total += $row["amount"];
$table.="
KDE Plasma 5.16.90 Released Thursday, 19 September 2019
Today KDE releases a new beta release of KDE Plasma 5, versioned 5.16.90Read full announcement
KDE Releases Frameworks 5.62.0 September 14, 2019
This release is part of a series of planned monthly releases
making improvements available to developers in a quick and predictable
manner. Read full announcement
KDE Plasma 5.12.9 LTS Released September 10, 2019
Today KDE releases a new Long Term Support release of KDE Plasma 5, versioned 5.12.9.Read full announcement
KDE Ships KDE Applications 19.08.1 September 5, 2019