From e4049d27937d94acb0502ba98d907ad3c0552551 Mon Sep 17 00:00:00 2001
From: Unknown <me@jeroened.be>
Date: Mon, 6 Aug 2018 09:30:17 +0200
Subject: [PATCH 1/4] Converting timezone in admin queues

---
 mod/admin.php | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/mod/admin.php b/mod/admin.php
index 09a04ae02c..9ef4c31aed 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -746,11 +746,21 @@ function admin_page_federation(App $a)
 function admin_page_queue(App $a)
 {
 	// get content from the queue table
+	// PLEASE REVIEW (not 100% sure about my code)
+	$statement = DBA::Select('`queue` AS `q`, `contact` AS `c`',
+		[ '`c`.`name`', '`c`.`nurl`', '`q`.`id`', '`q`.`network`', "CONVERT_TZ(`q`.`created`, 'UTC' " . Config::get('system', 'default_timezone') . ') as created', "CONVERT_TZ(`q`.`last`, 'UTC', " . Config::get('system', 'default_timezone') . "') as last" ],
+		'`c`.`id`' => '`q`.`cid`',
+		['order'=> ['`q`.`cid`, `q`.`created`']]
+	);
+	$r = DBA::toArray($statement);
+
+	/*
+	// Leaving this one here for the code review as well as backup
 	$r = q("SELECT `c`.`name`, `c`.`nurl`, `q`.`id`, `q`.`network`, `q`.`created`, `q`.`last`
 			FROM `queue` AS `q`, `contact` AS `c`
 			WHERE `c`.`id` = `q`.`cid`
 			ORDER BY `q`.`cid`, `q`.`created`;");
-
+	*/
 	$t = get_markup_template('admin/queue.tpl');
 	return replace_macros($t, [
 		'$title' => L10n::t('Administration'),
@@ -781,7 +791,7 @@ function admin_page_queue(App $a)
 function admin_page_workerqueue(App $a)
 {
 	// get jobs from the workerqueue table
-	$statement = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
+	$statement = DBA::select('workerqueue', ['id', 'parameter', "CONVERT_TZ(created', 'UTC', " . Config::get('system', 'default_timezone') . "') as created", 'priority'], ['done' => 0], ['order'=> ['priority']]);
 	$r = DBA::toArray($statement);
 
 	foreach ($r as $key => $rr) {

From 480d573fc50fc69aea5df593fd24c797bc4ab23a Mon Sep 17 00:00:00 2001
From: Unknown <me@jeroened.be>
Date: Mon, 6 Aug 2018 12:30:43 +0200
Subject: [PATCH 2/4] converting timezones in php

---
 mod/admin.php | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/mod/admin.php b/mod/admin.php
index 9ef4c31aed..9be75f6f90 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -746,21 +746,25 @@ function admin_page_federation(App $a)
 function admin_page_queue(App $a)
 {
 	// get content from the queue table
-	// PLEASE REVIEW (not 100% sure about my code)
+	/*
+	//todo: convert q() to DBA::Select()
 	$statement = DBA::Select('`queue` AS `q`, `contact` AS `c`',
 		[ '`c`.`name`', '`c`.`nurl`', '`q`.`id`', '`q`.`network`', "CONVERT_TZ(`q`.`created`, 'UTC' " . Config::get('system', 'default_timezone') . ') as created', "CONVERT_TZ(`q`.`last`, 'UTC', " . Config::get('system', 'default_timezone') . "') as last" ],
 		'`c`.`id`' => '`q`.`cid`',
 		['order'=> ['`q`.`cid`, `q`.`created`']]
 	);
 	$r = DBA::toArray($statement);
-
-	/*
-	// Leaving this one here for the code review as well as backup
+	*/
+	
 	$r = q("SELECT `c`.`name`, `c`.`nurl`, `q`.`id`, `q`.`network`, `q`.`created`, `q`.`last`
 			FROM `queue` AS `q`, `contact` AS `c`
 			WHERE `c`.`id` = `q`.`cid`
 			ORDER BY `q`.`cid`, `q`.`created`;");
-	*/
+
+	foreach ($r as $key => $rr) {
+		$r[$key]['created'] = DateTimeFormat::local($rr['created']);
+		$r[$key]['last'] = DateTimeFormat::local($rr['last']);
+	}
 	$t = get_markup_template('admin/queue.tpl');
 	return replace_macros($t, [
 		'$title' => L10n::t('Administration'),
@@ -791,12 +795,13 @@ function admin_page_queue(App $a)
 function admin_page_workerqueue(App $a)
 {
 	// get jobs from the workerqueue table
-	$statement = DBA::select('workerqueue', ['id', 'parameter', "CONVERT_TZ(created', 'UTC', " . Config::get('system', 'default_timezone') . "') as created", 'priority'], ['done' => 0], ['order'=> ['priority']]);
+	$statement = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
 	$r = DBA::toArray($statement);
 
 	foreach ($r as $key => $rr) {
 		// fix GH-5469. ref: src/Core/Worker.php:217
 		$r[$key]['parameter'] = Arrays::recursiveImplode(json_decode($rr['parameter'], true), ': ');
+		$r[$key]['created'] = DateTimeFormat::local($rr['created']);
 	}
 
 	$t = get_markup_template('admin/workerqueue.tpl');

From 5c254ee401ed5cc77d11648d1e2c6e9223188e99 Mon Sep 17 00:00:00 2001
From: Unknown <me@jeroened.be>
Date: Tue, 7 Aug 2018 10:18:59 +0200
Subject: [PATCH 3/4] Adjusted implementation to a better one (thanks to
 Michael Vogel)

---
 mod/admin.php | 38 +++++++++++++++++---------------------
 1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/mod/admin.php b/mod/admin.php
index 9be75f6f90..153b105063 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -746,25 +746,19 @@ function admin_page_federation(App $a)
 function admin_page_queue(App $a)
 {
 	// get content from the queue table
-	/*
-	//todo: convert q() to DBA::Select()
-	$statement = DBA::Select('`queue` AS `q`, `contact` AS `c`',
-		[ '`c`.`name`', '`c`.`nurl`', '`q`.`id`', '`q`.`network`', "CONVERT_TZ(`q`.`created`, 'UTC' " . Config::get('system', 'default_timezone') . ') as created', "CONVERT_TZ(`q`.`last`, 'UTC', " . Config::get('system', 'default_timezone') . "') as last" ],
-		'`c`.`id`' => '`q`.`cid`',
-		['order'=> ['`q`.`cid`, `q`.`created`']]
-	);
-	$r = DBA::toArray($statement);
-	*/
-	
-	$r = q("SELECT `c`.`name`, `c`.`nurl`, `q`.`id`, `q`.`network`, `q`.`created`, `q`.`last`
-			FROM `queue` AS `q`, `contact` AS `c`
-			WHERE `c`.`id` = `q`.`cid`
-			ORDER BY `q`.`cid`, `q`.`created`;");
+	$entries = DBA::p("SELECT `contact`.`name`, `contact`.`nurl`,
+                `queue`.`id`, `queue`.`network`, `queue`.`created`, `queue`.`last`
+                FROM `queue` INNER JOIN `contact` ON `contact`.`id` = `queue`.`cid`
+                ORDER BY `queue`.`cid`, `queue`.`created`");
 
-	foreach ($r as $key => $rr) {
-		$r[$key]['created'] = DateTimeFormat::local($rr['created']);
-		$r[$key]['last'] = DateTimeFormat::local($rr['last']);
+	$r = [];
+	while ($entry = DBA::fetch($entries)) {
+		$entry['created'] = DateTimeFormat::local($entry['created']);
+		$entry['last'] = DateTimeFormat::local($entry['last']);
+		$r[] = $entry;
 	}
+	DBA::close($entries);
+
 	$t = get_markup_template('admin/queue.tpl');
 	return replace_macros($t, [
 		'$title' => L10n::t('Administration'),
@@ -795,13 +789,15 @@ function admin_page_queue(App $a)
 function admin_page_workerqueue(App $a)
 {
 	// get jobs from the workerqueue table
-	$statement = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
+	$entries = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
 	$r = DBA::toArray($statement);
 
-	foreach ($r as $key => $rr) {
+	$r = [];
+	while ($entry = DBA::fetch($entries)) {
 		// fix GH-5469. ref: src/Core/Worker.php:217
-		$r[$key]['parameter'] = Arrays::recursiveImplode(json_decode($rr['parameter'], true), ': ');
-		$r[$key]['created'] = DateTimeFormat::local($rr['created']);
+		$entry['parameter'] = Arrays::recursiveImplode(json_decode($entry['parameter'], true), ': ');
+		$entry['created'] = DateTimeFormat::local($entry['created']);
+		$r[] = $entry;
 	}
 
 	$t = get_markup_template('admin/workerqueue.tpl');

From 62e53698dfe113cd27e8ef8b3a38262cc5ff9f05 Mon Sep 17 00:00:00 2001
From: Unknown <me@jeroened.be>
Date: Tue, 7 Aug 2018 12:25:55 +0200
Subject: [PATCH 4/4] Doing some laundry

---
 mod/admin.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mod/admin.php b/mod/admin.php
index 153b105063..b2f84d0729 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -790,7 +790,6 @@ function admin_page_workerqueue(App $a)
 {
 	// get jobs from the workerqueue table
 	$entries = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], ['done' => 0], ['order'=> ['priority']]);
-	$r = DBA::toArray($statement);
 
 	$r = [];
 	while ($entry = DBA::fetch($entries)) {
@@ -799,6 +798,7 @@ function admin_page_workerqueue(App $a)
 		$entry['created'] = DateTimeFormat::local($entry['created']);
 		$r[] = $entry;
 	}
+	DBA::close($entries);
 
 	$t = get_markup_template('admin/workerqueue.tpl');
 	return replace_macros($t, [