Fix: uniformize code

Fix: add confirm delete file
New: add upload and delete file triggers
This commit is contained in:
Regis Houssin 2011-07-05 16:10:56 +00:00
parent fb112e0dd2
commit 8b69d7e620
7 changed files with 280 additions and 204 deletions

View File

@ -23,7 +23,7 @@
* \file htdocs/adherents/document.php * \file htdocs/adherents/document.php
* \brief Tab for documents linked to third party * \brief Tab for documents linked to third party
* \ingroup societe * \ingroup societe
* \version $Id$ * \version $Id: document.php,v 1.7 2011/07/05 16:10:56 hregis Exp $
*/ */
require("../main.inc.php"); require("../main.inc.php");
@ -194,7 +194,7 @@ if ($id > 0)
print '</div>'; print '</div>';
if ($mesg) { print "$mesg<br>"; } dol_htmloutput_mesg($mesg,$mesgs);
/* /*
* Confirmation suppression fichier * Confirmation suppression fichier
@ -231,6 +231,6 @@ else
$db->close(); $db->close();
llxFooter('$Date$ - $Revision$'); llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.7 $');
?> ?>

View File

@ -23,7 +23,7 @@
* \file htdocs/comm/propal/document.php * \file htdocs/comm/propal/document.php
* \ingroup propale * \ingroup propale
* \brief Page de gestion des documents attaches a une proposition commerciale * \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"); require("../../main.inc.php");
@ -35,14 +35,14 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
$langs->load('compta'); $langs->load('compta');
$langs->load('other'); $langs->load('other');
$action=empty($_GET['action']) ? (empty($_POST['action']) ? '' : $_POST['action']) : $_GET['action']; $action = GETPOST('action');
$confirm = GETPOST('confirm');
$id = isset($_GET["id"])?$_GET["id"]:''; $id = GETPOST('id');
$ref = GETPOST('ref');
// Security check // Security check
if ($user->societe_id) if ($user->societe_id)
{ {
unset($_GET["action"]);
$action=''; $action='';
$socid = $user->societe_id; $socid = $user->societe_id;
} }
@ -59,6 +59,7 @@ $pagenext = $page + 1;
if (! $sortorder) $sortorder="ASC"; if (! $sortorder) $sortorder="ASC";
if (! $sortfield) $sortfield="name"; if (! $sortfield) $sortfield="name";
$object = new Propal($db);
/* /*
* Actions * Actions
@ -67,13 +68,11 @@ if (! $sortfield) $sortfield="name";
// Envoi fichier // Envoi fichier
if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); if ($object->fetch($id))
$propal = new Propal($db);
if ($propal->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) if (create_exdir($upload_dir) >= 0)
{ {
@ -103,14 +102,13 @@ if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
} }
// Delete // Delete
if ($action=='delete') if ($action == 'confirm_deletefile' && $confirm == 'yes')
{ {
$propal = new Propal($db); if ($object->fetch($id))
$id=$_GET["id"];
if ($propal->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). $file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
dol_delete_file($file); dol_delete_file($file);
$mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>';
@ -126,19 +124,15 @@ llxHeader();
$html = new Form($db); $html = new Form($db);
$id = $_GET["id"];
$ref= $_GET["ref"];
if ($id > 0 || ! empty($ref)) if ($id > 0 || ! empty($ref))
{ {
$propal = new Propal($db); if ($object->fetch($id,$ref))
if ($propal->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); $head = propal_prepare_head($object);
$societe->fetch($propal->socid);
$head = propal_prepare_head($propal);
dol_fiche_head($head, 'document', $langs->trans('Proposal'), 0, 'propal'); 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%">'; 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 // Ref
print '<tr><td width="25%">'.$langs->trans('Ref').'</td><td colspan="3">'; 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>'; print '</td></tr>';
// Ref client // Ref client
@ -167,15 +161,13 @@ if ($id > 0 || ! empty($ref))
print '</td>'; print '</td>';
print '</tr></table>'; print '</tr></table>';
print '</td><td colspan="3">'; print '</td><td colspan="3">';
print $propal->ref_client; print $object->ref_client;
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
// Customer // Customer
if ( is_null($propal->client) )
$propal->fetch_thirdparty();
print "<tr><td>".$langs->trans("Company")."</td>"; 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("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 '<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>'; 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 // Affiche formulaire upload
$formfile=new FormFile($db); $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 // List of document
$param='&id='.$propal->id; $param='&id='.$object->id;
$formfile->list_of_documents($filearray,$propal,'propal',$param); $formfile->list_of_documents($filearray,$object,'propal',$param);
} }
else else
@ -208,5 +209,5 @@ else
$db->close(); $db->close();
llxFooter('$Date$ - $Revision$'); llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.65 $');
?> ?>

View File

@ -2,7 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * 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 * 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 * it under the terms of the GNU General Public License as published by
@ -23,7 +23,7 @@
* \file htdocs/commande/document.php * \file htdocs/commande/document.php
* \ingroup order * \ingroup order
* \brief Page de gestion des documents attachees a une commande * \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"); 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."/core/class/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT ."/commande/class/commande.class.php"); require_once(DOL_DOCUMENT_ROOT ."/commande/class/commande.class.php");
if (!$user->rights->commande->lire) accessforbidden();
$langs->load('companies'); $langs->load('companies');
//$langs->load("bills");
$langs->load('other'); $langs->load('other');
$id=empty($_GET['id']) ? 0 : intVal($_GET['id']); $action = GETPOST('action');
$action=empty($_GET['action']) ? (empty($_POST['action']) ? '' : $_POST['action']) : $_GET['action']; $confirm = GETPOST('confirm');
$id = GETPOST('id');
$ref = GETPOST('ref');
// Security check // Security check
$socid=0; if ($user->societe_id)
$comid = isset($_GET["id"])?$_GET["id"]:''; {
if ($user->societe_id) $socid=$user->societe_id; $action='';
$result=restrictedArea($user,'commande',$comid,''); $socid = $user->societe_id;
}
$result=restrictedArea($user,'commande',$id,'');
// Get parameters // Get parameters
$sortfield = GETPOST("sortfield",'alpha'); $sortfield = GETPOST("sortfield",'alpha');
@ -59,13 +61,7 @@ if (! $sortorder) $sortorder="ASC";
if (! $sortfield) $sortfield="name"; if (! $sortfield) $sortfield="name";
$id = GETPOST('id','int'); $object = new Commande($db);
$ref= $_GET['ref'];
$commande = new Commande($db);
if (! $commande->fetch($_GET['id'],$_GET['ref']) > 0)
{
dol_print_error($db);
}
/* /*
@ -75,43 +71,51 @@ if (! $commande->fetch($_GET['id'],$_GET['ref']) > 0)
// Envoi fichier // Envoi fichier
if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); if ($object->fetch($id))
{
$upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($commande->ref); $object->fetch_thirdparty();
if (create_exdir($upload_dir) >= 0) $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($object->ref);
{
$resupload=dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir . "/" . $_FILES['userfile']['name'],0,0,$_FILES['userfile']['error']); if (create_exdir($upload_dir) >= 0)
if (is_numeric($resupload) && $resupload > 0)
{ {
$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>'; $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)
else
{
$langs->load("errors");
if ($resupload < 0) // Unknown error
{ {
$mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>'; $mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
} }
else if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus else
{ {
$mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>'; $langs->load("errors");
} if ($resupload < 0) // Unknown error
else // Known error {
{ $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>';
$mesg = '<div class="error">'.$langs->trans($resupload).'</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 // Delete
if ($action=='delete') if ($action == 'confirm_deletefile' && $confirm == 'yes')
{ {
$upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($commande->ref); if ($object->fetch($id))
$file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). {
dol_delete_file($file); $object->fetch_thirdparty();
$mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>';
$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)) if ($id > 0 || ! empty($ref))
{ {
$upload_dir = $conf->commande->dir_output.'/'.dol_sanitizeFileName($commande->ref); if ($object->fetch($id, $ref))
{
$object->fetch_thirdparty();
$upload_dir = $conf->commande->dir_output.'/'.dol_sanitizeFileName($object->ref);
$societe = new Societe($db); $head = commande_prepare_head($object);
$societe->fetch($commande->socid); dol_fiche_head($head, 'documents', $langs->trans('CustomerOrder'), 0, 'order');
$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;
// Construit liste des fichiers foreach($filearray as $key => $file)
$filearray=dol_dir_list($upload_dir,"files",0,'','\.meta$',$sortfield,(strtolower($sortorder)=='desc'?SORT_ASC:SORT_DESC),1); {
$totalsize=0; $totalsize+=$file['size'];
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
{
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 else
{ {
@ -176,5 +193,5 @@ else
$db->close(); $db->close();
llxFooter('$Date$ - $Revision$'); llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.33 $');
?> ?>

View File

@ -2,7 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * 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 * 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 * it under the terms of the GNU General Public License as published by
@ -23,7 +23,7 @@
* \file htdocs/compta/facture/document.php * \file htdocs/compta/facture/document.php
* \ingroup facture * \ingroup facture
* \brief Page for attached files on invoices * \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"); require("../../main.inc.php");
@ -38,19 +38,19 @@ $langs->load('compta');
$langs->load('other'); $langs->load('other');
$langs->load("bills"); $langs->load("bills");
if (!$user->rights->facture->lire)
accessforbidden();
$facid=empty($_GET['facid']) ? 0 : intVal($_GET['facid']); $action = GETPOST('action');
$action=empty($_GET['action']) ? (empty($_POST['action']) ? '' : $_POST['action']) : $_GET['action']; $confirm = GETPOST('confirm');
$id = GETPOST('facid');
$ref = GETPOST('ref');
// Security check // Security check
if ($user->societe_id > 0) if ($user->societe_id)
{ {
unset($_GET["action"]);
$action=''; $action='';
$socid = $user->societe_id; $socid = $user->societe_id;
} }
$result=restrictedArea($user,'facture',$id,'');
// Get parameters // Get parameters
$sortfield = GETPOST("sortfield",'alpha'); $sortfield = GETPOST("sortfield",'alpha');
@ -63,6 +63,8 @@ $pagenext = $page + 1;
if (! $sortorder) $sortorder="ASC"; if (! $sortorder) $sortorder="ASC";
if (! $sortfield) $sortfield="name"; if (! $sortfield) $sortfield="name";
$object = new Facture($db);
/* /*
* Actions * Actions
@ -71,12 +73,11 @@ if (! $sortfield) $sortfield="name";
// Envoi fichier // Envoi fichier
if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); if ($object->fetch($id))
$facture = new Facture($db);
if ($facture->fetch($facid))
{ {
$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) if (create_exdir($upload_dir) >= 0)
{ {
@ -106,15 +107,13 @@ if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
} }
// Delete // Delete
if ($action=='delete') if ($action == 'confirm_deletefile' && $confirm == 'yes')
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); if ($object->fetch($id))
$facture = new Facture($db);
$facid=$_GET["id"];
if ($facture->fetch($facid))
{ {
$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). $file = $upload_dir . '/' . $_GET['urlfile']; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
dol_delete_file($file); dol_delete_file($file);
$mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; $mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>';
@ -133,15 +132,13 @@ $id = $_GET['facid']?$_GET['facid']:$_GET['id'];
$ref= $_GET['ref']; $ref= $_GET['ref'];
if ($id > 0 || ! empty($ref)) if ($id > 0 || ! empty($ref))
{ {
$facture = new Facture($db); if ($object->fetch($id,$ref) > 0)
if ($facture->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); $head = facture_prepare_head($object);
$societe->fetch($facture->socid);
$head = facture_prepare_head($facture);
dol_fiche_head($head, 'documents', $langs->trans('InvoiceCustomer'), 0, 'bill'); dol_fiche_head($head, 'documents', $langs->trans('InvoiceCustomer'), 0, 'bill');
@ -162,7 +159,7 @@ if ($id > 0 || ! empty($ref))
print '<td colspan="3">'; print '<td colspan="3">';
$morehtmlref=''; $morehtmlref='';
$discount=new DiscountAbsolute($db); $discount=new DiscountAbsolute($db);
$result=$discount->fetch(0,$facture->id); $result=$discount->fetch(0,$object->id);
if ($result > 0) if ($result > 0)
{ {
$morehtmlref=' ('.$langs->trans("CreditNoteConvertedIntoDiscount",$discount->getNomUrl(1,'discount')).')'; $morehtmlref=' ('.$langs->trans("CreditNoteConvertedIntoDiscount",$discount->getNomUrl(1,'discount')).')';
@ -171,28 +168,37 @@ if ($id > 0 || ! empty($ref))
{ {
dol_print_error('',$discount->error); 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>'; print '</td></tr>';
// Company // 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("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 '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
print "</table>\n"; print "</table>\n";
print "</div>\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 // Affiche formulaire upload
$formfile=new FormFile($db); $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 // List of document
$param='&facid='.$facture->id; $param='&facid='.$object->id;
$formfile->list_of_documents($filearray,$facture,'facture',$param); $formfile->list_of_documents($filearray,$object,'facture',$param);
} }
else else
@ -207,5 +213,5 @@ else
$db->close(); $db->close();
llxFooter('$Date$ - $Revision$'); llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.43 $');
?> ?>

View File

@ -28,7 +28,7 @@
* - Le nom de la classe doit etre InterfaceMytrigger * - Le nom de la classe doit etre InterfaceMytrigger
* - Le nom de la methode constructeur doit etre InterfaceMytrigger * - Le nom de la methode constructeur doit etre InterfaceMytrigger
* - Le nom de la propriete name doit etre Mytrigger * - 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); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
} }
elseif ($action == 'SHIPPINGL_DELETE') 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); dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
} }

View File

@ -20,7 +20,7 @@
/** /**
* \file htdocs/lib/files.lib.php * \file htdocs/lib/files.lib.php
* \brief Library for file managing functions * \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 allowoverwrite 1=Overwrite target file if it already exists
* @param disablevirusscan 1=Disable virus scan * @param disablevirusscan 1=Disable virus scan
* @param uploaderrorcode Value of upload error code ($_FILES['field']['error']) * @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 * @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; $file_name = $dest_file;
// If an upload error has been reported // 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)); 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); 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 return 1; // Success
} }
else 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 file File to delete or mask of file to delete
* @param disableglob Disable usage of glob like * * @param disableglob Disable usage of glob like *
* @param nophperrors Disable all PHP output errors * @param nophperrors Disable all PHP output errors
* @param notrigger Disable all triggers
* @return boolean True if file is deleted, False if error * @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; //print "x".$file." ".$disableglob;
$ok=true; $ok=true;
$file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset $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 if ($nophperrors) $ok=@unlink($filename); // The unlink encapsulated by dolibarr
else $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); else dol_syslog("Failed to remove file ".$filename,LOG_WARNING);
} }
} }

View File

@ -23,7 +23,7 @@
* \file htdocs/societe/document.php * \file htdocs/societe/document.php
* \brief Tab for documents linked to third party * \brief Tab for documents linked to third party
* \ingroup societe * \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"); require("../main.inc.php");
@ -35,10 +35,13 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
$langs->load("companies"); $langs->load("companies");
$langs->load('other'); $langs->load('other');
$mesg = ""; $mesg='';
$action = GETPOST('action');
$confirm = GETPOST('confirm');
$socid = (GETPOST('socid') ? GETPOST('socid') : GETPOST('id'));
// Security check // Security check
$socid = (GETPOST('socid') ? GETPOST('socid') : GETPOST('id'));
if ($user->societe_id > 0) if ($user->societe_id > 0)
{ {
unset($_GET["action"]); unset($_GET["action"]);
@ -70,48 +73,54 @@ $object = new Societe($db);
// Envoie fichier // Envoie fichier
if ( $_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) 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 (create_exdir($upload_dir) >= 0)
if (is_numeric($resupload) && $resupload > 0)
{ {
if (image_format_supported($upload_dir . "/" . $_FILES['userfile']['name']) == 1) $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)
// 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
{
$langs->load("errors");
if (is_numeric($resupload) && $resupload < 0) // Unknown error
{ {
$mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</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 if (preg_match('/ErrorFileIsInfectedWithAVirus/',$resupload)) // Files infected by a virus else
{ {
$mesg = '<div class="error">'.$langs->trans("ErrorFileIsInfectedWithAVirus").'</div>'; $langs->load("errors");
} if (is_numeric($resupload) && $resupload < 0) // Unknown error
else // Known error {
{ $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>';
$mesg = '<div class="error">'.$langs->trans($resupload).'</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 // 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). if ($object->fetch($socid))
dol_delete_file($file); {
$mesg = '<div class="ok">'.$langs->trans("FileWasRemoved").'</div>'; $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 * 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>'; if ($ret == 'html') print '<br>';
} }
$formfile=new FormFile($db); $formfile=new FormFile($db);
if ($conf->global->MAIN_USE_JQUERY_FILEUPLOAD) if (1==2 && $conf->global->MAIN_USE_JQUERY_FILEUPLOAD)
{ {
$formfile->form_ajaxfileupload($object); $formfile->form_ajaxfileupload($object);
} }
@ -280,6 +289,6 @@ else
$db->close(); $db->close();
llxFooter('$Date: 2011/07/03 13:16:46 $ - $Revision: 1.31 $'); llxFooter('$Date: 2011/07/05 16:10:56 $ - $Revision: 1.32 $');
?> ?>