From 44f4c9374d80b4d850b2d3dac7866da587e29fe8 Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Wed, 11 Sep 2019 09:58:13 +0300 Subject: [PATCH] [DATABASE] Use time intervals in a SQL standard compliant way --- plugins/Nodeinfo/actions/nodeinfo_2_0.php | 6 ++-- plugins/OStatus/classes/FeedSub.php | 2 +- plugins/OStatus/scripts/rm_bad_feedsubs.php | 38 +++++++++++---------- scripts/resend_confirm_address.php | 16 ++++++++- 4 files changed, 39 insertions(+), 23 deletions(-) diff --git a/plugins/Nodeinfo/actions/nodeinfo_2_0.php b/plugins/Nodeinfo/actions/nodeinfo_2_0.php index e76f545809..f49b9462ce 100644 --- a/plugins/Nodeinfo/actions/nodeinfo_2_0.php +++ b/plugins/Nodeinfo/actions/nodeinfo_2_0.php @@ -331,12 +331,12 @@ class Nodeinfo_2_0Action extends Action SELECT COUNT(DISTINCT profile_id) AS active_users_count FROM ( SELECT profile_id FROM notice - WHERE notice.created >= (CURRENT_TIMESTAMP - INTERVAL {$days} DAY) AND notice.is_local = 1 + WHERE notice.created >= (CURRENT_TIMESTAMP - INTERVAL '{$days}' DAY) AND notice.is_local = 1 UNION ALL SELECT user_id FROM fave INNER JOIN {$userTable} ON fave.user_id = {$userTable}.id - WHERE fave.created >= (CURRENT_TIMESTAMP - INTERVAL {$days} DAY) + WHERE fave.created >= (CURRENT_TIMESTAMP - INTERVAL '{$days}' DAY) UNION ALL - SELECT id FROM {$userTable} WHERE {$userTable}.created >= (CURRENT_TIMESTAMP - INTERVAL {$days} DAY) + SELECT id FROM {$userTable} WHERE {$userTable}.created >= (CURRENT_TIMESTAMP - INTERVAL '{$days}' DAY) ) AS source"; $activeUsersCount = new DB_DataObject(); diff --git a/plugins/OStatus/classes/FeedSub.php b/plugins/OStatus/classes/FeedSub.php index 07a9d6b40f..b77f30e277 100644 --- a/plugins/OStatus/classes/FeedSub.php +++ b/plugins/OStatus/classes/FeedSub.php @@ -366,7 +366,7 @@ class FeedSub extends Managed_DataObject public static function renewalCheck() { $fs = new FeedSub(); - $fs->whereAdd('sub_end IS NOT NULL AND sub_end < (CURRENT_TIMESTAMP + INTERVAL 1 DAY)'); + $fs->whereAdd("sub_end IS NOT NULL AND sub_end < (CURRENT_TIMESTAMP + INTERVAL '1' DAY)"); // find can be both false and 0, depending on why nothing was found if (!$fs->find()) { throw new NoResultException($fs); diff --git a/plugins/OStatus/scripts/rm_bad_feedsubs.php b/plugins/OStatus/scripts/rm_bad_feedsubs.php index ce1698a60c..81d6eb1bda 100755 --- a/plugins/OStatus/scripts/rm_bad_feedsubs.php +++ b/plugins/OStatus/scripts/rm_bad_feedsubs.php @@ -1,24 +1,26 @@ #!/usr/bin/env php . +// This file is part of GNU social - https://www.gnu.org/software/social +// +// GNU social is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// GNU social is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with GNU social. If not, see . + +/** + * @copyright 2010 StatusNet, Inc. + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ -/* +/* * Run this from INSTALLDIR/plugins/OStatus/scripts */ @@ -53,7 +55,7 @@ echo "Looking for feed subscriptions with dirty no good huburis...\n"; $feedsub = new FeedSub(); $feedsub->sub_state = 'subscribe'; -$feedsub->whereAdd('created < DATE_SUB(NOW(), INTERVAL 1 HOUR)'); +$feedsub->whereAdd("created < (CURRENT_TIMESTAMP - INTERVAL '1' HOUR)"); $feedsub->find(); $cnt = 0; diff --git a/scripts/resend_confirm_address.php b/scripts/resend_confirm_address.php index 0c7b54c11f..449d1b1edf 100755 --- a/scripts/resend_confirm_address.php +++ b/scripts/resend_confirm_address.php @@ -1,5 +1,19 @@ #!/usr/bin/env php . define('INSTALLDIR', dirname(__DIR__)); define('PUBLICDIR', INSTALLDIR . DIRECTORY_SEPARATOR . 'public'); @@ -17,7 +31,7 @@ all lingering confirmations. NOTE: You probably want to do something like this to your database first so only relatively fresh accounts get resent this: - DELETE FROM confirm_address WHERE modified < DATE_SUB(NOW(), INTERVAL 1 month); + DELETE FROM confirm_address WHERE modified < (CURRENT_TIMESTAMP - INTERVAL '1' MONTH); Options: