From: Nik Okuntseff Date: Fri, 16 Nov 2018 21:18:43 +0000 (+0000) Subject: More progress with db maintenance code to support subgroups. X-Git-Tag: timetracker_1.19-1~638 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=3adb3c8c419ca1a01edac5fa62d5f88898415bfa;p=timetracker.git More progress with db maintenance code to support subgroups. --- diff --git a/WEB-INF/lib/ttOrgHelper.class.php b/WEB-INF/lib/ttOrgHelper.class.php index 2cf04506..d93e2591 100644 --- a/WEB-INF/lib/ttOrgHelper.class.php +++ b/WEB-INF/lib/ttOrgHelper.class.php @@ -62,4 +62,24 @@ class ttOrgHelper { } return false; } + + // The getInactiveOrgs is a maintenance function that returns an array of inactive organization ids (max 5 for now). + static function getInactiveOrgs() { + $inactive_orgs = array(); + $mdb2 = getConnection(); + + // Determine inactive organizations by querying the database for max access timestamp for its users. + $cutoff_timestamp = $mdb2->quote(date('Y-m-d', strtotime('-1 year'))); + $sql = "select org_id from". + " (select max(accessed) as last_access, org_id from tt_users group by org_id order by last_access, org_id) as t". + " where last_access is null or last_access < $cutoff_timestamp limit 5"; // Max 5 orgs at a time for now... + $res = $mdb2->query($sql); + if (!is_a($res, 'PEAR_Error')) { + while ($val = $res->fetchRow()) { + $inactive_orgs[] = $val['org_id']; + } + return $inactive_orgs; + } + return false; + } } diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index 8529b53c..62661085 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.14.4433 | Copyright © Anuko | +  Anuko Time Tracker 1.18.14.4434 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/dbinstall.php b/dbinstall.php index f81e31f7..f02e9021 100644 --- a/dbinstall.php +++ b/dbinstall.php @@ -32,6 +32,7 @@ require_once('initialize.php'); import('ttUserHelper'); import('ttTaskHelper'); import('ttRoleHelper'); +import('ttOrgHelper'); // setChange - executes an sql statement. TODO: rename this function to something better. // Better yet, redo the entire thing and make an installer. @@ -1004,13 +1005,13 @@ if ($_POST) { if ($_POST["cleanup"]) { $mdb2 = getConnection(); - $inactive_groups = ttTeamHelper::getInactiveGroups(); + $inactive_groups = ttOrgHelper::getInactiveOrgs(); $count = count($inactive_groups); print "$count inactive groups found...
\n"; for ($i = 0; $i < $count; $i++) { print " deleting group ".$inactive_groups[$i]."
\n"; - $res = ttTeamHelper::delete($inactive_groups[$i]); + $res = ttTeamHelper::delete($inactive_groups[$i]); // TODO: rewrite this to delete subgroups, too. } setChange("OPTIMIZE TABLE tt_client_project_binds");