From 434a81099f4456d0679755335e31aaf74ad29ecd Mon Sep 17 00:00:00 2001 From: Nik Okuntseff <support@anuko.com> Date: Thu, 28 Mar 2019 13:34:46 +0000 Subject: [PATCH] Work in progress on attachment delete. --- WEB-INF/lib/ttFileHelper.class.php | 19 +++++++ WEB-INF/resources/en.lang.php | 2 + WEB-INF/templates/file_delete.tpl | 18 +++++++ WEB-INF/templates/footer.tpl | 2 +- file_delete.php | 82 ++++++++++++++++++++++++++++++ 5 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 WEB-INF/templates/file_delete.tpl create mode 100644 file_delete.php diff --git a/WEB-INF/lib/ttFileHelper.class.php b/WEB-INF/lib/ttFileHelper.class.php index f74e77a3..80c9fd31 100644 --- a/WEB-INF/lib/ttFileHelper.class.php +++ b/WEB-INF/lib/ttFileHelper.class.php @@ -237,4 +237,23 @@ class ttFileHelper { } return $result; } + + // get - obtains file details from local database. + static function get($id) { + global $user; + $mdb2 = getConnection(); + + $group_id = $user->getGroup(); + $org_id = $user->org_id; + + $sql = "select id, remote_id, file_key, entity_type, entity_id, file_name, description, status from tt_files". + " where id = $id and group_id = $group_id and org_id = $org_id and (status = 0 or status = 1)"; + $res = $mdb2->query($sql); + if (!is_a($res, 'PEAR_Error')) { + $val = $res->fetchRow(); + if ($val && $val['id']) + return $val; + } + return false; + } } diff --git a/WEB-INF/resources/en.lang.php b/WEB-INF/resources/en.lang.php index f1fc72aa..ad92ce9c 100644 --- a/WEB-INF/resources/en.lang.php +++ b/WEB-INF/resources/en.lang.php @@ -328,6 +328,8 @@ $i18n_key_words = array( 'title.add_template' => 'Adding Template', 'title.edit_template' => 'Editing Template', 'title.delete_template' => 'Deleting Template', +'title.edit_file' => 'Editing File', +'title.delete_file' => 'Deleting File', // Section for common strings inside combo boxes on forms. Strings shared between forms shall be placed here. // Strings that are used in a single form must go to the specific form section. diff --git a/WEB-INF/templates/file_delete.tpl b/WEB-INF/templates/file_delete.tpl new file mode 100644 index 00000000..81107daa --- /dev/null +++ b/WEB-INF/templates/file_delete.tpl @@ -0,0 +1,18 @@ +{$forms.fileDeleteForm.open} +<table cellspacing="4" cellpadding="7" border="0"> + <tr> + <td> + <table cellspacing="0" cellpadding="0" border="0"> + <tr> + <td colspan="2" align="center"><b>{$file_to_delete|escape}</b></td> + </tr> + <tr><td colspan="2" align="center"> </td></tr> + <tr> + <td align="right">{$forms.fileDeleteForm.btn_delete.control} </td> + <td align="left"> {$forms.fileDeleteForm.btn_cancel.control}</td> + </tr> + </table> + </td> + </tr> +</table> +{$forms.fileDeleteForm.close} diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index d5c62e90..1df6b86b 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@ <br> <table cellspacing="0" cellpadding="4" width="100%" border="0"> <tr> - <td align="center"> Anuko Time Tracker 1.18.61.4889 | Copyright © <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> | + <td align="center"> Anuko Time Tracker 1.18.61.4890 | Copyright © <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> | <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> | <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> | <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a> diff --git a/file_delete.php b/file_delete.php new file mode 100644 index 00000000..50b3e0e9 --- /dev/null +++ b/file_delete.php @@ -0,0 +1,82 @@ +<?php +// +----------------------------------------------------------------------+ +// | Anuko Time Tracker +// +----------------------------------------------------------------------+ +// | Copyright (c) Anuko International Ltd. (https://www.anuko.com) +// +----------------------------------------------------------------------+ +// | LIBERAL FREEWARE LICENSE: This source code document may be used +// | by anyone for any purpose, and freely redistributed alone or in +// | combination with other software, provided that the license is obeyed. +// | +// | There are only two ways to violate the license: +// | +// | 1. To redistribute this code in source form, with the copyright +// | notice or license removed or altered. (Distributing in compiled +// | forms without embedded copyright notices is permitted). +// | +// | 2. To redistribute modified versions of this code in *any* form +// | that bears insufficient indications that the modifications are +// | not the work of the original author(s). +// | +// | This license applies to this document only, not any other software +// | that it may be combined with. +// | +// +----------------------------------------------------------------------+ +// | Contributors: +// | https://www.anuko.com/time_tracker/credits.htm +// +----------------------------------------------------------------------+ + +require_once('initialize.php'); +import('form.Form'); +import('ttFileHelper'); +import('ttProjectHelper'); + +// Access checks. +$cl_file_id = (int)$request->getParameter('id'); +$file = ttFileHelper::get($cl_file_id); +if (!$file) { + header('Location: access_denied.php'); + exit(); +} +// Entity-specific checks. +if ($file['entity_type'] == 'project') { + if (!ttAccessAllowed('manage_projects') || !ttProjectHelper::get($file['entity_id'])) { + header('Location: access_denied.php'); + exit(); + } +} +if ($file['entity_type'] != 'project') { + // Currently, files are only associated with projects. + // Improve access checks when the feature evolves. + header('Location: access_denied.php'); + exit(); +} +// End of access checks. + +$file_to_delete = $file['file_name']; + +$form = new Form('fileDeleteForm'); +$form->addInput(array('type'=>'hidden','name'=>'id','value'=>$cl_file_id)); +$form->addInput(array('type'=>'submit','name'=>'btn_delete','value'=>$i18n->get('label.delete'))); +$form->addInput(array('type'=>'submit','name'=>'btn_cancel','value'=>$i18n->get('button.cancel'))); + +// TODO: design redirects properly... +if ($request->isPost()) { + if ($request->getParameter('btn_delete')) { + if (ttProjectHelper::delete($cl_project_id)) { + header('Location: projects.php'); + exit(); + } else + $err->add($i18n->get('error.db')); + } elseif ($request->getParameter('btn_cancel')) { + header('Location: projects.php'); + exit(); + } +} // isPost + +$smarty->assign('file_to_delete', $file_to_delete); +$smarty->assign('forms', array($form->getName()=>$form->toArray())); +$smarty->assign('onload', 'onLoad="document.fileDeleteForm.btn_cancel.focus()"'); +$smarty->assign('title', $i18n->get('title.delete_file')); +$smarty->assign('content_page_name', 'file_delete.tpl'); +$smarty->display('index.tpl'); -- 2.20.1