From 129c3dd1015fd43b9a698fc231fd287ec4954394 Mon Sep 17 00:00:00 2001 From: Regis Houssin <regis@dolibarr.fr> Date: Tue, 5 Jul 2011 16:10:56 +0000 Subject: [PATCH] Fix: uniformize code Fix: add confirm delete file New: add upload and delete file triggers --- htdocs/adherents/document.php | 6 +- htdocs/comm/propal/document.php | 75 +++---- htdocs/commande/document.php | 189 ++++++++++-------- htdocs/compta/facture/document.php | 76 +++---- .../interface_all_Demo.class.php-NORUN | 12 +- htdocs/lib/files.lib.php | 43 +++- htdocs/societe/document.php | 83 ++++---- 7 files changed, 280 insertions(+), 204 deletions(-) diff --git a/htdocs/adherents/document.php b/htdocs/adherents/document.php index db31d26ed75..80f097a64c8 100644 --- a/htdocs/adherents/document.php +++ b/htdocs/adherents/document.php @@ -23,7 +23,7 @@ * \file htdocs/adherents/document.php * \brief Tab for documents linked to third party * \ingroup societe - * \version $Id$ + * \version $Id: document.php,v 1.7 2011/07/05 16:10:56 hregis Exp $ */ require("../main.inc.php"); @@ -194,7 +194,7 @@ if ($id > 0) print '</div>'; - if ($mesg) { print "$mesg<br>"; } + dol_htmloutput_mesg($mesg,$mesgs); /* * Confirmation suppression fichier @@ -231,6 +231,6 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.7 $'); ?> diff --git a/htdocs/comm/propal/document.php b/htdocs/comm/propal/document.php index c6de7a48bd2..11c80c81bfd 100644 --- a/htdocs/comm/propal/document.php +++ b/htdocs/comm/propal/document.php @@ -23,7 +23,7 @@ * \file htdocs/comm/propal/document.php * \ingroup propale * \brief Page de gestion des documents attaches a une proposition commerciale - * \version $Id$ + * \version $Id: document.php,v 1.65 2011/07/05 16:10:56 hregis Exp $ */ require("../../main.inc.php"); @@ -35,14 +35,14 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); $langs->load('compta'); $langs->load('other'); -$action=empty($_GET['action']) ? (empty($_POST['action']) ? '' : $_POST['action']) : $_GET['action']; - -$id = isset($_GET["id"])?$_GET["id"]:''; +$action = GETPOST('action'); +$confirm = GETPOST('confirm'); +$id = GETPOST('id'); +$ref = GETPOST('ref'); // Security check if ($user->societe_id) { - unset($_GET["action"]); $action=''; $socid = $user->societe_id; } @@ -59,6 +59,7 @@ $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="name"; +$object = new Propal($db); /* * Actions @@ -67,13 +68,11 @@ if (! $sortfield) $sortfield="name"; // Envoi fichier if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) { - require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); - - $propal = new Propal($db); - - if ($propal->fetch($id)) + if ($object->fetch($id)) { - $upload_dir = $conf->propale->dir_output . "/" . dol_sanitizeFileName($propal->ref); + $object->fetch_thirdparty(); + + $upload_dir = $conf->propale->dir_output . "/" . dol_sanitizeFileName($object->ref); if (create_exdir($upload_dir) >= 0) { @@ -103,14 +102,13 @@ if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) } // Delete -if ($action=='delete') +if ($action == 'confirm_deletefile' && $confirm == 'yes') { - $propal = new Propal($db); - - $id=$_GET["id"]; - if ($propal->fetch($id)) + if ($object->fetch($id)) { - $upload_dir = $conf->propale->dir_output . "/" . dol_sanitizeFileName($propal->ref); + $object->fetch_thirdparty(); + + $upload_dir = $conf->propale->dir_output . "/" . dol_sanitizeFileName($object->ref); $file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). dol_delete_file($file); $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; @@ -126,19 +124,15 @@ llxHeader(); $html = new Form($db); -$id = $_GET["id"]; -$ref= $_GET["ref"]; if ($id > 0 || ! empty($ref)) { - $propal = new Propal($db); - if ($propal->fetch($id,$ref)) + if ($object->fetch($id,$ref)) { - $upload_dir = $conf->propale->dir_output.'/'.dol_sanitizeFileName($propal->ref); + $object->fetch_thirdparty(); + + $upload_dir = $conf->propale->dir_output.'/'.dol_sanitizeFileName($object->ref); - $societe = new Societe($db); - $societe->fetch($propal->socid); - - $head = propal_prepare_head($propal); + $head = propal_prepare_head($object); dol_fiche_head($head, 'document', $langs->trans('Proposal'), 0, 'propal'); @@ -153,11 +147,11 @@ if ($id > 0 || ! empty($ref)) print '<table class="border"width="100%">'; - $linkback="<a href=\"".$_SERVER["PHP_SELF"]."?page=$page&socid=$socid&viewstatut=$viewstatut&sortfield=$sortfield&$sortorder\">".$langs->trans("BackToList")."</a>"; + $linkback='<a href="'.$_SERVER["PHP_SELF"].'?page=$page&socid=$socid&viewstatut=$viewstatut&sortfield=$sortfield&$sortorder">'.$langs->trans("BackToList").'</a>'; // Ref print '<tr><td width="25%">'.$langs->trans('Ref').'</td><td colspan="3">'; - print $html->showrefnav($propal,'ref',$linkback,1,'ref','ref',''); + print $html->showrefnav($object,'ref',$linkback,1,'ref','ref',''); print '</td></tr>'; // Ref client @@ -167,15 +161,13 @@ if ($id > 0 || ! empty($ref)) print '</td>'; print '</tr></table>'; print '</td><td colspan="3">'; - print $propal->ref_client; + print $object->ref_client; print '</td>'; print '</tr>'; // Customer - if ( is_null($propal->client) ) - $propal->fetch_thirdparty(); print "<tr><td>".$langs->trans("Company")."</td>"; - print '<td colspan="3">'.$propal->client->getNomUrl(1).'</td></tr>'; + print '<td colspan="3">'.$object->thirdparty->getNomUrl(1).'</td></tr>'; print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.sizeof($filearray).'</td></tr>'; print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; @@ -184,16 +176,25 @@ if ($id > 0 || ! empty($ref)) print '</div>'; - if ($mesg) { print "$mesg<br>"; } + dol_htmloutput_mesg($mesg,$mesgs); + + /* + * Confirmation suppression fichier + */ + if ($action == 'delete') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$id.'&urlfile='.urldecode($_GET["urlfile"]), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1); + if ($ret == 'html') print '<br>'; + } // Affiche formulaire upload $formfile=new FormFile($db); - $formfile->form_attach_new_file(DOL_URL_ROOT.'/comm/propal/document.php?id='.$propal->id,'',0,0,$user->rights->propale->creer); + $formfile->form_attach_new_file(DOL_URL_ROOT.'/comm/propal/document.php?id='.$object->id,'',0,0,$user->rights->propale->creer); // List of document - $param='&id='.$propal->id; - $formfile->list_of_documents($filearray,$propal,'propal',$param); + $param='&id='.$object->id; + $formfile->list_of_documents($filearray,$object,'propal',$param); } else @@ -208,5 +209,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.65 $'); ?> diff --git a/htdocs/commande/document.php b/htdocs/commande/document.php index fbcbeab04cf..43c0b3094b3 100644 --- a/htdocs/commande/document.php +++ b/htdocs/commande/document.php @@ -2,7 +2,7 @@ /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> - * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> + * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ * \file htdocs/commande/document.php * \ingroup order * \brief Page de gestion des documents attachees a une commande - * \version $Id$ + * \version $Id: document.php,v 1.33 2011/07/05 16:10:56 hregis Exp $ */ require("../main.inc.php"); @@ -32,20 +32,22 @@ require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT ."/commande/class/commande.class.php"); -if (!$user->rights->commande->lire) accessforbidden(); $langs->load('companies'); -//$langs->load("bills"); $langs->load('other'); -$id=empty($_GET['id']) ? 0 : intVal($_GET['id']); -$action=empty($_GET['action']) ? (empty($_POST['action']) ? '' : $_POST['action']) : $_GET['action']; +$action = GETPOST('action'); +$confirm = GETPOST('confirm'); +$id = GETPOST('id'); +$ref = GETPOST('ref'); // Security check -$socid=0; -$comid = isset($_GET["id"])?$_GET["id"]:''; -if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'commande',$comid,''); +if ($user->societe_id) +{ + $action=''; + $socid = $user->societe_id; +} +$result=restrictedArea($user,'commande',$id,''); // Get parameters $sortfield = GETPOST("sortfield",'alpha'); @@ -59,13 +61,7 @@ if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="name"; -$id = GETPOST('id','int'); -$ref= $_GET['ref']; -$commande = new Commande($db); -if (! $commande->fetch($_GET['id'],$_GET['ref']) > 0) -{ - dol_print_error($db); -} +$object = new Commande($db); /* @@ -75,43 +71,51 @@ if (! $commande->fetch($_GET['id'],$_GET['ref']) > 0) // Envoi fichier if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) { - require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); - - $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($commande->ref); - - if (create_exdir($upload_dir) >= 0) - { - $resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']); - if (is_numeric($resupload) && $resupload > 0) - { - $mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>'; - } - else + if ($object->fetch($id)) + { + $object->fetch_thirdparty(); + + $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($object->ref); + + if (create_exdir($upload_dir) >= 0) { - $langs->load("errors"); - if ($resupload < 0) // Unknown error - { - $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>'; - } - else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus + $resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']); + if (is_numeric($resupload) && $resupload > 0) { - $mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>'; + $mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>'; } - else // Known error + else { - $mesg = '<div class="error">'.$langs->trans($resupload).'</div>'; + $langs->load("errors"); + if ($resupload < 0) // Unknown error + { + $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>'; + } + else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus + { + $mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>'; + } + else // Known error + { + $mesg = '<div class="error">'.$langs->trans($resupload).'</div>'; + } } } - } + } } // Delete -if ($action=='delete') +if ($action == 'confirm_deletefile' && $confirm == 'yes') { - $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($commande->ref); - $file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). - dol_delete_file($file); - $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; + if ($object->fetch($id)) + { + $object->fetch_thirdparty(); + + $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($object->ref); + $file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). + dol_delete_file($file); + $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; + } } @@ -125,49 +129,62 @@ $html = new Form($db); if ($id > 0 || ! empty($ref)) { - $upload_dir = $conf->commande->dir_output.'/'.dol_sanitizeFileName($commande->ref); - - $societe = new Societe($db); - $societe->fetch($commande->socid); - - $head = commande_prepare_head($commande); - dol_fiche_head($head, 'documents', $langs->trans('CustomerOrder'), 0, 'order'); - - - // Construit liste des fichiers - $filearray=dol_dir_list($upload_dir,"files",0,'','\.meta$',$sortfield,(strtolower($sortorder)=='desc'?SORT_ASC:SORT_DESC),1); - $totalsize=0; - foreach($filearray as $key => $file) + if ($object->fetch($id, $ref)) + { + $object->fetch_thirdparty(); + + $upload_dir = $conf->commande->dir_output.'/'.dol_sanitizeFileName($object->ref); + + $head = commande_prepare_head($object); + dol_fiche_head($head, 'documents', $langs->trans('CustomerOrder'), 0, 'order'); + + + // Construit liste des fichiers + $filearray=dol_dir_list($upload_dir,"files",0,'','\.meta$',$sortfield,(strtolower($sortorder)=='desc'?SORT_ASC:SORT_DESC),1); + $totalsize=0; + foreach($filearray as $key => $file) + { + $totalsize+=$file['size']; + } + + + print '<table class="border"width="100%">'; + + // Ref + print '<tr><td width="30%">'.$langs->trans('Ref').'</td><td colspan="3">'; + print $html->showrefnav($object,'ref','',1,'ref','ref'); + print '</td></tr>'; + + print '<tr><td>'.$langs->trans('Company').'</td><td colspan="3">'.$object->thirdparty->getNomUrl(1).'</td></tr>'; + print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.sizeof($filearray).'</td></tr>'; + print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; + print "</table>\n"; + print "</div>\n"; + + dol_htmloutput_mesg($mesg,$mesgs); + + /* + * Confirmation suppression fichier + */ + if ($action == 'delete') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?id='.$id.'&urlfile='.urldecode($_GET["urlfile"]), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1); + if ($ret == 'html') print '<br>'; + } + + // Affiche formulaire upload + $formfile=new FormFile($db); + $formfile->form_attach_new_file(DOL_URL_ROOT.'/commande/document.php?id='.$object->id,'',0,0,$user->rights->commande->creer); + + + // List of document + $param='&id='.$object->id; + $formfile->list_of_documents($filearray,$object,'commande',$param); + } + else { - $totalsize+=$file['size']; + dol_print_error($db); } - - - print '<table class="border"width="100%">'; - - // Ref - print '<tr><td width="30%">'.$langs->trans('Ref').'</td><td colspan="3">'; - print $html->showrefnav($commande,'ref','',1,'ref','ref'); - print '</td></tr>'; - - print '<tr><td>'.$langs->trans('Company').'</td><td colspan="3">'.$societe->getNomUrl(1).'</td></tr>'; - print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.sizeof($filearray).'</td></tr>'; - print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; - print "</table>\n"; - print "</div>\n"; - - if ($mesg) { print $mesg."<br>"; } - - - // Affiche formulaire upload - $formfile=new FormFile($db); - $formfile->form_attach_new_file(DOL_URL_ROOT.'/commande/document.php?id='.$commande->id,'',0,0,$user->rights->commande->creer); - - - // List of document - $param='&id='.$commande->id; - $formfile->list_of_documents($filearray,$commande,'commande',$param); - } else { @@ -176,5 +193,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.33 $'); ?> diff --git a/htdocs/compta/facture/document.php b/htdocs/compta/facture/document.php index 89a2e9e4227..f96fb1d4c59 100644 --- a/htdocs/compta/facture/document.php +++ b/htdocs/compta/facture/document.php @@ -2,7 +2,7 @@ /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> - * Copyright (C) 2005 Regis Houssin <regis@dolibarr.fr> + * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ * \file htdocs/compta/facture/document.php * \ingroup facture * \brief Page for attached files on invoices - * \version $Id$ + * \version $Id: document.php,v 1.43 2011/07/05 16:10:56 hregis Exp $ */ require("../../main.inc.php"); @@ -38,19 +38,19 @@ $langs->load('compta'); $langs->load('other'); $langs->load("bills"); -if (!$user->rights->facture->lire) -accessforbidden(); -$facid=empty($_GET['facid']) ? 0 : intVal($_GET['facid']); -$action=empty($_GET['action']) ? (empty($_POST['action']) ? '' : $_POST['action']) : $_GET['action']; +$action = GETPOST('action'); +$confirm = GETPOST('confirm'); +$id = GETPOST('facid'); +$ref = GETPOST('ref'); // Security check -if ($user->societe_id > 0) +if ($user->societe_id) { - unset($_GET["action"]); $action=''; $socid = $user->societe_id; } +$result=restrictedArea($user,'facture',$id,''); // Get parameters $sortfield = GETPOST("sortfield",'alpha'); @@ -63,6 +63,8 @@ $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="name"; +$object = new Facture($db); + /* * Actions @@ -71,12 +73,11 @@ if (! $sortfield) $sortfield="name"; // Envoi fichier if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) { - require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); - - $facture = new Facture($db); - if ($facture->fetch($facid)) + if ($object->fetch($id)) { - $upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($facture->ref); + $object->fetch_thirdparty(); + + $upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($object->ref); if (create_exdir($upload_dir) >= 0) { @@ -106,15 +107,13 @@ if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) } // Delete -if ($action=='delete') +if ($action == 'confirm_deletefile' && $confirm == 'yes') { - require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); - $facture = new Facture($db); - - $facid=$_GET["id"]; - if ($facture->fetch($facid)) + if ($object->fetch($id)) { - $upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($facture->ref); + $object->fetch_thirdparty(); + + $upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($object->ref); $file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). dol_delete_file($file); $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; @@ -133,15 +132,13 @@ $id = $_GET['facid']?$_GET['facid']:$_GET['id']; $ref= $_GET['ref']; if ($id > 0 || ! empty($ref)) { - $facture = new Facture($db); - if ($facture->fetch($id,$ref) > 0) + if ($object->fetch($id,$ref) > 0) { - $upload_dir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($facture->ref); + $object->fetch_thirdparty(); + + $upload_dir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($object->ref); - $societe = new Societe($db); - $societe->fetch($facture->socid); - - $head = facture_prepare_head($facture); + $head = facture_prepare_head($object); dol_fiche_head($head, 'documents', $langs->trans('InvoiceCustomer'), 0, 'bill'); @@ -162,7 +159,7 @@ if ($id > 0 || ! empty($ref)) print '<td colspan="3">'; $morehtmlref=''; $discount=new DiscountAbsolute($db); - $result=$discount->fetch(0,$facture->id); + $result=$discount->fetch(0,$object->id); if ($result > 0) { $morehtmlref=' ('.$langs->trans("CreditNoteConvertedIntoDiscount",$discount->getNomUrl(1,'discount')).')'; @@ -171,28 +168,37 @@ if ($id > 0 || ! empty($ref)) { dol_print_error('',$discount->error); } - print $html->showrefnav($facture,'ref','',1,'facnumber','ref',$morehtmlref); + print $html->showrefnav($object,'ref','',1,'facnumber','ref',$morehtmlref); print '</td></tr>'; // Company - print '<tr><td>'.$langs->trans('Company').'</td><td colspan="3">'.$societe->getNomUrl(1).'</td></tr>'; + print '<tr><td>'.$langs->trans('Company').'</td><td colspan="3">'.$object->thirdparty->getNomUrl(1).'</td></tr>'; print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.sizeof($filearray).'</td></tr>'; print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>'; print "</table>\n"; print "</div>\n"; - if ($mesg) { print $mesg."<br>"; } + dol_htmloutput_mesg($mesg,$mesgs); + + /* + * Confirmation suppression fichier + */ + if ($action == 'delete') + { + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?facid='.$id.'&urlfile='.urldecode($_GET["urlfile"]), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1); + if ($ret == 'html') print '<br>'; + } // Affiche formulaire upload $formfile=new FormFile($db); - $formfile->form_attach_new_file(DOL_URL_ROOT.'/compta/facture/document.php?facid='.$facture->id,'',0,0,$user->rights->facture->creer); + $formfile->form_attach_new_file(DOL_URL_ROOT.'/compta/facture/document.php?facid='.$object->id,'',0,0,$user->rights->facture->creer); // List of document - $param='&facid='.$facture->id; - $formfile->list_of_documents($filearray,$facture,'facture',$param); + $param='&facid='.$object->id; + $formfile->list_of_documents($filearray,$object,'facture',$param); } else @@ -207,5 +213,5 @@ else $db->close(); -llxFooter('$Date$ - $Revision$'); +llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.43 $'); ?> diff --git a/htdocs/includes/triggers/interface_all_Demo.class.php-NORUN b/htdocs/includes/triggers/interface_all_Demo.class.php-NORUN index d4deae9b132..eb30cc0726b 100644 --- a/htdocs/includes/triggers/interface_all_Demo.class.php-NORUN +++ b/htdocs/includes/triggers/interface_all_Demo.class.php-NORUN @@ -28,7 +28,7 @@ * - Le nom de la classe doit etre InterfaceMytrigger * - Le nom de la methode constructeur doit etre InterfaceMytrigger * - Le nom de la propriete name doit etre Mytrigger - * \version $Id: interface_all_Demo.class.php-NORUN,v 1.26 2011/07/04 10:35:49 hregis Exp $ + * \version $Id: interface_all_Demo.class.php-NORUN,v 1.27 2011/07/05 16:10:56 hregis Exp $ */ @@ -502,6 +502,16 @@ class InterfaceDemo dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); } elseif ($action == 'SHIPPINGL_DELETE') + { + dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + } + + // File + elseif ($action == 'FILE_UPLOAD') + { + dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + } + elseif ($action == 'FILE_DELETE') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); } diff --git a/htdocs/lib/files.lib.php b/htdocs/lib/files.lib.php index 3eb6a794d45..35ce31d0bc8 100644 --- a/htdocs/lib/files.lib.php +++ b/htdocs/lib/files.lib.php @@ -20,7 +20,7 @@ /** * \file htdocs/lib/files.lib.php * \brief Library for file managing functions - * \version $Id$ + * \version $Id: files.lib.php,v 1.64 2011/07/05 16:10:57 hregis Exp $ */ /** @@ -454,11 +454,13 @@ function dol_move($srcfile, $destfile, $newmask=0, $overwriteifexists=1) * @param allowoverwrite 1=Overwrite target file if it already exists * @param disablevirusscan 1=Disable virus scan * @param uploaderrorcode Value of upload error code ($_FILES['field']['error']) + * @param notrigger Disable all triggers * @return int >0 if OK, <0 or string if KO */ -function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0) +function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0, $notrigger=0) { - global $conf; + global $conf, $user, $langs; + global $object; $file_name = $dest_file; // If an upload error has been reported @@ -552,6 +554,19 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable { if (! empty($conf->global->MAIN_UMASK)) @chmod($file_name_osencoded, octdec($conf->global->MAIN_UMASK)); dol_syslog("Functions.lib::dol_move_uploaded_file Success to move ".$src_file." to ".$file_name." - Umask=".$conf->global->MAIN_UMASK, LOG_DEBUG); + + if (! $notrigger) + { + $object->src_file=$dest_file; + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('FILE_UPLOAD',$object,$user,$langs,$conf); + if ($result < 0) { $error++; $errors=$interface->errors; } + // Fin appel triggers + } + return 1; // Success } else @@ -568,10 +583,14 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable * @param file File to delete or mask of file to delete * @param disableglob Disable usage of glob like * * @param nophperrors Disable all PHP output errors + * @param notrigger Disable all triggers * @return boolean True if file is deleted, False if error */ -function dol_delete_file($file,$disableglob=0,$nophperrors=0) +function dol_delete_file($file,$disableglob=0,$nophperrors=0,$notrigger=0) { + global $conf, $user, $langs; + global $object; + //print "x".$file." ".$disableglob; $ok=true; $file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset @@ -581,7 +600,21 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0) { if ($nophperrors) $ok=@unlink($filename); // The unlink encapsulated by dolibarr else $ok=unlink($filename); // The unlink encapsulated by dolibarr - if ($ok) dol_syslog("Removed file ".$filename,LOG_DEBUG); + if ($ok) + { + dol_syslog("Removed file ".$filename,LOG_DEBUG); + if (! $notrigger) + { + $object->src_file=$file; + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('FILE_DELETE',$object,$user,$langs,$conf); + if ($result < 0) { $error++; $errors=$interface->errors; } + // Fin appel triggers + } + } else dol_syslog("Failed to remove file ".$filename,LOG_WARNING); } } diff --git a/htdocs/societe/document.php b/htdocs/societe/document.php index e496d064662..01edf6fc420 100644 --- a/htdocs/societe/document.php +++ b/htdocs/societe/document.php @@ -23,7 +23,7 @@ * \file htdocs/societe/document.php * \brief Tab for documents linked to third party * \ingroup societe - * \version $Id: document.php,v 1.31 2011/07/03 13:16:46 hregis Exp $ + * \version $Id: document.php,v 1.32 2011/07/05 16:10:56 hregis Exp $ */ require("../main.inc.php"); @@ -35,10 +35,13 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); $langs->load("companies"); $langs->load('other'); -$mesg = ""; +$mesg=''; + +$action = GETPOST('action'); +$confirm = GETPOST('confirm'); +$socid = (GETPOST('socid') ? GETPOST('socid') : GETPOST('id')); // Security check -$socid = (GETPOST('socid') ? GETPOST('socid') : GETPOST('id')); if ($user->societe_id > 0) { unset($_GET["action"]); @@ -70,48 +73,54 @@ $object = new Societe($db); // Envoie fichier if ( $_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) { - if (create_exdir($upload_dir) >= 0) + if ($object->fetch($socid)) { - $resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']); - if (is_numeric($resupload) && $resupload > 0) - { - if (image_format_supported($upload_dir . "/" . $_FILES['userfile']['name']) == 1) - { - // Create small thumbs for company (Ratio is near 16/9) - // Used on logon for example - $imgThumbSmall = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthsmall, $maxheightsmall, '_small', $quality, "thumbs"); - - // Create mini thumbs for company (Ratio is near 16/9) - // Used on menu or for setup page for example - $imgThumbMini = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthmini, $maxheightmini, '_mini', $quality, "thumbs"); - } - $mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>'; - } - else + if (create_exdir($upload_dir) >= 0) { - $langs->load("errors"); - if (is_numeric($resupload) && $resupload < 0) // Unknown error + $resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']); + if (is_numeric($resupload) && $resupload > 0) { - $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>'; - } - else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus - { - $mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>'; + if (image_format_supported($upload_dir . "/" . $_FILES['userfile']['name']) == 1) + { + // Create small thumbs for company (Ratio is near 16/9) + // Used on logon for example + $imgThumbSmall = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthsmall, $maxheightsmall, '_small', $quality, "thumbs"); + + // Create mini thumbs for company (Ratio is near 16/9) + // Used on menu or for setup page for example + $imgThumbMini = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthmini, $maxheightmini, '_mini', $quality, "thumbs"); + } + $mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>'; } - else // Known error + else { - $mesg = '<div class="error">'.$langs->trans($resupload).'</div>'; + $langs->load("errors"); + if (is_numeric($resupload) && $resupload < 0) // Unknown error + { + $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>'; + } + else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus + { + $mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>'; + } + else // Known error + { + $mesg = '<div class="error">'.$langs->trans($resupload).'</div>'; + } } } } } // Suppression fichier -if ($_REQUEST['action'] == 'confirm_deletefile' && $_REQUEST['confirm'] == 'yes') +if ($action == 'confirm_deletefile' && $confirm == 'yes') { - $file = $upload_dir . "/" . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). - dol_delete_file($file); - $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; + if ($object->fetch($socid)) + { + $file = $upload_dir . "/" . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). + dol_delete_file($file); + $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; + } } @@ -195,15 +204,15 @@ if ($socid > 0) /* * Confirmation suppression fichier */ - if ($_GET['action'] == 'delete') + if ($action == 'delete') { - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?socid='.$_GET["id"].'&urlfile='.urldecode($_GET["urlfile"]), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1); + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?socid='.$socid.'&urlfile='.urldecode($_GET["urlfile"]), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1); if ($ret == 'html') print '<br>'; } $formfile=new FormFile($db); - if ($conf->global->MAIN_USE_JQUERY_FILEUPLOAD) + if (1==2 && $conf->global->MAIN_USE_JQUERY_FILEUPLOAD) { $formfile->form_ajaxfileupload($object); } @@ -280,6 +289,6 @@ else $db->close(); -llxFooter('$Date: 2011/07/03 13:16:46 $ - $Revision: 1.31 $'); +llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.32 $'); ?> -- GitLab