From 96e8b431e4b1dadd919b831e4ae184d29ebf1235 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Mon, 15 Apr 2019 15:52:27 +0000 Subject: [PATCH] Wrote ttGroupHelper::deleteGroupFiles() function. --- WEB-INF/lib/ttFileHelper.class.php | 2 - WEB-INF/lib/ttGroupHelper.class.php | 83 +++++++++++++++++++++++++++++ WEB-INF/lib/ttOrgHelper.class.php | 2 +- WEB-INF/templates/footer.tpl | 2 +- 4 files changed, 85 insertions(+), 4 deletions(-) diff --git a/WEB-INF/lib/ttFileHelper.class.php b/WEB-INF/lib/ttFileHelper.class.php index c69439d6..45b5b237 100644 --- a/WEB-INF/lib/ttFileHelper.class.php +++ b/WEB-INF/lib/ttFileHelper.class.php @@ -275,8 +275,6 @@ class ttFileHelper { } // deleteEntityFiles - deletes all files associated with an entity. - // TODO: decide whether deleteGroupFiles and deleteOrgFiles should be - // separate functions. function deleteEntityFiles($entity_id, $entity_type) { global $i18n; diff --git a/WEB-INF/lib/ttGroupHelper.class.php b/WEB-INF/lib/ttGroupHelper.class.php index 83f607a1..92d85a6e 100644 --- a/WEB-INF/lib/ttGroupHelper.class.php +++ b/WEB-INF/lib/ttGroupHelper.class.php @@ -164,6 +164,9 @@ class ttGroupHelper { // Now do actual work with all entities. + // Delete group files. + ttGroupHelper::deleteGroupFiles($group_id); + // Some things cannot be marked deleted as we don't have the status field for them. // Just delete such things (until we have a better way to deal with them). $tables_to_delete_from = array( @@ -717,4 +720,84 @@ class ttGroupHelper { } return $result; } + + // deleteGroupFiles deletes files attached to all entities in the entire group. + // Note that it is a permanent delete, not "mark deleted" by design. + static function deleteGroupFiles($group_id) { + + global $user; + $org_id = $user->org_id; + + // Delete all group files from the database. + $mdb2 = getConnection(); + $sql = "delete from tt_files where org_id = $org_id and group_id = $group_id"; + $affected = $mdb2->exec($sql); + if (is_a($affected, 'PEAR_Error')) + return false; + + if ($affected == 0) return true; // Do not call file storage utility. + + // Try to make a call to file storage facility. + if (!defined('FILE_STORAGE_URI')) return true; // Nothing to do. + + $deletegroupfiles_uri = FILE_STORAGE_URI.'deletegroupfiles'; + + // Obtain site id. + $sql = "select param_value as site_id from tt_site_config where param_name = 'locker_id'"; + $res = $mdb2->query($sql); + $val = $res->fetchRow(); + $site_id = $val['site_id']; + if (!$site_id) return true; // Nothing to do. + + // Obtain site key. + $sql = "select param_value as site_key from tt_site_config where param_name = 'locker_key'"; + $res = $mdb2->query($sql); + $val = $res->fetchRow(); + $site_key = $val['site_key']; + if (!$site_key) return true; // Can't continue without site key. + + // Obtain org key. + $sql = "select group_key as org_key from tt_groups where id = $org_id"; + $res = $mdb2->query($sql); + $val = $res->fetchRow(); + $org_key = $val['org_key']; + if (!$org_key) return true; // Can't continue without org key. + + // Obtain group key. + $sql = "select group_key as group_key from tt_groups where id = $group_id"; + $res = $mdb2->query($sql); + $val = $res->fetchRow(); + $group_key = $val['group_key']; + if (!$group_key) return true; // Can't continue without group key. + + $curl_fields = array('site_id' => $site_id, + 'site_key' => $site_key, + 'org_id' => $org_id, + 'org_key' => $org_key, + 'group_id' => $group_id, + 'group_key' => $group_key); + + // url-ify the data for the POST. + foreach($curl_fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } + $fields_string = rtrim($fields_string, '&'); + + // Open connection. + $ch = curl_init(); + + // Set the url, number of POST vars, POST data. + curl_setopt($ch, CURLOPT_URL, $deletegroupfiles_uri); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + // Execute a post request. + $result = curl_exec($ch); + + // Close connection. + curl_close($ch); + + // Many things can go wrong with a remote call to file storage facility. + // By design, we ignore such errors. + return true; + } } diff --git a/WEB-INF/lib/ttOrgHelper.class.php b/WEB-INF/lib/ttOrgHelper.class.php index b79b1bb2..1893379d 100644 --- a/WEB-INF/lib/ttOrgHelper.class.php +++ b/WEB-INF/lib/ttOrgHelper.class.php @@ -161,7 +161,7 @@ class ttOrgHelper { $res = $mdb2->query($sql); $val = $res->fetchRow(); $org_key = $val['org_key']; - if (!$site_key) return true; // Can't continue without org key. + if (!$org_key) return true; // Can't continue without org key. $curl_fields = array('site_id' => $site_id, 'site_key' => $site_key, diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index a314a181..5cc75507 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.65.4942 | Copyright © Anuko | +  Anuko Time Tracker 1.18.65.4943 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} -- 2.20.1