X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttOrgHelper.class.php;h=461c751def70e4745d2887a1cbf3a7d829dd6794;hb=0eec39b28e4c408f92f9f99ede99e68640ef94d0;hp=2cf045060e4926a10ece46a708ca65be90baf387;hpb=8492dc052ad85039e0bbe11c7c3e1b8554907f64;p=timetracker.git diff --git a/WEB-INF/lib/ttOrgHelper.class.php b/WEB-INF/lib/ttOrgHelper.class.php index 2cf04506..461c751d 100644 --- a/WEB-INF/lib/ttOrgHelper.class.php +++ b/WEB-INF/lib/ttOrgHelper.class.php @@ -62,4 +62,62 @@ class ttOrgHelper { } return false; } + + // The getInactiveOrgs is a maintenance function that returns an array of inactive organization ids (max 10 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 where org_id > 0 group by org_id order by last_access, org_id) as t". + " where last_access is null or last_access < $cutoff_timestamp limit 10"; // Max 10 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; + } + + // deleteOrg deletes data for the entire organization from database permanently. + static function deleteOrg($org_id) { + // Go one table at a time and remove all records with matching org_id. + // The order is backwards to import (see ttOrgImportHelper). Remove groups last. + // This leaves us with something partially working if an error occurs. + $mdb2 = getConnection(); + + $tables = array( + 'tt_config', + 'tt_cron', + 'tt_fav_reports', + 'tt_monthly_quotas', + 'tt_predefined_expenses', + 'tt_expense_items', + 'tt_custom_field_log', + 'tt_custom_field_options', + 'tt_custom_fields', + 'tt_log', + 'tt_timesheets', // TODO: check if order is correct. After doing export. + 'tt_invoices', + 'tt_user_project_binds', + 'tt_users', + 'tt_client_project_binds', + 'tt_clients', + 'tt_project_task_binds', + 'tt_projects', + 'tt_tasks', + 'tt_roles', + 'tt_groups' + ); + foreach($tables as $table) { + $sql = "delete from $table where org_id = $org_id"; + $affected = $mdb2->exec($sql); + if (is_a($affected, 'PEAR_Error')) return false; + } + return true; + } }